Anak-anak saya memiliki permainan menyenangkan ini yang disebut Spot It! Kendala permainan (seperti yang saya bisa jelaskan) adalah:
- Ini adalah setumpuk 55 kartu
- Pada masing-masing kartu terdapat 8 gambar unik (yaitu kartu tidak dapat memiliki 2 gambar yang sama)
- Diberikan 2 kartu yang dipilih dari geladak, ada 1 dan hanya 1 gambar yang cocok .
- Gambar yang cocok mungkin diskalakan secara berbeda pada kartu yang berbeda tetapi itu hanya untuk membuat permainan lebih sulit (yaitu pohon kecil masih cocok dengan pohon yang lebih besar)
Prinsip permainan ini adalah: membalikkan 2 kartu dan siapa pun yang pertama kali mengambil gambar yang cocok mendapat poin.
Berikut gambar untuk klarifikasi:
(Contoh: Anda dapat melihat dari 2 kartu terbawah di atas bahwa gambar yang cocok adalah dinosaurus hijau. Di antara gambar kanan bawah dan kanan tengah, itu adalah kepala badut.)
Saya mencoba memahami yang berikut:
Berapa jumlah minimum gambar berbeda yang diperlukan untuk memenuhi kriteria ini dan bagaimana Anda menentukan ini?
Menggunakan pseudocode (atau Ruby), bagaimana Anda menghasilkan 55 kartu permainan dari berbagai gambar N (di mana N adalah angka minimum dari pertanyaan 1)?
Memperbarui:
Gambar memang muncul lebih dari dua kali per dek (bertentangan dengan apa yang beberapa orang duga). Lihat gambar 3 kartu ini, masing-masing dengan petir:
sumber
Jawaban:
Geometri Proyektif Hingga
The aksioma dari proyektif (pesawat) geometri yang sedikit berbeda dari geometri Euclidean:
Sekarang, tambahkan "terbatas" ke dalam sup dan Anda memiliki pertanyaan:
Bisakah kita memiliki geometri hanya dengan 2 poin? Dengan 3 poin? Dengan 4? Dengan 7?
Masih ada pertanyaan terbuka tentang masalah ini, tetapi kami tahu ini:
Q
titik, makaQ = n^2 + n + 1
dann
disebutorder
geometri.n+1
poin di setiap baris.n+1
garis persis .Jumlah total garis juga
Q
.Dan akhirnya, jika
n
prima, maka memang ada geometri urutann
.Apa hubungannya dengan teka-teki, orang mungkin bertanya.
Masukan
card
bukannyapoint
danpicture
bukanline
dan aksioma menjadi:Sekarang, mari
n=7
kita ambil dan kita memilikiorder-7
geometri terbatasQ = 7^2 + 7 + 1
. Itu membuatQ=57
garis (gambar) danQ=57
poin (kartu). Saya kira pembuat puzzle memutuskan bahwa angka 55 lebih bulat dari 57 dan meninggalkan 2 kartu.Kami juga mendapatkan
n+1 = 8
, jadi dari setiap titik (kartu), 8 baris berlalu (8 gambar muncul) dan setiap baris (gambar) memiliki 8 poin (muncul dalam 8 kartu).Berikut ini adalah representasi dari bidang (geometri) proyektif terbatas hingga paling terkenal dengan 7 poin, yang dikenal sebagai Fano Plane , disalin dari Noelle Evans - Finite Geometry Problem Page
Saya sedang berpikir untuk membuat gambar yang menjelaskan bagaimana pesawat order-2 di atas dapat dibuat puzzle yang sama dengan 7 kartu dan 7 gambar, tetapi kemudian tautan dari pertanyaan kembar math.exchange memiliki diagram seperti itu: Dobble-et- la-geometrie-finie
sumber
every two cards have exactly one picture in common
, dinyatakan dalam pertanyaan. Yang ke-2for every two pictures there is exactly one card that has both of them
, OP dapat memberi tahu kami jika set game memuaskannya.Bagi mereka yang kesulitan menggambar geometri bidang proyektif dengan 57 poin, ada cara yang sangat bagus dan intuitif untuk membangun permainan dengan 57 kartu dan 57 simbol (berdasarkan jawaban oleh Yuval Filmus untuk pertanyaan ini ):
Dalam contoh, saya mengambil satu baris dengan kemiringan nol (merah), dan satu dengan kemiringan 1 (hijau). Mereka berpotongan tepat pada satu titik yang sama (burung hantu).
Metode ini memastikan bahwa dua kartu memiliki tepat satu simbol yang sama, karena
Dengan cara ini, kita dapat membuat kartu 7x7 (7 offset dan 7 lereng).
Kami juga dapat membuat tujuh kartu tambahan dari garis vertikal melalui kisi (yaitu mengambil setiap kolom). Untuk itu, ikon infinity slope digunakan.
Karena setiap kartu terdiri dari tujuh simbol dari grid dan tepat satu simbol "slope", kita dapat membuat satu kartu tambahan, yang hanya terdiri dari semua 8 simbol slope.
Ini membuat kita dengan 7x8 + 1 = 57 kartu yang mungkin, dan 7 x 7 + 8 = 57 simbol yang diperlukan.
(Secara alami, ini hanya bekerja dengan kisi berukuran bilangan prima (misalnya n = 7). Kalau tidak, garis-garis kemiringan yang berbeda dapat memiliki nol atau lebih dari satu persimpangan jika lereng merupakan pembagi ukuran kisi.)
sumber
Jadi ada k = 55 kartu yang berisi m = 8 gambar masing-masing dari kumpulan n gambar total. Kita bisa menyatakan kembali pertanyaan 'Berapa banyak gambar n kita perlu, sehingga kita dapat membangun satu set k kartu dengan hanya satu gambar dibagi antara setiap pasangan kartu?' ekuivalen dengan bertanya:
Ada tepat ( n pilih m ) vektor yang memungkinkan untuk membangun pasangan. Jadi kita setidaknya membutuhkan n yang cukup besar sehingga ( n pilih m )> = k . Ini hanya batas bawah, jadi untuk memenuhi batasan kompatibilitas berpasangan kita mungkin membutuhkan n yang jauh lebih tinggi .
Hanya untuk bereksperimen sedikit, saya menulis sebuah program kecil Haskell untuk menghitung set kartu yang valid:
Sunting: Saya baru sadar setelah melihat solusi Neil dan Gajet, bahwa algoritma yang saya gunakan tidak selalu menemukan solusi terbaik, jadi semuanya di bawah ini belum tentu valid. Saya akan segera mencoba memperbarui kode saya.
Jumlah maksimum kartu yang kompatibel yang dihasilkan untuk m = 8 gambar per kartu untuk jumlah gambar yang berbeda untuk dipilih dari n untuk beberapa n pertama terlihat seperti ini:
Metode brute force ini tidak terlalu jauh karena ledakan kombinatorial. Tapi saya pikir itu mungkin masih menarik.
Menariknya, tampaknya untuk m yang diberikan , k meningkat dengan n hanya sampai n tertentu , setelah itu tetap konstan.
Ini berarti, bahwa untuk setiap jumlah gambar per kartu ada sejumlah gambar untuk dipilih, yang menghasilkan jumlah maksimum kartu legal. Menambahkan lebih banyak gambar untuk dipilih dari masa lalu bahwa jumlah optimal tidak menambah jumlah kartu legal lebih jauh.
Beberapa k optimal pertama adalah:
sumber
Yang lain telah menjelaskan kerangka kerja umum untuk desain (finive projective plane) dan menunjukkan bagaimana menghasilkan pesawat projektif terbatas orde utama. Saya hanya ingin mengisi beberapa celah.
Pesawat proyektif yang terbatas dapat dihasilkan untuk banyak pesanan yang berbeda, tetapi mereka paling mudah dalam hal pesanan utama
p
. Kemudian bilangan bulat modulop
membentuk bidang terbatas yang dapat digunakan untuk menggambarkan koordinat untuk titik dan garis dalam pesawat. Ada 3 jenis koordinat untuk titik-titik:(1,x,y)
,(0,1,x)
, dan(0,0,1)
, di manax
dany
dapat mengambil nilai-nilai dari0
kep-1
. 3 jenis poin menjelaskan rumusp^2+p+1
untuk jumlah poin dalam sistem. Kami juga bisa menggambarkan garis dengan 3 jenis yang sama dari koordinat:[1,x,y]
,[0,1,x]
, dan[0,0,1]
.Kami menghitung apakah suatu titik dan garis adalah insiden dengan apakah produk titik dari koordinatnya sama dengan 0 mod
p
. Jadi misalnya titik(1,2,5)
dan garis[0,1,1]
adalah kejadianp=7
sejak saat itu1*0+2*1+5*1 = 7 == 0 mod 7
, tetapi titik(1,3,3)
dan garis[1,2,6]
bukan kejadian sejak itu1*1+3*2+3*6 = 25 != 0 mod 7
.Menerjemahkan ke dalam bahasa kartu dan gambar, itu berarti kartu dengan koordinat
(1,2,5)
berisi gambar dengan koordinat[0,1,1]
, tetapi kartu dengan koordinat(1,3,3)
tidak berisi gambar dengan koordinat[1,2,6]
. Kita dapat menggunakan prosedur ini untuk mengembangkan daftar kartu lengkap dan gambar-gambar yang dikandungnya.Ngomong-ngomong, saya pikir lebih mudah untuk menganggap gambar sebagai titik dan kartu sebagai garis, tetapi ada dualitas dalam geometri projektif antara titik dan garis sehingga benar-benar tidak masalah. Namun, pada bagian selanjutnya saya akan menggunakan poin untuk gambar dan garis untuk kartu.
Konstruksi yang sama berfungsi untuk bidang terbatas apa pun. Kita tahu bahwa ada bidang keteraturan terbatas
q
jika dan hanya jikaq=p^k
, kekuatan utama. Bidang ini disebutGF(p^k)
yang merupakan singkatan dari "bidang Galois". Ladang tidak mudah dibangun dalam wadah listrik utama seperti pada wadah listrik utama.Untungnya, kerja keras telah dilakukan dan diimplementasikan dalam perangkat lunak bebas, yaitu Sage . Untuk mendapatkan desain bidang proyektif pesanan 4, misalnya, ketikkan saja
dan Anda akan mendapatkan output yang mirip
Saya menafsirkan di atas sebagai berikut: ada 21 gambar berlabel 0 hingga 20. Setiap blok (garis dalam geometri projektif) memberi tahu saya gambar mana yang muncul pada kartu. Misalnya, kartu pertama memiliki gambar 0, 1, 2, 3, dan 20; kartu kedua akan memiliki gambar 0, 4, 8, 12, dan 16; dan seterusnya.
Sistem pesanan 7 dapat dihasilkan oleh
yang menghasilkan output
sumber
Saya baru saja menemukan cara untuk melakukannya dengan 57 atau 58 gambar tetapi sekarang saya memiliki sakit kepala yang sangat buruk, saya akan memposting kode ruby dalam 8-10 jam setelah saya tidur nyenyak! hanya petunjuk solusi saya saya setiap 7 kartu berbagi tanda yang sama dan total 56 kartu dapat dibangun menggunakan solusi saya.
di sini adalah kode yang menghasilkan 57 kartu yang dibicarakan oleh ypercube. tepatnya menggunakan 57 gambar, dan maaf saya telah menulis kode C ++ yang sebenarnya tetapi mengetahui bahwa itu
vector <something>
adalah array yang berisi nilai-nilai tipesomething
mudah untuk memahami apa yang dilakukan kode ini. dan kode ini menghasilkanP^2+P+1
kartu menggunakanP^2+P+1
gambar yang masing-masing berisiP+1
gambar dan hanya berbagi 1 gambar yang sama, untuk setiap nilai P utama. yang berarti kita dapat memiliki 7 kartu menggunakan 7 gambar masing-masing memiliki 3 gambar (untuk p = 2), 13 kartu menggunakan 13 gambar (untuk p = 3), 31 kartu menggunakan 31 gambar (untuk p = 5), 57 kartu untuk 57 gambar (untuk p = 7) dan seterusnya ...lagi maaf untuk kode yang tertunda.
sumber
p=4
? (dan 21 kartu / gambar)Inilah solusi Gajet dalam Python, karena saya menemukan Python lebih mudah dibaca. Saya telah memodifikasinya sehingga berfungsi dengan angka non-prima juga. Saya telah menggunakan wawasan Thies untuk menghasilkan beberapa kode tampilan yang lebih mudah dipahami.
Dengan output:
sumber
(p) + (p * p) + (1)
konfigurasi persis .all p except 4 and 6
. Jika Anda ingin menghasilkan bidang terbatas di mana adap*p+p+1
titik dan garis (kartu dan gambar), maka itu terkait denganfinite fields
dan tidakrings
. Ada bidang pesanan terbatasp
saat p adalahprime
atau aprime power
. Kode Anda berfungsi dengan benar untuk bilangan prima karena ekspresi sepertik * p + (j + i * k) % p
mengekspresikank*p + j + i*k
dalam hal penggandaan dan penambahan dalam bidang urutan terbatasp
.p^2
,p^3
, dll Jadi, ia akan bekerja untuk4, 8, 9, 16, 25, 27, ...
Menggunakan
z3
teorema teoremaMembiarkan
P
menjadi jumlah simbol per kartu. Menurut artikel ini danypercubeᵀᴹ
jawabannyaN = P**2 - P + 1
masing-masing ada kartu dan simbol. Setumpuk kartu dapat diwakili dengan matriks insiden yang memiliki baris untuk setiap kartu dan kolom untuk setiap simbol yang mungkin. Its(i,j)
elemen1
jika kartui
memiliki simbolj
di atasnya. Kita hanya perlu mengisi matriks ini dengan batasan berikut:P
P
Itu berarti
N**2
variabel danN**2 + 2*N + (N choose 2)
kendala. Tampaknya dapat dikelola dalam waktu yang tidak terlalu lama denganz3
input kecil.sunting : Sayangnya P = 8 tampaknya terlalu besar untuk metode ini. Saya membunuh proses setelah 14 jam waktu perhitungan.
Hasil
sumber
Saya sangat menyukai utas ini. Saya membangun proyek python github ini dengan bagian-bagian dari kode ini di sini untuk menggambar kartu khusus sebagai png (jadi orang dapat memesan permainan kartu khusus di internet).
https://github.com/plagtag/ProjectiveGeometry-Game
sumber
Saya menulis sebuah artikel tentang cara membuat deck semacam ini, dengan kode di Perl. Kode tidak dioptimalkan tetapi setidaknya mampu menghasilkan setumpuk pesanan "masuk akal" ... dan beberapa lainnya.
Berikut adalah contoh dengan urutan 8, yang harus mempertimbangkan matematika dasar yang sedikit lebih rumit, karena 8 tidak prima meskipun urutan yang valid untuk menghasilkan deck semacam ini. Lihat di atas atau artikel untuk penjelasan yang lebih rinci, di bawah ini jika Anda hanya ingin menghasilkan Spot-It yang sedikit lebih sulit :-)
Setiap pengenal dari
0
ke72
dapat dibaca sebagai pengenal kartu dan pengenal gambar. Misalnya, baris terakhir berarti:72
berisi gambar2
,13
,22
, ...,59
,68
, DAN72
muncul di kartu2
,13
,22
, ...,59
, dan68
.sumber