인코딩 작동 방식
비트 목록이 주어지면 :
- 프라임 개최 (로 시작
2
) - 목록을 가지고
- 입력의 각 비트마다
- 이전 비트와 동일하면 보유하고있는 소수를 목록에 추가하십시오.
- 다른 경우 다음 소수를 잡고 목록에 추가하십시오.
- 목록에있는 모든 숫자의 곱을 반환
- 첫 번째 비트의 경우 이전 비트가
0
참고 :이 단계는 설명을위한 것으로 사용자가 따를 필요는 없습니다.
예
Input: 001
hold 2
0: add 2 to the list
0: add 2 to the list
1: hold 3, add 3 to the list
list: 2,2,3
Output: 12
Input: 1101
hold 2
1: hold 3, add 3 to the list
1: add 3 to the list
0: hold 5, add 5 to the list
1: hold 7, add 7 to the list
list: 3,3,5,7
Output: 315
몇 가지 예 :
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
도전
이 인코딩 방법에 대한 인코더 와 디코더를 작성하십시오 .
(디코더는 인코더의 과정을 반대로합니다).
입출력
인코더는 합리적인 형식으로 입력 할 수 있습니다
인코더는 정수 또는 문자열을 출력해야합니다
디코더는 인코더 출력과 동일한 형식으로 입력해야합니다
디코더는 인코더가 입력으로 사용하는 것과 동일한 형식을 출력해야합니다
다시 말해 decoder( encoder( input ) ) === input
노트
- 디코더는 입력이 디코딩 가능한 것으로 가정 할 수있다
- 당신의 대답은 단지 언어는 기본적으로 (사용하지 않고 지원할 수있는 정수 처리해야
long
,bigInt
당신은 단지 1의 int를 지원 언어 경우, 합리적인 등), 아마 대답을 게시 재고
채점
점수는 인코더와 디코더의 길이를 바이트 단위로 합한 것입니다.
모듈을 가져와야하는 경우 인코더와 디코더가 같은 파일에 공존하고 재사용 될 수있는 경우 가져 오기는 한 번만 계산할 수 있습니다 (함수처럼).
기본 허점 은 금지되어 있습니다.
이것은 코드 골프 이므로 모든 언어에서 가장 짧은 점수가 이깁니다.