Banyak dari kita yang akrab dengan permainan Tron. Anda mengontrol "siklus cahaya" yang ditempatkan pada kisi. Sepeda ringan selalu bergerak maju (meskipun Anda mengontrol arah) dan meninggalkan jejak permanen di belakangnya. Jika Anda mengalami jejak, Anda menabrak!
Tujuannya di sini adalah untuk menentukan apakah jalur yang diberikan adalah loop yang valid, yaitu, ia kembali ke titik awal tanpa "menabrak". Untuk melakukan ini, kita asumsikan kita mulai dari titik (0,0)
. Input diberikan dalam bentuk N2E1S2W1
, dengan serangkaian arah mata angin ( N
is north
, E
is east
, and sebagainya), masing-masing diikuti oleh jarak untuk menempuh arah itu. Dalam contoh ini, Anda akan bepergian
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
Jalan dianggap sah jika berakhir (0,0)
tanpa mengunjungi koordinat lain lebih dari sekali (mengunjungi (0,0)
tepat dua kali. Sekali di awal, dan sekali di akhir). Perlu diingat daripada dalam contoh di atas, untuk mendapatkan dari (0,0)
ke (0,2)
, kita tentu kunjungi (0,1)
juga.
Contoh lain:
input -> output
N1E1S1W1 -> true
N1E1N1E1S2W2 -> true
N1S1E1W1 -> false // Visits (0,0) 3 times
N4E2S2W4S2E2 -> false // Visits (0,2) twice
N3E2S3 -> false // Does not return to (0,0)
N1S1 -> anything //I don't care how you evaluate this case
Keluaran Anda bisa dalam bentuk apa pun asalkan memberikan hasil yang sama untuk nilai apa pun yang benar atau salah.
Input dapat diambil sebagai string atau sebagai daftar karakter, baik dalam bentuk S1N2E3
... atau SNNEEE
... Juga tidak ada batasan pada ukuran kisi, tetapi anggap input tidak akan meluap apa pun. Selama kode tersebut pada dasarnya baik, itu tidak penting untuk menangani kasus seperti N99999999999999
.
CATATAN: Anda mungkin mengevaluasi kasus N1S1
, E1W1
, S1N1
, dan W1E1
namun Anda ingin. Itu adalah jalur yang secara teknis valid, tetapi bertentangan dengan semangat "Tron" tantangan.
Mencetak gol
Ini kode-golf , jadi jawaban terpendek menang!
N
sebagai 1j
, E
sebagai 1
, S
sebagai -1j
, dan W
sebagai -1
?
N99999999999999
N1S1
harus benar untuk konsisten dengan definisi Anda karena mencapai(0, 0)
dua kali dan(0, 1)
sekali, yang berlaku di bawah definisi Anda.