国际标准纸张尺寸的输出细分


11

ISO纸张尺寸定义:

A系列纸张尺寸由以下要求定义:

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.

在此处输入图片说明

任务:

给定f[n]分为n细分的输入输出A0 。

测试用例:

f[1]f[12]

在此处输入图片说明

此处,A0由给出 f[1],但此索引不是必需的。

获奖标准:

以字节为单位的最短代码获胜。


1
难道不f[2]应该A0用水平线将其分开吗?即,实际上不是f[2]测试用例中的f[3]吗?
JungHwan Min

@JungHwanMin现在进行了调整
马丁

Answers:


2

BBC BASIC 49个ASCII字符

标记化文件大小为44个字节

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

比以前短得多!我总是忘了BBC BASIC for Windows中的位移位运算符,因为它们在当时的旧计算机上是不可用的。

BBC BASIC 63 ASCII字符

标记化文件大小58字节

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.

使用零索引,我更喜欢。因此,0输出用于A0的纸张,1输出被分成一对A1的A0,依此类推。

有必要在X和Y坐标减半之间交替,但是在数组中这样做会花费太多字节。取而代之的是,我使用BBC基本版具有一个A%..Z%4字节的静态整数变量块的事实,每个变量都存储在连续的内存中。我将X和Y值存储在和中A%C%并使用%B由d值修改的指针进行访问,该值在4和之间交替-4

不打高尔夫球

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

输出量

在此处输入图片说明


4

的JavaScript(ES6)+ HTML,96 94 + 34 = 130个 128字节

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字节

感谢@martin 1个字节。

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

非常好!EdgeForm@Thin:-1个字节
马丁

2

JavaScript(ES6)/ SVG(HTML5),170个字节

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

使用基于1的索引。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.