메타 배경
이것은 Puzzling에 대한 질문 으로 설정되었으며 즉각적인 반응은 "글쎄, 누군가는 컴퓨터로 그것을 해결할 것입니다". 이를 해결하기위한 프로그램이 얼마나 복잡해야하는지에 대한 논쟁이있었습니다. "이 프로그램은 얼마나 복잡해야 합니까? "는 code-golf 의 정의와 거의 비슷 하므로 PPCG가 문제를 해결할 수 있을까요?
배경
성냥 방정식 의 숫자 및 작업자가 테이블 상에 배치하여 성냥개비 물리적으로 구성되는 경우, 기본적으로 통상의 수학 식이지만. (여기에서 성냥개비의 주요 관련 기능은 상당히 단단하고 길이가 일정하다는 것입니다. 사람들은 면봉과 같은 다른 물체를 대신 사용하기도합니다.)
이 도전을 위해, 우리는 성냥개비가 어떻게 배열되는지에 대한 특정 규칙을 정의 할 필요가 없습니다 (링크 된 도전과 같이); 오히려, 우리는 주어진 숫자로 평가되는 표현식을 나타 내기 위해 몇 개의 성냥개비가 필요한지에 관심이 있습니다.
작업
다음은 사용할 수있는 숫자와 수학 연산자이며 각각은 성냥개비입니다.
0
, 6 성냥개비 비용1
, 성냥개비 2 개2
, 5 성냥개비 비용3
, 5 성냥개비 비용4
, 성냥개비 4 개5
, 5 성냥개비 비용6
, 6 성냥개비 비용7
3 개의 성냥개비8
, 7 성냥개비 비용9
, 6 성냥개비 비용+
, 성냥개비 2 개-
, 성냥개비 1 개×
, 성냥개비 2 개
( ASCII 이외의 문자를 사용할 필요가 없도록하기 위해 원하는 경우 프로그램의 출력에서 ×
와 같이 표현할 수 있습니다 *
. 대부분의 인코딩에서 ×
보다 많은 바이트를 차지 *
하므로 대부분의 프로그램이이 여유를 활용하려고합니다. .)
음수가 아닌 정수를 입력으로 사용하고 ( 합리적인 방법을 통해 ) 해당 정수를 출력으로 평가하는 식 ( 합리적인 방법을 통해)을 작성하는 프로그램을 작성해야합니다 . 또한, 표현은 사소해야합니다 : 그것은 적어도 하나의 연산자를 포함해야합니다 +
, -
또는 ×
. 마지막으로, 출력하는 표현식은 사양을 준수하는 모든 출력 중에서 총 성냥개비 비용 측면에서 가장 저렴하거나 가장 저렴한 묶음이어야합니다.
설명
- 행에 여러 자릿수를 출력하여 여러 자릿수를 형성 할 수 있습니다 (예 :
11-1
유효한 출력10
). 정확히 말하면 결과 숫자는 10 진수로 해석됩니다. 이러한 종류의 연결은 중간 결과에서 작동하는 작업이 아닙니다. 원래 표현식에 나타나는 리터럴 숫자에만 해당됩니다. - 이 도전의 목적을 위해.
+
,-
및×
중위 연산자입니다. 그들은 왼쪽과 오른쪽에 대한 논쟁이 필요합니다.+5
또는 과 같은 접두사 위치에서 사용할 수 없습니다-8
. - 사용할 수있는 괄호 (또는 우선 순위를 제어하는 다른 방법)가 없습니다. 이 표현은 일반적인 기본 우선 순위 규칙에 따라 평가됩니다 (곱셈이 먼저 발생한 다음 더하기와 빼기가 왼쪽에서 오른쪽으로 평가됨).
- 위에 나열된 것 이외의 수학 연산자 나 상수에 액세스 할 수 없습니다. "측면 적 사고"솔루션은 종종 퍼즐 링 (Puzzling)에서 받아 들여지지 만, 컴퓨터가 그들 스스로를 제시하도록 요구하는 것은 이치에 맞지 않으며, 여기 PPCG에서는 해결책이 정확한지 아닌지 객관적인 것이 좋습니다.
- 일반적인 정수 오버플로 규칙이 적용됩니다. 솔루션은 기본적으로 모든 정수가 바인딩되지 않은 가상의 (또는 아마도 실제) 버전의 언어에서 임의로 큰 정수를 사용할 수 있어야하지만 구현으로 인해 프로그램이 실제로 실패하는 경우 큰 정수를 지원하지 않으면 솔루션이 무효화되지 않습니다.
- 동일한 숫자 또는 연산자를 두 번 이상 사용하는 경우 매번 사용할 때마다 해당 성냥개비를 지불해야합니다 (표의 두 위치에서 동일한 물리적 성냥개비를 재사용 할 수 없기 때문입니다).
- 시간 제한이 없습니다. 무차별 대입 솔루션이 허용됩니다. (무차별적인 해결책보다 빠른 솔루션을 가지고 있더라도 더 길더라도 자유롭게 게시하십시오. 다른 방법이 어떻게 비교되는지는 항상 흥미 롭습니다.)
- 코드에 대한 설명을 작성하지 않아도 되지만 좋은 생각 일 수 있습니다. 코드 골프 솔루션은 읽기가 매우 어렵고 (특히 작성된 언어에 익숙하지 않은 사람들에게), 작동 방식을 이해하지 않으면 솔루션을 평가 (투표)하기가 어려울 수 있습니다.
승리 조건
A와 코드 골프 도전, 더 적은 바이트 답변이 더 나은 것으로 간주됩니다. 그러나 평소와 같이 다른 접근 방식이나 특정 언어가 다른 언어보다 더 장황한 경우에도 특정 언어로 답변을 게시 할 수 있습니다. 골프의 목표는 실제로 특정 프로그램을 얼마나 멀리 최적화 할 수 있는지 확인하는 것입니다. 이런 식으로 작업하면 많은 잠재적 인 프로그램을 최적화 할 수 있습니다. 따라서 누군가가 완전히 다른 접근법이나 완전히 다른 언어를 사용하여 솔루션을 제출하고 훨씬 짧은 답변을 얻는다면 실망하지 마십시오. 귀하의 답변이 더 잘 최적화되고 더 많은 기술을 보여 주었을 수도 있으며 PPCG 유권자들은 종종 그 점을 높이 평가합니다.