Aufgabe
Geben Sie bei einem gegebenen Buchstaben (A, B, C) und einer Zahl (0-10) das Format des passenden Standardpapierformats (Serie A und B) oder des passenden Standardumschlagformats (Serie C) in Millimetern im Format aus aaaa x bbbb
wo aaaa
und bbbb
sind die Breiten- und Höhenmaße in Millimetern nach ISO216 (Serie A & B) oder ISO296 (Serie C)
Um die Sache zu vereinfachen, zitiere ich aus der Papiergrößentabelle von Wikipedia
ISO paper sizes in portrait view
Format A series B series C series
Size mm × mm mm × mm mm × mm
0 841 × 1189 1000 × 1414 917 × 1297
1 594 × 841 707 × 1000 648 × 917
2 420 × 594 500 × 707 458 × 648
3 297 × 420 353 × 500 324 × 458
4 210 × 297 250 × 353 229 × 324
5 148 × 210 176 × 250 162 × 229
6 105 × 148 125 × 176 114 × 162
7 74 × 105 88 × 125 81 × 114
8 52 × 74 62 × 88 57 × 81
9 37 × 52 44 × 62 40 × 57
10 26 × 37 31 × 44 28 × 40
Also Beispiele für Ein- und Ausgabe:
**Test case 1**
Input: A4
Output: 210 x 297
**Test Case 2**
Input: B6
Output: 125 x 176
**Test Case 3**
Input: C2
Output: 458 x 648
Dinge zu beachten:
- Das Format "210 x 297" oder "1000 x 1414" usw. Obwohl dies das bevorzugte Format ist, können Sie das "x" in Ihrer Ausgabe weglassen, z. B. in Form eines Arrays oder zweier Zahlen, oder was auch immer Sie anspricht solange das Breitenmaß vor der Höhe ausgegeben wird.
- Das Verhältnis zwischen Höhe und Breite entspricht in etwa der Quadratwurzel von 2, sodass bei der Berechnung der Höhen die Breite mit sqrt (2) multipliziert und dann auf den nächsten Millimeter auf- oder abgerundet wird die Maße in der obigen Tabelle. Dies kann Ihnen helfen, Ihren Code zu verbessern.
- In aufeinanderfolgenden Größen für eine Serie wird die Breite für eine Größe zur Höhe für die nächste. Dies kann Ihnen auch dabei helfen, Ihren Code abzuspielen.
Regeln:
- Das ist Code-Golf. Als Ergebnis gelten Standardregeln. Die Bewertung basiert auf der Anzahl der Bytes. Die niedrigste Anzahl gewinnt.
- Keine dummen Schlupflöcher , wir waren schon mal dort ... Wir werden das nicht noch einmal durchmachen.
- Wenn Sie es codieren können, sollten Sie auch einen Link zu einer Arbeitsinstanz Ihres Codes anhängen, damit andere Programmierer und Golfer lernen können, wie Ihr Code funktioniert. Dies ist nicht obligatorisch, aber ich möchte andere dazu ermutigen, damit wir alle voneinander lernen können. Ich würde auf jeden Fall gerne mehr über die Sprachen anderer Golfer lernen, wo dies möglich ist.
Viel Glück.
Antworten:
JavaScript (ES7), 57 Byte
1 Byte dank @WallyWest gespeichert
quelle
s=>n=>[n,n-1].map(x=>.707**x*{A:841,B:1e3,C:917}[s]+.2|0)
und es wird immer noch die gleiche Präzision in Ihrer Ausgabe haben..7071
und.2
für eine Weile und nur gab ein bisschen, wenn ich etwas gefunden , das funktioniert: P.map
, du kannst es{key1:1,key2:2,key3:3}[myKey]
jederzeit benutzen . Sie müssen die Schlüssel nur in Anführungszeichen setzen, wenn es sich nicht um gültige Variablennamen handelt.C (gcc) ,
113111907870 BytesEs muss
-lm
auf TIO ausgeführt werden, funktioniert aber auch auf meinem Computer ohne die Option.20 Bytes dank pizzapants184 gespart .
Rückgabe von Werten per Zeiger.
Erläuterung:
quelle
char
undint
(a^66?a^67:0.5:0.25:0)
aufabs(a-66)/(a-63.)
Python 2 ,
1039793848381 BytesProbieren Sie es online!
quelle
Batch, 105 Bytes
41/29 ≅ √2
quelle
h*.707
wäre besser alsh*41/29
? Wohlgemerkt, geniale Annäherung!JavaScript, 53 Byte
Code-Snippet anzeigen
Sparen Sie dank Neil viele Bytes mithilfe eines alternativen Ausgabeformats.
quelle
L=>N=>(g=p=>1000.2/2**(N/2+p-{A:2,B:4,C:3}[L]/8)|0)(.5)+' x '+g(0)
L=>N=>[N+1,N].map(p=>1000.2/2**(p/2-{A:2,B:4,C:3}[L]/8)|0)
Java (OpenJDK 8) , 59 Byte
Probieren Sie es online!
Inspiriert von @Colera Sus C-Eintrag , dann von mir selbst verbessert.
quelle
1000
kann sein1e3
.MATL ,
343330 BytesProbieren Sie es online! oder Überprüfen Sie alle Testfälle
4 Byte dank Luis Mendo gespeichert
quelle
APL (Dyalog) ,
3128 Bytes-2 danke an ngn.
Voller Programmteil. Nimmt an
⎕IO
( I ndex O rigin) zu sein0
, was auf vielen Systemen Standard ist. Fordert zur Eingabe von Zahlen und Buchstaben von STDIN auf. Druckt nach STDOUT.Probieren Sie es online!
Mit einer leicht modifizierten Version können wir alle Möglichkeiten auf einmal testen: Probieren Sie es online aus!
⍳2
Die ersten beiden Indexe , dh 0 und 1⎕-
subtrahieren Sie das von numerischer Eingabe4×
multiplizieren Sie vier mit dem(
…)+
Fügen Sie Folgendes hinzu⍞
Zeicheneingabe…'BC'⍳
… 'S ɩ ndex in dieser Zeichenfolge ("A" ergibt 2 als Index nach dem letzten)8÷⍨
dividiere das durch 82*
erhöhen Sie 2 zur Energie von dem1E3÷
1000 geteilt durch das.2+
füge ⅕ hinzu⌊
boden (abrunden)quelle
Befunge,
695655 BytesProbieren Sie es online!
Erläuterung
Wir haben in Befunge nicht den Luxus eines Fließkommas oder einer ähnlichen Funktion, also berechnen wir die Basisgröße für das angegebene Formatzeichen f wie folgt:
Wir drehen und teilen diese Dimensionen dann wiederholt, um zur entsprechenden Unterteilung für die angegebene Größenanzahl zu gelangen.
quelle