Uluslararası standart kağıt boyutlarının çıktı alt bölümleri


11

Tanımlanan ISO Kağıt Boyutları:

A serisi kağıt boyutları aşağıdaki gereksinimlerle tanımlanır:

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.

resim açıklamasını buraya girin

Görev:

alt girdi olarak f[n]bölünen bir girdi çıktısı A0 verildi n.

Test senaryoları:

f[1]kime f[12]:

resim açıklamasını buraya girin

Burada A0 tarafından verilir f[1], ancak bu indeksleme zorunlu değildir.

Kazanma kriterleri:

Bayt cinsinden en kısa kod kazanır.


1
Olmamalı f[2]bir olmak A0bölünerek yatay bir çizgi ile? yani, f[2]test durumunda değil f[3]mi?
JungHwan Min

@JungHwanMin şimdi ayarlandı
martin

Yanıtlar:


2

BBC BASIC 49 ASCII karakterleri

Tokenlenmiş dosya boyutu 44 bayt

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

Eskisinden çok daha kısa! BBC BASIC'teki bitshift operatörlerini her zaman eski bilgisayarımda bulunmadığı için unutuyorum.

BBC BASIC 63 ASCII karakterleri

Tokenlenmiş dosya boyutu 58 bayt

Http://www.bbcbasic.co.uk/bbcwin/download.html adresindeki Dowload yorumlayıcısı

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

Tercih ettiğim sıfır endeksleme kullanır. Böylece 0 A0 için kağıt çıkarır, 1 A0 çıktısı bir çift A1'e bölünür.

X ve Y koordinatlarını yarıya indirmek arasında geçiş yapmak gerekir, ancak bunu bir dizide yapmak çok fazla bayta mal olur. Bunun yerine BBC A%..Z%basic'in her biri bitişik bellekte saklanan 4 baytlık statik tamsayı değişkenlerinden oluşan bir bloğa sahip olduğu gerçeğini kullanıyorum . I X ve Y değerleri depolamak A%ve C%işaretçiyi kullanarak ve erişim %Bd değer arasındaki dönüşümlü olarak modifiye 4ve -4.

Ungolfed

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

Çıktı

resim açıklamasını buraya girin


4

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

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 bayt

@Martin 1 bayt için teşekkürler.

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

Çok hoş! EdgeForm@Thin: -1 bayt
martin

2

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

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 tabanlı indeksleme kullanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.