国際標準の用紙サイズの出力区分


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]された入力A0が与えられますn

テストケース:

f[1]f[12]

ここに画像の説明を入力してください

ここで、A0はで与えられますが f[1]、このインデックスは必須ではありません。

受賞基準:

バイト単位の最短コードが優先されます。


1
それを分割する水平線を持つべきではf[2]ありませんA0か?つまり、f[2]実際にテストケースではありませんf[3]か?
ジョンファンミン

@JungHwanMinが調整されました
martin

回答:


2

BBC BASIC 49 ASCII文字

トークン化されたファイルサイズ44バイト

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

以前よりずっと短くなりました!Windows用のBBC BASICのビットシフト演算子は、以前の古いコンピューターでは使用できなかったため、常に忘れています。

BBC BASIC 63 ASCII文字

トークン化されたファイルサイズ58バイト

http://www.bbcbasic.co.uk/bbcwin/download.htmlの Dowloadインタープリター

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

ゼロインデックスを使用します。したがって、0はA0の用紙を出力し、1はA0をA1のペアに分割して出力します。

X座標とY座標を半分にすることを交互に行う必要がありますが、配列でこれを行うにはバイト数が多すぎます。代わりに、BBCベーシックには、A%..Z%それぞれが連続したメモリに格納されている4バイトの静的整数変数のブロックがあるという事実を使用します。IはでX及びY値を格納A%し、C%ポインタを用いてアクセス%Bdの値の間交互によって修飾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バイト

1バイトありがとう@martin。

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ベースのインデックスを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.