이진 카운터를 quine으로 작성


10

s_zero와 s_one이라고하는 두 개의 코드 조각을 작성하십시오.

프로그램 (l, n)은 왼쪽에 s_zero로 채워진 이진수 n의 숫자에 해당하는 s_zero 및 s_one의 l 사본으로 구성됩니다.

예를 들어, s_zero = foo및 s_one = bar이면
Program (4, 0) = foofoofoofoo
Program (4, 1) = foofoofoobar
Program (4, 2) = foofoobarfoo

프로그램 (l, n)은 프로그램 소스 (l, (n + 1) mod (2 ^ l))를 표준 출력으로 인쇄해야합니다. 위의 예에서 실행될 때 foobarfoofoo인쇄해야합니다 foobarfoobar.

당신의 점수는 조각 s_zero와 s_one의 길이의 합입니다


codegolf.stackexchange.com/questions/35974/…에 거의 중복 -두 개의 다른 코드 블록을 가진 quining 프로그램에 의해 수행되는 계산.
feersum

프로그램이 자체 소스 코드를 읽을 수 있습니까?
Doorknob

2
@feersum 동의하지 않습니다. 이것은 훨씬 쉽습니다. 특히 줄 바꿈을 결정할 필요가 없습니다. 또한, 나는 그 과제 차이를 만든다고 생각합니다 . 그렇지 않으면 모든 일반화 된 퀴니 챌린지는 기본 퀴니 챌린지의 속임수가 될 것입니다.
Martin Ender

더 간단한 작업의 장점은 경쟁이 지금까지 본 놀랍도록 짧은 답변을 만들도록 장려한다는 것입니다.이 도전이 다른 것으로 정당화되기를 바랍니다.
QuadmasterXLII

1
아마도 s_zero와 s_one은 달라야한다는 점에 주목할 가치가 있습니다. 그렇지 않으면 2 * n 점수를 가진 많은 솔루션이 있습니다.
randomra

답변:


6

CJam, 29 + 29 = 58 바이트

0 코드 :

0{"_~"]]z(3\+2b(2b2>a\+z~[}_~

1 코드 :

1{"_~"]]z(3\+2b(2b2>a\+z~[}_~

설명

0                       " Push the current bit. ";
{"_~"                   " The basic quine structure. ";
    ]                   " Make an array of the current bit, the function and _~.
                          That is the code fragment itself. ";
    ]                   " Make an array of all code fragments in the stack. ";
    z(                  " Extract the array of the bits. ";
    3\+2b(2b2>          " Convert from base 2, decrease by one and convert back,
                          keeping the length. ";
    a\+z                " Put the bits back to the original position. ";
    ~                   " Dump the array of code fragments back into the stack. ";
    [                   " Mark the beginning position of the array of the next code fragment. ";
}_~

2
매번 ...
Optimizer

3

CJam, 47 + 47 = 94 바이트

0 코드 :

{`"_~"+]:+T2*0+:T)\AsSerS/_,(@2Y$#+2bU@->]zs}_~

1 코드 :

{`"_~"+]:+T2*1+:T)\AsSerS/_,(@2Y$#+2bU@->]zs}_~

실례합니다.

나는 여전히 몇 바이트를 면도 할 수 있다고 확신합니다. 더 이상 골프를 치는 데 방해가되지 않는다고 결정하면 설명을 추가하겠습니다.

여기에서 테스트하십시오.



1

GolfScript, 37 + 37 = 74 바이트

0{`".~"+:q;]-2%1\{1$^.@&q@}%\;-1%~}.~
1{`".~"+:q;]-2%1\{1$^.@&q@}%\;-1%~}.~

user23013의 CJam 솔루션 만큼 짧지는 않지만 사용 된 언어의 다양성을 (마진 적으로) 늘리려면 어쨌든 게시 할 것이라고 생각했습니다.

내 솔루션은 직접 기존 솔루션의 기반으로하지 ((참하고, 나는 아직도 잘 CJam를 읽을하지 않는 한 나는, 자세히를 조사하지 않은), 그러나 그들은 모든 기능은 동일한 기본 quine 구조의 변형 {".~"}.~에 CJam {"_~"}_~에서 GolfScript). 이러한 언어로 임의의 페이로드로 퀴를 작성하는 가장 효율적인 방법 중 하나 인 것처럼 보이므로 실제로 그렇게 놀라운 것은 아닙니다.

이 코드에는 실제로 마음에 들지 않는 부분이 여러 개 있는데, 골프를 더 할 수있을 것으로 생각되지만 너무 많은 시간을 보냈습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.