Apa yang saya inginkan:
Sederhananya, saya ingin tampilan berbasis teks, yang meminta input n
,, lalu menunjukkan nilai itu pada tampilan! Tapi ada tangkapan. Setiap piksel 'benar' '(yang diisi) harus diwakili oleh angka itu n
..
Contoh:
Anda diberi input n
. Anda dapat menganggap n
akan menjadi satu digit
Input: 0
Output:
000
0 0
0 0
0 0
000
Input: 1
Output:
1
1
1
1
1
Input: 2
Output:
222
2
222
2
222
Input: 3
Output:
333
3
333
3
333
Input: 4
Output:
4 4
4 4
444
4
4
Input: 5
Output:
555
5
555
5
555
Input: 6
Output:
666
6
666
6 6
666
Input: 7
Output:
777
7
7
7
7
Input: 8
Output:
888
8 8
888
8 8
888
Input: 9
Output:
999
9 9
999
9
999
Tantangan:
Lakukan di atas dalam sesedikit mungkin byte.
Saya hanya akan menerima jawaban yang memenuhi semua persyaratan.
Ruang putih di sekitarnya adalah opsional, asalkan angka ditampilkan dengan benar.
Juga, <75 byte adalah suara dari saya, penerimaan terendah, tapi saya selalu bisa mengubah jawaban yang diterima, jadi jangan berkecil hati untuk menjawab.
code-golf
ascii-art
kolmogorov-complexity
VortexYT
sumber
sumber
Jawaban:
SOGL V0.12 , 30 byte
Coba Di Sini! String yang dikompresi
■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘
adalahyaitu (dimulai dengan 1, berakhir dengan 0) angka, baris demi baris, angka ke angka. Sisanya
sumber
-
), dan sisanya mudah. Saya ingin tahu, tester online apa yang Anda gunakan? Saya belum membuat atau melihat apa pun.JavaScript (ES6), 88 byte
Angka-angka menyandikan kotak yang berisi spasi untuk digit yang diberikan misalnya sudut kiri bawah memiliki nilai 146 karena 1, 4 dan 7 tidak menggunakannya dan 146 = 2¹ + 2⁴ + 2⁷.
sumber
05AB1E ,
403938 byteCobalah online!
Penjelasan
sumber
Japt , 43 byte
Berisi beberapa unsintables. Cobalah online!
Tallies: 13 byte data terkompresi, 9 byte untuk mendekompresnya, dan 21 byte untuk membentuk output.
Penjelasan
Kode tidak dikunci:
Ada persis 4 kemungkinan baris berbeda: (
#
mewakili angka)Dengan demikian, setiap angka dapat disimpan sebagai satu set lima basis-4 digit. Karena setiap angka dapat disimpan dalam 10 bit, totalnya adalah 100 bit, yang sesuai dengan 13 byte. Saya akan melewatkan proses kompresi dan bukannya menjelaskan dekompresi.
Setelah dekompresi, string terkompresi 13 byte terlihat seperti ini:
Perhatikan bahwa ini akan gagal jika salah satu dari 4 digit yang dijalankan dimulai
0
, karena nol yang terdepan akan ditinggalkan saats4
dijalankan. Kita dapat memperbaikinya dengan memiliki0
represent#
, yang hanya muncul tiga kali, dan tidak ada yang jatuh pada awal menjalankan 4 digit.Oke, jadi untuk mendapatkan string 50 digit kami untuk dikompres dengan baik dalam potongan 4, kami harus menambahkan dua digit tambahan. Menambahkannya ke awal string berarti kita dapat memotongnya dengan satu-byter
¤
.Yang memalukan, Japt tidak memiliki built-in untuk memisahkan string menjadi irisan panjang X. Namun, ia memiliki built-in untuk mendapatkan setiap char Xth, jadi kami dapat menyimpan semua data dengan mengkodekan semua baris teratas terlebih dahulu, kemudian semua baris kedua, dll.
Jadi sekarang kita memiliki string 5 digit yang mengkodekan digit yang ingin kita buat, misalnya
32223
untuk0
.Untuk menjelaskan angka ajaib, lihat kembali ke empat baris berbeda. Jika Anda mengganti
dengan
#
dengan1
dan0
, Anda dapatkanTransposing ini dan kemudian bergabung menjadi satu string memberi kita
101100010111
. Konversikan ke desimal dan, ya, Anda memiliki 2839. Membalik proses memetakan digit0123
ke dalam empat baris biner yang ditunjukkan di atas.Hampir selesai! Sekarang yang tersisa untuk dilakukan adalah menambahkan spasi dan digit:
Dan presto, keluaran implisit menangani sisanya. Maaf penjelasan ini sangat panjang, tapi saya tidak melihat cara nyata untuk bermain golf tanpa membuatnya kurang dimengerti (jika bisa dimengerti ...)
sumber
JavaScript (ES6),
115111 byteMengambil input sebagai string.
Bagaimana itu bekerja
Pengodean pola
Empat pola yang berbeda
"XXX"
,"X.."
,"..X"
dan"X.X"
dapat dikompresi sebagai"XXX...X.X"
dan diekstraksi dengan cara ini:Dengan menggantikan digit masukan
n
untuk"X"
dan menggunakan ruang yang sebenarnya, ini memberikan ekspresi:Pengodean digit
Dengan menggunakan pengidentifikasi pola yang didefinisikan di atas, setiap digit dapat diwakili oleh kuantitas 5 * 2 = 10-bit.
Contohnya:
Daftar lengkapnya adalah:
Namun, membagi nilai-nilai ini dengan 2 memungkinkan untuk menyimpan dua byte. Jadi alih-alih kami menyimpan:
Demo
Tampilkan cuplikan kode
sumber
Utilitas Bash + GNU, 114
Mungkin ada beberapa peluang untuk kompresi di sini, tapi ini awal:
Penjelasan
Setiap baris dari setiap digit adalah salah satu dari empat pola ini:
Dengan memberi label pada 0-3 ini, setiap digit dapat diwakili oleh 5 basis-4 digit. Misalkan 0 akan
32223
, dan daftar digit penuh dikodekan dalam basis-4 sebagai32223000003031330303223003130331323300003232332303
. Ini dikodekan dalam hex sebagaiEAC00CDF33AC373DEF00EEFB3
.dc
mengkonversi hexEAC00CDF33AC373DEF00EEFB3
ke basis-4.fold
menempatkan 5 basis-4 digit pada setiap barissed
:x
es) untuk setiap baris digit yang diberikan, bersama dengan baris baru untuk akhir setiap barisx
es ke digit n.Cobalah online .
sumber
s/1/x \n/g
dengans/1/x\n/g
, karena mereka ruang tidak akan secara visual mempengaruhi output.MATL ,
4543 byteCobalah online!
Penjelasan
sumber
Retina,
166164163 byteDua spasi di baris ketiga dari bawah
Cobalah secara Online!
Versi solusi @ Okx yang ditingkatkan
sumber
Pyth 82
8591100bytesMungkin banyak bermain golf, tantangan pertama saya.
sumber
File Batch, 8 + 184 byte
Inilah solusi batch wajib saya. Sayangnya metode standar untuk mencapai ini adalah lebih dari 300 byte dalam batch, jadi kami menggunakan taktik yang jauh lebih murah.
Dalam direktori saat ini, saya memiliki 10 file yang disiapkan, dinamai dari 0 hingga 9. Dalam masing-masingnya adalah grid piksel masing-masing 5x3. Sebagai contoh:
Jumlah byte untuk ini adalah:
Masih mengalahkan Jawa.
sumber
Ruby, 94 byte
Tidak digabungkan dalam program uji
sumber
PHP, 115 Bytes
Cobalah online!
Diperluas
Pengkodean Cobalah online!
sumber
Retina , 125 byte
Cobalah online! (Hapus test suite di header untuk menguji masing-masing digit input.) Baris terakhir berisi dua spasi.
sumber
PowerShell,
126120113109101Unicode itu menyenangkan. Karakter juga jauh lebih pendek daripada angka. Kode di atas mengandung U + 0000 dua kali, sehingga tidak dapat disalin secara langsung (berfungsi dengan baik dalam file). Kode berikut dapat disalin:
Kami kehilangan tiga byte karena kami membutuhkan tanda tangan UTF-8 di awal. Kalau tidak, string tidak akan berfungsi.
sumber
Retina , 190 byte
Ada dua spasi di baris terakhir
tetapi SE tidak ingin membuatnya: /Memperbaiki!Cobalah online!
sumber
a
dengan tiga digit dan baris baru. (Mungkin menggunakan lookaheads?)Java 8,
278214210204 bytePelabuhan @ Neil 's Retina jawabannya . Mengambil input sebagai a
String
.Coba di sini.
sumber
Python 2 ,
174125 byteCobalah online!
sumber
PowerShell ,
159135128118 byteJawaban saat ini: menghapus penamaan variabel asing
Cobalah online!
Saya harus melihat apakah saya bisa mendapatkan beberapa trik dari jawaban lain: P
EDIT Menjadi lebih pintar dengan memanggil string mega
EDIT2 Beralih ke menggunakan serangkaian angka untuk diindeks ke dalam
$a
untuk menyimpan 7 byte. Meskipun saya menyukai panggilan nama variabel dinamis sebelumnya dalam kode di bawah ini (135 byte)sumber
Arang ,
6138 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Catatan: Ruang tambahan. Penjelasan:
Pisahkan string (terkompresi) menjadi kelompok-kelompok 5, ambil satu pada indeks yang diberikan oleh input, dan petakan di atas karakter dalam grup (yang selalu 1, 4, 5 atau 7).
Konversikan karakter dari basis 10 ke basis 3 digit menggunakan karakter input dan spasi sebagai digit. Kelima hasil kemudian dicetak secara implisit pada baris yang berbeda.
Porta generik agak membosankan, jadi inilah jawaban 61-byte yang lebih idiomatis:
Cobalah online! Tidak ada versi verbose karena deverbosifier tidak memahami daftar arah atau bahkan multidirectional di dalam poligon biasa. Penjelasan:
Setiap jalur ditentukan menggunakan daftar arah (
←↑→↓
). Empat cara pintas yang dapat digunakan menyimpan byte:L
mewakili↑→
,¬
mewakili↓←
,T
mewakili→↓←
sambil+
mewakili→↓←↑
, meskipun setidaknya satu panah harus tetap agar daftar tersebut dikenali sebagai daftar arah (jadi misalnyaTT
tidak dapat digunakan untuk3
).sumber
Jelly ,
3532 byteCobalah online!atau lihat semuanya .
Sama seperti metode dzaima.
sumber
Perl 5
-Mbigint -pa
, 101 byteCobalah online!
sumber
Python 3 , 119 byte
Cobalah online!
Setiap 'piksel' direpresentasikan sebagai bilangan bulat di mana setiap kekuatan dua menunjukkan apakah piksel tersebut solid. Ini mengambil keuntungan dari kenyataan bahwa tiga sudut kanan selalu digit.
sumber
JavaScript (ES8), 87 byte
sumber