Kota asal saya, Rhyl , memiliki sistem lalu lintas satu arah yang tampaknya telah dirancang untuk menjauhkan orang dari tujuan mereka selama mungkin. Tugas Anda, jika Anda memilih untuk mencobanya, adalah menghasilkan program untuk memberikan rute terpendek melalui sistem lalu lintas tersebut.
Memasukkan
Input akan aktif STDIN
, dan akan menjadi daftar titik awal dan akhir diikuti oleh baris kosong diikuti oleh daftar pertanyaan, sebagai berikut:
A B
B A
B C
C D
D C
A D
C A
B A
Setiap jalan hanya dapat dilalui dengan arah yang diberikan, jadi, dalam contoh di atas jalan A - B adalah jalan dua arah sedangkan B - C adalah jalan satu arah dari B ke C. Bepergian dari C ke B terlarang.
Titik awal dan akhir semua akan diwakili oleh satu huruf besar.
Keluaran
Output harus menjadi rute terpendek (diukur dengan jumlah titik yang dikunjungi) dari titik awal yang diberikan ke titik akhir yang diberikan untuk setiap permintaan yang diterima. Jika tidak ada rute seperti itu, output baris kosong. Jika ada lebih dari satu rute terpendek, hasilkan yang pertama saat mengurutkan semua rute terpendek secara leksikografis.
Untuk contoh di atas, hasilnya adalah:
A B C D
B A
Tes Script
Seperti sebelumnya saya memberikan tes untuk tugas ini berdasarkan pada skrip yang ditulis oleh Joey dan Ventero : -
dan juga tes dan output yang diharapkan untuk siapa saja yang tidak dapat menggunakan skrip di atas
Pemakaian: ./test [your program and its arguments]
Hadiah
Semua jawaban yang jelas-jelas telah mencoba golf yang memenuhi spesifikasi dan lulus semua tes akan mendapatkan upvote saya. Jawaban kerja terpendek pada 26/01/2012 akan diterima.
sumber
output the first when sorting all shortest routes lexicographically
- Jadi jikaA B D
danA C D
keduanya merupakan solusi yang valid,A B D
bukan output ?Jawaban:
Haskell,
223207 karaktersumber
Python (2.x),
382369358338323318 karakterSemua tips dan komentar diterima!
Harus lulus tes dalam formulir ini. Masukan umpan melalui stdin, mis
python shortestroute.py < test.txt
.sumber
A B I J M
bukannyaA B G J M
.C:
450,437,404, 390 karaktersumber
puts("\n")
mencetak dua baris baru.puts()
secara otomatis menambahkan ujung terminator ke string yang dicetaknya. Untuk menghindari perilaku itu, gunakanfputs(str, stdout)
atau sederhananyaprintf(str)
.