Anjing saya menggonggong, tetapi saya terlalu malas untuk membawanya jalan-jalan. Saya punya ide! Saya akan membuat orang-orang di Code Golf melakukannya untuk saya!
Tantangan Anda adalah untuk mensimulasikan langkah anjing. Berikut adalah aturan untuk menuntun anjing:
- Manusia (
H
) akan mulai dari0,0
pada bidang koordinat (Cartesian), dan secara acak akan naik satu ruang baik naik, kiri, kanan, atau turun setiap detik. - Anjing (
D
) akan mulai di lokasi yang sama, dan akan menjadi nol, satu, dua, atau tiga spasi baik atas, kiri, kanan, atau bawah setiap detik (tentu saja secara acak). Anjing kurang dapat diprediksi dan kadang-kadang akan berlari lebih cepat atau berhenti sepenuhnya. - Anjing tidak akan pernah mendapatkan lebih dari jumlah unit tertentu dari manusia (dalam jarak Euclidean), yang merupakan panjang tali (
L
). Misalnya, jikaL
adalah6
, posisi yang valid akanH(0,0) D(4,4)
(karena jaraknya sekitar 5,65 unit), tapi tidakH(0,0) D(5,4)
(sekitar 6,4 unit).- Jika, ketika anjing bergerak, ia akan melanggar persyaratan jarak tali, ia harus pergi sejauh mungkin ke arah yang ditentukan yang tidak melanggar persyaratan jarak. Sebagai contoh, jika posisi itu
H(0,0) D(3,4)
dan anjing secara acak memutuskan untuk memindahkan 3 ruang ke kanan, itu akan pergi keD(4,4)
, karena itu yang terjauh ia bisa pergi tanpa mendapatkan lebih dari 6 unit. (Perhatikan bahwa ini mungkin menghasilkan gerakan 0 spasi, yaitu tidak ada gerakan sama sekali!)
- Jika, ketika anjing bergerak, ia akan melanggar persyaratan jarak tali, ia harus pergi sejauh mungkin ke arah yang ditentukan yang tidak melanggar persyaratan jarak. Sebagai contoh, jika posisi itu
- Aturan lain-lain: manusia bergerak lebih dulu. Manusia tidak boleh melebihi panjang tali saat bergerak. Jika ya, ia harus memilih arah lain. "Acak" berarti "dengan distribusi yang merata dan tanpa pola."
Input akan diberikan dalam format ini (bisa STDIN, parameter fungsi, file, dll.):
"<amount of seconds the walk will last> <leash length>"
Sebagai contoh:
300 6 // a 5 minute walk with a 6 yard leash
Anda harus memberikan output dalam format ini (bisa STDOUT, nilai pengembalian fungsi, file, dll.):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(Jumlah output baris akan seconds + 1
, karena H(0,0) D(0,0)
baris tidak masuk hitungan.)
Ini adalah kode-golf , jadi kode terpendek dalam byte akan menang!
Jawaban:
GolfScript, 140 karakter
Contoh jalankan (coba online ):
sumber
CoffeeScript - panggilan fungsi 324 +
Demo (Menggunakan Leash 10):
Kode:
Kode Panjang:
sumber
Ruby,
189177Saya mungkin bisa menjatuhkan ini sedikit. Aku tidak mencintai
j
.Tidak Disatukan:
sumber
Mathematica 285
Golf
Contoh
Tidak disatukan
Ada beberapa komentar dalam teks di bawah ini. Saya juga menyertakan cetakan yang memungkinkan untuk mengikuti beberapa perhitungan.
Contoh
[Bagian dari cetakan ditampilkan untuk memberi gambaran tentang bagaimana kode bekerja. ]
sumber