Subdivisiones de salida de tamaños de papel estándar internacional

11

Tamaños de papel ISO definidos:

Los tamaños de papel de la serie A están definidos por los siguientes requisitos:

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.

ingrese la descripción de la imagen aquí

Tarea:

dada una entrada f[n]salida A0 dividida en nsubdivisiones.

Casos de prueba:

f[1]a f[12]:

ingrese la descripción de la imagen aquí

Aquí, A0 viene dado por f[1], pero esta indexación no es esencial.

Criterios ganadores:

El código más corto en bytes gana.

martín
fuente
1
¿No debería f[2]ser un A0con una línea horizontal que lo divide? es decir, ¿no es f[2]el caso de prueba en realidad f[3]?
JungHwan Min
@JungHwanMin ajustado ahora
martin

Respuestas:

2

BBC BASIC 49 caracteres ASCII

Tamaño de archivo tokenizado 44 bytes

I.n:F.i=0TOn:RECTANGLE0,0,1189>>i/2+.5,841>>i/2N.

Mucho más corto que antes! Siempre me olvido de los operadores de cambio de bits en BBC BASIC para Windows, ya que no estaban disponibles en mi vieja computadora en ese momento.

BBC BASIC 63 caracteres ASCII

Tamaño de archivo tokenizado 58 bytes

Descargar intérprete en http://www.bbcbasic.co.uk/bbcwin/download.html

A%=841C%=1189d=4I.n:F.i=0TOn:RECTANGLE0,0,C%,A%:d!^B%/=2d=-d:N.

Utiliza cero indexación, que prefiero. Por lo tanto, 0 genera el papel para A0, 1 genera A0 dividido en un par de A1, etc.

Es necesario alternar entre reducir a la mitad las coordenadas X e Y, pero hacerlo en una matriz habría costado demasiados bytes. En cambio, uso el hecho de que BBC basic tiene un bloque de variables enteras estáticas A%..Z%de 4 bytes cada una almacenada en la memoria contigua. Almaceno los valores X e Y en A%y C%accedo usando el puntero a %Bmodificado por el valor de d, que alterna entre 4y -4.

Sin golf

  A%=841
  C%=1189
  d=4
  INPUTn
  FORi=0TOn
    RECTANGLE0,0,C%,A%
    d!^B%/=2
    d=-d
  NEXT

Salida

ingrese la descripción de la imagen aquí

Level River St
fuente
4

JavaScript (ES6) + HTML, 96 94 + 34 = 130 128 bytes

f=(n,w=297,h=210)=>n--&&f(n,h<w?w/2:w,h<w?h:h/2,(C=c.getContext`2d`).rect(0,0,w,h),C.stroke())

f(8)
<canvas id=c width=300 height=300>

Arnauld
fuente
2

Mathematica, 87 85 bytes

Gracias @martin por 1 byte.

Graphics@{EdgeForm@Thin,White,Rectangle[#,0{,}]&/@NestList[Sort[#/a]&,{1,a=√2},#]}&
JungHwan Min
fuente
¡Muy agradable! EdgeForm@Thin: -1 byte
martin
2

JavaScript (ES6) / SVG (HTML5), 170 bytes

a=prompt();document.write('<svg width=297 height=210>');for(w=297,h=210;a--;h>w?h/=2:w/=2)document.write(`<rect fill=none stroke=#000 x=0 y=0 width=${w} height=${h} />`);

Utiliza indexación basada en 1.

Neil
fuente