Saya sepertinya membuat acar. Secara harfiah. Saya menjatuhkan banyak acar di lantai dan sekarang mereka semua bertebaran! Saya membutuhkan Anda untuk membantu saya mengumpulkan semuanya. Oh, apakah saya menyebutkan saya memiliki banyak robot atas perintah saya? (Mereka juga tersebar di mana-mana; Aku benar-benar buruk dalam mengatur hal-hal.)
Anda harus mengambil input dalam bentuk:
P.......
..1..2..
.......P
........
P3PP...4
.......P
yaitu, beberapa baris baik .
, P
(acar), atau digit (ID robot). (Anda dapat mengasumsikan bahwa setiap baris memiliki panjang yang sama, diisi dengan .
.) Anda dapat memasukkan baris-baris ini sebagai array, atau menyeruput dari STDIN, atau membaca dalam baris tunggal yang dipisahkan koma, atau membaca file, atau melakukan apa pun yang Anda mau suka mengambil input.
Output Anda harus dalam bentuk n
garis, di mana n
ID robot tertinggi. (ID robot akan selalu berurutan mulai dari 1.) Setiap baris akan berisi jalur robot, dibentuk dari huruf L
(kiri), R
(kanan), U
(atas), dan D
(bawah). Sebagai contoh, inilah contoh output untuk teka-teki itu:
LLU
RDR
LRRR
D
Bisa juga begitu
LLU RDR LRRR D
Atau
["LLU","RDR","LRRR","D"]
Atau format apa pun yang Anda inginkan, selama Anda bisa tahu apa solusi yang seharusnya.
Tujuan Anda adalah untuk menemukan output optimal, yang merupakan langkah yang paling sedikit. Jumlah langkah dihitung sebagai jumlah langkah terbesar dari semua robot. Misalnya, contoh di atas memiliki 4 langkah. Perhatikan bahwa mungkin ada beberapa solusi, tetapi Anda hanya perlu menghasilkan satu.
Mencetak:
- Program Anda akan dijalankan dengan masing-masing dari 5 kasus pengujian (dihasilkan secara acak).
- Anda harus menambahkan langkah-langkah dari setiap lari, dan itu akan menjadi skor Anda.
- Total skor kumulatif terendah akan menang.
- Anda mungkin tidak membuat hard-code untuk input spesifik ini. Kode Anda juga harus berfungsi untuk input lainnya.
- Robot dapat saling melewati.
- Program Anda harus deterministik, yaitu keluaran yang sama untuk setiap proses. Anda dapat menggunakan generator angka acak, asalkan diunggulkan dan secara konsisten menghasilkan bilangan lintas platform yang sama.
- Kode Anda harus berjalan dalam 3 menit untuk setiap input. (Lebih disukai lebih sedikit.)
- Dalam hal seri, sebagian besar upvotes akan menang.
Berikut ini adalah contoh-contoh tesnya. Mereka dihasilkan secara acak dengan skrip Ruby kecil yang saya tulis.
P.......1.
..........
P.....P...
..P.......
....P2....
...P.P....
.PP..P....
....P....P
PPPP....3.
.P..P.P..P
....P.....
P....1....
.P.....PP.
.PP....PP.
.2.P.P....
..P....P..
.P........
.....P.P..
P.....P...
.3.P.P....
..P..P..P.
..1....P.P
..........
.......2P.
...P....P3
.P...PP..P
.......P.P
..P..P..PP
..P.4P..P.
.......P..
..P...P...
.....P....
PPPP...P..
..P.......
...P......
.......P.1
.P..P....P
P2PP......
.P..P.....
..........
......PP.P
.P1..P.P..
......PP..
P..P....2.
.P.P3.....
....4..P..
.......PP.
..P5......
P.....P...
....PPP..P
Semoga beruntung, dan jangan biarkan acar terlalu lama di sana, atau mereka akan rusak!
Oh, dan mengapa acar, Anda bertanya?
Kenapa tidak?