Baru-baru ini ada salju besar, dan jalan masuk saya membutuhkan salju. Jika peniup salju melewati beberapa area yang sudah dilewati salju, maka area tersebut akan terkena salju dan perlu ditiup lagi. Dan tentu saja, peniup salju tidak dapat memulai di tengah jalan masuk, itu harus dimulai dari garasi saya, tempat penyimpanannya.
Lebih formal:
Program Anda mengambil bentuk input standar sebagai string atau array multidimensi yang terlihat seperti berikut:
XXXXOOOOXXXX
X X
X X
XXXXXXXXXXXX
X
mewakili area yang tidak dapat dihembuskan salju, O
mewakili area di mana peniup salju dapat digunakan, dan ruang kosong mewakili area di mana ada salju. Anda dapat memilih nilai yang berbeda jika diinginkan.
Program Anda harus menampilkan sesuatu seperti berikut:
XXXX*%OOXXXX
Xv<<<^<<<<<X
X>>>>>>>>>^X
XXXXXXXXXXXX
Peniup salju mulai di *
. The *
selalu menunjuk ke ruang non-bengkel terdekat. The <
, >
, v
, dan ^
semua mewakili pointer dari mana arah berikutnya adalah. Mereka mengarahkan peniup salju ke mana harus pergi. Setelah penunjuk menunjuk ke %
, blower telah kembali masuk ke garasi, dan seluruh jalan masuk harus jelas.
Peniup salju harus melewati seluruh jalan masuk. Jalur Snowblower tidak pernah bisa tumpang tindih dengan sendirinya. Masukan yang tidak mungkin tidak harus diberikan.
Karena saya tidak ingin berada di luar lebih lama dari yang seharusnya, dan tidak perlu menghabiskan banyak waktu untuk mengetik, program harus sesingkat mungkin. Kode terpendek menang!
Kasus uji:
Kasing uji ini mungkin memiliki beberapa jawaban yang benar. Saya telah memberikan solusi yang memungkinkan di bawah setiap test case.
Uji kasus 1: Yang diberikan dalam contoh.
Uji kasus 2:
XOOOOOX
X X
X X
X XXXXXXXX
X X
X X
XXXXXXXXXXXXXX
X*OOO%X
Xv>>>^X
Xv^<<<X
Xv>>>^XXXXXXXX
Xv^<<<<<<<<<<X
X>>>>>>>>>>>^X
XXXXXXXXXXXXXX
Uji kasus 3:
XOOOOX
X X
X X
X XXX
X X
X X
XXXXXX
XOO%*X
X>>^vX
X^v<<X
X^vXXX
X^>>vX
X^<<<X
XXXXXX
Uji kasus 4:
XXXXXXXXXXXXX
O X
O X X
O X X
O X
XXXXXXXXXXXXX
XXXXXXXXXXXXX
*>>>>>>>>>>vX
Ov<v<Xv<<<<<X
Ov^v^X>>>>>vX
%<^<^<<<<<<<X
XXXXXXXXXXXXX
O
akan selalu berada dalam garis kontinu lurus? 2) bahwaO
s akan selalu berada di tepi array? 3) bahwa tidak akan ada ruang utama? 4) bahwa tidak akan ada spasi tambahan (yaitu dalam kasus uji 2 beberapa garis lebih pendek dari yang lain)?Jawaban:
JavaScript (ES6),
346310299298297296283 byteCukup macet di beberapa tempat, tetapi saya ingin mendapatkan kode di luar sana. Input sebagai array karakter 2D, output dengan memodifikasi array kata.
Versi tidak disatukan
Ini adalah algoritma yang sama persis, menyimpan untuk beberapa truthy / sihir falsy dengan
+' '
menjadiNaN
menjadi falsy (dan lagi), beberapa variabel golf dan menggunakanif
s bukan?:
,||
dan&&
.sumber