Tantangan ini akan membuat Anda menghitung pseudo- polyforms pada ubin persegi snub .
Saya pikir urutan ini belum ada pada OEIS , jadi tantangan ini ada untuk menghitung sebanyak mungkin istilah untuk urutan ini.
Pembaruan: ini sekarang di OEIS sebagai A309159 : Jumlah polyforms umum pada snub square tiling dengan n sel.
Definisi
Ubin persegi snub adalah ubin semiregular dari bidang yang terdiri dari segitiga sama sisi dan bujur sangkar.
Pseudo-polyform pada snub square tiling adalah sosok bidang yang dibangun dengan menyatukan segitiga-segitiga ini dan bujur sangkar di sepanjang sisi yang dibagikan, dianalogikan dengan polyomino. Berikut adalah contoh pseudo-polyform enam sel dan delapan sel:
Contohnya
Karena n = 1
ada dua pseudo-polyforms 1-sel, yaitu kuadrat dan segitiga:
Sebab n = 2
ada dua pseudo-polyforms 2-sel, yaitu persegi dengan segitiga dan dua segitiga.
Karena n = 3
ada empat pseudo-polyforms 3-sel.
Tantangan
Tujuan dari tantangan ini adalah untuk menghitung sebanyak mungkin istilah dalam urutan ini, yang dimulai 2, 2, 4, ...
dan di mana istilah ke-n adalah jumlah pseudo-polyforms sel-n hingga rotasi dan refleksi.
Jalankan kode Anda selama yang Anda inginkan. Pemenang dari tantangan ini adalah pengguna yang memposting sebagian besar syarat urutan, bersama dengan kode mereka. Jika dua pengguna memposting jumlah istilah yang sama, maka siapa pun yang memposting istilah terakhir mereka yang paling awal akan menang.
(Setelah ada cukup istilah yang diketahui untuk membuktikan bahwa urutan ini belum ada di OEIS, saya akan membuat entri di OEIS dan mendaftarkan kontributor sebagai penulis bersama jika dia menginginkannya.)
sumber
Jawaban:
Haskell
Sekarang bukan hanya dokumen komentar bahwa Peter Taylor adalah orang pertama yang memberikan cukup istilah untuk mencari di OEIS, saya dapat memberikan hasil saya.
Sebelumnya, saya menghitung polyomino heksagonal . Kecuali untuk beberapa optimasi, apa yang saya lakukan di sini sangat mirip.
Elemen-elemen ubin diwakili seperti ini: Anda dapat pergi dalam garis yang hampir lurus dari kiri ke kanan (dalam gambar pertama), bergantian antara kotak dan persegi panjang. Ada garis-garis lebih lanjut yang hampir paralel, bergoyang ke arah yang berlawanan. Bersama-sama, mereka kehilangan beberapa segitiga. Ada garis paralel hampir lurus yang serupa dari bawah ke atas, berisi segitiga yang hilang. Sekarang abaikan goyangan dan gunakan sistem koordinat Cartesius, tetapi hanya gunakan angka ganjil untuk koordinat kotak. Kemudian segitiga secara alami mendapatkan pasangan koordinat dengan satu koordinat genap dan satu koordinat ganjil. Pasangan dengan kedua koordinat bahkan tidak mewakili elemen ubin.
(Anda juga bisa menggunakan angka genap untuk koordinat kotak. Saya kira saya memutuskan cara ini karena saya memikirkan refleksi sebelum rotasi.)
Simpan program dalam file dengan nama suka
cgp.hs
dan kompilasi denganghc -O2 -o cgp cgp.hs
. Dibutuhkan satu argumen baris perintah numerik dan menghitung jumlah poliomino dengan ukuran itu, atau tidak sama sekali, dalam hal ini ia menghitung nilai sampai berhenti.Cobalah online!
sumber
2, 2, 4, 10, 28, 79, 235, 720, 2254, 7146, 22927, 74137, 241461, 790838, 2603210, 8604861, 28549166, 95027832
Saya akan memasang taruhan sebelum Christian Sievers memposting jawaban untuk n = 18. Sejauh ini saya bisa menggunakan kode saat ini dan 16GB RAM. Saya sudah harus mengorbankan beberapa kecepatan untuk mengurangi penggunaan memori, dan saya harus melakukannya bahkan lebih. Saya punya beberapa ide ...
Cuplikan ini adalah SVG dari komentar pertama.
Kode adalah C #. Saya menjalankannya dengan .Net Core 2.2.6 di Linux.
sumber