Ngôi sao giấy là một điều lớn trong gia đình tôi vào Giáng sinh, vì vậy tôi nghĩ rằng một người ảo sẽ rất tuyệt.
Dưới đây là hình ảnh của một khối mười hai mặt thông thường (từ https://en.wikipedia.org/wiki/Dodecahedron , được quy cho tác giả được đề cập ở đó.)
Quá trình sao chép (wikipedia) khi áp dụng cho khối đa diện liên quan đến việc mở rộng các mặt cho đến khi chúng vượt qua các mặt khác. Do đó, bắt đầu với khối mười hai mặt thông thường, chúng ta có được các hình dạng sau:
Dodecahedron Stellated nhỏ, Dodecahedron lớn và Dodecahedron Stellated lớn
Hình ảnh từ http://jwilson.coe.uga.edu/emat6680fa07/thrash/asn1/stellations.html
Đây là ba Stellations of the dodecahedron (Wolfram). Chúng tạo thành một sự tiến triển tự nhiên từ khối mười hai mặt, đến khối mười hai sao nhỏ, khối mười hai mặt lớn và khối mười hai mặt lớn, khi chúng ta mở rộng khuôn mặt ra xa hơn.
Bài tập
Chương trình hoặc chức năng của bạn sẽ hiển thị hoặc xuất ra một tệp hình ảnh một trong các khối đa diện sau: Khối mười hai mặt thông thường, khối mười hai mặt nhỏ, khối mười hai mặt lớn hoặc Dodecahedron vĩ đại .
Bảng màu nên như hình ảnh thứ hai ở trên. Mỗi sáu cặp mặt đối diện sẽ là một trong sáu màu Đỏ, Vàng, Xanh lục, Lục lam, Xanh lam và Đỏ tươi. Bạn có thể sử dụng các màu mặc định với các tên này trong ngôn ngữ hoặc tài liệu của nó hoặc sử dụng các màu FF0000, FFFF00, 00FF00, 00FFFF, 0000FF và FF00FF (bạn có thể giảm các màu này xuống bằng cách giảm cường độ xuống tối thiểu 75% nếu muốn, ví dụ: bằng cách giảm F xuống còn C.)
Lưu ý rằng chúng tôi xác định "khuôn mặt" là tất cả các khu vực trong cùng một mặt phẳng. Do đó, trong các hình ảnh phía trên mặt trước có màu vàng (và mặt sau song song cũng sẽ có màu vàng.)
Nền nên có màu đen, xám hoặc trắng. Các cạnh có thể được bỏ qua, nhưng nên có màu đen nếu được vẽ.
Quy tắc
Đa diện được hiển thị phải có chiều rộng từ 500 đến 1000 pixel (chiều rộng được xác định là khoảng cách tối đa giữa hai đỉnh được hiển thị.)
Khối đa diện được hiển thị phải nằm trong hình chiếu phối cảnh (điểm quan sát cách khối đa diện ít nhất 5 chiều rộng) hoặc hình chiếu chính tả (có hiệu quả là hình chiếu phối cảnh với điểm nhìn ở vô cực).
Khối đa diện phải được hiển thị từ mọi góc độ. (Không thể chấp nhận chọn góc dễ nhất có thể và tạo hình dạng 2D được mã hóa cứng.) Người dùng có thể chỉ định góc theo một trong các cách sau:
Đầu vào của ba góc tương ứng với ba góc quay, từ stdin hoặc dưới dạng tham số hàm hoặc dòng lệnh. Đây có thể là các góc Euler (trong đó các góc quay đầu tiên và cuối cùng nằm trên cùng một trục) hoặc các góc Tait-Bryan (trong đó có một góc xoay mỗi trục về trục x, y và z) https://en.wikipedia.org/ wiki / Euler_angles (nói một cách đơn giản, mọi thứ sẽ diễn ra miễn là mỗi vòng quay là về trục x, y hoặc z và các phép quay liên tiếp là về các trục vuông góc.)
Thiết bị cho người dùng xoay khối đa diện theo các bước không quá 10 độ về trục x và y và làm mới màn hình, bất kỳ số lần tùy ý (giả sử trục z vuông góc với màn hình).
Khối đa diện phải chắc chắn, không phải khung dây.
Không có nội dung nào để vẽ đa diện được cho phép (Tôi đang nhìn bạn, Mathicala!)
Chấm điểm
Đây là cá tuyết. Mã ngắn nhất trong byte thắng.
Tiền thưởng
Nhân số điểm của bạn với 0,5 nếu bạn không sử dụng nội trang cho bản vẽ 3D.
Nhân số điểm của bạn với 0,7 nếu bạn có thể hiển thị cả ba ngôi sao của khối mười hai mặt, người dùng có thể chọn bởi một số nguyên 1-3 được nhập từ stdin hoặc theo tham số hàm hoặc dòng lệnh.
Nếu bạn nhận được cả hai phần thưởng, điểm của bạn sẽ được nhân với 0,5 * 0,7 = 0,35
Thông tin hữu ích (nguồn như dưới đây)
https://en.wikipedia.org/wiki/Regular_dodecahedron
https://en.wikipedia.org/wiki/Regular_icosahedron
Khối mười hai mặt có 20 đỉnh. 8 trong số chúng tạo thành các đỉnh của một khối lập phương có tọa độ cartesian (x, y, z) sau đây:
(± 1, ± 1, ± 1)
12 số còn lại như sau (phi là tỷ lệ vàng)
(0, ± 1 /, ± φ)
(± 1 /, ± φ, 0)
(±, 0, ± 1 /)
Vỏ lồi của khối mười hai mặt nhỏ và khối mười hai mặt rõ ràng là một khối mười hai mặt thông thường. Các đỉnh bên ngoài mô tả một icosahedron.
Theo Wikipedia, 12 đỉnh của icosahedron có thể được mô tả theo cách tương tự như hoán vị theo chu kỳ của (0, ± 1, ±). Các đỉnh bên ngoài của dodecaheron nhỏ và dodechahedron lớn (có cùng tỷ lệ với dodecahedron ở trên) tạo thành một icosahedron lớn hơn, trong đó tọa độ của các đỉnh là hoán vị tuần hoàn của (0, ± φ ^ 2, ±).
Các góc giữa các mặt của khối mười hai mặt và icosahedron lần lượt là 2 arctan (phi) và arccos (- (√5) / 3).
Để biết các mẹo về xoay vòng, hãy xem https://en.wikipedia.org/wiki/Rotation_matrix
EDIT: Do nhầm lẫn, tôi đã cho phép khối mười hai mặt thông thường và không thể rút lại ngay bây giờ. Phần thưởng x0.7 cho việc vẽ cả ba khối đa diện vẫn còn. Vào ngày đầu năm, tôi sẽ phát hành tiền thưởng 100 cho câu trả lời có thể hiển thị hầu hết bốn khối đa diện, với mã ngắn nhất là ngắt kết nối.
Polyhedrondata
không được phép vì nó rõ ràng là một nội dung để vẽ các khối đa diện. Nếu câu trả lời của bạn không sử dụng nội dung để vẽ khối đa diện và tuân thủ các quy tắc khác, thì có thể chấp nhận được. Quan điểm của bạn dường như là do thực tế là bạn phải tô màu cho khuôn mặt một cách chính xác, Polyhedrondata
dù sao cũng sẽ không giúp bạn tiết kiệm nhiều, vì vậy thực tế nó có thể là một hạn chế tùy tiện. Tôi đồng ý ở một mức độ nào đó, nhưng sẽ công bằng hơn cho tất cả nếu tôi tránh thay đổi quy tắc sau khi đăng.
dodecahedron
) không được phép. Một số ngôn ngữ có phương tiện để xây dựng mô hình 3D với các lệnh nhưtriangle[[a,b,c],[p,q,r],[x,y,z]]
. Các ngôn ngữ này thường có tích hợp để xoay và hiển thị mô hình, tự động chú ý không hiển thị các mặt ẩn, v.v ... Các giải pháp như những thứ này được cho phép nhưng sẽ không thu hút được phần thưởng. Mục đích của phần thưởng là cho phép các ngôn ngữ không có các cơ sở này có khả năng cạnh tranh và cũng để thu hút các giải pháp thú vị hơn.