Ukuran Kertas ISO Ditentukan:
Ukuran kertas seri A ditentukan oleh persyaratan berikut:
The length divided by the width is the square root of 2.
The A0 size has an area of 1 unit.
Each subsequent size A(n) is defined as A(n-1) cut in half parallel to its shorter sides.
Tugas:
diberi input f[n]
output A0 dibagi menjadi beberapa n
subdivisi.
Kasus uji:
f[1]
untuk f[12]
:
Di sini, A0 diberikan oleh f[1]
, tetapi pengindeksan ini tidak penting.
Kriteria pemenang:
Kode terpendek dalam byte menang.
code-golf
graphical-output
recursion
martin
sumber
sumber
f[2]
seharusnyaA0
dengan garis horizontal membaginya? yaitu, bukankahf[2]
dalam kasus uji sebenarnyaf[3]
?Jawaban:
BBC BASIC 49 karakter ASCII
Filesize Tokenised 44 byte
Jauh lebih pendek dari sebelumnya! Saya selalu lupa tentang operator bitshift di BBC BASIC untuk windows karena mereka tidak tersedia di komputer lama saya saat itu.
BBC BASIC 63 karakter ASCII
File Tokenised berukuran 58 byte
Juru bahasa Dowload di http://www.bbcbasic.co.uk/bbcwin/download.html
Menggunakan pengindeksan nol, yang saya sukai. Jadi 0 menghasilkan kertas untuk A0, 1 menghasilkan A0 dibagi menjadi sepasang A1s, dll.
Kita perlu bergantian antara membagi dua koordinat X dan Y, tetapi melakukan hal itu dalam sebuah array akan membutuhkan biaya terlalu banyak byte. Sebagai gantinya saya menggunakan fakta bahwa BBC basic memiliki blok variabel integer statis
A%..Z%
masing-masing 4 byte yang disimpan dalam memori yang berdekatan. Saya menyimpan nilai X dan Y diA%
danC%
dan mengakses menggunakan pointer untuk%B
dimodifikasi oleh nilai d, yang bergantian antara4
dan-4
.Tidak disatukan
Keluaran
sumber
JavaScript (ES6) + HTML,
9694 + 34 =130128 bytesumber
Mathematica,
8785 byteTerima kasih @martin untuk 1 byte.
sumber
EdgeForm@Thin
: -1 byteJavaScript (ES6) / SVG (HTML5), 170 byte
Menggunakan pengindeksan berbasis 1.
sumber