Kode terpendek untuk lulus semua kemungkinan menang
Banyak game berbasis kisi telah dibuat yang dimulai dengan kisi-kisi lampu yang dinyalakan. Menekan salah satu lampu menyebabkan cahaya itu dan keempat lampu yang bersebelahan dengannya menyala. Ketika lampu dimatikan, lampu dimatikan atau dinyalakan, tergantung pada apakah dimatikan atau dinyalakan. Tujuannya adalah untuk mengenai lampu secara berurutan yang menghasilkan semua lampu dimatikan pada akhirnya.
"X" mewakili lampu yang dinyalakan. "O" mewakili lampu yang dimatikan. "P" mewakili kotak yang ditekan.
XOO XOO XOX XOX XXX
XOX XOP -> XXO -> OPO -> XOX
OOX OOX POO XXO XOO
Intial Grid Press 1 Press 2 Press 3 Ending Grid
Input dapat diambil langsung dari file yang dikirimkan sebagai argumen, atau sebagai input standar. Baris pertama masukan akan berisi x (1 <= x <= 20), ukuran grid lampu, berarti x oleh x . Baris kedua akan berisi y (0 <= y <= ( x * 3) 2 ), jumlah lampu awalnya menyala. Baris y berikutnya berisi koordinat lampu yang menyala di grid, dalam format "kolom baris". Lampu yang sudah dinyalakan (telah dinyalakan sebelumnya) harus dinyalakan kembali. Baris selanjutnya akan berisi z , jumlah lampu ditekan. Final z garis berisi koordinat dari lampu yang ditekan, dalam urutan yang ditekan, dalam format "kolom baris".
Tidak ada input yang salah. Semua angka akan berada dalam batas-batas grid yang diberikan.
Output akan menjadi grid terakhir setelah semua lampu telah diaktifkan. Ini harus menjadi n oleh n jaringan. Untuk setiap area yang memiliki cahaya yang menyala, karakter huruf besar "X" harus digunakan. Untuk setiap area yang memiliki cahaya yang mati, karakter huruf besar "O" harus digunakan.
Lampu yang terpengaruh yang berada di luar jaringan harus diabaikan. Mengalihkan cahaya di tepi kisi hanya akan memengaruhi lampu yang ada di kisi itu sendiri.
Uji Kasus
Memasukkan
4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2
Keluaran
OXOO
XOXO
XOXO
OXOO
Memasukkan
1
3
1 1
1 1
1 1
2
1 1
1 1
Keluaran
X
sumber
exec
adalah kata kunci, bukan fungsi bawaan (dengan Python 2.x), jadi tidak perlu untuk kurung tambahan itu.Ruby 1.9, 167 karakter
Suntingan:
z[u]*=-1
alih-alihz[u]=-z[u]
, hapus variabel yang tidak digunakansumber
Perl, 139 karakter
Penjelasan:
sumber
APL (71)
sumber