4 durumlu barkodlar
Pek çok posta hizmeti (Royal Mail İngiltere, Kanada Posta, ABD Posta vb.), Postalarıyla ilgili bilgileri kodlamak için 4 durumlu bir barkod kullanır. ASCII'de oluşturulmuş, şuna benzer bir şey olabilir:
| | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | |
4 durumlu barkod, bir satır çubuktur. Her çubuk, 4 olasılık sağlayacak şekilde yukarı, aşağı veya her ikisine de genişletilebilir. Bu, her bir çubuğun temel olarak 4 basamaklı bir basamağı temsil ettiği anlamına gelir:
| |
Bar: | | | |
| |
Rakam: 0 1 2 3
Bu sembolojideki sorun, her bir barkodun baş aşağı geçerli, farklı bir barkod olmasıdır: yönelim yanlışsa, anlamını büyük ölçüde değiştirir. Bu nedenle, normalde bir başlatma ve durdurma dizisi uygulanır, böylece tarayıcı okunması gereken yolu hesaplayabilir.
Bu zorluğun amacı için, Avustralya Post tarafından belirtilen start / stop dizisini kullanacağız: her barkod bir 1 0diziyle başlar ve biter .
Meydan okuma
Göreviniz, pozitif bir tamsayı verilen N, onu ASCII 4 durumlu bir barkoda dönüştüren bir program veya işlev yazmaktır ; burada her çubuk (başlangıç / durdurma dizileri hariç) temel 4 temsilinde bir basamağı temsil eder N.
Örnek:
Tamsayı göz önüne alındığında, 19623ilk önce onu temel 4 temsili haline dönüştürürüz 10302213.
Daha sonra her basamağı ilgili çubuğa eşlerdik:
1 0 3 0 2 2 1 3
| | | |
| | | | | | | |
| | | |
Son olarak, start / stop dizilerini ekleyeceğiz:
Başlangıç: Bitiş:
1 0 1 0
| | | | | |
| | | | | | | | | | | |
| | | |
Çıkan barkod programın çıktısı olmalıdır.
Kurallar:
- Girdi, dilinizin standart tamsayı boyut aralığında, pozitif bir tamsayı olacaktır.
- Çıktı:
- Bir satır listesi veya yeni satırlar içeren bir dize olabilir.
- Şekil bozulmadan kaldığı sürece, önde gelen veya sondaki yeni satırları / boşlukları içerebilir.
- Barkodu yukarıdaki formatta göstermelidir - çubuk çizerken boru karakterini (
|) ve boşluk karakterini () kullanmalı ve her dik çubuk arasında 1 boşluk olmalıdır.
- Bu kod golf , yani en kısa program (bayt cinsinden) kazanır!
Test Kılıfları
4095:
| | | | | | | |
| | | | | | | | | |
| | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | |