Ada permainan bernama Get Home yang dimainkan di papan catur. Dalam game ini ada satu bagian yang digerakkan oleh kedua pemain secara bergantian. Ada beberapa aturan tentang bagaimana karya itu bisa dipindahkan. Pada gilirannya pemain harus membuat salah satu dari langkah berikut untuk positif n .
n spasi
n spasi ke kiri
n spasi ke atas dan ke kiri (diagonal)
Pemain yang memindahkan potongan ke sudut kiri atas papan memenangkan permainan.
Sekarang kita akan mendefinisikan konsep kuadrat kalah. Dalam video ini (dari mana saya mendapat ide), kotak yang kalah didefinisikan sebagai kotak, di mana, setiap pemain yang memulai giliran mereka akan dipaksa untuk membuat langkah yang memungkinkan lawan mereka untuk memaksa menang. Contoh paling sederhana dari kuadrat kalah adalah kuadrat di (1,2). Sepotong di (1,2) dapat pindah ke salah satu tempat berikut.
Semuanya memiliki jalur langsung menuju kemenangan untuk pemain berikutnya.
Ini juga mengikuti bahwa setiap kotak yang memiliki jalur satu langkah ke kotak yang kalah memungkinkan pemain mulai dari kotak itu untuk memaksa menang. Ini berarti bahwa setiap kotak yang tidak satu bergerak menjauh dari kotak yang kalah juga merupakan kotak yang hilang.
Ini membawa kita ke definisi yang agak rapi tentang kehilangan persegi:
Kuadrat yang kalah adalah kuadrat dari mana tidak ada gerakan yang bisa tiba di kuadrat yang kalah dan (0,0) adalah kuadrat yang kalah.
Tugas
Mengingat koordinat kotak pada papan catur berukuran sewenang-wenang menentukan apakah itu kotak yang kalah. Keluarkan dua nilai satu untuk kehilangan kotak dan satu untuk yang lain.
Ini adalah kode-golf sehingga jawaban akan dinilai dalam byte dengan lebih sedikit byte lebih baik.
Uji Kasus
Berikut adalah semua kotak yang hilang pada papan catur reguler 8 x 8 (ditandai dengan 0).
0 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 0
1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
Berikut adalah gambar papan 100 x 100 dengan kotak yang hilang ditandai dengan warna hitam (masing-masing kotak berukuran 2 piksel kali 2 piksel).
sumber
10, 7
kotak kalah? Benarkah10, 8
? Bagaimana dengan15, 11
?Jawaban:
Python 3 ,
112504642 byte-4 byte terima kasih kepada Jonathan Allan !
-2 byte terima kasih kepada xnor !
Cobalah online!
Berdasarkan formula untuk posisi dingin dalam permainan Wythoff dan membuat beberapa modifikasi untuk menghasilkan formula eksplisit. Penjelasan inbound setelah saya benar-benar menyelesaikan metodologi yang tepat untuk derivasi formula.
sumber
0<=x
kex>0
dan menyimpan atau dua byte?<=
atau>=
untuk memasukkan posisi0, 0
.lambda r,c:int(abs(r-c)*(5**.5+1)**2/4)==max(r,c)
/2//1
terlihat sama dengan//2
.Jelly , 8 byte
Cobalah online! , atau lihat bagian kiri atas 60 kali 60 sebagai kisi .
Bagaimana?
Posisi dingin dalam permainan Wythoff adalah posisi kalah. Koordinat
[n,m]
memberikan posisi dingin ketikan = floor(kφ) = floor(mφ) - m
ataum = floor(kφφ) = ceil(nφ) = n + k
untuk beberapa bilangan aslik
,, dan rasio emasφ
,. Yang pertama berlaku ketikan
kurang darim
; yang terakhir ketikam
kurang darin
(keduanya memegang pada0,0
).k
dengan demikian perbedaan mutlak antaran
danm
dan jikafloor(abs(n-m)φ)=min(n,m)
kondisi terpenuhi.sumber
JavaScript (ES6), 64 byte
Saya melihat sekarang bahwa ini bukan teknik terbaik, tetapi saya harus membuatnya sendiri karena saya kehilangan internet segera setelah memuat halaman ini. (Akan diposting beberapa waktu lalu jika bukan karena masalah internet ini ...)
Di dunia yang sempurna, presisi float tidak akan menjadi masalah dan saya bisa menghemat 9 byte:
6 byte lagi dapat disimpan jika JS mendukung rantai perbandingan Python:
sumber
Pyth, 39 Bytes
Saya menulis ini dengan fungsi bernama (ew), dan sangat malas bermain golf. Berencana untuk bermain golf cukup banyak byte nanti malam
Cobalah secara online, dengan tes yang saya buat sendiri, yang dimaksudkan untuk mengganti Benar / Salah
Penjelasan:
Diagonal dari matriks solusi memiliki kuadrat kehilangan sesuai dengan urutan angka yang diulang dalam OEIS A005206 . Dari
L
melalui;
adalah notasi polish cukup mudah untuk menentukany(b)=b-y(y(b-1))
.Berikut penjelasannya
sumber
Batch, 204 byte
Kembali melalui kode keluar. Penjelasan: Karena Batch hanya memiliki bilangan aritmetika bilangan bulat, saya harus menyusun solusi aritmatika murni. Tidak termasuk
0,0
entri, pasangan koordinat kuadrat yang hilang mengikuti aturan berikut: jika11
nomor biner -gratis berikutnya bahkan kemudian tambahkan3,2
tambahkan2,1
. Tes untuk11
nomor biner -gratis adalah jika tidak ada membawa ketika itu dikalikan tiga, dengan kata lain itu(i*2)+i==(i*2)^i
. Berikut adalah beberapa11
angka biner -gratis pertama dan koordinatnya:dll. Secara misterius aturan ini cukup untuk membuat urutannya saling melengkapi. Kemudian tetap menghitung urutan sampai mencapai koordinat yang lebih besar, pada titik mana kita dapat menentukan apakah kuadratnya kalah.
sumber