Tampilkan 12 angka pada tampilan jam persis seperti ini:
12
11 1
10 2
9 3
8 4
7 5
6
Untuk melihat kisi-kisi dengan lebih baik, inilah satu dengan titik-titik:
...........12............
.....11...........1......
.........................
.10...................2..
.........................
.........................
9.......................3
.........................
.........................
..8...................4..
.........................
......7...........5......
............6............
Perhatikan bahwa kisi direntangkan lebar dengan faktor dua untuk membuatnya terlihat lebih persegi.
Perhatikan juga bahwa angka dua digit disejajarkan dengan angka yang ada di tempatnya. Angka 9 harus rata terhadap kiri.
Kembalikan atau cetak hasilnya sebagai string multiline (bukan daftar garis). Setiap ruang tambahan adalah opsional. Baris terakhir juga opsional.
charCodeAt()
05AB1E ,
393331 byteTerima kasih untuk Magic Octopus Mm karena telah menghemat 6 byte!
Kode
Beberapa alternatif 33 byte:
Menggunakan penyandian 05AB1E . Cobalah online!
sumber
ÿ
dengan.V
, sangat orisinal! Dan lucu bagaimana Anda digunakan12¤
untuk mendapatkan keduanya12
dan2
di tumpukan. Saya mungkin hanya akan menggunakan12Y
, tapi saya kira bagaimana tidak relevan, karena keduanya memiliki 12 dan 2 di stack. Jika saya akan mencoba tantangan ini di 05AB1E saya akan berakhir jauh lebih tinggi dalam byte-count .. Sepertinya saya masih harus banyak belajar. ;)Y
. Itu akan menjadi pilihan yang lebih mudah hahaha.6xsŸ5L•δ;Ì’•2ôúð.ø‚ζJ012∞S¶×‚ζJ.c
tetapi Anda dapat menggunakan apa pun di sini.6xŠ»
juga mendukung , aku tidak akan pernah memikirkan itu.6502 kode mesin (C64),
827673 byte1
digit utama secara khususIdenya di sini adalah hanya menyimpan digit semua angka sesuai urutan yang dibutuhkan. Info tambahan yang diperlukan adalah jumlah baris baru untuk ditambahkan dan jumlah ruang di depan.
Jumlah maksimum baris baru adalah
3
, jadi kita perlu 2 bit untuk ini, dan jumlah ruang maksimum adalah23
, oleh karena itu 5 bit sudah cukup. Karenanya, untuk setiap digit yang akan dicetak, kami dapat memeras info ini dalam satu "byte kontrol".Jadi, data untuk solusi ini membutuhkan tepat 30 byte: 15 digit tunggal dan 15 terkait "byte kontrol".
Demo online
Penggunaan:
SYS49152
untuk memulai.Komentar pembongkaran :
sumber
JSR $FFD2 / DEY / BNE loop / LDA .control,X / RTS
untuk baris baru dan spasi? Saya pikir itu akan menjadi +10 byte panjang dan menyimpan -12 byte dalam kode utama.JSR $FFD2 / DEY / BPL loop / LDA .control,X / RTS
dan titik masuknya adalahDEY
. Dengan cara ini, Anda tidak perlu menguji0
dalam kode utama.DEY / BPL / RTS
akan segera keluar tanpa memproses apa punJSR $FFD2
. (Perhatikan bahwa dengan skema itu, titik masuk subrutin haruslahDEY
.)Perl 6 ,
7674 byteCobalah online!
Port of Arnauld menjawab sampai saya dapat menemukan sesuatu yang lebih pendek.
sumber
R ,
7568 byteCobalah online!
Mengompresi posisi digit. Apakah ini setelah menghabiskan banyak waktu untuk mencari jawaban trigonometri (lihat riwayat suntingan).
Terinspirasi oleh jawaban R yang lain ini, beli J. Aduh - perbaiki!
Disimpan 7 byte berkat Joe.
sumber
write
panggilan untuk menggunakan pemisah default.HTML + JavaScript (Kanvas), 13 + 161 = 174 byte
Penempatan kanvas secara sewenang-wenang menggunakan 6 byte.
Dengan kisi untuk perbandingan:
Penjelasan tentang Formula Pemosisian
Lihat JavaScript saya dengan jawaban SVG .
sumber
Java
811,141138 byteCobalah online (CATATAN:
String.repeat(int)
diemulasikanrepeat(String,int)
untuk byte-count yang sama, karena Java 11 belum menggunakan TIO.)Penjelasannya mirip seperti di bawah ini, tetapi menggunakan
" ".repeat(x-48)
untuk spasi alih-alih format dengan"%"+(x-48)+"s"
.Java 8, 141 byte
Cobalah online.
Penjelasan:
Penjelasan lebih lanjut
92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G
:92
).)sumber
R,
168159125 byteSolusi naif dari penulisan angka-angka pada titik-titik yang ditentukan dalam matriks teks. Poin disimpan sebagai huruf UTF-8 diterjemahkan melalui
utf8ToInt
Turun 9 byte dengan saran JayCe untuk digunakan
write
dan menghindari mendefinisikan matriks.Turun 34 byte lagi dengan saran penyimpanan JayCe.
sumber
m
dan menggunakanwrite
: TIO . PS: Anda tidak diwajibkan untuk memasukkan tautan TIO dalam jawaban Anda tetapi itu memformat jawaban dengan baik untuk Anda, lihat ikon tautan di atas halaman TIO.!
operator untuk mencapai 125 karakter . Solusi yang sangat bagus!Haskell,
8887 byteMetode encode-space-as-letters (pertama kali dilihat pada jawaban @ Arnauld ) di Haskell. Menggunakan
{
dan memperluasnya menjadi\n
satu byte lebih pendek daripada menggunakan\n
secara langsung.Cobalah online!
sumber
Karat , 96 byte
Cobalah online!
sumber
brainfuck ,
240235 byteCobalah online!
Kode yang dikomentari
Contoh langka di mana teks cukup berulang sehingga program brainfuck kurang dari
dua kali1,6 kali panjang output!2 byte disimpan oleh saran dari Jo King:
>>>>>>-
->[<]>-
3 byte disimpan dengan memindahkan downcounter 20-tempat ketiga dari paling kanan kode ascii
10 30 50
ke langsung di sebelah kiri mereka. Menghemat<<>>
saat mengisi celah di antara8
dan4
tetapi menambahkan 1 byte ke saluran>>>++
.Versi asli
sumber
Python 2 , 97 byte
Cobalah online!
Menghitung semua jarak dan baris baru dalam loop
sumber
Jelly , 32 byte
Program lengkap yang mencetak hasilnya.
Cobalah online!
Bagaimana?
(Saya belum memikirkan / menemukan sesuatu yang lebih pendek daripada
“¿×¿ Œ4ç4Œ!¿Ø‘
yang tampaknya lama bagi saya untuk bagian ini - memantul / basis-dekompresi / kenaikan, sepertinya tidak ada yang menyelamatkan!)sumber
C (gcc) ,
145137125 byteHanya posisi tab yang dikodekan dengan keras: semua jarak garis dan nilai jam dihasilkan dalam loop.
Terima kasih lagi untuk ceilingcat untuk sarannya.
Cobalah online!
sumber
"\r\7\3"[j]
alih-alih"NHDA"[j]-65
PHP , 97 byte
Cobalah online!
Ini adalah string terkompresi kode keras. Saya tidak dapat menemukan solusi yang lebih singkat dari ini!
sumber
file_put_contents($path, '<?=gzinflate("'.gzdeflate($clockString,9).'");');
, tapi saya tidak yakin bagaimana memposting kode dengan data biner di dalamnya. File seperti itu adalah 70 byte.Pyke , 37 byte
Coba di sini! (byte mentah)
Coba di sini! (Dapat dibaca manusia)
sumber
brainfuck ,
315313 bytedisimpan 2 byte berkat ovs !
Cobalah online!
semua dalam satu blok kode:
sumber
++++[>++++<-]>
16 di awal.><
dalam kode AndaPowershell,
948882 byteOperator format Powershell langsung .
{i,w}
berarti placeholder untuk parameter dengan indeksi
, lebar placeholder adalahw
dengan perataan kanan.Powershell, 88 byte
Port of Javascript jawaban Arnauld
-6 byte terima kasih kepada @AdmBorkBork
Untuk melihat grid dengan lebih baik, gunakan
'.'
saja' '
.sumber
.PadLeft
untuk 88 byte - Cobalah secara online!-f
. Mengapa Anda tidak memasukkan tautan ke Coba online! sehingga orang lain dapat melihat cara kerja kode Anda?This site can’t be reached
. Maaf.C (gcc) ,
125109105 bytesizeof(wchar_t) == sizeof(int)
- tidak akan bekerja di windows :) Terima kasih ErikF untuk idenya.Cobalah online!
Ini adalah port dari ide umum saya dari solusi 6502 ke C. Ini sedikit dimodifikasi: Alih-alih memiliki bendera untuk memimpin
1
, karakter dicetak sebagai desimal dengan mengurangi 48, sehingga 10 - 12 dikodekan:
untuk<
.sumber
Attache , 69 byte
Cobalah online!
Ini mengkodekan setiap proses spasi sebagai
NTS[count of spaces]
:;NTS
adalah built-in "numeric to short", yang memungkinkan angka untuk diekspresikan sebagai string. Misalnya,NTS[95] = $R1
danNTS[170297] = $XQO
.STN
adalah kebalikan dari builtin ini.Jawaban ini menggantikan (
ReplaceF
) semua kemunculan huruf (/\l/
) di input dengan hasil fungsisp&`*@STN
, yang pertama menerjemahkan kode huruf dan kemudian mengulangsp
(spasi) yang berkali-kali.sumber
Swift ,
178165 bytevar b="";for c in"L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6"{let i=c.unicodeScalars.first!.value;if c=="n"{b+="\n"}else if i>64{for _ in 0..<(i-65){b+=" "}}else{b+="(c)"}};print(b)
Berdasarkan apa yang diposting Downgoat, saya mengurangi ini menjadi 165 byte:
print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map{let x=Int($0.value);return x==110 ?"\n":(x>64 ?String(repeating:" ",count:x-65):"($0)")}.joined())
Diperluas, dengan
$0
dikonversi ke variabel bernama:print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map { c in let x = Int(c.value) return x == 110 ? "\n" : (x>64 ? String(repeating:" ", count: x-65) : "(c)") }.joined())
String input dikodekan sebagai berikut: Huruf besar (
A-Z
) mewakili blok spasi, diimbangi dengan 65. JadiA
berarti 0 spasi,B
berarti 1 spasi,L
sarana pertama 11 spasi, dll.n
S dikonversi ke baris baru. Semua karakter lain dicetak apa adanya.Jalankan online di sini (terima kasih, mbomb007)
sumber
{"L12NF11L1NNB10T2NNN9X3NNNC8T4NNG7L5NM6".unicodeScalars.map({(c)->String in let x=c.value;return x==78 ? "\n" : x>64 ?String(repeating:" ",count:x-65) : "\(c)"}).joined()}
(swift 3 (-swift-version 3
on repl) karena Swift 4 mengurangi pengurangan sepertinya)Pure Bash , 123
printf
jangan angkat berat di sini:Cobalah online!
sumber
Merah , 151 byte
Cobalah online!
sumber
JavaScript dengan SVG, 188 byte
Ketinggian garis sewenang-wenang 120% menggunakan 4 byte.
Dengan kisi untuk perbandingan:
Penjelasan tentang Formula Pemosisian
Membiarkan
f(x) = round(sin(x * π/6) * 6)
.Dengan asumsi asal adalah pusat jam, koordinat kisi dari digit paling kanan dari setiap nomor jam yang diberikan
x
adalah [f(x) * 2
,f(9 - x)
].sumber
Bash, 225 byte
Anehnya ini lebih lama dari solusi naif hanya mencetak setiap baris dalam satu lingkaran (132 karakter jika menggunakan tabstops).
sumber
tr -d \<space>
(di mana<space>
karakter antariksa) berfungsi sebagai pengganti substitusi sed?tr -d\
akan setara dengansed 's/ //g'
Python 3 ,
1128887 byteSolusi menggunakan interpolasi string.
Cobalah online!
-25 byte berkat ovs dan Herman L.
sumber
{11:7}
.C (gcc) ,
135123110 byteIni menggunakan pengodean sederhana di mana ada di
c
antara'a'
dan'z'
mewakilic-'a'+1
ruang berulang,'`'
mewakili baris baru, dan semua karakter lainnya dibiarkan tidak berubah.Cobalah online!
sumber
*s=L"...";f(i){
alih-alihf(i){char*s="...";
T-SQL, 132 byte
Hanya 12 byte lebih pendek dari solusi sepele (
PRINT
dari seluruh string apa adanya).Menemukan variasi yang saya sukai jauh lebih lama (
235)226 bytes), tetapi jauh lebih seperti SQL:STRING_SPLIT
memecahnya menjadi baris di koma, danPARSENAME
membagi setiap baris di titik-titik. Bagian ke-1 dan ke-3 digunakan untuk berapa banyak ruang untuk dicetak, ke-2 dan ke-4 digunakan untuk apa yang akan ditampilkan.(jeda baris yang satu ini hanya untuk dibaca)
sumber
Perl 6 , 116 byte
Cobalah online!
(Ta @JoKing untuk menghemat 26 byte)
Perl 6 , 142 byte
Cobalah online!
Saya ingin melakukan sesuatu ... berbeda. Jadi yang satu ini menghitung posisi semua digit, melalui pasangan karakter, menghapus ruang awal dan mencetak garis.
Mudah dimodifikasi untuk parameter yang berbeda, misalnya versi lebar 45 karakter dengan 17 digit .
sumber