이 numberphile 비디오에 언급 된 "이진수이지만 둘을 갖는"표기법에 따라 단일 숫자를 입력으로 사용하고 두 숫자가 허용되는 "이진"시스템에서 해당 숫자의 모든 변형을 출력하는 함수를 작성하십시오 .
규칙
- 코드는 완전한 프로그램이 아니라 함수 / 방법이어야합니다.
- 입력은 함수에 유일한 매개 변수로 전달 된 정수입니다.
- 출력은 입력 번호의 모든 유효한 변형이 "이진수로 변환되지만 2"표기법으로 변환됩니다.
- 출력은 함수의 반환 값이지만 명백한 한 (예 : 3 개의 정수, 3 개의 문자열, 쉼표 / 공백으로 구분 된 문자열, 정수의 배열 등), 순서는 중요하지 않은 한 편리한 형식 일 수 있습니다.
- 결과에 도달하기 위해 언어에 내장 함수가 포함되어있는 경우에는 허용되지 않습니다.
- 가장 짧은 코드는 바이트입니다
출력 설명
당신이 수를 통과하는 경우 예를함으로써 9
, 당신은 바이너리로 변환 할 수 있습니다 1001
,하지만 당신이 허용하는 경우 2
각 위치에들, 당신은 또한으로 쓸 수 있습니다 201
(예 2*4 + 0*2 + 1*1
) 또는 121
(예 1*4 + 2*2 + 1*1
)이 표에서와 같이 :
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
따라서 전달 9
되면 함수는 세 개의 숫자 1001
, 201
및 을 반환해야합니다 121
.
형식과 순서는 오랫동안이 명백으로 (즉, 관련이없는 [121,201,1001]
, "0201 0121 1001"
, ("1001","121","201")
의 입력을 제공 할 때 유효한 결과가있다 9
).
예
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221