랜달 먼로의 책 "xkcd, volume 0"은 페이지 번호에 다소 홀수 시스템을 사용합니다. 처음 몇 페이지 번호는
1, 2, 10, 11, 12, 20, 100, 101, 102, 110, 111, 112, 120, 200, 1000, 1001, ...
이 원처럼 조금 보이지만, 그가에서 건너 뛰는 것을 알 20
직선로 100
에서 120
까지 200
와에서 200
까지 1000
. 이 순서를 정의하는 한 가지 방법은 최대 1 개를 포함하고 그 이후로는 포함 2
하지 않는 모든 3 진수를 열거하는 것 1
입니다 2
. 이 항목은 OEIS 항목 A169683 에서 찾을 수 있습니다 . 이 숫자 체계를 이진법이라고 합니다.
당신의 임무는 N
이 숫자 체계에서 주어진 양의 정수의 표현을 찾는 것 입니다.
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다.
출력은 문자열, 기울이기 이진 표현과 같은 소수 표현 또는 숫자 목록 (정수 또는 문자 / 문자열) 일 수 있습니다. 선행 0을 반환해서는 안됩니다.
이것은 코드 골프이므로 가장 짧은 대답 (바이트)이 이깁니다.
재미있는 사실 : 실제로이 숫자 체계에는 몇 가지 장점이 있습니다. 숫자를 증가 시키면 항상 최대 두 개의 인접한 숫자가 변경됩니다. 전체 숫자를 통해 변경을 수행 할 필요는 없습니다. O (1)에서 증분 할 수있는 올바른 표현.
테스트 사례
1 => 1
2 => 2
3 => 10
6 => 20
7 => 100
50 => 11011
100 => 110020
200 => 1100110
1000 => 111110120
10000 => 1001110001012
100000 => 1100001101010020
1000000 => 1111010000100100100
1048576 => 10000000000000000001
1000000000000000000 => 11011110000010110110101100111010011101100100000000000001102
마지막 테스트 사례 (및 비슷한 규모의 다른 입력을 하드 코딩에 대해 생각하지 마십시오)를 해결할 수있는 가장 짧은 대답에 현상금을 줄 것입니다.
리더 보드
다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
# Language Name, N bytes
N
제출물의 크기는 어디에 있습니까 ? 점수를 높이면 헤드 라인을 쳐서 오래된 점수를 유지할 수 있습니다. 예를 들어 :
# Ruby, <s>104</s> <s>101</s> 96 bytes
<script>site = 'meta.codegolf'; postID = 5314; isAnswer = true; QUESTION_ID = 51517</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>
59->60
과 109->110
0 사이의 차이를 보았을 때 실수 만 깨달았습니다.