Blockbox mà Hex?


11

Viết chương trình hoặc hàm trong bất kỳ ngôn ngữ lập trình nào có đầu vào / đối số thập lục phân 6 chữ số. Đầu vào / đối số có thể là 6 giá trị hoặc chuỗi 6 ký tự.

Chương trình của bạn sẽ xuất ra một khối ký tự hình chữ nhật rộng 8 ký tự chính xác chỉ chứa các hình lục giác được cung cấp kết hợp với khoảng trắng (+ Linefeed). Khối hình chữ nhật là sự kết hợp của các hình dạng khối nhỏ hơn, một cho mỗi trong số 6 giá trị được cung cấp.

Dưới đây là 2 đầu vào mẫu khử và mẫu đầu ra hợp lệ:

Đầu vào mẫu :

"464fa6" or [4, 6, 4, 15, 10, 6]

Một đầu ra giải pháp hợp lệ :

44 66 ff
44 66 ff
   66 ff
aa     f
aaa ffff
aa  ffff
aaa     
    6 44
66666 44

Đầu vào mẫu :

"35bf12"

Một đầu ra giải pháp hợp lệ :

55555 22

bbbbbbbb
b b b   
      33
fffff  3
ff  ff  
ffffff 1

Quy tắc:

  1. Đầu ra phải là một hình chữ nhật

  2. Đầu ra có thể có chiều cao bất kỳ, nhưng phải rộng chính xác 8 ký tự

  3. Các "khối bên trong", được gọi là "hình dạng khối", không thể kết nối với bất kỳ hình dạng khối nào khác, các hình dạng khối phải được phân tách bằng một bức tường của các khoảng trống chính xác rộng 1 ký tự theo chiều ngang, chiều dọc và đường chéo.

  4. Tường của các khoảng trống không thể chạy song song với các cạnh bên ngoài, chỉ có các cạnh tường rộng 1 ký tự có thể tồn tại ở các cạnh đầu ra. Không nên tồn tại bất kỳ không gian được liên kết ở bất cứ đâu trên cạnh hình chữ nhật ngoài cùng trên đầu ra.

  5. Chiều rộng của tường của các khoảng trống không được tại bất kỳ điểm nào vượt quá 1 ký tự.

  6. Các hình dạng khối bên trong phải đồng nhất với diện tích của các ký tự x, trong đó x là giá trị thập lục phân được cung cấp và hình dạng phải bao gồm ký tự x trong đó x là đại diện cho ký tự thập lục phân.

  7. Các hình dạng khối bên trong có thể ở bất kỳ dạng nào miễn là tất cả các ký tự hình dạng kết nối theo chiều dọc hoặc chiều ngang và không định giá các quy tắc cho bức tường của các khoảng trống.

  8. 6 hình khối có thể được đặt theo bất kỳ "trật tự" bên trong nào bên trong hình chữ nhật được xuất ra.

  9. Phạm vi đầu vào hợp lệ: 1 ... 15 ("1" ... "f") cho mỗi hình dạng. Đầu vào cho chương trình của bạn không được chứa bất kỳ thông tin nào khác ngoài 6 số thập lục phân và đầu vào không được sắp xếp theo bất kỳ cách nào khác ngoài các mẫu trước khi được cung cấp cho chương trình / chức năng của bạn. Cho chúng tôi biết định dạng đầu vào mà giải pháp của bạn sử dụng (đầu vào không thể chứa bất kỳ thông tin nào khác ngoài các giá trị thập lục phân).

  10. Một hình dạng khối bên trong có thể là rỗng. Lỗ nên có các ký tự khoảng trắng được tính là tường của các khoảng trống, có nghĩa là lỗ trong hình dạng khối bên trong rỗng không thể rộng hơn 1 ký tự.

Ba ví dụ về hình dạng rỗng hợp lệ:

aaa
a aaa
aaa

999
9 9
999
9

ffffff
f   ff
ffffff

Một ví dụ về hình dạng rỗng không hợp lệ:

ffffff
f   f
f   f
fffff

Tôi giả sử rằng tất cả các kết hợp đầu vào không thể "giải quyết" theo các quy tắc ở trên, do đó tôi liệt kê 10 đầu vào mẫu mà chương trình của bạn sẽ có thể "giải quyết" (tất cả đều được xác minh có thể giải quyết được):

 1. 464fa6 (same as the first sample)
 2. 35bf12 (second example input seen above)
 3. 111126
 4. ff7fff
 5. 565656
 6. abcdef
 7. 1357bd
 8. 8c6a42
 9. ab7845
