Có một trò chơi tôi thích chơi. Nó xảy ra trên một lưới có kích thước hữu hạn (nhưng nó được bọc lại, giống như một quả cầu). Trên lưới đó, một điểm ngẫu nhiên (chỉ số nguyên) được chọn. Sau đó, tôi, người dùng, được nhắc nhập đầu vào tọa độ. Nếu đầu vào của tôi khớp chính xác với điểm ngẫu nhiên, tôi được thông báo rằng tôi đã thắng. Mặt khác, tôi được cho biết khoảng cách điểm giữa đầu vào của tôi và điểm ngẫu nhiên. Ví dụ, nếu tôi đoán (2,2)
và điểm ngẫu nhiên là (4,3)
, thì khoảng cách sẽ là sqrt[(3-2)^2 + (4-2)^2] = sqrt[5]
.
Trò chơi tiếp tục cho đến khi người chơi đến đúng vị trí của điểm.
Mục tiêu Tạo một phiên bản chức năng của trò chơi được mô tả ở trên. Bạn phải tạo một chương trình đầy đủ để làm như vậy. Đây là những gì chương trình của bạn nên làm:
- Yêu cầu hai đầu vào: chiều cao và chiều rộng của bảng. Nguồn gốc nằm ở phía trên bên trái của bảng. Những đầu vào sẽ không vượt quá
1024
. - Chọn một điểm ngẫu nhiên trên bảng đó; đây sẽ là điểm cần đoán
- Chấp nhận đầu vào mô phỏng một lượt. Đầu vào sẽ là một cặp số nguyên được phân tách bằng dấu cách hoặc hai đầu vào số nguyên riêng biệt. Để đáp ứng với đầu vào này, chương trình sẽ thực hiện một trong hai điều sau:
- Nếu đầu vào khớp với điểm ngẫu nhiên được chọn, hãy xuất một thông báo báo hiệu chiến thắng của người dùng. Tôi sẽ đề nghị "Bạn đã thắng!".
- Mặt khác, xuất khoảng cách giữa điểm đầu vào của người dùng và điểm ngẫu nhiên.
- Khi người dùng đã giành được chiến thắng, hãy hiển thị số lượt người dùng đã thực hiện. Chương trình sau đó thoát.
Tiền thưởng
Tiền thưởng được áp dụng theo thứ tự xuất hiện trong danh sách này
- -150 byte nếu chương trình của bạn lấy số nguyên đầu vào
D
mô tả thứ nguyên mà trò chơi diễn ra. Ví dụ: nếuD = 3
, sau đó bạn tạo một điểm3
số nguyên ngẫu nhiên , lấy3
đầu vào số nguyên và xuất khoảng cách giữa các điểm đó. - -50% (hoặc + 50% nếu
score < 0
) nếu bạn cung cấp biểu diễn đồ họa của bảng (ASCII hoặc Hình ảnh) cho thấy nơi người dùng đã đoán trước đó trên lưới các kích thước đã cho và bộ đếm lần lượt. (Nếu bạn nhận phần thưởng đầu tiên, thì phần thưởng này chỉ áp dụng cho các chế độ2D
và1D
. Nếu bạn thêm đầu ra đồ họa 3D, bạn sẽ nhận được thêm -50%.) - -60 byte nếu bạn có thể cung cấp một gamemode (được chọn bởi một đầu vào lúc đầu; nghĩa là, khi được đưa ra
0
, hãy thực hiện các gamemode thông thường; khi được cho1
, thực hiện gamemode này) trong đó điểm di chuyển 1 đơn vị theo hướng trực giao ngẫu nhiên mỗi lượt
Thêm về gói
Việc gói chỉ xảy ra khi, trong phần thưởng thứ ba, điểm di chuyển di chuyển qua bất kỳ ranh giới nào; trong trường hợp này, điểm di chuyển bị vênh đến điểm tương ứng, như vậy:
... ...
..R (move right) R..
... ...
Hành vi gói này không ảnh hưởng đến dự đoán của người dùng, ngoài thực tế là điểm đã thay đổi hướng.
Bảng xếp hạng
Đoạn trích Stack ở cuối bài này tạo ra danh mục từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.
Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:
# Language Name, N bytes
nơi N
là kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:
# Perl, 43 + 2 (-p flag) = 45 bytes
Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
10x10
, điểm ngẫu nhiên là (9,4)
, và tôi đoán (2,2)
, là khoảng cách sqrt(13)
hoặcsqrt(53)
? (Lưu ý cho tương lai: nếu bạn đang làm bất cứ điều gì kỳ lạ, đừng bao gồm tính ngẫu nhiên vì điều đó gần như không thể cung cấp các trường hợp thử nghiệm). 2. Trong phần thưởng thứ ba, khoảng cách nên được tính và đầu ra trước hoặc sau khi điểm di chuyển?