Subdivisions de sortie des formats de papier standard internationaux


11

Définition des formats de papier ISO:

Les formats de papier de la série A sont définis par les exigences suivantes:

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.

entrez la description de l'image ici

Tâche:

étant donné une f[n]sortie d' entrée A0 divisée en nsubdivisions.

Cas de test:

f[1]à f[12]:

entrez la description de l'image ici

Ici, A0 est donné par f[1], mais cette indexation n'est pas indispensable.

Critères gagnants:

Le code le plus court en octets gagne.


1
Ne devrait pas f[2]être un A0avec une ligne horizontale qui le divise? c'est-à-dire, n'est-ce pas le cas f[2]dans le test f[3]?
JungHwan Min

@JungHwanMin ajusté maintenant
martin

Réponses:


2

BBC BASIC 49 caractères ASCII

Taille de fichier Tokenized 44 octets

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

Beaucoup plus court qu'avant! J'oublie toujours les opérateurs de décalage de bits dans BBC BASIC pour Windows car ils n'étaient pas disponibles sur mon ancien ordinateur à l'époque.

BBC BASIC 63 caractères ASCII

Taille de fichier Tokenized 58 octets

Interprète de téléchargement sur 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.

Utilise l'indexation zéro, ce que je préfère. Ainsi, 0 sort le papier pour A0, 1 sorties A0 divisé en une paire de A1, etc.

Il est nécessaire d'alterner entre diviser par deux les coordonnées X et Y, mais cela dans un tableau aurait coûté trop d'octets. Au lieu de cela, j'utilise le fait que BBC basic a un bloc de variables entières statiques A%..Z%de 4 octets chacune stockées dans la mémoire contiguë. Je stocke les valeurs X et Y dans A%et C%et j'accède en utilisant le pointeur à %Bmodifié par la valeur de d, qui alterne entre 4et -4.

Non golfé

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

Production

entrez la description de l'image ici


4

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

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>


2

Mathematica, 87 85 octets

Merci @martin pour 1 octet.

Graphics@{EdgeForm@Thin,White,Rectangle[#,0{,}]&/@NestList[Sort[#/a]&,{1,a=√2},#]}&

Très agréable! EdgeForm@Thin: -1 octet
martin

2

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

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} />`);

Utilise l'indexation basée sur 1.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.