소개
이것은 내가 가장 좋아하는 수학 퍼즐 중 하나입니다.
숫자 (예 : 3)와 해당 숫자 (5)를 사용할 횟수가 주어지면 +, +, +, +, +, +, +, +, +, +, −, ×, ÷, ^ 및 √ (루트) (대괄호는 작업을 그룹화 할 수 있습니다).
예를 들면 다음과 같습니다.
(3^3 + 3)/(3 + 3) = (33 - 3)/(3 + 3) = 3 + 3/3 + 3/3 = 5
위의 모든 5 개의 3과 수학 연산 및 결과는 5를 사용합니다. √ 앞에 3을 사용하여 입방체 근을 나타낼 수도 있습니다. √ 앞에 4를 사용하여 네 번째 근을 나타냅니다.
또한 2 개의 3을 사용하여 33을 형성하거나 3을 사용하여 333 등을 형성 할 수 있습니다.
도전
- 함수 인수, STDIN 또는 명령 행 인수로 두 개의 숫자 (1-5 범위)가 제공 됩니다.
- 첫 번째 숫자는 사용할 자릿수를 나타내며 두 번째 숫자는 숫자가 식에 사용될 횟수를 나타냅니다.
- 프로그램은 크기 10의 배열 (또는 공백으로 구분 된 10 개의 숫자)을 출력해야합니다. 여기서 각 요소는
(index + 1)
숫자 로 이어지는 수학적 표현 (허용 연산자 만 사용)이 가능한지 아닌지 / 진실한 값을 사용 하는지를 나타냅니다.
예를 들어 입력이
1 3
그런 다음 출력은
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1]
1, 2, 3, 10 만 세 개의 1을 사용하여 표현할 수 있기 때문입니다.
점수
- 이것은 코드 골프 이므로 바이트 단위의 최소 코드 길이가 이깁니다.
보너스
모두 인쇄 [−50]
출력 배열 요소가 (index + 1)
실제 또는 허위 값 대신 값 을 얻기 위해 가능한 전체 조합 수와 같으면 점수에서 50을 뺍니다 .
예를 들어 5 개의 5를 조합 할 수있는 조합이 5 개만있는 경우 출력 배열의 4 번째 항목은 3이어야합니다.
익스트림 수학 [−100]
출력 배열 요소에 실제 결과 중 하나 이상이 포함되어 있으면 점수에서 100을 뺍니다 (index + 1)
.
예를 들어, 다섯의 3을 사용하는 경우, 출력 배열의 4 번째 항목 일 수있다 (3^3 + 3)/(3 + 3)
, (33 - 3)/(3 + 3)
또는3 + 3/3 + 3/3
과잉 살상 [-200]
출력 배열 요소에 가능한 모든 조합이 포함되어 있으면 점수에서 200을 뺍니다 (로 구분 |
). 이 보너스는 익스트림 수학 보너스에 추가되어 총 -300을 얻습니다.
예를 들어 5 개의 3을 사용하는 경우 출력 배열의 4 번째 요소는(3^3 + 3)/(3 + 3)|(33 - 3)/(3 + 3)|3 + 3/3 + 3/3
참고 : 동일한 결과를 얻기위한 두 표현은 논리적으로 달라야합니다.
예를 들어 5를 3으로 5를 얻는 3 + 3/3 + 3/3
것은 동일 3/3 + 3 + 3/3
하거나 3/3 + 3/3 + 3
각각에 대해 동일한 접근 방식이 적용되기 때문입니다. (3^3 + 3)/(3 + 3)
및 (33 - 3)/(3 + 3)
분자의 30 가지 방법을 통해 달성되는 한, 다르다.
업데이트 : 모든 답변을 거친 후 단항 -
및 √의 경우로 인해 모든 답변에 결함이 있음을 발견했습니다 . 따라서, 완전한 답이 관련되는 한, 그러한 최첨단 사례를 놓치는 것은 괜찮은 것으로 간주됩니다.
이것은 어려운 질문이지만 다소 흥미로운 질문입니다.
행복한 골프!
1
초 만으로 10 점을 받으려면 어떻게해야 합니까?