10. 349a67

Chương trình của bạn sẽ có thể giải quyết bất kỳ trong số 10 đầu vào mẫu trong thời gian cộng hưởng. dịch thời gian cộng hưởng trong vòng 1 giờ trên máy tính để bàn tiêu chuẩn. Nói như: Lõi kép 3 Ghz, bộ nhớ 4GB để tham khảo.

Đây là mã golf, giải pháp ngắn nhất chiến thắng. Giải pháp có thể là một chương trình làm việc đầy đủ hoặc một chức năng


Quy tắc 7 có nghĩa là gì về "kết nối"? Đây có phải chỉ là sự phục hồi của ràng buộc quy tắc 5 mà (cụm từ của tôi) cấm sự tồn tại của một hình vuông trống 2x2?
Peter Taylor

Tôi xin lỗi về một số phần còn lại, nhưng quy tắc 7 là phần nhiều hơn của quy tắc 6 trong đó quy định rằng các hình phải đồng nhất. Nói cách khác, quy tắc 7 nói rằng một hình dạng duy nhất không thể được chia thành 2 hình dạng nhỏ hơn riêng biệt.
Plarsen

6
Tôi không có ý định xấu, nhưng vấn đề này không có gì hấp dẫn, thú vị hay thể hiện bất kỳ đặc điểm thẩm mỹ nào. đó chỉ là một thử thách trừu tượng và tôi không hiểu tại sao bất cứ ai cũng có đủ kiên nhẫn để đọc tất cả các quy tắc, không cần phải nói bất cứ điều gì về việc giải quyết nó. chúc may mắn với người tiếp theo của bạn mặc dù!
Bogdan Alexandru

1
Làm rõ: khoảng trắng có thể tạo thành bất kỳ hình dạng nào miễn là nó tách các khối và nó không chứa khối 2x2 và không có hai khối khoảng trắng liên tiếp ở cạnh ngoài?
John Dvorak

2
Câu hỏi này thực sự rất khó (hoặc có thể tôi là người giải quyết vấn đề kém) ... bạn có giải pháp nào cho mình không, Plarsen? Dù sao, tôi nghĩ sẽ thú vị hơn khi bỏ các yêu cầu về khoảng trắng và biến nó thành một thách thức mã trong đó điểm số phụ thuộc vào cả số lượng ký tự và chiều cao của khối (do đó, có ích khi đóng gói rất nhiều mà không cần thực hiện đó là một yêu cầu khó khăn).
FireFly

Câu trả lời:


1

Haskell, 156

Vâng, điều này kéo dài các quy tắc một chút. Tôi không có bất kỳ bức tường trống nào ngoại trừ các đường kẻ, do đó tất cả các bức tường của tôi có chiều dài là 1.

import Data.List
r=replicate
main=getLine>>=putStrLn.concatMap(\b->unlines$s(head$elemIndices b"0123456789abcdef")b)
s n c|n<9=[r n c,""]|True=r 8 c:s(n-8)c

đầu ra cho 464fa6:

4444

666666

4444

ffffffff
fffffff

aaaaaaaa
aa

666666

Rất, rất gần :) nhưng quy tắc 4 không được đáp ứng, tạo ra một hình chữ nhật tưởng tượng của đầu ra của bạn, bạn có nhiều hơn 1 khoảng trắng thẳng hàng trong một hàng ở cạnh ngoài cùng bên phải.
Plarsen

1

BrainF * ck - 134 (nội tuyến mới

>>+[++++++++++>,----------]>++++++[<+++++>-]<++[<]<++++++[>+++++<-]>++>-
>..<<.>>>..<<<.>>>>..<<<.<........>.>>>>..>>>.<<..>>.<..[<]>>.

Tôi nghĩ rằng đây là câu trả lời đơn giản

Đầu vào được thực hiện thông qua 6 ký tự thập lục phân đến stdin, theo sau là một dòng mới để gửi.

EDIT: Điều này thất bại do quy tắc 6, mà tôi đã không nhận ra đầy đủ cho đến bây giờ: /

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.