소스 코드 GO! 코드 길이

증강 현실을 사용하여 소스 코드에 숨겨진 작은 생물을 사냥합시다. 수정되고 PCG-mon을 표시하는 5 개의 연속 문자를 제외하고 자체 코드 소스를 출력하는 quine 프로그램을 작성하십시오 .(^_^)

5 개의 연속 문자를 소스 코드의 어느 위치 에나 위치시킬 수 있습니다 (위치에서 0까지 n-5, n소스 코드 길이 임). 소스 코드의 길이는 5 자 이상이어야합니다. (^_^)길이가 2보다 큰 문자열 또는 그 하위 문자열은 초기 소스 코드에 나타나지 않아야하며 출력에만 나타나야합니다.

유효한 제출 예 :

  • 소스 코드 my source code, 출력my (^_^)e code

유효하지 않습니다 :

  • 소스 코드 (^_^) copy;, 출력(^_^) (^_^)

우승 기준

바이트 단위의 가장 짧은 코드가 이깁니다.



답변

자바 스크립트 ES6, 44 바이트

$=_=>`$=(\^\_\^\)${($+'').slice(5)};$()`;$()

산출:

$=(^_^)=(\^\_\^\)${($+'').slice(5)};$()`;$()

여전히 골프 작업을하고 있지만 지금은 효과가 있습니다.


답변

Vim, 33 , 27 키 스트로크

qqqqqS(<C-v>94_<C-v>94)q@q<esc>hh"qPq@q

<C-v>ctrl + v 를 의미하며, 바이트 0x16이며 <esc>이스케이프 문자이며 바이트 0x1B입니다.

이것은 단지 내 골프 의 약간 수정 된 버전을 사용합니다 . 대답.

출력 :

(^_^)S(^V94_^V94)q@q^[hh"qPq@q

때문에 유효 ^V정력이 나타내는 방법 <C-v>^[방식 정력이 나타내는입니다 <esc>.

기본 아이디어 (^_^)는 코드 포인트별로 텍스트를 입력하여 해당 문자를 소스 코드에 넣지 않도록하는 것입니다. 삽입 모드에서 <C-v>number“숫자”의 ASCII 문자를 삽입합니다. 그러나 도전 과제는 다음과 같이 말합니다.

(^_^)길이가 2보다 큰 문자열 또는 그 하위 문자열은 초기 소스 코드에 나타나지 않아야하며 출력에만 나타나야합니다.

단지의 코드 포인트 입력하여이 답변 남용은 “하위 문자열”규칙을 ^문자 및 입력 (, _)직접.

다음은이 솔루션이 실제로 작동하는 것을 보여주고 비교할 수 있도록 소스 코드와 출력을 나란히 배치하는 gif입니다.

여기에 이미지 설명을 입력하십시오


답변

CJam , 13 11 바이트

"(_)"
_p'^*

온라인 통역사 (@MartinEnder 덕분에 2 바이트) .

"(_)"             Push string
      _p          Duplicate and print repr with newline
        '^*       Join string with '^'


답변

파이썬 115 111 107 바이트

def f():s='def f():s=%r;print s%%s.replace(s[:5],"^".join("(_)"))';print s%s.replace(s[:5],"^".join("(_)"))

전화 f()와 출력은 다음과 같습니다

def f():s='(^_^)():s=%r;print s%%s.replace(s[:5],"^".join("(_)"))';print s%s.replace(s[:5],"^".join("(_)"))

비슷한 질문에 대한이 답변 에서 부분적으로 영감을 얻었습니다 .


답변

CJAM, 16 15 바이트

여기서 사용해보십시오 .

{"^(_)"(*}_~sss


답변

Go (golang), 131 바이트

이 도전은 Go!에 답이 있어야합니다.

package main;import"fmt";func main(){a:="package main;import\"fmt\";func(%c_%[1]c)(){a:=%q;fmt.Printf(a,94,a)}";fmt.Printf(a,94,a)}

온라인으로 사용해보십시오!


답변

자바 스크립트 (ES6), 91 바이트

이미 JavaScript 답변이 있지만 소스를 읽지 않는 JS 답변은 없습니다.

a="a=%s;co%s.log(a,uneval(a),`(${'^'}_${'^'})`)";console.log(a,uneval(a),`(${'^'}_${'^'})`)

이것은 당신 에게 골프 에 대한 나의 비 원본 읽기 답변을 기반으로합니다 . . 출력

a="a=%s;co%s.log(a,uneval(a),`(${'^'}_${'^'})`)";co(^_^).log(a,uneval(a),`(${'^'}_${'^'})`)

%s문자열 에서 초 를 움직여 쉽게 수정할 수 있습니다 . 예를 들어

a="a=%s;console.log(a,uneval(a),`($%s_${'^'})`)";console.log(a,uneval(a),`(${'^'}_${'^'})`)

출력

a="a=%s;console.log(a,uneval(a),`($%s_${'^'})`)";console.log(a,uneval(a),`($(^_^)_${'^'})`)