Sementara mencoret-coret kertas berbentuk bujur sangkar beberapa hari yang lalu, saya menemukan font spasi negatif untuk digit. Jika Anda belum melihatnya, ruang antara bentuk di atas menghasilkan rasio emas 1,618033988749 . Dalam tantangan ini, tugas Anda adalah mengambil nomor sebagai masukan dan merendernya persis seperti contoh di atas.
Ini adalah bagaimana ini dibuat. Semua garis akan berada di kisi-kisi biasa, sehingga masing-masing digit terdiri dari sejumlah kecil sel kisi. Berikut adalah bentuk 10 digit (kami akan mengabaikan titik desimal untuk tantangan ini):
Ya, 7 berbeda dari contoh rasio emas di atas. Saya agak mengacaukannya. Kami akan pergi dengan yang ini.
Perhatikan bahwa setiap digit tingginya lima sel, dan lebar tiga sel. Untuk membuat angka, Anda dapat membayangkan menempatkan semua digitnya di samping satu sama lain, sehingga ada satu kolom kosong di antara setiap pasangan digit. Misalnya, 319
sebagai masukan, kami akan menulis:
Perhatikan bahwa kami menambahkan satu kolom kosong awal dan akhir. Sekarang kita membalikkan sel:
Output kemudian harus menjadi batas-batas poligon yang dihasilkan:
Tentu saja Anda dapat menghasilkan hasilnya dengan cara lain, selama output yang diberikan terlihat sama.
Memasukkan
- Anda dapat menulis program atau fungsi, mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi, sebagai string, atau daftar digit. (Anda tidak dapat mengambil nomor karena itu tidak akan memungkinkan Anda untuk mendukung angka nol di depan.)
- Anda dapat berasumsi bahwa tidak akan ada lagi 16 digit dalam input.
Keluaran
- Output dapat ditampilkan di layar atau ditulis ke file dalam format gambar yang umum.
- Anda dapat menggunakan grafik raster dan vektor.
- Dalam kedua kasus tersebut, rasio aspek sel-sel dari kisi yang mendasarinya harus 1 (yaitu, sel harus kuadrat).
- Dalam hal grafik raster, setiap sel harus mencakup setidaknya 20 kali 20 piksel.
- Garis tidak boleh lebih lebar dari 10% dari ukuran sel. Saya bersedia memberikan satu atau dua piksel kelonggaran karena aliasing di sini.
- Garis dan latar dapat berupa dua warna yang dapat dibedakan dengan jelas, tetapi bentuk yang dibuat oleh garis tidak harus diisi (yaitu bagian dalamnya harus merupakan warna latar belakang juga).
- Tidak boleh ada celah di dalam setiap loop tertutup.
- Tentu saja, seluruh hasil harus terlihat.
Uji Kasus
Berikut adalah 10 input, yang bersama-sama mencakup semua pasangan yang mungkin dari digit yang berdekatan, serta setiap digit depan dan belakang yang mungkin:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
Dan inilah hasil yang diharapkan untuk itu:
Pastikan kode Anda juga berfungsi ketika diberi satu digit (saya tidak ingin menyertakan hasil yang diharapkan di sini, karena mereka harus jelas, dan bagian kasus uji cukup bengkak seperti itu).
sumber
Jawaban:
BBC BASIC, 182 karakter ASCII (ukuran file toukuran 175 byte)
Unduh juru bahasa di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Penilaian: Ketika program di atas ditempelkan ke editor dan dijalankan, editor akan memperluas kata kunci yang disingkat menjadi kata kunci penuh pada layar, meskipun sebenarnya hanya 1 byte setelah tokenisasi. (Contoh
I.
=INPUT
ruang penyimpanan 1 byte.)Penjelasan
Saya hanya akan menjelaskan apa yang dilakukan garis VDU: ia menggambar kotak dengan sedikit membalik warna piksel saat ini di layar. Ini berarti bahwa (dengan sedikit perhatian pada sudut-sudut) dimungkinkan untuk menggambar satu sel di samping satu sama lain, dan tepi intervensi akan membatalkan dan menghilang karena gambar ganda.
Pemeriksaan yang teliti akan mengungkapkan bahwa sudut kanan atas dan kiri bawah sel ditarik tetapi kiri atas dan kanan bawah tidak ada ("bulat") untuk membuat pekerjaan ini.
Setelah sel digambar, kursor grafik dipindahkan ke atas 32 piksel siap untuk sel berikutnya yang akan diambil.
Sisa dari program ini adalah dekompresi bitmap ASCII yang cukup mudah. Dimensi sel adalah 64x64 unit untuk bermain golf / kompatibel dengan cara bitmap didekompresi.
q
mengontrol ukuran sel yang diplot: 64x64 unit untuk sel yang ada, 0x0 untuk sel yang tidak ada.Kode tidak dikunci
Keluaran
The
MOVE
s hanya mendapatkan output untuk tepat ketinggian di layar. BBC basic menggunakan 2 unit = 1 piksel dalam mode ini, jadi sel-selnya sebenarnya 32x32 piksel.sumber
Oktaf,
233 225 216213 byteIni kasus uji pertama (dari tangkapan layar yang diubah ukurannya, sesuai dengan monitor saya =):
Input bisa panjang arbitrer, seperti misalnya
'07299361548'
sumber
Javascript ES6, 506 byte
Tidak Disatukan:
Asumsikan ada
<body>
untuk menambahkan kanvas ke, diuji di Firefox 46.Contoh run (menugaskan fungsi anonim ke f):
hasil:
sumber
Html + JavaScript ES6, 352
Tes menjalankan cuplikan di bawah ini
Kurang golf
sumber
Java, 768 byte
Tidak disatukan
Catatan
Input adalah string tunggal sebagai argumen. Cara menggunakan:
javac G.java
,java G 80085
Saya mulai dengan kanvas hitam, lalu saya menambahkan angka sebagai positif putih. Saya membuat salinan gambar dan kemudian membalik setiap piksel hitam yang memiliki 4 tetangga hitam pada gambar asli.
Keluaran
Beberapa digit tunggal:
sumber
R, terlalu banyak byte ke golf (
1530+1115)lol menulis ke disk, lalu membaca dari disk mengedit isi hitam.
sumber
Python 3,
326325 bytesumber
range(3)
tidak pernah sepadan.C #, 768
773 776byteMengambil nomor sebagai argumen baris perintah. Menghasilkan gambar BMP yang bagus, bersih, tanpa alias dengan nomor sesuai namanya.
Asli sebelum bermain golf:
sumber
Mathematica 328 byte
Penjelasan
Empat bit akan digunakan di masing-masing 5 baris sel untuk setiap digit input.
"75557262277174771717557117471774757711117575775717"
mewakili 0 hingga 9 sebagai bitmap.5 digit pertama dalam bilangan bulat besar di atas, yaitu
75557
menunjukkan bagaimana setiap baris array untuk nol harus ditampilkan.7
akan mewakili{0,1,1,1}
, yaitu, sel putih, diikuti, di sebelah kanannya, oleh 3 sel hitam; yang terdepan0
adalah ruang kosong untuk memisahkan angka yang ditampilkan.5
sesuai dengan{0,1,0,1}
, yaitu sel putih, hitam, putih, hitam.Berikut ini menghasilkan daftar aturan penggantian:
Perhatikan bahwa ketika
3
input, itu akan diganti oleh71717
Representasi ini dinyatakan dalam biner:Kebalikan hitam-putihnya ditemukan hanya dengan menukar
1
s dan0
s.Mari kita lihat seperti apa
p
danq
ketika ditampilkan olehArrayPlot
:Ini hanya bergabung dengan array nol dan satu untuk setiap digit sebelum merender array besar via
ArrayPlot
.*
didefinisikanj
sebagai ruang vertikal akhir setelah digit terakhir.sumber