Menulis sebuah program yang membaca sebuah array nilai biner yang mewakili cube, yang terdiri dari kubus kecil. Setiap nilai mengatakan apakah ada voxel (kubus kecil) hadir di posisi yang diberikan atau tidak. Program harus menampilkan array yang diberikan sebagai grafik ASCII (itu berarti output melalui konsol atau menulis ke file).
Contohnya
Mari kita perhatikan susunan :
[
[[0,0],
[1,0]]
[[1,1],
[1,0]],
]
[
[[0,0],
[0,0]]
[[1,1],
[1,1]],
]
Dalam hal ini output akan terlihat seperti ini (tidak terlihat sebagus di sini dalam editor kode / konsol dengan ruang vertikal yang lebih sedikit):
+----+
/ /|-+----+
+----+ | /|
| | +----+ |
| | | | +
+ + | |/
| | +----+
| |/
+----+
+----+----+
/ /|
+ + |
/ / +
+----+----+ /
| | +
| |/
+----+----+
Spesifikasi ASCII
Setiap sudut voxel diwakili oleh +
selama ada tepi yang mengarah ke sana. Ini +
juga ditarik ketika ada ujung lurus yang lebih dari satu unit panjang. Ada tiga jenis tepi: Horisontal kiri ke kanan ----
, horizontal kembali ke depan /
dan vertikal
|
|
Masing-masing harus diakhiri dengan +
(selama terlihat). Tepi tidak akan ditarik ketika mereka membagi satu bidang planar menjadi dua bagian atau lebih (tidak seperti +
dalam hubungannya dengan tepi seperti yang dinyatakan di atas). Struktur yang tersembunyi di belakang orang lain tidak boleh ditarik.
'Gambar' pada dasarnya adalah proyeksi paralel sehingga hanya sisi atas, kanan dan depan yang terlihat - selalu dari sudut yang sama.
Detail
- Dimensi 1: lapis demi lapis dari atas ke bawah
- Dimensi 2: baris demi baris kembali (paling jauh) ke depan (terdekat)
- Dimensi ke-3: voxels di setiap baris dari kiri ke kanan
Apakah Anda menggunakan konsol atau membaca file sebagai input dan output terserah Anda. Tolong beritahu kami tentang kode Anda / bagaimana Anda mendekatinya.
Menilai
Ini adalah codegolf sehingga jumlah byte yang paling sedikit menang. Ini termasuk HANYA bagian yang benar-benar berfungsi - ketika menghitung byte Anda dapat mempertimbangkan input yang sudah diuraikan dan disimpan dalam variabel dan Anda harus memiliki string output yang disimpan ke variabel, siap untuk dicetak. Parsing dan output itu sendiri tidak masuk hitungan.
(Dan saya akan membatalkan pengiriman dengan contoh kreatif =)
Ini terinspirasi oleh halaman Rob's Puzzle .
Lua (1442 bytes)
Animasi bonus! :)
Jika Anda memiliki voxel art keren dalam format yang sama dengan contoh, tautkan di komentar dan saya akan membuat animasi dari itu
7x7x7
12x12x12
Ini adalah kode golf pertama saya, jadi itu cukup berantakan dan saya berencana untuk meningkatkan atau porting ke bahasa yang berbeda.
Inilah yang saya miliki, saat ini di hanya di bawah 2.5kB hampir tidak golf (baru saja menghapus lekukan spasi pada saat ini, saya akan melanjutkan lebih lanjut nanti)
Ini adalah versi sekarang ~ 1.4kB yang di-golf dan diperkecil (perhatikan tabel "a" di baris pertama adalah pengganti untuk matriks voxel):
Sunting : Ini adalah versi asli (lebih dari 3kB) yang tidak diubah, termasuk suntingan saya untuk membuat animasi (jika Anda menjalankannya sendiri dan ingin animasi, ubah bagian
false
dekat bagian bawah kode ketrue
.Berikut adalah contoh kode yang akan mengisi matriks voxel dari string untuk matriks voxel 3x3x3. (Ini akan mengambil string apa pun dalam format yang serupa, tetapi pastikan itu adalah sebuah kubus atau hal-hal yang mungkin akan rusak.)
Untuk menggunakan ini, masukkan potongan ini tepat setelah baris pertama
local v = {}
Berikut ini adalah output dari pola voxel 12x12x12 yang diberikan : (dan ya itu terlihat lebih baik pada konsol / perangkat tampilan teks normal, ada sedikit terlalu banyak jarak vertikal di sini)
Ini adalah output dari contoh 7x7x7 di sini
sumber