Digit 7-segmen dapat direpresentasikan dalam ASCII menggunakan _|
karakter. Berikut adalah 1
digit ukurannya :
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| _| |_|
Ukuran yang lebih besar dibentuk dengan membuat setiap segmen secara proporsional lebih panjang. Berikut adalah pasangan ukuran 3 digit.
___ ___ ___ ___ ___ ___ ___
| | | | | | | | | |
| | | | | | | | | |
|___| |___ | |___ ___| | | |___|
| | | | | | | | | |
| | | | | | | | | |
|___| |___| | ___| ___| |___| ___|
Tujuan
Dalam tantangan ini, Anda harus menulis program / fungsi yang dapat mengambil satu digit sebagai input dan mengidentifikasi ukurannya. Tangkapan: jika input bukan angka yang valid, maka program Anda harus menampilkan 0
.
Ini adalah kode-golf , byte paling sedikit menang.
Anda dapat menulis suatu program atau fungsi, yang dapat menerima angka sebagai STDIN atau argumen, dan mencetak / mengembalikan nilainya.
Digit akan disediakan sebagai string multi-garis, diisi dengan jumlah spasi spasi minimum yang diperlukan untuk menjadikannya persegi panjang yang sempurna. Baris baru yang tertinggal adalah bagian opsional dari input. Tidak akan ada ruang terkemuka yang tidak dibutuhkan.
Ketika non-digit dilewatkan, itu masih akan terdiri dari _|
karakter, empuk ke persegi panjang, dan tidak memiliki ruang terkemuka yang tidak dibutuhkan. Tidak akan ada garis kosong. Anda tidak perlu berurusan dengan input kosong.
Output harus berupa bilangan bulat non-negatif, dengan baris tambahan opsional. Jika input bukan digit yang tepat dari ukuran apa pun, output 0
. Lain, keluaran ukuran.
Berikut ini adalah panduan praktis untuk lebar dan tinggi setiap digit untuk ukuran tertentu N
.
Digit Height Width (not counting newlines)
1 2N 1
2 2N+1 N+2
3 2N+1 N+1
4 2N N+2
5 2N+1 N+2
6 2N+1 N+2
7 2N+1 N+1
8 2N+1 N+2
9 2N+1 N+2
0 2N+1 N+2
Contoh I / O
Di:
__
|
__|
|
__|
Di luar:
2
Di:
|
|
|
Di luar:
0 //because it is of an invalid height. Either 1 char too short or tall.
Di:
| |
| |
| |
|____|
|
|
|
|
Di luar:
4
Di:
___
|
|___
| |
|___|
Di luar:
0 //1 char too wide
Di:
_
|_|
| |
Di luar:
0 //it's not a digit
Di:
__
|
|__
|
__|
Di luar:
2
Di:
_ _
_| _|
|_ _|
Di luar:
0 //both would be valid individually, but input should be a *single* digit
Di:
_
|_|
|_|
Di luar:
1
Di:
|
|
Di luar:
1
Di:
__|_
|
_ |
_
|__
Di luar:
0
Ini kira-kira kebalikan dari angka Transformasi menjadi pola tampilan 7-segmen , dari 3 tahun yang lalu.
0
digit ukuran , bukan? Kecuali Anda sudah memikirkan cara untuk menggambar mereka.Jawaban:
Ruby, 250
Mengingat ada begitu banyak input yang mungkin tidak valid, satu-satunya cara untuk melakukan ini adalah dengan menghasilkan semua digit yang benar dan memeriksa untuk melihat apakah input tersebut cocok.
Saya membangun setiap digit dari atas ke bawah, dalam 2 bagian ditambah garis atas. Meskipun ada 12 kemungkinan (mengingat bahwa segmen kiri dapat hidup, mati, atau dalam kasus
3
dan7
sama sekali tidak ada) hanya 7 yang benar-benar hadir dan pilihan pengkodean yang hati-hati memungkinkan semua info (kecuali baris paling atas) dikodekan ke dalam karakter tunggal.digit
1
tidak benar-benar cocok dengan pola dan ditangani secara terpisah, digunakan untuk menginisialisasi array.Tidak digabungkan dalam program uji
Versi ini menggunakan
.
bukan spasi untuk alasan diagnostik.sumber