다트 체크 아웃에 대한 큰 질문이 있지만이 질문을 이미 찾지 못한 것에 놀랐습니다. 다트가 Codegolf를 만났습니다.
당신의 도전은 ‘n’다트에 대한 최대 점수 아래의 ‘n’다트로 불가능한 점수를 계산하는 것입니다. 예를 들어 n = 3 인 경우 가능한 최대 점수는 180이므로 [163,166,169,172,173,175,176,178,179]를 반환합니다.
베어 본 규칙 요약의 경우 :
단일 다트에 가능한 점수는 다음과 같습니다.
- 0 (미스)
- 1-20, 25, 50
- 1-20의 이중 또는 삼중
규칙 :
- 표준 코드 골프 규칙 적용
- 언어가 허용하는 방식에 상관없이 단일 매개 변수 ‘n’을 가져 와서 n 개의 다트로 점수를 매길 수없는 최대 점수 미만의 모든 고유 점수 목록 / 배열을 반환해야합니다. 이 값을 콘솔에 인쇄 할 수도 있습니다.
- 결과의 순서는 중요하지 않습니다
- 바이트 단위의 최단 코드 승리
답변
파이썬 3 , 80 79 59 57 바이트
Arnauld 덕분에 -1 바이트
-ArBo 덕분에 -20 바이트
-음수 7 덕분에 -2 바이트
lambda x:[-i-~x*60for i in(x<2)*b'a[YUSOLI'+b'MJGDCA@>=']
답변
답변
자바 스크립트 (ES6), 55 54 바이트
@Shaggy 덕분에 1 바이트 절약
Rod가 사용하는 패턴을 기반으로합니다 .
n=>[...1121213+[n-1?33:2121242426]].map(x=>n-=x,n*=60)
답변
Perl 6 , 39 바이트 (37 자)
이것은 분명히 거대한 슬레지 해머를 사용하고 있지만 작동합니다. (그것은 단지 그것을 무차별 적으로 강요하지 않으며, 그것은 잔인하게 무차별 적으로 강제한다)
{^60*$_∖[X+] (|(^21 X*^4),25,50)xx$_}
이에 대한 설명은 다음과 같습니다.
{ } anonymous block for the
∖ set difference of
^60*$_ - 0 .. max score (60 * throwcount)
[X+] xx$_ - the cross addition (throwcount times) of
( ) all possible score values, being
|( X* ) flattened cross multiplication of
^21 ^4 0..20 and 0..3 (for double and triple)
,25,50 and 25 and 50
X* ^4
크로스 승수는 중복 값을 많이 생성 (이 20 + 관여 0과 1이의 될 것입니다 전에 십자가 추가하고), 그러나 우리는 차이 집합 사용하기 때문에 그 어떤 문제가 발생하지 않습니다 ∖
고유 값으로 작동합니다.
현재 $n == 1
(빈 세트를 반환해야 함) 실패 하지만 문제가 제기 되어 향후 버전에서 작동 할 것입니다. JoKing의 버전 은 조금 더 길지만 $n == 1
현재 Rakudo에서 작동합니다 .
답변
답변
MATL , 25 23 바이트
실수를 수정하고 2 바이트 를 골프 로 한 @Giuseppe 에게 감사 합니다!
25tE3:!21:q*vZ^!stP:wX-
설명
무차별 대입 접근.
25 % Push 25
tE % Duplicate, double: gives 50
3:! % Push column vector [1;2;3]
21:q % Push row vector [0 1 ... 20]
* % Multiply with broadcast. Gives a matrix with all products
v % Concatenate everything into a column vector
Z^ % Implicit input: n. Cartesian power with exponent n
!s % Sum of each row
tP % Duplicate, flip: The first entry is now 60*n
: % Push row vector [1 2 ... 60*n]
w % Swap
X- % Set difference. Implicit display
답변
J , 48 45 바이트
2&>(35 44,q:626b66jh)&,60&*-1 4 8 14,q:@13090
FrownyFrog 덕분에 -3 바이트
무차별 대입 솔루션을 시도했지만이로드의 아이디어를 이길 수 없었습니다.