Jam pasir
Jam pasir ini memiliki 60 "pasir waktu", dan sepenuhnya mengisi setiap ruang. Jam memiliki lebar 19 karakter dan tinggi 13 karakter. Setiap ruang memiliki 5 baris pasir dan ada baris di tengah yang dapat menampung 1 pasir. Baris atas dapat menampung 17 pasir, 15 berikutnya dan seterusnya (lihat di bawah). Pasir jatuh ke ruang bawah dengan kecepatan satu pasir per detik.
START 3 SECONDS LATER 38 SECONDS LATER
███████████████████ ███████████████████ ███████████████████
█.................█ 17 █.............. █ 14 █ █ 0
██...............██ 15 ██...............██ 15 ██ ██ 0
███.............███ 13 ███.............███ 13 ███....... ███ 7
█████.........█████ 09 █████.........█████ 09 █████.........█████ 09
███████.....███████ 05 ███████.....███████ 05 ███████.....███████ 05
█████████.█████████ 01 █████████.█████████ 01 █████████.█████████ 01
███████ ███████ ███████ . ███████ ███████ . ███████
█████ █████ █████ . █████ █████ . █████
███ ███ ███ . ███ ███.... ███
██ ██ ██ ██ ██...............██
█ █ █ █ █.................█
███████████████████ ███████████████████ ███████████████████
Tantangan
Perlihatkan jam pasir (tidak perlu angka atau judul) setelah periode waktu tertentu (0 ≤ t ≤ 60).
Aturan Pengkodean
- Jam pasir harus terlihat persis seperti yang ditunjukkan di sini. Anda dapat mengganti
█
karakter dan / atau.
karakter dengan apa pun yang Anda suka agar sesuai dengan bahasa Anda (Unicode, masalah kompatibilitas ASCII). - Input harus berupa angka seperti 45 atau 7. Tampilkan jam setelah sekian banyak detik ini.
- Output dapat ditampilkan atau disimpan ke file. Tidak diperlukan teks atau label tambahan seperti yang ditunjukkan di atas - hanya jam pasir yang kita butuhkan.
- Jika pengguna memasukkan t> 60, Anda tidak perlu menangani kesalahan.
Poin
- Kode terpendek menang.
Jawaban:
JavaScript ( ES6 ), 203
208 233 270 256karakterEdit Direvisi menggunakan perulangan alih-alih urutan panggilan.
Edit baris atas dan bawah yang ditambahkan yang hilang.
Suatu fungsi mengembalikan output. Jalankan cuplikan di Firefox untuk menguji.
sumber
setTimeout( tick, 1000);
Python 2, 200
xnor telah membuat versi 197 byte dalam obrolan .
Saya akan memposting penjelasan, tapi saya lupa bagaimana cara kerjanya ...
Juga, inilah versi animasi dengan kutukan:
sumber
Python 2.7,
362356347Output pada 38 detik:
sumber
C 544
Inilah yang saya miliki sejauh ini untuk solusi C.
Dikompilasi dengan perintah berikut:
Diakui, bahasa ini memiliki banyak sekali- termasuk pernyataan adalah sedikit cacat keluar dari blok, tapi saya benar-benar hanya mencari alasan untuk berlatih menggunakan C.
Saya harap Anda menyukai solusi saya, dan beri tahu saya jika Anda melihat cara untuk meningkatkan.
sumber
for
alih-alihwhere
,?:
alih-alihif else
, variabel int global tidak perluint
,include
tidak diperlukan. (Saya suka matematika Anda)r,i,y,x,b,d,n[]={0,43,28,15,6,1,0,1,5,13,25,39,0};char H[14][20];main(s,a)char**a;{for(s=atoi(a[1]);y<13;){b=x=i=0;d=abs(y-6);d+=3<d?3:d;d=9-d?9-d:10;r=s>55?59-s:s>38?4:s>24?3:s>12?2:s>4?1:r;for(;b<19;)H[y][b++]=35;for(;x<19-2*d;x++)H[y][x+d]=(x>s-n[y]?" .":". ")[y>6];for(;i<r;)H[7+i++][9]=46;H[y++][b]=10;}puts(H);}
(waspadalah, karakter aneh yang tak terlihat ditambahkan ke komentar panjang seperti ini)Matlab, 252 byte
Idenya adalah membangun sebuah matriks yang terlihat seperti ini:
Dari sana mudah untuk mengisi entri dengan string yang bergantung
n
(mengisi semua entri yang lebih besar darin
dan lebih kecil darin+60
dengan titik-titik)Karena
n=38
kita mendapatkan hasil ini:sumber
Java, 712
Input diambil dari baris perintah. Menangani nilai negatif untuk waktu dan juga lebih besar dari yang dibutuhkan.
keluaran:
Mengisi pasir dari pusat yang mengembang ke arah luar. Saya mungkin bisa bermain golf lebih banyak jika saya malas bagaimana mengisi bagian bawah dan mengosongkan bagian atas. Tetapi untuk saat ini saya sangat menyukainya.
sumber
Haskell 512 Bytes
Memasukkan
m 55
Keluaran
Input
m 48
Outputsumber
++
. Anda juga dapat menyimpan beberapa byte dengan menentukan sebelumnyalength
danreverse
.C #, 382
410masih mungkin untuk mengurangi beberapa byte ...
Fiddler - 38sec
sumber
int u=60-22
dan bukan hanyaint u=38
??Ruby:
196190186185184 karakterCW karena tidak sesuai persis dengan sampel yang diposting karena ini mengkonsumsi pasir mulai dari kiri. Sebagian besar hanya demonstrasi
String.[]=
metode.Contoh dijalankan:
Ruby: 215 karakter
Ini menghasilkan output yang dibutuhkan tepat:
Contoh dijalankan:
sumber