또는 : 수직 quine을 구축하십시오
당신의 임무는 가능한 한 짧은 선 길이로 수직 퀴니를 만드는 것입니다.
채점
코드-골프 기준을 타이 브레이커로 사용하여 줄 길이를 줄이면 줄 바꿈이 가장 짧습니다 .
줄 길이는 줄 바꿈 문자를 제외한 프로그램에서 가장 긴 줄로 결정됩니다.
예를 들면 다음과 같습니다.
$_=
Q.
P
행 길이는 3이고 바이트 수는 8입니다.
Q
$
_
P
줄 길이가 1이고 바이트 수가 7입니다 (후행 줄 바꿈이 없다고 가정).
규칙
Quines는 quine의 커뮤니티 정의를 충족해야합니다 .
표준 허점 은 금지되어 있습니다.
답변
Lenguage , 선 길이 0, ≈ 1.01 × 10 805 바이트
소스 코드는
10124204951141713202533972929121310016060433092338061822344361345785088607872212687519180665846846689047959498775873817205954910072327976407177053174071436371843670134990737172675632938993247496933911137703773908536875512359091727633452506044935740750830240213878294804481182083555147915724921824921475110508228264569693355158523956426011218344830576542194309867719995259333487662608933990607888012376767799159279952780093033761421596267435996052643805835600325453580090964941176722519904997142820547696122795384058768166716813179490118821654787005844786013890425692181280317909786461426684986082270532414940905922244777135016193088362341771414388821075092853157152933099269703875111747946164773211049512395358715902962437487134522781505709420586981997748912591875626029183292826655753251235587052422561943
linefeeds는 다음에 나오는 brainfuck 프로그램을 인코딩합니다.
>>++++++++>+++>+++>+>+>+>+>+>+>+>+++>+>+>+>+>+>+>+>+>+++>+>+>+>+>+>+>+>+>++++++++>++++>++++++++>++++>+++++++>++>+++>+>+++>++>+++>+++>+>+>+>+>+>+>+>+>++++>++++>+++++++>+>++++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++>++++++++>++>+++++++>+++++>+>+>+>+>+>+>+>+>+>+>++++++++>++++>+++++++>+++++++>+>+>+++>+>+>+>++++++++>+++>+++++++>+>+++>+>+++>+>+++>+>++++++++>++++>++++++++>++++>++++++++>++++>++++>+>+++>+++>++>+++++++>+++++++>+>+>+>++++++++>+++>+>++++++++>++++>+>+++>++>+++++++>++>+++++++>++++>++++>++++++++>+++>++++++++>+++>+++>+>++++>++++>++>+++++++>+++>+++>++++++++>++++>+>+++>++>+++++++>++++>++++>+++++++>+++>+++>+++>+++>++++++++>++++>++++>+>+++>+>+++>++>+++++++>+++++++
[
[->+>+<<]
>>>>[<<[->+<]>>[-<<+>>]>]
<<[-[->+<]+>]+++
[[->>+<<]<]<
]
+>+>+>+
[>]+++>++
[
[<]++++++++++.[-]
>[-]>[-]>[-]>[-]
<+[<<++++++++>>->+>-[<]<]
++++++++>++++++++>+++++++>>
]
소스 코드는 대부분 @ jimmy23013의 방사선으로 부드럽게 된 Lenguage quine 과 동일 .
합니다. 마지막으로 빼고 null 바이트 대신 줄 바꿈을 인쇄하고 1 줄의 데이터 섹션에 해당하는 변경 사항을 ++++++++++.[-]
대체 .
합니다.
답변
자바 스크립트, 라인 길이 1 960 956 928 바이트
[
t
,
r
,
u
,
e
,
f
,
a
,
l
,
s
]
=
!
0
+
[
!
1
]
;
[
,
n
,
d
,
,
q
,
i
]
=
t
.
a
+
t
V
=
[
]
[
f
+
i
+
n
+
d
]
;
[
,
,
,
c
,
,
,
o
,
,
_
,
,
,
,
,
y
,
z
]
=
V
+
0
F
=
V
[
E
=
c
+
o
+
n
+
s
+
t
+
r
+
u
+
c
+
t
+
o
+
r
]
P
=
(
1
+
e
+
2
+
3
-
4
+
t
)
[
2
]
f
=
F
(
r
+
e
+
t
+
u
+
r
+
n
+
_
+
a
+
t
+
o
+
(
0
+
{
}
)
[
3
]
)
(
)
(
3
*
4
+
[
]
[
E
]
[
n
+
a
+
(
0
[
E
]
+
0
)
[
9
+
2
]
+
e
]
)
[
1
]
F
(
a
,
a
+
l
+
e
+
r
+
t
+
y
+
a
+
P
+
q
+
P
+
a
+
P
+
q
+
z
)
`
[
t
,
r
,
u
,
e
,
f
,
a
,
l
,
s
]
=
!
0
+
[
!
1
]
;
[
,
n
,
d
,
,
q
,
i
]
=
t
.
a
+
t
V
=
[
]
[
f
+
i
+
n
+
d
]
;
[
,
,
,
c
,
,
,
o
,
,
_
,
,
,
,
,
y
,
z
]
=
V
+
0
F
=
V
[
E
=
c
+
o
+
n
+
s
+
t
+
r
+
u
+
c
+
t
+
o
+
r
]
P
=
(
1
+
e
+
2
+
3
-
4
+
t
)
[
2
]
f
=
F
(
r
+
e
+
t
+
u
+
r
+
n
+
_
+
a
+
t
+
o
+
(
0
+
{
}
)
[
3
]
)
(
)
(
3
*
4
+
[
]
[
E
]
[
n
+
a
+
(
0
[
E
]
+
0
)
[
9
+
2
]
+
e
]
)
[
1
]
F
(
a
,
a
+
l
+
e
+
r
+
t
+
y
+
a
+
P
+
q
+
P
+
a
+
P
+
q
+
z
)
`
더 읽기 쉬운 버전으로 quine이됩니다 (매우 줄 바꿈 제거).
[t,r,u,e,f,a,l,s]=!0+[!1];[,n,d,,q,i]=t.a+t
V=[][f+i+n+d];[,,,c,,,o,,_,,,,,y,z]=V+0
F=V[E=c+o+n+s+t+r+u+c+t+o+r]
P=(1+e+2+3-4+t)[2]
f=F(r+e+t+u+r+n+_+a+t+o+(0+{})[3])()(3*4+[][E][n+a+(0[E]+0)[9+2]+e])[1]
F(a,a+l+e+r+t+y+a+P+q+P+a+P+q+z)`
[t,r,u,e,f,a,l,s]=!0+[!1];[,n,d,,q,i]=t.a+t
V=[][f+i+n+d];[,,,c,,,o,,_,,,,,y,z]=V+0
F=V[E=c+o+n+s+t+r+u+c+t+o+r]
P=(1+e+2+3-4+t)[2]
f=F(r+e+t+u+r+n+_+a+t+o+(0+{})[3])()(3*4+[][E][n+a+(0[E]+0)[9+2]+e])[1]
F(a,a+l+e+r+t+y+a+P+q+P+a+P+q+z)`
설명
아휴. 위험한 여행이 될 것이기 때문에 여기에 타십시오.
나는 길이 1 노 (직접, 어쨌든) 내장 기능, 키워드 이러한 문제를 해결하거나 화살표를하는 방법을 알아 내려고 오랜 시간을 보낸이와 쉽게 가능하다는 것을 실현 기능을-전에 JSF *** , 한 캔 멀티 바이트 토큰을 피하면서 JavaScript 코드를 평가하십시오. 그러나 JSF 솔루션은 수십 또는 수십만이 아니라도 수천 바이트 길이가 될 수 있습니다. 고맙게도, 우리는 단지 그에 국한되지 않습니다. ()[]+!
우리는 모든 ASCII를 사용할 수 있습니다!
먼저 JSF의 필수 구성 요소 인 “더 많은 기능을 잠금 해제”하기 위해 문자열로 만들 수있는 문자를 골라 시작하기로 결정했습니다. 문자열을 사용하여 길이가 3 인 줄이 필요한 문자를 직접 사용할 수 없으므로 대신 JSF에서 트릭을 훔쳐서 1 바이트 토큰으로 작성할 수있는 리터럴에서 몇 개의 문자를 가져옵니다.
JSF*** Used here Value Chars unlocked
!![] !0 true true
![] !1 false fals
[][[]] t.a undefined ndi
이것으로부터 [].find
Function 객체 인로 시작하여 바깥쪽으로 확장 할 수 있습니다 . 문자열이 변환하는 것은 function find() { ...
우리에게 액세스를 제공 c
, o
공간 ( _
) 괄호 ( y
과 z
). 아마도 더 중요한 것은 이제 우리는 그것 constructor
의 Function
함수에 접근 할 수있게되었다 .이 함수는 처음에는 소리가 나는 것처럼 문자열을 만들고에 전달한 Function()
다음 생성 된 함수를 호출하여 코드를 실행하는 기능을 제공한다 .
아마도 프로그램 자체에서 사용되는 전반적인 방법을 언급해야 할 것입니다. 2015 년 현재, JavaScript에는 ” 태그 된 템플릿 “이라는이 멋진 기능이 있습니다.이 기능 은 문자열에서 이스케이프되지 않은 줄 바꿈을 허용 할뿐만 아니라 문자열 리터럴을 사용하여 직접 함수를 호출 할 수 있도록합니다 ( myFunc`abc`;
대략 myFunc(["abc"])
). 프로그램에서 마지막으로 함수 호출을 넣으면 일반적인 구조는 다음과 같습니다.
code;func`code;func`
func
그 다음에는 모두 인수가 출력되고 그 뒤에 백틱, 그 다음에 다시 인수, 그리고 두 번째 백틱이 출력됩니다. 인수가 a
있고 백틱이 저장되어 있다고 가정하면 f
코드로이를 수행 할 수 있습니다 alert(a+f+a+f)
. 그러나 현재 우리는 누락 +
되고 역행 자체 가 없습니다 . +
(에 저장 됨 P
)은 어렵지 않습니다. 우리는 JSF에서 또 다른 트릭을 훔쳐 문자열을 만들고 1e23
숫자로 변환 한 다음 다시 문자열로 바꾸고 "1e+23"
.
백틱을 얻는 것은 조금 더 복잡합니다. 처음에는 취득하려 String.fromCharCode
하지만, 찾는 C
밝혀졌다 거의 어려운로한다. 다행히 atob
얻기 쉬운 정도이다 ( Function("return atob")()
; b
에서 생성되어 0+{}
제공되는 [object Object]
)와 적절한 마법 문자열이 발견되면, 모든 ASCII 문자를 제공 할 수 있습니다. 짧은 스크립트가 준 12A
편리하게 찾을 수있는 옵션 중 하나로서 12Array
(A가 생성하는 짧은 비트, 덕분에 [].constructor[n+a+m+e]
, m
에서 발견된다 0 .constructor+0
: "function Number() { ..."
).
마지막으로 모든 것을 하나로 묶습니다. 백틱을 variable에 할당 f
하지만 함수 문자열에서 직접 사용할 수 없으므로 variable q
을 문자로 설정 f
하고 대신 사용합니다. 이것은 우리의 최종 문자열을 만든다 a+l+e+r+t+y+a+P+q+P+a+P+q+z
, 또는 "alert(a+f+a+f)"
. 그런 다음이에 Function()
피드를 제공하고 완성 된 코드를 결과에 피드하면 voila, 한 줄에 하나 이상의 문자가 포함 된 JavaScript quine이 있습니다!
지금은 머리가 끔찍한 느낌이 들기 때문에이 설명에서 실수 나 내가 놓친 것들에 대해 문의하십시오. 휴식을 취한 후 다시 연락 드리겠습니다.
답변
Haskell , 라인 길이 6, 400 343 336 바이트
{main=
putStr
$s++(s
>>=(++
":\n")
.show)
++
"[]}";
s='{':
'm':
'a':
'i':
'n':
'=':
'\n':
'p':
'u':
't':
'S':
't':
'r':
'\n':
'$':
's':
'+':
'+':
'(':
's':
'\n':
'>':
'>':
'=':
'(':
'+':
'+':
'\n':
'"':
':':
'\\':
'n':
'"':
')':
'\n':
'.':
's':
'h':
'o':
'w':
')':
'\n':
'+':
'+':
'\n':
'"':
'[':
']':
'}':
'"':
';':
'\n':
's':
'=':
[]}
온라인으로 사용해보십시오! 나는 길을 알지 못 putStr
하므로 줄 길이는 6입니다. 바깥 쪽 중괄호는 단일 선언 내에서 줄 바꿈 후 다른 요구되는 들여 쓰기를 제거 할 수 있습니다.
답변
답변
CJam , 줄 길이 1, 16 13 바이트
"
_
p
"
_
p
표준 quine에 줄 바꿈을 삽입하는 것이 더 짧은 표준 quine {"_~"}_~
"_p"␊_p
도 올바른 일을한다는 것은 작은 기적입니다 . (감사합니다, 마틴!) 마지막 줄 바꿈이 필요합니다.
설명 (줄 바꿈)
"•_•p•" Push that string.
•• Do nothing.
_ Duplicate the string.
• Do nothing.
p Pop it and print it with quotes and a newline: "•_•p•"•
• Do nothing.
종료시 스택에 남은 내용이 인쇄 ( •_•p•
)되어 총 출력이 산출 "•_•p•"••_•p•
됩니다.
답변
하스켈 + CPP, 라인 길이 2, 705 (237) 바이트
m\
a\
i\
n\
=\
p\
u\
t\
S\
t\
r\
$\
(\
:\
"\
\\
\\
\\
n\
"\
)\
=\
<\
<\
s\
+\
+\
s\
h\
o\
w\
\
s\
;\
s\
=\
"\
m\
a\
i\
n\
=\
p\
u\
t\
S\
t\
r\
$\
(\
:\
\\
"\
\\
\\
\\
\\
\\
\\
n\
\\
"\
)\
=\
<\
<\
s\
+\
+\
s\
h\
o\
w\
\
s\
;\
s\
=\
"\
온라인으로 사용해보십시오! -CPP
C 전처리 기를 활성화 하는 플래그 를 사용하면 줄 끝에서 백 슬래시를 사용하여 다음 줄에서 계속할 수 있습니다.
실제 코드는 main=putStr$(:"\\\n")=<<s++show s;s="<data>"
입니다.
편집 : Ørjan Johansen 덕분에 캐주얼 -468 바이트 !
답변
녹, 줄 길이 : 5, 바이트 : 301 299
외형에도 불구하고이 언어는 난해한 프로그래밍 언어가 아니며 많은 포맷 라인 노이즈가 있습니다.
사용할 수 있도록 세로 길이 5를 선택했습니다 print
. 세로 길이가 짧고 C 함수가 extern
키워드를 사용한다고 선언하고 stdout
6 바이트 길이, write
5 바이트 길이, no_main
7 바이트 길이 (메인은 일반적으로 함수;) 라고 인쇄하는 방법이 없다고 생각합니다 .
fn
main
(){
let
t=(
r#"fn
main
(){
let
t=("#
,r#")
;
print
!(
r#"{}
r#"{
}"{}
,r#"{
}"{},
r#"{
}"{}
{}{}{
}{
}""#,
r#"
,t.0,
t.0,
'#',
t.1,
'#',
t.2,
'#',
t.1,
'#',
t.2,
'}'
)"#
)
;
print
!(
r#"{}
r#"{
}"{}
,r#"{
}"{},
r#"{
}"{}
{}{}{
}{
}"#
,t.0,
t.0,
'#',
t.1,
'#',
t.2,
'#',
t.1,
'#',
t.2,
'}'
)}