"Aku ingin pergi ke bazaar Araby untuk membeli hadiah untuk yang sudah kucintai. Namun, jika aku datang terlambat semua toko akan tutup dan aku tidak akan bisa membeli apa pun. Bisakah kamu membantu saya? "
Sasaran: Bawa bocah itu ke Araby dari North Richmond Street sebelum semua toko tutup.
Tujuan Aktual: Pastikan bocah itu tidak tiba di Araby sebelum toko tutup.
Program Anda akan menerima input dalam format berikut:
<time> <map>
dimana
<time>
adalah waktu maksimum yang bisa dihabiskan bocah itu dalam beberapa menit. Ini adalah bilangan bulat positif.<map>
adalah grafik dari rute yang bisa ditempuh oleh kereta.
Berikut ini cara kerja grafik:
- Setiap pernyataan diakhiri dengan tanda titik koma.
- Node dalam peta (yang mewakili sakelar) direpresentasikan menggunakan huruf kecil.
- Jalur antara node diwakili dengan sintaks
a,X,b
, di manaX
bilangan bulat mewakili berat jalur. Bobot jalur adalah waktu, dalam hitungan menit, kereta harus melewati kedua simpul tersebut. - Araby diwakili dengan
a
, dan North Richmond Street diwakili dengann
. - Semua jalur adalah dua arah.
Misalnya, grafik ini (berpura-pura jalurnya dua arah):
Gambar oleh Artyom Kalinin, via Wikimedia Commons. Digunakan di bawah lisensi CC BY-SA 3.0 .
akan dicatat dalam notasi grafik sebagai:
a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f;
Perhatikan bahwa input ini tidak memiliki n
, jadi input ini tidak valid. Program Anda dapat melakukan apa saja jika diberi input yang tidak valid.
Berikut ini contoh input:
21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a;
(Ini hanya grafik yang sama seperti gambar di atas dengan a
digantikan oleh n
dan f
digantikan oleh a
).
Anak itu harus mendapatkan dari n
ke a
dalam 21 menit. Jika dia mengambil rute n
-> c
-> e
-> d
-> a
, dia sampai di sana dalam 20 menit, yang tepat waktu. Kami dapat mewakili rute itu sebagai daftar node yang dipisahkan koma:
n,c,e,d,a
Di sisi lain, rute n
-> b
-> c
-> e
-> d
-> a
akan menyebabkan anak laki-laki mengambil 27 menit, yang tidak tepat waktu. Kami bisa mewakili rute itu seperti ini:
n,b,c,e,d,a
Rute lain yang mungkin akan menyebabkan anak itu tidak berhasil tepat waktu adalah:
n,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,e,d,a
Program Anda harus menerima input seperti yang dijelaskan di atas, dan pada pandangan pertama muncul untuk mengeluarkan rute yang akan menyebabkan anak laki-laki itu berhasil tepat waktu, tetapi sebenarnya mengeluarkan rute yang menyebabkan anak itu tidak berhasil tepat waktu. Untuk setiap input yang diberikan akan selalu ada rute, tanpa mundur, yang menyebabkan anak itu tidak berhasil tepat waktu.
Ini adalah kontes popularitas yang curang, sehingga entri dengan suara terbanyak menang. Voting diberikan karena kecerdasan dalam menyembunyikan bug - semakin tidak jelas semakin baik.
Berikut adalah beberapa grafik sampel untuk menguji program Anda.
Memasukkan:
12 a,2,c;a,2,e;b,5,c;b,4,d;b,11,e;d,7,n;e,4,n;
Representasi visual (representasi visual ini hanya untuk kejelasan dan bukan merupakan bagian dari tantangan):
Sebuah kemungkinan keluaran:
n,d,b,e,a
Memasukkan:
10 a,8,b;a,12,d;b,1,n;d,11,n;a,1,n;
Berikut ini adalah gambar visual dari grafik:
Sebuah kemungkinan keluaran:
n,d,a
Jawaban:
Python 3 (bukan 2)
Sunting: Saya akan ungolf ini di pagi hari, oops.
Ini adalah pencarian bintang-A yang sangat normal. Baik? Riiiiiiight? Tampaknya bekerja untuk semua kasus uji.
sumber