Tâche
Étant donné une lettre (A, B, C) et un nombre (0-10), sortez le format du papier standard correspondant (séries A et B) ou le format d'enveloppe standard correspondant (série C) en millimètres au format aaaa x bbbb
où aaaa
et bbbb
sont les mesures de largeur et de hauteur en millimètres selon ISO216 (séries A et B) ou ISO296 (séries C)
Pour rendre les choses plus faciles, je vais citer le tableau des tailles de papier de 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
Voici donc des exemples d'entrée et de sortie:
**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
A noter:
- Le format "210 x 297" ou "1000 x 1414" etc. Bien que ce soit le format préférable, vous pouvez choisir d'omettre le "x" de votre sortie, c'est-à-dire sous la forme d'un tableau ou de deux nombres ou tout ce qui chatouille votre fantaisie tant que la mesure de largeur est sortie avant la hauteur.
- Le rapport entre la hauteur et la largeur est à peu près équivalent à la racine carrée de 2, donc dans le calcul des hauteurs, la largeur est multipliée par sqrt (2), puis arrondie vers le haut ou vers le bas au millimètre près, résultant ainsi en les mesures dans le tableau ci-dessus. Cela peut aider à jouer au golf avec votre code.
- Dans les tailles successives d'une série au fur et à mesure que vous descendez le tableau, la largeur d'une taille devient la hauteur de la suivante. Cela peut également vous aider à jouer avec votre code.
Règles:
- C'est du code-golf. Les règles standard s'appliquent en conséquence. Le score sera basé sur le nombre d'octets. Le plus petit nombre gagnera.
- Pas de failles idiotes , nous y sommes déjà allés ... Nous ne reverrons pas ça.
- Si vous pouvez le coder, veuillez également envisager d'attacher un lien à une instance de travail de votre code afin que d'autres programmeurs et golfeurs puissent apprendre comment fonctionne votre code. Ce n'est pas obligatoire, mais j'aimerais encourager les autres à le faire afin que nous puissions tous apprendre les uns des autres. J'aimerais certainement en savoir plus sur les langues des autres golfeurs lorsque cela est possible.
Bonne chance.
Réponses:
JavaScript (ES7), 57 octets
1 octet enregistré grâce à @WallyWest
la source
s=>n=>[n,n-1].map(x=>.707**x*{A:841,B:1e3,C:917}[s]+.2|0)
et il aura toujours la même précision dans votre sortie..7071
et.2
pendant un certain temps et j'ai juste abandonné quand j'ai trouvé quelque chose qui fonctionnait: P.map
, vous pouvez utiliser{key1:1,key2:2,key3:3}[myKey]
quand vous le souhaitez. Vous devez uniquement citer les clés si ce ne sont pas des noms de variables valides.C (gcc) ,
113111907870 octetsIl doit
-lm
fonctionner sur TIO, mais fonctionne bien sur mon ordinateur sans option.Économisé 20 octets grâce aux pizzapants184 .
Renvoie des valeurs par pointeur.
Explication:
la source
char
etint
(a^66?a^67:0.5:0.25:0)
enabs(a-66)/(a-63.)
Python 2 ,
1039793848381 octetsEssayez-le en ligne!
la source
Lot, 105 octets
41/29 ≅ √2
la source
h*.707
serait mieux queh*41/29
? Attention, utilisation ingénieuse de l'approximation!JavaScript, 53 octets
Afficher l'extrait de code
Économisez de nombreux octets en utilisant un format de sortie alternatif, grâce à Neil.
la source
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 octets
Essayez-le en ligne!
Inspiré par l'entrée C de @Colera Su , puis amélioré par moi-même.
la source
1000
peut être1e3
.MATL ,
343330 octetsEssayez-le en ligne! ou vérifier tous les cas de test
Enregistré 4 octets grâce à Luis Mendo
la source
APL (Dyalog) ,
3128 octets-2 grâce à ngn.
Corps de programme complet. Suppose que
⎕IO
( I ndex O rigin) est0
, ce qui est le cas par défaut sur de nombreux systèmes. Demande le numéro, puis la lettre, tous deux de STDIN. Imprime vers STDOUT.Essayez-le en ligne!
Une version légèrement modifiée nous permet de tester toutes les possibilités à la fois: Essayez-le en ligne!
⍳2
deux premiers ɩ ndices, soit 0 et 1⎕-
soustraire cela de la saisie numérique4×
multiplier quatre avec ça(
…)+
Ajoutez ce qui suit⍞
saisie de caractères…'BC'⍳
… Est ɩ ndex dans cette chaîne ("A" donnera 2, comme l'index au-delà du dernier)8÷⍨
divisez cela par 82*
élever 2 à la puissance de cette1E3÷
1000 divisé par cela.2+
ajouter ⅕ à cela⌊
étage (arrondi)la source
Befunge,
695655 octetsEssayez-le en ligne!
Explication
Nous n'avons pas le luxe de virgule flottante ou quelque chose comme une fonction de puissance dans Befunge, nous calculons donc la taille de base pour le caractère de format donné, f , comme suit:
Nous faisons ensuite tourner et diviser ces dimensions à plusieurs reprises pour arriver à la subdivision appropriée pour le numéro de taille donné.
la source