Tarea
Dada una letra (A, B, C) y un número (0-10), imprima el tamaño del tamaño de papel estándar correspondiente (Serie A y B) o el tamaño de sobre estándar correspondiente (serie C) en milímetros en el formato aaaa x bbbb
donde aaaa
y bbbb
son las medidas de ancho y alto en milímetros según ISO216 (Serie A y B) o ISO296 (Serie C)
Para facilitar las cosas, citaré de la tabla de tamaños de papel 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
Entonces ejemplos de entrada y salida:
**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
Cosas a tener en cuenta:
- El formato "210 x 297" o "1000 x 1414", etc. Si bien este es el formato preferible, puede optar por omitir la "x" de su salida, es decir, en forma de una matriz o dos números o lo que más le guste. siempre que la medida del ancho se emita antes que la altura.
- La relación entre la altura y el ancho es aproximadamente equivalente a la raíz cuadrada de 2, por lo que en el cálculo de las alturas, el ancho se multiplica por sqrt (2), y luego se redondea hacia arriba o hacia abajo al milímetro más cercano, lo que resulta en las medidas en la tabla de arriba. Esto puede ayudar a jugar golf en tu código.
- En tamaños sucesivos para una serie a medida que baja de la tabla, el ancho de un tamaño se convierte en la altura del siguiente. Esto también puede ayudarlo a descifrar su código.
Reglas:
- Este es el código de golf. Las reglas estándar se aplican como resultado. La puntuación se basará en el recuento de bytes. El conteo más bajo ganará.
- No hay escapatorias tontas , hemos estado allí antes ... No vamos a pasar por esto otra vez.
- Si puede codificarlo, considere adjuntar un enlace a una instancia de trabajo de su código para que otros programadores y golfistas puedan aprender cómo funciona su código. Esto no es obligatorio, pero me gustaría animar a otros a hacer esto para que todos podamos aprender unos de otros. Ciertamente me encantaría aprender más sobre los idiomas de otros golfistas cuando sea posible.
La mejor de las suertes.
Respuestas:
JavaScript (ES7), 57 bytes
Guardado 1 byte gracias a @WallyWest
fuente
s=>n=>[n,n-1].map(x=>.707**x*{A:841,B:1e3,C:917}[s]+.2|0)
y aún tendrá la misma precisión en su salida..7071
y.2
por un tiempo y sólo un poco di por vencido cuando me encontré con algo que funcionó: P.map
, puedes usarlo{key1:1,key2:2,key3:3}[myKey]
cuando quieras. Solo necesita citar las claves si no son nombres de variables válidos.C (gcc) ,
113111907870 bytesNecesita
-lm
ejecutarse en TIO, pero funciona bien en mi computadora sin la opción.Ahorró 20 bytes gracias a pizzapants184 .
Valores de retorno por puntero.
Explicación:
fuente
char
yint
(a^66?a^67:0.5:0.25:0)
aabs(a-66)/(a-63.)
Pitón 2 ,
1039793848381 bytesPruébalo en línea!
fuente
Lote, 105 bytes
41/29 ≅ √2
fuente
h*.707
que sería mejor queh*41/29
? Eso sí, uso ingenioso de la aproximación!JavaScript, 53 bytes
Mostrar fragmento de código
Ahorre muchos bytes utilizando un formato de salida alternativo, gracias a Neil.
fuente
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 bytes
Pruébalo en línea!
Inspirado en la entrada C de @Colera Su , luego mejorado por mí mismo.
fuente
1000
puede ser1e3
.MATL ,
343330 bytesPruébalo en línea! o Verificar todos los casos de prueba
Guardado 4 bytes gracias a Luis Mendo
fuente
APL (Dyalog) ,
3128 bytes-2 gracias a ngn.
Programa completo del cuerpo. Asume
⎕IO
( I ndex O rigin) ser0
, que es predeterminado en muchos sistemas. Solicita número, luego letra, ambos de STDIN. Imprime en STDOUT.Pruébalo en línea!
Una versión ligeramente modificada nos permite probar todas las posibilidades a la vez: ¡ Pruébelo en línea!
⍳2
dos primeros ɩ nices, es decir, 0 y 1⎕-
restar eso de la entrada numérica4×
multiplica cuatro por eso(
...)+
agregue lo siguiente⍞
entrada de caracteres ...'BC'⍳
... 's ɩ ɩ de esta cadena ("A" dará 2, como el índice más allá del último)8÷⍨
dividir eso por 82*
elevar 2 al poder de eso1E3÷
1000 dividido por eso.2+
agregue ⅕ a eso⌊
piso (redondear hacia abajo)fuente
Befunge,
695655 bytesPruébalo en línea!
Explicación
No tenemos el lujo de coma flotante ni nada parecido a una función de potencia en Befunge, por lo que calculamos el tamaño base para el carácter de formato dado, f , de la siguiente manera:
Luego rotamos y dividimos repetidamente estas dimensiones para llegar a la subdivisión apropiada para el número de tamaño dado.
fuente