Barcode 4-negara
Banyak layanan pos (Royal Mail UK, Canada Post, US Mail, dll) menggunakan barcode 4-negara untuk menyandikan informasi tentang email mereka. Diberikan dalam ASCII, mungkin terlihat seperti ini:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Barcode 4-negara adalah deretan bar. Setiap bilah dapat diperpanjang ke atas, ke bawah, atau keduanya, memungkinkan 4 kemungkinan. Ini berarti bahwa setiap bilah pada dasarnya mewakili basis 4 digit:
| | Bar: | | | | | | Digit: 0 1 2 3
Masalah dengan simbologi ini adalah bahwa setiap barcode adalah barcode terbalik yang valid dan berbeda: secara drastis mengubah makna jika orientasinya salah. Oleh karena itu, urutan mulai dan berhenti biasanya diterapkan sehingga pemindai dapat menghitung ke mana seharusnya dibaca.
Untuk tujuan tantangan ini, kami akan menggunakan urutan start / stop yang ditentukan oleh Australia Post: setiap barcode dimulai dan diakhiri dengan 1 0
urutan.
Tantangan
Tugas Anda adalah menulis sebuah program atau fungsi yang, diberi bilangan bulat positif N
, mengubahnya menjadi barcode ASCII 4-state, di mana setiap bilah (kecuali untuk urutan start / stop) mewakili angka dalam representasi basis-4 dari N
.
Contoh:
Dengan bilangan bulat 19623
, pertama-tama kita akan mengubahnya menjadi representasi basis-4 10302213
,.
Kami kemudian akan memetakan setiap digit ke bilah yang sesuai:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
Akhirnya, kami akan menambahkan urutan start / stop:
Mulai: Akhir: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
Barcode yang dihasilkan harus menjadi output program.
Aturan:
- Input akan berupa bilangan bulat positif, dalam kisaran ukuran bilangan bulat standar bahasa Anda.
- Hasil:
- Bisa berupa daftar baris, atau string yang berisi baris baru.
- Dapat berisi baris / spasi depan atau akhir, asalkan bentuknya tetap utuh.
- Harus memperlihatkan kode batang dengan format di atas - harus menggunakan karakter pipa (
|
) dan karakter spasi () saat menggambar bilah, dan harus ada 1 spasi di antara setiap bilah tegak.
- Ini adalah kode-golf , jadi program terpendek (dalam byte) menang!
Uji Kasus
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |