Tessellations heksagonal , atau miring pesawat, adalah tiga-warna - yang berarti bahwa hanya menggunakan tiga warna, seperti Merah, Biru, dan Hijau, setiap segi enam dapat diwarnai tanpa dua segi enam yang berbagi perbatasan berbagi warna. Contoh parsial menunjukkan pola seperti itu.
Dengan pemberian ubin heksagonal parsial di ASCII (melalui STDIN, membaca dari file, dll.), Ubah warna karakter (melalui kode ANSI, manipulasi gambar, dll.) Agar sesuai dengan pewarnaan ini. Twist adalah bagian tengah hexagon (di *
bawah) adalah tiga warna, dan garis-garis di antara keduanya harus merupakan perpaduan dari dua *
warna hex yang sesuai . Jika garis berada di perbatasan luar, itu harus sesuai dengan yang sesuai *
.
Misalnya, diberi ubin heksagonal parsial
/ \ / \ / \ / \
| * | * | * | * |
\ / \ / \ / \ /
| * | * | * |
\ / \ / \ /
misalkan kita memutuskan untuk mewarnai heks kiri *
atas menjadi Merah, dan dua tetangganya menjadi Biru dan Hijau (searah jarum jam). Maka |
garis harus Magenta dan /
garis harus Kuning. Jika kita terus mewarnai, pada akhirnya kita akan berakhir dengan sesuatu seperti ini (diperbesar untuk kejelasan):
Atau, untuk input
/ \
| * |
/ \ /
| * |
/ \ /
| * |
\ /
Anda mungkin mewarnainya seperti itu (diperbesar untuk kejelasan):
Beberapa kasus uji tambahan (kode Anda harus dapat menangani ini):
/ \ / \
| * | * |
\ / \ /
| * |
/ \ / \
| * | * |
\ / \ /
/ \
| * |
\ / \
| * |
/ \ /
| * |
\ /
/ \
| * |
\ /
Aturan
- Input dijamin memiliki setidaknya satu segi enam, dan tidak ada input yang memiliki "lubang."
- Anda tidak perlu memulai pewarnaan dengan Merah, selama Anda mempertahankan aturan tiga warna.
- Jika ubin parsial dapat dua warna, Anda dapat melakukannya tanpa penalti (seperti pada contoh kedua) - Anda tidak perlu mengekstrapolasi ubin parsial menjadi ubin penuh.
- Pusat segi enam
*
harus diwarnai dengan Merah, Biru, atau Hijau, sedangkan garis-garis di antara harus Cyan, Kuning, atau Magenta. Misalnya, memiliki Magenta*
tidak diperbolehkan, dan Merah|
atau\
atau/
harus berada di perbatasan luar gambar. Lihat Warna , di bawah. - Jika konsol Anda tidak memiliki warna-warna yang tepat ini, silakan gunakan perkiraan terdekat dan tentukan dalam jawaban Anda perkiraan apa yang Anda gunakan.
- Memimpin atau mengikuti spasi, termasuk mengikuti baris baru, dapat diterima selama karakternya berbaris.
- Ubin parsial dapat dimasukkan dengan spasi-padding untuk membentuk persegi panjang, jika itu membuatnya lebih mudah untuk kode Anda.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Output bisa ke konsol, disimpan sebagai gambar, dll.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Warna dan Campuran Warna:
Tiga warna dasar yang tersedia adalah (dengan kode warna dalam format desimal RGB):
- Merah
(255,0,0)
- hijau
(0,255,0)
- Biru
(0,0,255)
Kombinasi tersebut adalah:
- Merah dan Hijau bergabung untuk membuat Kuning
(255,255,0)
- Biru dan Hijau bergabung untuk membuat Cyan
(0,255,255)
- Merah dan Biru bergabung untuk membuat Magenta
(255,0,255)
sumber
*
Jawaban:
JavaScript (ES6),
219203201 bytePenjelasan: Setiap karakter dibungkus dalam a
font
tag untuk mengatur warnanya, yang dihitung dengan memeriksa setiap kotak, ditambah dua kotak ke kiri dan kanan, ditambah empat kotak satu lagi secara diagonal, untuk*
s dan jika demikian menggabungkan warna semua*
ditemukan. The*
warna yang dipilih hanya dengan mengambil horisontal mereka berkoordinasi modulo 3 dan pergeseran bitmask sebuah tepat. Sunting: Disimpan 2 byte dengan beralih dari#RRGGBB
ke#RGB
warna.sumber
JavaScript (ES6), 210 byte (menggunakan HTML + CSS)
Mirip dengan pendekatan kanvas saya ; menempatkan semua
*
s di string input dan menulis segi enam ke halaman dalam bentuk<pre>
elemen yang benar-benar diposisikan . Karenamix-blend-mode
diatur kelighten
, penambahan warna dilakukan secara otomatis ketika karakter tumpang tindih.Tampilkan cuplikan kode
sumber
Python 2 , 279 byte
Cobalah online!
Golf dan diperbaiki berkat pengguna202729!
-27 byte terima kasih kepada Tn. Xcoder
-24 byte terima kasih kepada Jonathan Frech
sumber
2-abs(i)
adalah2-(i&1)
dalam konteks ini, 336 byte.\033
bisa\33
(menyimpan satu byte) atau\x1b
karakter sebenarnya ( menyimpan tiga byte ).=
dan satu;
untuk dua,
dan a=
.Python 2 ,
346331 byteCobalah online!
sumber
HTML (Kanvas) + JavaScript (ES6), 13 + 251 = 264 byte
Temukan semua
*
s dalam string input dan cat hexagon ASCII pada kanvas di posisi yang sesuai. KarenaglobalCompositeOperation='lighter'
, penambahan warna dilakukan secara otomatis ketika karakter tumpang tindih.HTML
JavaScript
Perintah pengganda dan tambahan
scale()
ditambahkan ke snippet untuk visibilitas.Tampilkan cuplikan kode
Lihat juga pendekatan berbasis CSS saya .
sumber
MATLAB / Oktaf , 223 byte
Dalam format kode yang sedikit lebih rapi:
Input diambil sebagai array 2D, seperti memasukkan berikut ini ketika diminta untuk input:
MATLAB sejauh yang saya tahu tidak memiliki kemampuan untuk menampilkan warna ke konsol (kecuali untuk hack Java kotor yang saya diskon). Dengan demikian, hasilnya dicetak ke angka.
Pewarnaan dicapai dengan menemukan lokasi semua
*
dalam input, dan kemudian dalam array warna RGB (p
), kotak 5x3 dari 1 (255 dalam representasi warna MATLAB) ditulis terpusat tentang*
. Kotak ditulis dengan warna yang sesuai dengan indeks mod-3 di sepanjang setiap baris, dengan garis genap yang indeks warnanya digeser oleh offset.Ini menghasilkan matriks warna di mana setiap kotak yang tumpang tindih akan menghasilkan warna campuran yang diperlukan. Contoh di atas menghasilkan matriks warna berikut.
Wilayah putih dan hitam tidak relevan karena di lokasi-lokasi tersebut dicetak spasi yang berarti kita tidak benar-benar melihat warna yang salah.
Setelah matriks warna dibuat, kami menampilkan setiap karakter pada gambar menggunakan
text
perintah, mengatur warna teks ke entri yang sesuai dalam matriks warna. Contoh di atas akan menampilkan:sumber