Burung Anda telah gatal untuk beberapa latihan dan muak terjebak dalam posisi statis sepanjang waktu. Tulis program yang akan menunjukkan burung ascii yang menari secara acak, memperbarui setiap 100ms * n atau 200ms * n tergantung pada gerakan dansa. Burung itu selalu dimulai dengan gerakan tarian <(")>
.
Program harus menerima satu input yang merupakan angka untuk mengalikan interval tidur dengan ( n >= 0 && n <= 50
).
100 ms Bergerak
^(")v
v(")^
^(")^
v(")v
200 ms Bergerak
(>")>
<(")>
<("<)
Detail Ekstra
- Keacakan tidak harus seragam tetapi setiap gerakan tarian harus memiliki kesempatan yang wajar untuk terjadi (setidaknya 1 dari 60 terlihat adil, tidak apa-apa jika gerakan yang sama terjadi dua kali berturut-turut)
- Seharusnya hanya ada satu burung ditampilkan pada satu waktu, bukan banyak burung
- Trailing whitespace diizinkan (tetapi karakter trailing lainnya tidak)
- Seekor burung harus ditampilkan sebelum tidur
Contoh dalam Python 3
import random, time, sys
birds = """(>")>
<(")>
<("<)
^(")v
v(")^
^(")^
v(")v"""
birds = birds.split()
interval = int(input("Sleep for 100ms*"))
selection = -1
while True:
if selection == -1:
selection = 1
else:
selection = random.randint(0, len(birds)-1)
sys.stdout.write('\r'+birds[selection])
if selection > 2:
time.sleep(0.1*interval)
else:
time.sleep(0.2*interval)
Kemenangan
- Ini adalah kode-golf sehingga byte paling tidak menang!
\r
pelarian Lua tampaknya bertindak seperti a\n
. Saya juga tidak bisa menggunakannya dios.execute("cls")
sana. @redstarcoderJawaban:
MATL , 53 byte
Bergerak secara acak acak.
Di bawah ini adalah contoh dijalankan
n = 2
. Atau coba di MATL Online! (Penerjemah bersifat eksperimental. Jika tidak berjalan pada awalnya, coba tekan "Jalankan" lagi atau segarkan halaman).Penjelasan
sumber
Matlab,
125117 byteSayangnya ini tidak dapat ditampilkan di TIO karena tidak ada "streaming" dari output. Berikut adalah gif untuk input
1
gantinya:Terima kasih @LuisMendo untuk -8 byte!
sumber
*> <> ,
103101 byteCoba di sini! (tulis di
n
tumpukan awal atau Anda akan mendapatkan kesalahan)Saya memutuskan untuk menusuk tantangan saya karena tidak ada jawaban sub byte 100. Tempatkan
n
di tumpukan dan pergilah! Ini menggunakan kembali(")
karakter untuk menyimpan beberapa byte.Penjelasan
Inisialisasi
<vD[3'(")'
Di sini kami menyimpan
(")
untuk penggunaan nanti.Pemilih menari
Ini sering dilakukan untuk memilih jenis tarian yang akan kita hasilkan.
Ada di
v
atasx
dan<
di sebelah kanan juga. Ini membuatx
eksekusi ulang jika mencoba untuk memindahkan IP ke arah yang salah.Hasilkan tarian 100 ms
Di sini kita menghasilkan dan menampilkan salah satu gerakan tarian 100 ms.
43C - Hasilkan "^" atau "v"
Ini adalah fungsi sederhana yang menghasilkan "^" atau "v" lalu kembali. Ini bekerja mirip dengan pemilih tari di mana ia memiliki instruksi sekitar
x
untuk memastikan IP hanya bergerak ke kiri atau kanan.Hasilkan tarian 200 ms
Ini adalah hal lain yang dimulai dengan
x
. Ini akan dipisahkan menjadi dua bagian:<(")>
dan yang lain(>")> and <("<)
, karena mereka adalah dua bagian yang berbeda danx
merupakan satu-satunya yang mereka bagikan.<(")>
Ini pada dasarnya merupakan awal dari
generate 100ms dance
rutinitas, tetapi mengisi tangan burung><
bukan sebagai^v
kombo acak . Ini dikalikann
dua kali ini juga. Ini membuat semuanya siap untuk menggunakangenerate 100ms dance
rutin untuk mengeluarkan seluruh burung dan menunggu 200 ms sebagai gantinya.(>")>
dan<("<)
Penjelasan kecil ini adalah tentang generasi
(>")>
dan<("<)
, meskipunx
dapat mengirim IP di luarnya (dijelaskan di bawah).sumber
JavaScript (ES6) + HTML5:
118116 + 8 = 124 byteJavascript: 119 byte
Saya menggunakan milidetik sejak zaman untuk menghasilkan angka acak-ish. Secara teoritis, ini akan selalu menghasilkan nomor (s) yang sama, tetapi tes pada PC saya memberi saya hasil yang cukup acak (sebagian besar angka muncul kurang lebih sama). Juga menggunakan fakta bahwa elemen html dengan id dapat ditambahkan ke objek jendela global dalam JavaScript, jadi
document.getElementById()
tidak diperlukan.HTML: 8 byte
Saya menghilangkan tanda kutip di sini dan saya tidak menutup
b
tag. Ini bukan html yang valid, tetapi semua browser secara otomatis menutup tag. Saya membuatnya berani karenab
elemen HTML satu karakter dan karena tarian burung saya pantas diperhatikan.sumber
PowerShell ,
124117 byte(Terima kasih TimmyD )
Cobalah online! (Bukan berarti itu akan bekerja di TIO ...)
sumber
$b
dan menggunakan pseudo-ternary untuk turun ke 117 -for(){(-split'^(")v v(")^ ^(")^ v(")v (>")> <(")> <("<)')[($i=0..6|random)];sleep -m((100,200)[$i-gt3]*$args[0]);cls}
... Saya pikir lebih pendek mungkin; Saya masih menyodoknya.Noodel , 67 byte tidak bersaing
Tantangan ini sangat sulit bagi Noodel karena tidak memiliki aritmatika pintar atau operator berbasis perbandingan. Tetapi setelah melakukan tantangan ini, saya pikir Noodel siap untuk rilis pertamanya.
Cobalah:)
Bagaimana itu bekerja
64 byte
Berikut adalah versi yang berfungsi sebagai cuplikan kode.
sumber
Python, 157 byte
Saya juga mencoba melakukannya tanpa seni ascii ayam, tapi itu jauh lebih lama.
sumber
Ruby, 97 + 1 = 98 byte
+1 byte dari
-n
flag.sumber
Clojure,
185178 byte+18 byte karena tidak dimulai dengan
<(")>
.-7 byte dengan inlining
birds
, dan menyingkirkanlet
.Hanya membagi burung pada spasi, mengambil indeks acak dari 0-6, menampilkan burung yang dipilih, maka jika indeks yang dipilih lebih besar dari 2, ia menunggu 100 ms, atau 200 ms.
Clojure benar-benar membutuhkan
split
metode string pada intinya.Tidak Disatukan:
sumber