6 자리 : 5 자리 [0-9] 및 대상 번호가 제공됩니다. 목표는 숫자 사이에 연산자를 산재시켜 목표에 최대한 근접하게하는 것입니다. 각 숫자를 정확히 한 번만 사용해야하며 원하는만큼 다음 연산자 를 사용할 수 있습니다 + - * / () ^ sqrt sin cos tan
.. 예를 들어, 주어진다면 8 2 4 7 2 65
출력 할 수 있습니다 82-(2*7)-4
. 이것은 64로 평가되어 목표에서 1 떨어져 있기 때문에 1 점을 얻었습니다. 참고 : 숫자 사이에 소수점을 넣을 수 없습니다.
이 StackOverflow 답변 의 코드를 사용 하여 수학 표현식을 평가하고 있습니다. 이 질문의 맨 아래에는 테스트에 사용할 수있는 프로그램이 있습니다.
체인 기능 (업데이트!)
@mdahmoune은이 도전에 대한 새로운 수준의 복잡성을 공개했습니다. 이에 따라 단항 함수 연결이라는 새로운 기능을 추가하고 있습니다. 이것은 sin, cos, tan 및 sqrt에서 작동합니다. 이제 글을 쓰는 대신 글을 쓸 sin(sin(sin(sin(10))))
수 있습니다 sin_4(10)
. 평가자에서 사용해보십시오!
입력
공백으로 구분 된 5 자리 숫자로 구성된 200 개의 줄로 구분 된 테스트 사례 및 대상 번호 문제의 맨 아래에있는 프로그램을 사용하여 샘플 테스트 사례를 만들 수 있지만 공식 채점을위한 자체 테스트 사례가 있습니다. 테스트 케이스는 대상 번호에 대해 다음 범위로 40 개의 테스트 중 5 개 섹션으로 나뉩니다.
- 섹션 1 : [0,1] (소수점 5 개)
- 섹션 2 : [0,10] (소수점 4 자리)
- 섹션 3 : [0,1000] (소수점 3 개)
- 섹션 4 : [0,10 6 ] (소수점 1)
- 섹션 5 : [0,10 9 ] (0 소수점까지)
산출
200 줄로 구분 된 수학적 표현. 예를 들어 테스트 사례가 5 6 7 8 9 25.807
인 경우 가능한 출력은 다음과 같습니다.78-59+6
채점
각 라운드의 목표는 다른 경쟁 프로그램보다 목표 수에 더 근접하는 것입니다. 내가 사용하는거야 마리오 카트 8 득점 인 : . 여러 답변이 동일한 정확한 점수를 얻는 경우 점수는 균등하게 분할되고 가장 가까운 정수로 반올림됩니다. 예를 들어, 5-8 위의 프로그램이 묶여 있으면 각각 해당 라운드에서 (8 + 7 + 6 + 5) / 4 = 6.5 => 7 포인트가됩니다. 200 라운드가 끝나면 가장 많은 점수를 얻은 프로그램이 승리합니다. 두 프로그램의 끝에 같은 수의 포인트가 있으면 타이 브레이커가 더 빨리 실행 된 프로그램입니다.1st: 15 2nd: 12 3rd: 10 4th: 9 5th: 8 6th: 7 7th: 6 8th: 5 9th: 4 10th: 3 11th: 2 12th: 1 13th+: 0
규칙
- C, C ++, Java, PhP, Perl, Python (2 또는 3), Ruby 및 Swift와 같이 Mac에 일반적으로 사전 설치된 언어 중 하나만 사용할 수 있습니다. 비교적 작은 다운로드 인 컴파일러 / 인터프리터와 함께 사용하려는 언어가 있다면 추가 할 수 있습니다. 온라인 통역사와 함께 언어를 사용할 수도 있지만 그렇게 빨리 실행되지는 않습니다.
- 삼각 함수를 각도 또는 라디안 으로 계산하려면 답에 지정하십시오 .
- 프로그램은 Mac 에서 60 초 이내에 솔루션을 200 개의 모든 테스트 사례 (파일 또는 STDOUT)로 출력해야합니다 .
- 무작위성은 시드되어야합니다.
- 모든 테스트 사례의 총 출력은 1MB를 초과 할 수 없습니다 .
- 솔루션을 개선하고 점수 를 매기 려면 답변 상단에 굵은 글씨로 Re-Score 를 추가 하십시오.
프로그램들
(라디안을 원하면 "deg"인수를 "rad"로 변경하십시오)
- 평가자 테스트
- 테스트 사례에 대한 프로그램 출력 점수
- 테스트 케이스를 생성하십시오.
document.getElementById("but").onclick = gen;
var checks = document.getElementById("checks");
for(var i = 1;i<=6;i++) {
var val = i<6 ? i : "All";
var l = document.createElement("label");
l.for = "check" + val;
l.innerText = " "+val+" ";
checks.appendChild(l);
var check = document.createElement("input");
check.type = "checkBox";
check.id = "check"+val;
if(val == "All") {
check.onchange = function() {
if(this.checked == true) {
for(var i = 0;i<5;i++) {
this.parentNode.elements[i].checked = true;
}
}
};
}
else {
check.onchange = function() {
document.getElementById("checkAll").checked = false;
}
}
checks.appendChild(check);
}
function gen() {
var tests = [];
var boxes = checks.elements;
if(boxes[0].checked)genTests(tests,1,5,40);
if(boxes[1].checked)genTests(tests,10,4,40);
if(boxes[2].checked)genTests(tests,1000,3,40);
if(boxes[3].checked)genTests(tests,1e6,1,40);
if(boxes[4].checked)genTests(tests,1e9,0,40);
document.getElementById("box").value = tests.join("\n");
}
function genTests(testArray,tMax,tDec,n) {
for(var i = 0;i<n;i++) {
testArray.push(genNums(tMax,tDec).join(" "));
}
}
function genNums(tMax,tDec) {
var nums = genDigits();
nums.push(genTarget(tMax,tDec));
return nums;
}
function genTarget(tMax,tDec) {
return genRand(tMax,tDec);
}
function genRand(limit,decimals) {
var r = Math.random()*limit;
return r.toFixed(decimals);
}
function genDigits() {
var digits = [];
for(var i = 0;i<5;i++) {
digits.push(Math.floor(Math.random()*10));
}
return digits;
}
textarea {
font-size: 14pt;
font-family: "Courier New", "Lucida Console", monospace;
}
div {
text-align: center;
}
<div>
<label for="checks">Sections: </label><form id="checks"></form>
<input type="button" id="but" value="Generate Test Cases" /><br/><textarea id="box" cols=20 rows=15></textarea>
</div>
리더 보드
섹션 점수 (승수) :
- [0-1] 사용자 202729 : 40, mdhmoune : 0
- [0-10] user202729 : 40, mdhmoune : 0
- [0-1000] 사용자 202729 : 39, mdhmoune : 1
- [0-10 6 ] user202729 : 33, mdhmoune : 7
- [0-10 9 ] user202729 : 0, mdahmoune : 40
cos(0)/sin(0^0)/sin(0^0)
.