방사선 연화 퀴네


38

간단합니다. 캐릭터를 제거해도 여전히 퀴인 적절한 퀴네를 만드십시오 .

이것과 방사선 경화 퀴네의 차이점은 프로그램이 AB방사선 경화 퀴네 A에서는 출력 AB되지만 여기서는 출력 된다는 AA입니다.

코드 골프, 모든 표준 규칙, 표준 허점이 적용되며 부정 행위가 없습니다.


빈 프로그램이 유효합니까?
Loovjo

4
@Loovjo No.
Martin Ender

3
@feersum 챌린지에는 "Make a quine where ..."라고 표시되어 있으므로 AB출력해야합니다 AB.
Mego

1
@ Mego 나는 그것이 말하는 것을 알고 있지만 사양은 항상 그렇게 정확하지는 않으며 예제에 표시되어 있지 않습니다.
feersum

4
@feersum "Quine 만들기"는 quine을 만드는 것을 의미합니다. "이것과 방사선 경화 된 quine ..."의 차이점은 유일한 차이는 1 바이트를 제거한 프로그램이 원래 프로그램의 소스를 인쇄하는 프로그램이 아니라 quine이된다는 것입니다. 여기에는 모호성이 없습니다.
Mego

답변:


22

> <> (물고기), 145107 바이트

이 답변은> <>의 점프 명령을 사용하여 문제를 해결합니다.

!<0078*+00~..>0[!."r43a*+8a+&{ee+00&1-:&(?.~~ol?!;4b*0.0f<>0['r3d*159*+&}7a*00&1-:&(?.~~ol?!;68a*+0.0+*a58 

이 quine에는 실제로 두 개의 다른 quine generator가 있습니다. 몇 가지 점프 로직으로 시작하며 기본적으로 왼쪽 퀴인을 사용합니다. 점프 로직 또는 왼쪽 퀴네에서 문자가 제거되면 프로그램이 오른쪽 퀴네로 점프합니다.

여기서 시도해 볼 수 있습니다

설명

코드는 몇 부분으로 나눌 수 있습니다.

A: !<0078*+00~..>0[!. 
B:              >0[!."r43a*+8a+&{ee+00&1-:&(?.~~ol?!;4b*0.
C:                                                    .0f<
D:                                                        >0['r3d*159*+&}7a*00&1-:&(?.~~ol?!;68a*+0.
E:                                                                                                 .0+*a58 

다른 부분에 대한 설명 :

  • A : C에서 오른쪽으로 이동합니다. A에서 문자를 삭제하면 D의 왼쪽이나 E의 오른쪽으로 점프하여 두 번째 퀴인을 트리거합니다. B 또는 C에서 문자를 삭제하면 코드가 1 문자 왼쪽으로 이동하여 D 왼쪽으로 이동합니다.
  • C :이 코드는 B의 왼쪽으로 이동합니다.
  • B : Quine # 1
  • D : 퀸 # 2
  • E : D의 왼쪽으로 이동

quine에 대한 설명 (예 : # 1) :

명령 포인터가 quine 중 하나에 도달하면 해당 quine이 완전히 손상되지 않은 것입니다.

>0[!.                                       //Fix the instruction pointer's direction and empty the stack (The '!.' is a leftover from codepart A)
     "r43a*+                                //Start reading all of the code and add the '"' character to the stack
            8a+&                            //Because the quine started reading at the 19th character instead of the first, the stack has to move 18 characters. 
                                            //This part saves the number 18 to the register.
                {ee+00&1-:&(?.              //Move the stack one to the left, decrease the stack by 1. If the stack is not empty yet, jump back to the start of this section.
                              ~~              //Clean the temporary variables from the stack. It should now contain the whole quine.
                                ol?!;4b*0.  //Print the first character from the stack. As long as the stack isn't empty, jump back to the start of this section.

설명 해주세요
CalculatorFeline

위를 반복합니다.
CalculatorFeline

1
이것으로 충분합니까?
Thijs ter Haar

36

길이 , 4.54 × 10 761 바이트

이 널 문자 수는 다음과 같습니다.

453997365974271498471447945720930600149036031871190716908688344432973027776681259141680552038829875159204621651993092104775733418288411812715164994750890484868305218411129600012389568016974351721147925344946382782884546247102886167837964612372737300786173159265347137401863281368021545169383664534228503236761742285358985343373496184959796553930661837467682191561275123057706776367104142995491262443697167483190110516522677811931124842961701222425076750211774387637740969301686178545299089832300154448308384461700726890067468872402133010536518468336342175124002115991866466700174974019423711837589532744970385003356612639263433822126850314801275940879069069974437167102618471264140597777702065896715558989678487253830854848740247786166790545462769498303055791292

이 도전에 대한 기준이 어떻게 "적절한 키네"의 정의와 충돌 하는지를 보면, 나는 단항 변형이 이길 것이라고 생각합니다.

확장 된 Brainfuck 코드 :

>>+++>++++++++>+++>+++>+>+>+>+>+>+>+>+++>+>+>+>+>+>+>+>+>+++>+>+>+>+>+>+>+>+>++++++++>++++>++++++++>++++>+++++++>++>+++>+>+++>++>+++>+++>+>+>+>+>+>+>+>+>++++>++++>+++++++>+>++++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++>+++++>++++++++>++++>+++++++>+++++++>+>+>+++>+>+>+>++++++++>+++>+++++++>+>+++>+>+++>+>+++>+>++++++++>++++>++++++++>++++>++++++++>++++>++++>+>+++>+++>++>+++++++>+++++++>+>+>+>++++++++>+++>+>++++++++>++++>+>+++>++>+++++++>++>+++++++>++++>++++>++++++++>+++>++++++++>+++>+++>+>++++>++++>++>+++++++>+++>+++>++++++++>++++>+>+++>++>+++++++>++++>++++>+++++++>+++>+++>+++>+++>++++++++>++++>++++>+>+++>+>+++>++>+++++++>+++++++
[
    [->+>+<<]
    >>>>[<<[->+<]>>[-<<+>>]>]
    <<[-[->+<]+>]+++
    [[->>+<<]<]<
]
+>+>+>+
[>]+++>++
[
    [<].
    >[-]>[-]>[-]>[-]
    <+[<<++++++++>>->+>-[<]<]
    ++++++++>++++++++>+++++++>>
]
.

Lenguage 프로그램에서 하나의 문자가 제거되면 마지막 문자가로 바뀌어 프로그램이 <정확히 하나의 문자를 더 적게 인쇄합니다.


1
고정 점을 어떻게 찾습니까? (또는 대안으로, Brainfuck 코드는 어떻게 작동합니까?)
Martin Ender

1
@ MartinBüttner 첫 번째 큰 루프는 "> +++ ..."형식으로 데이터를 복사하고 인코딩합니다 (역순). 다른 큰 루프는 데이터를 단항의 정수로 인쇄합니다. 그렇게 복잡하지는 않지만 Brainfuck이기 때문에 길다.
jimmy23013

아 맞습니다. 평범한 Brainfuck quine과 비슷하지만 다른 디코딩 기능이 있습니까?
마틴 엔더

@ MartinBüttner 다소. 그러나 프로그램의 절반은 "디코딩 기능"입니다.
jimmy23013

codegolf.stackexchange.com/q/57257/8478에 대한 임의의 점수에 대한 답변을 작성하는 데 비슷한 기술을 사용할 수 있습니다 (정확히 작동하는 방식은 최신 의견에 대한 답변에 달려 있음).
Martin Ender
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.