잃어버린 RNG 만들기


17

Lost 는 ip의 시작 위치와 방향이 완전히 임의 인 2D 프로그래밍 언어입니다.

이것은 결정론적인 로스트 프로그램을 만들기가 매우 어렵습니다. 그러나 오늘날 우리는 결정 론적 프로그램을 작성하지 않고 RNG를 작성하고 있습니다.

입력을받지 않고 한 자릿수 (0,1,2,3,4,5,6,7,8 또는 9)를 출력하고 모든 자릿수가 출력 될 확률이 같은 Lost 프로그램을 작성하십시오. Lost의 시작 위치와 방향은 임의의 유일한 소스이므로 소스의 모든 위치가 0에서 9까지 다른 숫자를 출력하고 각 숫자를 같은 숫자로 출력하는 것이 유일한 방법입니다.

-Q플래그 를 사용 하여이 파이썬 스크립트에 파이프 하여 각 숫자의 확률을 계산할 수 있습니다

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")]

온라인으로 사용해보십시오!

이것은 이므로 바이트 수가 적을수록 답이 바이트로 표시됩니다.


로스트 개요

로스트 (Lost)는 클라인 금형에서 많은 부분을 차지하는 래핑 암시 적 IO 2D 언어입니다. 다음은 잃어버린 명령이하는 일에 대한 간략한 설명입니다.

  • \, /, |거울는 IP

  • <, ^, >, v방향으로 IP를 포인트

  • [동쪽으로 움직이면 ip를 반영합니다. 해진다 ]는 IP 수평 이동되면

  • ]서쪽으로 움직이면 ip를 반영합니다. 해진다 [는 IP 수평 이동되면

  • ! 다음 작업을 건너 뜁니다

  • ? 스택 상단에서 튀어 나와 0이 아닌 경우 점프

  • : 스택의 상단을 복제

  • $ 스택의 맨 위 두 항목을 바꿉니다.

  • ( 스택에서 튀어 나와 범위로 푸시

  • ) 스코프에서 튀어 나와 스택으로 푸시

  • 0- 9스택 상단으로 n을 밀어 넣습니다.

  • "문자열 리터럴을 시작하고 종료합니다. 문자열 리터럴 명령은 실행되지 않고 대신 문자 값이 스택으로 푸시됩니다.

  • + 상단 두 숫자를 더합니다

  • * 상위 2 개의 숫자를 곱합니다

  • - 상단에 -1을 곱합니다

  • % 안전을 끕니다

  • # 안전을 켭니다

  • @ 안전이 해제 된 경우 실행을 종료합니다 (시작됨).


스택에서 두 값을 바꾸려고하지만 하나의 값만 있거나 빈 스택에서 팝을 시도하면 어떻게됩니까?
pppery

@ppperry 스택은 암시 적 0으로 채워집니다.
Post Rock Garf Hunter 17

1
언어에 대한 정보가 너무 부족합니다. 랩핑합니까? '안전'이란 무엇입니까? 버팀대 설명이 오해의 소지가 있습니까? 범위는 어떻게 사용됩니까?
Dead Possum

@DeadPossum 나는 간결하게 유지하려고 노력했다. 랩핑합니다. 안전은 이미 질문에 설명되어 있습니다. 나는 대괄호에 대해 당신이 무엇을 의미하는지 모르겠습니다. []문 역할을 <>하고 방향을 지시하며 ()스코프에서 저장 및 호출합니다. 범위는 값을 저장하는 데 사용됩니다.
Post Rock Garf Hunter

@WheatWizard 안전은 @다른 유스 케이스의 조건 일까요? 대괄호에 대해서는이 부분을 이해하지 못합니다 : becomes ] if the ip is moving horizontally. 동쪽으로 움직이는 것도 수평이지 않습니까?
Dead Possum

답변:


12

81101 바이트

이것은 더 골프를 칠 수 있습니다 ...

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

온라인으로 사용해보십시오!


1
재미있는 접근법! 나는 그것을 생각하지 않았다
포스트 락 가프 헌터

1
이중 인쇄를 수정하는 101 바이트 안전 기능이 꺼지기 전에 스택 팝을 추가하기 만하면 시작시 숫자를 눌렀을 때 다시 터질 수 있습니다. 이것이 여전히 기술적으로 균일 한 무작위인지는 모르겠습니다 ...
Arnold Palmer

1
나는 말 그대로 같은 생각을 동시에
냈다

1
출력이 일정하지 않습니다. 0인쇄되는 기회 101분의 7의 (임의의 보유 <또는 ^그 아래 블록 플러스 >%기호) 1- 8101분의 10 확률 및 91백1분의 11 기회를 갖는다. 그러면 영원히 지속될 가능성이있는 것 같습니다.
아놀드 팔머

1
줄 바꿈해야합니다. 그렇지 않으면 맨 위 줄에서 시작할 때 종료됩니다.
pppery

9

잃어버린 54 바이트

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

온라인으로 사용해보십시오!

pppery의 답변 에서 복사하여 임의의 작업을 수행하십시오. 나는 잃어버린 언어에 대해 아무것도 모른다. 그리고 심지어 위 코드에서 어떤 일이 일어나고 있는지조차 모릅니다. 이 작품인가요? (모름)


귀하의 코드는 ppperry보다 절반의 출력을 생성합니다. -Q작동 방식 때문이라고 생각 합니까? 어쨌든 출력은 정상적으로 분배되는 것 같습니다. 질문에 링크 된 언어의 전체 사양을 갖는 것이 좋을 것입니다.
Aaron Aaron

@Aaron 나는 어떻게 -Q작동 하는지 설명해야했다 . 언어는 무작위이므로 모든 가능성을 실행하여 확인을 수행합니다. -Q이를 수행하고 모든 결과를 인쇄합니다. 프로그램이 짧을수록 가능성이 적고 출력이 줄어 듭니다 -Q.
Post Rock Garf Hunter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.