Definierte ISO-Papiergrößen:
Die Papierformate der A-Serie werden durch die folgenden Anforderungen definiert:
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.
Aufgabe:
gegeben eine Eingabe f[n]
Ausgabe A0 in n
Unterteilungen unterteilt.
Testfälle:
f[1]
zu f[12]
:
Hier ist A0 gegeben durch f[1]
, aber diese Indizierung ist nicht wesentlich.
Gewinnkriterien:
Der kürzeste Code in Bytes gewinnt.
code-golf
graphical-output
recursion
Martin
quelle
quelle
f[2]
sein einA0
mit einer horizontalen Linie zwischen dem? dh ist das nichtf[2]
im testfall eigentlichf[3]
?Antworten:
BBC BASIC 49 ASCII-Zeichen
Tokenisierte Dateigröße 44 Bytes
Viel kürzer als zuvor! Ich vergesse immer die Bitshift-Operatoren in BBC BASIC für Windows, da sie früher auf meinem alten Computer nicht verfügbar waren.
BBC BASIC 63 ASCII-Zeichen
Tokenisierte Dateigröße 58 Bytes
Download-Interpreter unter http://www.bbcbasic.co.uk/bbcwin/download.html
Verwendet die Nullindizierung, die ich bevorzuge. Somit gibt 0 das Papier für A0 aus, 1 gibt A0 aus, das in ein Paar A1s usw. unterteilt ist.
Es ist notwendig, zwischen der Halbierung der X- und Y-Koordinaten zu wechseln, aber dies in einem Array zu tun, hätte zu viele Bytes gekostet. Stattdessen verwende ich die Tatsache, dass BBC Basic einen Block statischer Ganzzahlvariablen
A%..Z%
von jeweils 4 Bytes im zusammenhängenden Speicher gespeichert hat. Ich speichere die X- und Y-Werte inA%
undC%
und greife mit dem Zeiger zu, der%B
durch den Wert von d geändert wird, der zwischen4
und wechselt-4
.Ungolfed
Ausgabe
quelle
JavaScript (ES6) + HTML,
9694 + 34 =130128 Bytequelle
Mathematica,
8785 BytesDanke @martin für 1 Byte.
quelle
EdgeForm@Thin
: -1 ByteJavaScript (ES6) / SVG (HTML5), 170 Byte
Verwendet 1-basierte Indizierung.
quelle