Tugas
Tugasnya adalah untuk memasang poligon, diberikan konfigurasi titik.
Mencetak gol
Skor Anda sama dengan "tingkat kerumitan" yang dikirim oleh kiriman Anda. Level kompleksitas bersifat kumulatif, artinya untuk mencapai # 3 Anda juga harus mendukung # 1 & # 2.
Pengajuan pada tingkat kompleksitas yang sama dibedakan dengan jumlah byte; kemenangan terendah.
Memasukkan
Input adalah string yang berisi konfigurasi titik, mewakili angka titik. Yaitu, daftar bilangan bulat yang dipisahkan titik, di mana setiap bilangan bulat (n) mewakili n-gon biasa, dihubungkan oleh simpul umum.
Konfigurasi simpul berikut harus didukung:
3.3.3.3.3.3
3.3.3.3.6
3.3.3.4.4
(perhatikan bahwa urutan tercermin pada gambar titik, oleh karena itu di bawah ini memang berbeda)3.3.4.3.4
3.12.12
3.4.6.4
3.6.3.6
4.4.4.4
4.6.12
4.8.8
6.6.6
Output - Tingkat Kompleksitas # 1: Gambar Vertex
Pada tingkat kerumitan ini, output adalah gambar yang menunjukkan sosok titik yang sesuai dengan input yang diberikan.
Input diawali dengan a F
untuk menandakan bahwa sosok vertex harus berupa output, dan bukan ubin penuh.
Misalnya F3.6.3.6
memberikan angka titik ini:
Output - Tingkat Kompleksitas # 2: Ubin
Pada tingkat kerumitan ini, output adalah gambar yang menunjukkan ubin yang seragam menggunakan gambar vertex yang sesuai dengan input yang diberikan.
Misalnya 3.6.3.6
memberikan ubin ini:
Tidak ada batasan pada warna atau format (pembatasan lubang).
Output - Tingkat Kompleksitas # 3: Ubin Ganda
Pada tingkat kerumitan ini 'ubin ganda' dapat dibentuk dari setiap ubin. Ini dicapai dengan menggambar garis dari pusat setiap poligon ke pusat setiap poligon yang berbatasan.
Ubin ganda ditentukan dengan memasukkan input sebelumnya dengan a V
.
Misalnya V3.6.3.6
memberikan ubin ganda ini (merah):
3.3.3.4.4
3.3.4.4.3
3.4.4.3.3
4.4.3.3.3
4.3.3.3.4
. Apakah kita harus mendukung semua sinonim, atau hanya yang terendah secara leksikal (seperti yang diberikan dalam pertanyaan)? Juga,3.3.3.3.6
ada dalam dua bentuk gambar cermin. Saya mengerti keduanya bisa diterima.3.3.3.4.4
hilang misalnya. en.wikipedia.org/wiki/… cocok dengan daftar Anda. Saya mengerti garis besar atau poligon yang terisi dapat diterima (atau kombinasi keduanya?) Beberapa dual sudah ada dalam daftar. Sebagai contoh4.4.4.4
adalah dual sendiri3.3.3.3.3.3
dan6.6.6
saling ganda. Karena dual ditampilkan secara terpisah dari orang tua mereka, saya mengerti tidak perlu untuk menyelaraskan dengan orang tua.3.3.3.3.6
tetapi bagaimana Anda tahu yang mana itu? :)Jawaban:
BBC BASIC
Kode Golf 1 Rev, 655 karakter ASCII, file tosize 614
Beberapa perbaikan besar pada tabel data, dengan hashing string
A.B..N
ke angka(1*A+2*B+..n*N)+n
sebelum melihat ke atas, dan dengan hanya menyimpan satu vektor terjemahan (yang lain dihasilkan oleh kode.) Penjelasan lebih lanjut ketika saya selesai bermain golf.Rev 0 kode Golf, 770 karakter ASCII, filesize terpatok 728
Yang saya lakukan di sini adalah menghapus komentar, spasi yang tidak perlu dan tanda kutip, dan menempatkan semua
DATA
pada satu baris. Pasti ada ruang untuk bermain golf lebih banyak.Penjelasan
Ini adalah kelanjutan dari jawaban Level 1 saya sebelumnya, tetapi saya memutuskan untuk mempostingnya secara terpisah karena agak panjang.
Level 2
Ini dicapai dengan menerjemahkan templat "level 1.5" saya dari jawaban saya sebelumnya. Dua vektor terjemahan untuk setiap ubin hardcoded. Saya mengambil keuntungan dari fakta bahwa segitiga sama kaki dari basis 80 dan tinggi 70 adalah pendekatan yang sangat baik dari segitiga sama sisi, dan segitiga kanan dengan vektor sisi miring
(56,56)
memiliki panjang sisi miring sangat dekat dengan 80.Tingkat 3
Untuk memplot dual, alih-alih memplot sisi poligon, kami plot wicara dari tengah edge ke tengah poligon. Ini berada di sudut kanan ke tepi dan memiliki panjang
1/TAN/(PI/n)
kali vektor (u, v) yang pada gilirannya adalah setengah sepanjang tepi.Sayangnya, karena poligon tertentu miring
3.3.3.3.6
dan3.4.6.4
tidak diplot secara eksplisit, mereka tidak akan diplot jika kita hanya melakukan ini. Oleh karena itu bicara juga memanjang keluar dari poligon. Ekstensi luar dikendalikan oleh variabelo
.Secara default ekstensi sudah cukup untuk mencapai pusat segitiga, tetapi untuk
3.4.6.4
itu perlu diperluas lebih untuk menggambar dual dari kotak yang tidak diplot secara eksplisit. Jadi ekstensi yang cukup untuk mengisi kotak yang hilang diterapkan ketika segi enam dan segitiga diplotkan secara eksplisit, tetapi ekstensi normal diterapkan ketika kotak diplotkan secara eksplisit, untuk menghindari garis palsu di segitiga yang berdekatan.Inilah yang terlihat seperti tanpa ekstensi berbicara. Lubang-lubang pada pola ganda dapat dilihat dengan jelas. Output yang benar dapat dilihat pada gambar utama di bagian bawah jawaban
Kode yang dikomentari
Perbedaan dari jawaban saya sebelumnya ditunjukkan sebaris
Keluaran
Program hanya menjalankan satu ubin atau dua kali untuk setiap proses. Namun itu memplot dual dalam warna merah. Untuk menghemat ruang, saya menjalankan program dua kali tanpa membersihkan layar untuk menempatkan dual di atas ubin biasa.
sumber
Mathematica
Level 1 berisi template ubin dasar yang berulang kali dicap untuk ubin pesawat.
Level 2 mengerjakan ubin.
Masih ada 2 tilings yang belum bisa saya capai. Mereka tampaknya memerlukan rotasi serta terjemahan.
Level 1: Gambar Vertex (559 bytes)
Pengujian
Level 2: Ubin (690 byte tambahan)
Aturan mengembalikan offset ubin dan indentasi untuk setiap konfigurasi.
r
adalah fungsi dasar yang menghasilkan tilings.p
menunjukkan templat dan ubin masing-masing. Spasi putih sesuai dengan yang tidak tercakup oleh templat.Pengujian
Ubin segitiga
heksagonal
kotak
tidak diketahui
kotak terpotong
triheksagonal
terpotong heksagonal
tidak disebutkan namanya
segitiga memanjang
Tilings untuk mencari tahu
sumber
3.3.3.3.3.3
setengahnya, sehingga unit-unit saling tumpang tindih, Anda dapat menyingkirkan berlian-berlian itu dan memperbaikinya. Anda masih memiliki banyak hal untuk dilakukan3.3.3.3.6
,3.4.6.4
dan4.6.12
meskipun.4.6.12 anyone know what it should look like?
- Semua informasi yang diperlukan ada di en.wikipedia.org/wiki/… . Lihat komentar saya pada pertanyaan. Ini adalah halaman berbeda dari yang disebutkan dalam pertanyaan. Tetapi4.6.12
juga ditampilkan di halaman itu.R
Langkah 1
Inilah usaha saya membangun ubin. Ubin untuk datang berikutnya. Ini tidak memvalidasi input, sehingga cacat akan menarik beberapa ubin aneh. Input diketik setelah baris pertama
Langkah # 1, # 2 & # 3: 1898
Akhirnya kembali ke sana. Sebagian besar ini diambil dengan pengaturan offset dan menangani kasus khusus :). Sunting: V flag untuk dual sekarang ditangani
Proses umum adalah:
Saya mungkin masih bisa bermain golf ini sedikit lebih.
sumber
BBC BASIC
Unduh emulator di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Tingkat 1
Level 1.5
Level 1.5 adalah tujuan saya sendiri, tetapi ini merupakan tonggak penting dalam metode saya.
Menerjemahkan angka-angka titik tidak selalu mengarah ke ubin yang benar. Dalam beberapa kasus, garis hilang.
Solusi saya untuk ini adalah berkeliling poligon terbesar, menggambar angka titik untuk setiap titik kedua dari poligon itu. Ini adalah solusi umum untuk semua kasus. Perhatikan bahwa poligon terbesar selalu memiliki jumlah sisi genap dan angka titik sering bergantian searah jarum jam / berlawanan arah jarum jam saat Anda mengitari poligon. Hal ini dapat dilihat paling jelas dengan
4.6.12
, tetapi juga benar4.8.8
dan3.12.12
: bila dilihat dari setiap tertentu 8-gon atau 12-gon, simpul bolak adalah bayangan cermin satu sama lain. Ini juga yang terjadi, agak kurang jelas, dengan3.3.3.4.4
dan3.3.4.3.4
: ketika dilihat dari kotak tertentu, simpul bolak-balik adalah gambar cermin satu sama lain.Algoritma yang saya gunakan untuk memindahkan 2 sisi di sekitar poligon adalah dengan selalu melakukan 14 iterasi dari loop gambar-tepi, terlepas dari berapa banyak sisi yang dimiliki poligon. 8 adalah faktor 16, oleh karena itu ketika menggambar octagons kursor grafik berakhir 16-14 = 2 simpul di belakangnya. 3- 4- 6- dan 12- gon semua memiliki sisi yang merupakan faktor 12, sehingga kursor grafik berakhir 14-12 = 2 simpul di depan dari mana ia dimulai.
Angka-angka tersebut dapat dilihat di bawah ini. Besok saya berharap dapat mengerjakan terjemahan yang benar untuk menyelesaikan ubin. Dalam semua kasus, garis yang cukup ditarik untuk menyelesaikan level 2 hanya dengan terjemahan. Dalam beberapa kasus, lebih dari batas minimum yang diperlukan, tetapi tidak ada masalah dengan tumpang tindih: aturan tidak mengatakan apa-apa tentang menggambar garis hanya sekali :-)
Secara umum, poligon terbesar adalah yang terakhir dalam daftar. Sayangnya, ada satu kasus di mana ini tidak begitu:
3.4.6.4
Oleh karena itu angka yang diambil dalam kasus ini berpusat pada kotak daripada segi enam. Ada cukup baris untuk menyelesaikan level 2 hanya menggunakan terjemahan, meskipun akan ada kotak tertentu yang tidak ditarik secara eksplisit. Ini akan menghadirkan beberapa masalah di level 3 (untungnya saya pikir saya tahu bagaimana menyelesaikan ini.) Demikian pula dengan3.3.3.3.6
ada cukup baris untuk menyelesaikan level 2 hanya menggunakan terjemahan, tetapi akan ada segitiga tertentu yang tidak ditarik secara eksplisit.Kode
Kode untuk level 1.5 dikomentari, hanya kode untuk level 1 yang diaktifkan. Ada empat baris yang diawali dengan a
REM
. Hapus iniREM
untuk mengaktifkan level 1.5.Tingkat 2 dan 3
Lihat jawaban saya yang lain.
sumber