Nhanh chóng phân chia tại Vendoria


10

Lý lịch

Nhà sản xuất đã được bán trên thị trường như một trò chơi, nhưng chúng tôi, những người chơi golf có thể thấy nó thực sự là gì: một ngôn ngữ lập trình hai chiều. Ngôn ngữ lập trình Vendoria dựa trên một hàng đợi duy nhất , chứa một loạt các dấu hiệu đầy màu sắc. Con trỏ lệnh di chuyển xung quanh bảng trò chơi bằng băng chuyền và nó gặp một loạt các nhà văn và các nhánh đọc và ghi vào hàng đợi.

Ngôn ngữ rất dễ hiểu, vì vậy cách nhanh nhất để học là chơi một vài cấp độ đầu tiên của trò chơi (được liên kết ở trên).

Thử thách

Thử thách của bạn là tạo ra một chương trình có thể chia một số cho một số khác trong khoảng thời gian ít nhất.

Đầu vào của chương trình sẽ là một chuỗi các dấu X màu xanh theo sau là các dấu đỏ Y. Đầu ra cần thiết sẽ là một chuỗi các điểm đánh dấu màu đỏ có độ dài X / Y.

Bảng trò chơi sẽ được sử dụng được tìm thấy ở cấp độ cuộc thi chính thức này:

http://pleasingfungus.com/Manufactoria/?ctm=Divide_and_Conquer;Input_will_be_X_blues_followed_by_Y_reds,_output_X/Y_reds;bbbbbbrr:rrr|bbbrrr:r|bbbbr:rrrr|r:|bbbbbbbbbbbbrrrr:rrr|bbbbbbbbbbbbrrr:rrrr|bbbbbbbbbrrr:rrr|bbbbbbbbbbrr: rrrr; 13; 3; 0

Nó có kích thước 13x13 (kích thước tối đa) và được trang bị sẵn các bài kiểm tra chính xác (xem phần chấm điểm).

Chấm điểm

Điểm của chương trình của bạn là tổng thời gian cần thiết để chương trình vượt qua tất cả các bài kiểm tra ở cấp độ cuộc thi chính thức. Tổng thời gian được đưa ra trên màn hình hoàn thành cấp độ.

Trong khi chạy các bài kiểm tra, rất có thể bạn sẽ phải sử dụng thanh trượt tăng tốc 50x ở phía dưới bên trái để nhận kết quả nhanh chóng (tăng tốc thời gian không ảnh hưởng đến điểm số).

Dưới đây là danh sách các vấn đề phân chia có liên quan đến các bài kiểm tra:

 6/2 = 3
 3/3 = 1
 4/1 = 4
 0/1 = 0
12/4 = 3
12/3 = 4
 9/3 = 3
10/2 = 5

Ví dụ I / O

12/3=4
in:  BBBBBBBBBBBBRRR
out: RRRR

10/2=5
in:  BBBBBBBBBBRR
out: RRRRR

9/3=3
in:  BBBBBBBBBRRR
out: RRR

0/1=0
in:  R
out: 

Những thứ tuyệt vời, trò chơi đó! Đừng thực sự dành thời gian cho golf những ngày này nhưng sẽ nhớ điều này.
tomsmeding

Câu trả lời:


6

4

Điểm: 15:51

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

Không phân chia bằng phép trừ lặp đi lặp lại. Sử dụng một chữ Y trong số R để theo dõi số tiền đã chia cho đến nay. Sử dụng Gs để tính thương số.

Chẳng hạn, trạng thái ở đầu mỗi vòng lặp bên ngoài (ngay sau trình ghi G ban đầu) cho 12/4 là:

BBBBBBBBBBBB RRRR G
BBBBBBBB RRRR GG
BBBB RRRR GGG
RRRR GGGG

Khi không còn Bs, tiện ích ở dải dưới cùng bên trái R và sau đó xuất ra # G-1 R.

Vòng lặp bên trong tước một B tại một thời điểm và sử dụng Y để theo dõi vị trí. Bắt đầu từ vòng lặp bên ngoài:

BBBBBBBB RRRR GG
BBBBBBB RYRRR GG
BBBBBB RRYRR GG
BBBBB RRRYR GG
BBBB RRRR GG

Vòng lặp bên trong là hộp 3x4 ở phía dưới bên phải. Bố cục của phần còn lại có thể được cải thiện một chút, nhưng vòng lặp bên trong chặt chẽ.

http://pleasefungus.com/Man producoria /? lvl = 34 & code = c11: 13f2; g12: 2f3; p12: 3f7; c13: 3f3; p13: 4f3; b12: 4f2; r14: 4f3; p14: 7f7; ; q14: 8f7; g13: 8f2; p14: 9f4; r13: 10f2; p14: 10f7; b15: 10f0; q14: 11f7; p15: 11f3; r16: 11f1; p15: 8f0; : 2f0; c15: 2f0; c16: 2f0; c17: 2f0; c11: 3f3; c11: 4f3; c11: 6f3; c11: 7f3; c11: 8f3; c11: 9f3; c11: 5f3; ; q11: 12f7; r10: 12f2; c10: 10f2; q16: 10f5; y14: 6f3; q14: 5f3; g15: 5f1; c15: 4f1; c15: 3f1; c17: 9f1; c17: 9f1; : 6f1; c17: 5f1; c17: 4f1; c17: 3f1; y16: 9f1; c17: 3f1; y16: 9f1; g17: 10f1; y16: 9f1; g17: 10f1; q14: 2f1; g17: 1f3; q14: 2f4; g14: 1f3; : RRRR | r: | bbbbbbbbbbbbrrrr: rrr | bbbbbbbbbbbbrrr: RRRR | bbbbbbbbbrrr: rrr | bbbbbbbbbbrr: rrrrr; 13; 3; 0 ;


Bằng cách sắp xếp lại mạnh mẽ các phần trong thiết kế của bạn, tôi đã có thể giảm điểm xuống còn 13:28 với 53 phần.
PhiNotPi

2
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.