Làm RNG bị mất


17

Lost là ngôn ngữ lập trình 2 chiều trong đó vị trí bắt đầu và hướng của ip hoàn toàn ngẫu nhiên.

Điều này làm cho rất khó để thực hiện các chương trình Mất xác định. Tuy nhiên hôm nay chúng tôi không viết một chương trình xác định, chúng tôi đang viết một RNG.

Viết chương trình Mất không có đầu vào và đầu ra một chữ số (0,1,2,3,4,5,6,7,8 hoặc 9), với tất cả các chữ số có xác suất đầu ra bằng nhau. Vì vị trí và hướng bắt đầu của Lost là nguồn ngẫu nhiên duy nhất, nên cách duy nhất để làm điều này là có mỗi vị trí trong nguồn của bạn xuất ra một số khác nhau từ 0 đến 9 với một số bằng nhau xuất ra mỗi chữ số.

Bạn có thể tính xác suất của mỗi chữ số bằng cách sử dụng -Qcờ và chuyển nó vào tập lệnh python này

import sys
a=sys.stdin.read().split()[:-1]
for x in range(10):print x,':',a.count(`x`)
print[x for x in a if x not in list("1234567890")]

Hãy thử trực tuyến!

Đây là vì vậy câu trả lời sẽ được tính bằng byte với ít byte hơn.


Tổng quan về Lost

Mất là một gói ngôn ngữ IO 2D ẩn chứa nhiều từ khuôn mẫu của Klein. Dưới đây là một bản tóm tắt nhanh chóng về những gì lệnh bị mất làm

  • \, /, |Gương ip

  • <, ^, >, vĐiểm ip theo một hướng

  • [Phản ánh ip nếu nó đang di chuyển về phía đông; trở thành ]nếu ip di chuyển theo chiều ngang

  • ]Phản ánh ip nếu nó đang di chuyển về phía tây; trở thành [nếu ip di chuyển theo chiều ngang

  • ! Bỏ qua thao tác tiếp theo

  • ? Thoát khỏi đỉnh ngăn xếp và nhảy nếu không bằng không

  • : Nhân đôi đỉnh của ngăn xếp

  • $ Hoán đổi hai mục trên cùng của ngăn xếp

  • ( Pops từ ngăn xếp và đẩy đến phạm vi

  • ) Pops từ phạm vi và đẩy đến ngăn xếp

  • 0- 9đẩy n lên đỉnh ngăn xếp

  • "Bắt đầu và kết thúc một chuỗi bằng chữ. Trong một chuỗi các lệnh bằng chữ không được chạy và thay vào đó, các giá trị ký tự của chúng được đẩy lên ngăn xếp.

  • + Thêm hai số hàng đầu

  • * Nhân hai số trên cùng

  • - Nhân lên hàng đầu bằng -1

  • % Tắt an toàn

  • # Bật an toàn

  • @ Kết thúc thực thi nếu tắt an toàn (bắt đầu)


Điều gì xảy ra nếu bạn cố gắng trao đổi hai giá trị từ ngăn xếp nhưng chỉ có một giá trị hoặc cố gắng bật từ ngăn xếp trống?
pppery

@ppperry Ngăn xếp được đệm bằng các số không ẩn.
Thuật sĩ lúa mì

1
Thông tin quá thấp về ngôn ngữ. Nó có bọc không? "An toàn" nghĩa là gì? Mô tả Bracets là sai lệch? Phạm vi được sử dụng như thế nào?
Dead Possum

@DeadPossum Tôi đã cố gắng giữ cho nó ngắn gọn. Nó không bọc. An toàn đã được giải thích trong câu hỏi. Tôi không biết ý của bạn về dấu ngoặc. []hoạt động như cửa ra vào, <>chỉ vào hướng và ()lưu trữ và thu hồi từ phạm vi. Phạm vi được sử dụng để lưu trữ các giá trị.
Thuật sĩ lúa mì

@WheatWizard Vì vậy, an toàn chỉ là điều kiện cho @hoặc nó có các giai đoạn khác? Về dấu ngoặc, tôi không hiểu phần này : becomes ] if the ip is moving horizontally. Di chuyển về hướng đông cũng vậy, phải không?
Xác chết

Câu trả lời:


12

81 101 byte

Đây có thể là sân gôn hơn nữa ...

>%(0@>%(1@>%(2@>%(3@>%(4@>%(5@>%(6@>%(7@>%(8@>%(9@
^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<

Hãy thử trực tuyến!


1
Cách tiếp cận thú vị! Tôi đã không nghĩ về điều đó
Wheat Wizard

1
101 byte sửa lỗi in hai lần. Chỉ cần thêm một ngăn xếp pop trước khi tắt an toàn vì vậy nếu bạn nhấn số khi bắt đầu, nó có thể bật nó, đẩy nó một lần nữa, sau đó chết. Tôi không biết liệu đây có phải là một sự ngẫu nhiên về mặt kỹ thuật hay không ...
Arnold Palmer

1
Tôi thực sự đã
nảy ra

1
Đầu ra của bạn không đồng đều. 0có cơ hội 7/101 được in (bất kỳ <hoặc ^bên dưới khối của nó, cộng với ký hiệu >%), 1- 8có cơ hội 910/101 và có cơ hội 11/101. Sau đó, có vẻ như có thể nó sẽ diễn ra mãi mãi.
Arnold Palmer

1
Nó phải bọc, hoặc nếu không thì điều này sẽ chấm dứt khi nó bắt đầu trên dòng trên cùng đi lên.
pppery

9

Mất , 54 byte

>%(0@>%(1@
@>%(2@>%(3
5@>%(4@>%(
(7@>%(6@>%
%(9@>%(8@>

Hãy thử trực tuyến!

Chỉ cần sao chép từ câu trả lời của pppery và làm một số thứ ngẫu nhiên. Tôi không biết gì về ngôn ngữ bị mất. Và tôi thậm chí không biết những gì xảy ra cho các mã trên. Đây có phải là công việc không? (Tôi không biết)


Mã của bạn tạo ra một nửa sản lượng như ppperry, tôi đoán đó là do cách thức -Qhoạt động? Đầu ra dường như thường được phân phối. Thật tuyệt khi có một thông số đầy đủ về ngôn ngữ được liên kết trong câu hỏi.
Aaron

@Aaron Tôi nên đã giải thích làm thế nào -Qhoạt động. Vì ngôn ngữ là ngẫu nhiên, xác minh được thực hiện bằng cách chạy tất cả các khả năng. -Qlàm điều này và in tất cả các kết quả. Chương trình càng ngắn thì càng có ít khả năng và càng ít kết quả đầu ra -Q.
Thuật sĩ lúa mì
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.