เขตการผลิตย่อยของขนาดกระดาษมาตรฐานสากล


11

ขนาดกระดาษ ISO ที่กำหนด:

ขนาดกระดาษ A series ถูกกำหนดโดยข้อกำหนดต่อไปนี้:

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]หรือ
JungHwan Min

@JungHwanMin ปรับแล้วตอนนี้
martin

คำตอบ:


2

BBC ASCIC 49 อักขระ ASCII

ไฟล์ขนาด Tokenised 44 ไบต์

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

สั้นกว่า แต่ก่อนมาก! ฉันลืมเกี่ยวกับตัวดำเนินการ bitshift ใน BBC BASIC สำหรับ windows เนื่องจากพวกเขาไม่สามารถใช้งานได้ในคอมพิวเตอร์เครื่องเก่าของฉันในตอนกลางวัน

ตัวละคร BBC BASIC 63 ASCII

Tokenised ขนาดไฟล์ 58 ไบต์

ล่าม Dowload ที่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 ออก A0 แบ่งออกเป็นคู่ของ A1s ฯลฯ

มีความจำเป็นต้องสลับระหว่างการลดพิกัด X และ Y ลงครึ่งหนึ่ง แต่การทำเช่นนั้นในอาร์เรย์จะมีค่าใช้จ่ายมากเกินไป แต่ฉันใช้ความจริงที่ว่า BBC พื้นฐานมีบล็อกของตัวแปรจำนวนเต็มคงที่A%..Z%4 ไบต์แต่ละอันเก็บไว้ในหน่วยความจำต่อเนื่อง ฉันเก็บ X และ Y ค่าในA%และC%และการเข้าถึงโดยใช้ตัวชี้ไปที่%Bการแก้ไขโดยมูลค่าของ d ซึ่งสลับระหว่างและ4-4

Ungolfed

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

เอาท์พุต

ป้อนคำอธิบายรูปภาพที่นี่




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.