소개 :
어렸을 때 계산기를 들고 계속 +
버튼 을 누르고 계산할 수있는 높이를 기억합니다. 이제 프로그래밍하고 iOS 용으로 개발하고 있습니다.
카운팅은 인간과 컴퓨터 모두에게 기본적인 기술입니다. 그것 없이는, 나머지 수학은 할 수 없습니다. 시작 1
하고 반복적으로 추가 1
하여 간단하게 수행 됩니다.
도전 과제 :
이것은 단순한 도전이다. 프로그램에서 1
원하는 것은 무엇이든 인쇄 하는 Integer
것입니다. 그러나 십진법 계산은 다소 지루하기 때문에 조금 틀립니다.
카운팅은 기본 10에있을 수 없으며 이진으로 카운팅해야합니다.
따라서 32 비트 정수를 사용하여 5를 세면 다음과 같습니다.
0000 0000 0000 0000 0000 0000 0000 0001 ..... 1
0000 0000 0000 0000 0000 0000 0000 0010 ..... 2
0000 0000 0000 0000 0000 0000 0000 0011 ..... 3
0000 0000 0000 0000 0000 0000 0000 0100 ..... 4
0000 0000 0000 0000 0000 0000 0000 0101 ..... 5
컴퓨터입니다. 그들은 바이너리를 가장 잘 알고 있습니다. 입력은 32 비트 또는 64 비트 정수일 수 있습니다. 그것은 당신에게 달려 있습니다. 그러나 32 비트 정수를 사용하는 경우, 귀하의 출력이 있어야합니다 32 비트 정수가 될 바이너리를 , 그리고 64 비트 정수를 사용하는 경우, 귀하의 출력이 있어야합니다 64 비트 정수가 될 이진 .
샘플 입력 :
32 비트 정수 5
샘플 출력 :
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 0101
채점 :
점수는 코드가 많은 바이트와 같습니다. 이것이 코드 골프이므로 최저 점수가 이깁니다.
보너스 포인트 :
출력에서 10 진수로 표시되는 숫자 (예 : 0000 0000 0000 0000 0000 0000 0000 0001
2 진수는 10 진수와 동일 1
)를 표시하면 점수에을 곱하십시오 0.8
.
내가했던 것처럼 4 자리수의 출력을 그룹화하면 점수에 0.8
(다시) 를 곱하십시오 . 필요하지 않습니다.
반올림하지 말고 반올림하지 마십시오. 당신의 점수는 부동 소수점 숫자입니다.
행운을 빕니다!
답변
APL, 10 자
APL의 다른 하나. ⎕IO←1
(기본값)을 가정 합니다. 보너스 포인트가 없습니다. 입력 장치에서 숫자를 읽습니다. APL이 32 비트 정수 대신 64 비트 정수를 사용하는 경우 필요에 따라 64를 32로 대체하십시오.
정수의 범위를 초과하면 APL이 부동 소수점 숫자로 투명하게 변환됩니다. 따라서 정수 크기 APL이 작동하는 것을 정확하게 말하기는 어렵습니다.
⍉(32⍴2)⊤⍳⎕
설명
2 ⍝ the number 2
32⍴2 ⍝ a vector of 32 twos.
(32⍴2)⊤X ⍝ X represented as base 2 to 32 digits precision
⍳X ⍝ a vector of the integers from 1 to X
⎕ ⍝ a number queried from the terminal
(32⍴2)⊤⍳⎕ ⍝ the output we want, flipped by 90°
⍉(32⍴2)⊤⍳⎕ ⍝ the output we want in correct orientation (⍉ is transpose)
답변
자바 스크립트 ( ES6 ) 56.8 (71 * 0.8)
JavaScript가 64 비트 정밀도를 처리 할 수 없으므로 32 비트 버전 (부동 소수점 배가를 사용하는 최대 53 비트)
그룹화하지 않고
f=n=>{for(i=0;i++<n;)console.log((8*(8<<26)+i).toString(2).slice(1),i)}
그룹화-60.16 점 (94 * .64)
f=n=>{for(i=0;i++<n;)console.log((8*(8<<26)+i).toString(2).slice(1).match(/..../g).join` `,i)}
모든 브라우저에서 테스트 (ES5)
function f(n)
{
for(i=0;i++<n;)console.log((8*(8<<26)+i).toString(2).substr(1).match(/..../g).join(' '),i)
}
// Test
console.log = function(x,y) { O.innerHTML += x+' '+y+'\n' }
Count to: <input id=I><button onclick="O.innerHTML='';f(+I.value)">-></button>
<pre id=O></pre>
답변
Pyth, 18 * 0.8 * 0.8 = 11.52 바이트
VSQjd+c.[64.BN\04N
출력 예 :
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 1
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010 2
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011 3
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0100 4
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0101 5
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0110 6
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0111 7
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 8
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1001 9
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010 10
답변
Pyth, 19 * 0.8 * 0.8 = 12.16 바이트
VSQjd+cjk.[032.BN4N
입력 5의 출력 예 :
0000 0000 0000 0000 0000 0000 0000 0001 1
0000 0000 0000 0000 0000 0000 0000 0010 2
0000 0000 0000 0000 0000 0000 0000 0011 3
0000 0000 0000 0000 0000 0000 0000 0100 4
0000 0000 0000 0000 0000 0000 0000 0101 5
답변
파이썬 2, 48 * 0.8 = 38.4
i=0;exec"i+=1;print format(i,'032b'),i;"*input()
숫자를 이진수로 변환하고 문자열 형식을 사용하여 32 자리의 이진수로 변환 한 다음 10 진수를 보너스로 인쇄합니다. exec
루프를 사용 1
하여 입력 값 에서 증가 합니다.
답변
답변
APL, 23.68 (37 × .8 × .8)
{⎕←(⍕⍵),⍨⊃,/,/' ',⍨⍕¨8 4⍴(32⍴2)⊤⍵}¨⍳⎕