Phân khu đầu ra của kích thước giấy tiêu chuẩn quốc tế


11

Kích thước giấy ISO được xác định:

Các khổ giấy A được xác định theo các yêu cầu sau:

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.

nhập mô tả hình ảnh ở đây

Bài tập:

đưa ra một đầu f[n]ra A0 được chia thành các nphân khu.

Các trường hợp thử nghiệm:

f[1]để f[12]:

nhập mô tả hình ảnh ở đây

Ở đây, A0 được đưa ra bởi f[1], nhưng việc lập chỉ mục này không cần thiết.

Tiêu chí chiến thắng:

Mã ngắn nhất tính bằng byte thắng.


1
Không nên f[2]là một A0với một đường ngang chia nó? tức là không thực sự f[2]trong trường hợp thử nghiệm f[3]?
JungHwan Min

@JungHwanMin điều chỉnh ngay bây giờ
martin

Câu trả lời:


2

BBC BASIC 49 ký tự ASCII

Kích thước tệp tokenised 44 byte

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

Ngắn hơn nhiều so với trước đây! Tôi luôn quên các toán tử bithift trong BBC BASIC cho các cửa sổ vì chúng không có sẵn trên máy tính cũ của tôi ngày trước.

BBC BASIC 63 ký tự ASCII

Kích thước tệp được mã hóa 58 byte

Thông dịch viên tải xuống tại http://www.bbcbasic.co.uk/bbcwin/doad.html

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

Sử dụng chỉ mục bằng không, mà tôi thích. Do đó, 0 xuất giấy cho A0, 1 đầu ra A0 được chia thành một cặp A1, v.v.

Cần phải xen kẽ giữa một nửa tọa độ X và Y, nhưng làm điều đó trong một mảng sẽ tốn quá nhiều byte. Thay vào đó tôi sử dụng thực tế là BBC cơ bản có một khối các biến số nguyên tĩnh A%..Z%gồm 4 byte được lưu trữ trong bộ nhớ liền kề. Tôi lưu trữ các giá trị X và Y trong A%C%truy cập bằng cách sử dụng con trỏ để %Bsửa đổi bởi giá trị của d, xen kẽ giữa 4-4.

Ung dung

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

Đầu ra

nhập mô tả hình ảnh ở đây


4

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

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

Toán học, 87 85 byte

Cảm ơn @martin cho 1 byte.

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

Rất đẹp! EdgeForm@Thin: -1 byte
martin

2

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

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

Sử dụng lập chỉ mục dựa trên 1.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.