배경
이 퍼즐은 four fours 퍼즐 의 변형 입니다 (자체는 과거 질문 의 주제 ). 그 퍼즐과 마찬가지로 목표는 네 자리 숫자와 특정 수학 연산자를 사용하여 다른 정수에 대한 수학적 표현을 찾는 것입니다. 그러나이 경우 허용되는 숫자는 단지 2, 0, 1 및 5 입니다. 각각은 솔루션에서 정확하게 한 번 정확하게 나타나야합니다. 놀랍게도 많은 정수가 이런 식으로 표현 될 수 있습니다. 솔버는 이상하게도 즐겁기 때문에 먼저 손으로 해결하는 것이 좋습니다.
규칙
상수는 한 자리 또는 여러 자리로 구성 될 수 있습니다.
- 정수 : 예 : 2, 0, 15 등
- 소수점 : 예 : .2, .01, 1.5 등
- 반복되는 소수점 : 예 : .2 ~ (= 0.222 ...), .15 ~ (= 0.1555 ...), 20.15 ~~ (= 20.1515 ...)
다음과 같은 단항 연산이 허용됩니다.
- 단항 부정 : -x
- 제곱근 : sqrt (x)
- 정수 계승 : x!
다음과 같은 이진 연산이 허용됩니다.
- 표준 산술 연산자 : x + y, xy, x * y 및 x / y
- 임의 지수 : x ^ y
- 임의의 근 : rt [x] (y) (= y의 x'th 근)
직무
프로그램은 가능한 한 0에서 100 사이의 정수에 대한 표현식을 인쇄 한 다음 생성 된 표현식 수를 출력해야합니다.
- n = [expr] 형식으로 솔루션을 인쇄해야합니다.
- 표현식은 순서대로 각 숫자 2, 0, 1, 5를 각각 한 번씩 사용해야합니다.
- 식은 위에서 설명한 표기법을 사용하여 인쇄해야합니다. 공백과 같이 불필요한 괄호는 허용되지만 필수는 아닙니다. 연산자 우선 순위는 단항 부정, 계승, 지수, 곱셈 / 나눗셈 및 덧셈 / 빼기입니다.
- 프로그램은 모든 숫자에 대한 솔루션을 반환 할 필요는 없습니다. 따라서 단순히 0을 출력하는 프로그램이 유효합니다. 그러나 아래의 점수 섹션을 참조하십시오.
- 이 프로그램은 최신 컴퓨터에서 15 분 이내에 실행되어야합니다.
프로그램이나 함수를 작성할 수 있습니다. 표현식은 STDOUT (또는 가장 가까운 대안)으로 인쇄해야합니다. 표현식 수는 STDOUT에 인쇄되거나 정수로 리턴 될 수 있습니다. 표준 코드 골프 제한이 적용됩니다.
출력 예
0=2*0*1*5
10=20*1*.5
42=((2+0!)!+1)!/5!
100=20*1*5
4
채점
업데이트 : @orlp는 점수 시스템의 결함을 지적했습니다. 이 문제를 해결해야하는지 여부에 대한 설명은 http://meta.codegolf.stackexchange.com/questions/5106/way-of-salvaging-two-zero-one-five-puzzle-challenge 를 참조 하십시오 .
솔루션 득점하는 첫번째 그들이 생산 표현의 숫자로와 다음 바이트 자신의 코드 길이에 의해. 따라서 80 개의 결과를 생성하는 1000 바이트 프로그램은 79 개만 생성하는 100 바이트 프로그램을 능가합니다 (단, 누락 된 결과를 포함하도록 쉽게 확장 할 수 있음).
동기 부여 목표를 원하는 사람들을 위해 표현할 수있는 표현의 수에는 하한이 있습니다. 출품작을 제출할 계획이 없으므로 적은 금액으로 이길 수도 있습니다!
더 높을 수도 있지만 적어도 85 (101 개 중).
스코어 보드
추가 인센티브로 여기에 점수 진행에 대한 요약이 있습니다. 당신이 가장 높은 점수를 이길 때마다, 자유롭게 테이블 상단에 자신을 추가하거나 다른 사람에게 요청하십시오.
- 0 개 표현식, 1 바이트 (Pyth) : 0 만 출력하는 구현