정확히 1024 자로, 더 이상, 더 이상 :
- 인쇄해야
Hello World
합니다. - 불필요한 공백을 사용해서는 안됩니다.
- 주석을 사용해서는 안됩니다.
심사는 답변을 투표 할 때 단순한 난독 화에 대한 창의성과 유머를 선호해야합니다.
가장 먼저 답변을 선택하겠습니다 (2012 년 11 월 11 일 일요일). 나는 지금까지 멋진 항목을보고 있습니다. 다른 사람들이 무엇을 생각해 내기를 기다릴 수 없습니다.
정확히 1024 자로, 더 이상, 더 이상 :
Hello World
합니다.심사는 답변을 투표 할 때 단순한 난독 화에 대한 창의성과 유머를 선호해야합니다.
가장 먼저 답변을 선택하겠습니다 (2012 년 11 월 11 일 일요일). 나는 지금까지 멋진 항목을보고 있습니다. 다른 사람들이 무엇을 생각해 내기를 기다릴 수 없습니다.
답변:
불필요한 공백이 사용되지 않도록 코드가 골프되었습니다.
using System;using System.IO.Compression;using System.Runtime.Serialization;using System.Runtime.Serialization.Json;using System.Linq;using System.Net;using System.Text.RegularExpressions;class C{static void Main(){var g=WebRequest.Create("https://api.stackexchange.com/2.1/questions/8859?site=codegolf&filter=withbody");var r=(HttpWebResponse)g.GetResponse();if(r.StatusCode==HttpStatusCode.OK){var s=r.GetResponseStream();foreach(var a in r.ContentEncoding.ToLowerInvariant().Split(',').Reverse())switch(a){case"gzip":s=new GZipStream(s,CompressionMode.Decompress);break;case"deflate":s=new DeflateStream(s,CompressionMode.Decompress);break;default:throw new InvalidOperationException();}var d=new DataContractJsonSerializer(typeof(R));var q=(R)d.ReadObject(s);var e=new Regex("<code>([^<]*)</code>");var m=e.Match(q.I[0].B);Console.WriteLine(m.Groups[1].Value);}}}[DataContract]public class R{[DataMember(Name="items")]public I[]I{get;set;}}[DataContract]public class I{[DataMember(Name="body")]public string B{get;set;}}
가독성을위한 형식 :
using System;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Linq;
using System.Net;
using System.Text.RegularExpressions;
class C
{
static void Main()
{
var g = WebRequest.Create("https://api.stackexchange.com/2.1/questions/8859?site=codegolf&filter=withbody");
var r = (HttpWebResponse)g.GetResponse();
if (r.StatusCode == HttpStatusCode.OK)
{
var s=r.GetResponseStream();
foreach (var a in r.ContentEncoding.ToLowerInvariant().Split(',').Reverse())
switch(a)
{
case "gzip":
s = new GZipStream(s,CompressionMode.Decompress);
break;
case "deflate":
s = new DeflateStream(s,CompressionMode.Decompress);
break;
default:
throw new InvalidOperationException();
}
var d = new DataContractJsonSerializer(typeof(R));
var q = (R)d.ReadObject(s);
var e = new Regex("<code>([^<]*)</code>");
var m = e.Match(q.I[0].B);
Console.WriteLine(m.Groups[1].Value);
}
}
}
[DataContract]
public class R
{
[DataMember(Name="items")]
public I[] I { get; set; }
}
[DataContract]
public class I
{
[DataMember(Name="body")]
public string B { get; set; }
}
프로그램은 Stack Exchange API를 사용하여 Code Golf에서이 질문을 검색하고 코드 형식의 첫 번째 텍스트 (이 질문의 경우 "Hello World"텍스트)를 찾아 인쇄합니다.
>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++>+++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++[+++++<]>[.[-]>]
멋진 64 * 16 블록을 만들기 위해 추가 한 공백을 제외하고 1024 자입니다.
전략은 다음과 같습니다.
각 바이트가 5보다 작은 경우를 제외하고 처음 몇 바이트를 "Hello World"문자로 채우십시오. 이것은 마지막 16자를 제외한 모든 문자에서 수행됩니다. 포인터가 나중에 범위를 벗어나지 않도록 첫 번째 바이트는 비워 둡니다.
포인터를 처음으로 다시 가져 와서 각 바이트에 5를 추가하십시오. [+++++<]
문자를 살펴보고 인쇄하고 바이트를 0으로 사용하십시오. >[.[-]>]
불필요한 공백이 없습니까? JavaScript에 전혀 필요하지 않은 불필요한 세미콜론은 어떻습니까? Crockford 같은 사람들을 행복하게 하기 위해 세미콜론을 추가합시다 .
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;console.log('Hello World');;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
예, 이것이 규칙의 남용임을 알고 있습니다.
{{{{{console.log("Hello, World!")}}}}}
Graph[Partition[
Riffle[Characters[
StringTake[ElementData[][[2]], 3] <>
StringTake[WordData["high", "Antonyms"][[2, 2, 1]], 2] <>
FromCharacterCode[Power[2, 5]] <>
StringTake[GraphData[][[Prime@705]], 2] <>
StringTake[AstronomicalData["Planet"][[1]], {3}] <> "ld"],
Rest@Characters[
StringTake[ElementData[][[2]], 3] <>
StringTake[WordData["high", "Antonyms"][[2, 2, 1]], 2] <>
FromCharacterCode[Power[2, 5]] <>
StringTake[GraphData[][[Prime[705]]], 2] <>
StringTake[AstronomicalData["Planet"][[1]], {3}] <> "ld"]],
2] /. {a_, b_} :> DirectedEdge[a, b],
EdgeLabelStyle -> Power[2, 4],
EdgeLabels -> (Partition[
Riffle[l =
Characters[
StringTake[ElementData[][[2]], 3] <>
StringTake[WordData["high", "Antonyms"][[2, 2, 1]],
1 + 1] <> FromCharacterCode[Sqrt[Sqrt[1048576]]] <>
StringTake[GraphData[][[Prime[705]]], 2] <>
StringTake[AstronomicalData["Planet"][[1]], {3}] <> "ld"],
Rest@l], 2] /. {a_, b_} :> DirectedEdge[a, b]) +
Power[{1, 8, 27, 64, 125, 216, 343, 512, 729, 1000},
1/3] /. {Plus[a_, b_] :> Rule[b, a]},
VertexLabelStyle -> Directive[RGBColor[0, 0, 1], Large],
VertexLabels -> "Name", ImagePadding -> Power[5, 2],
ImageSize -> 2^2*5^2*7]
볼링 해제 (일부)
Mathematica의 선별 된 데이터에 액세스 할 수없는 사람들을 위해 :
ElementData[][[2]]
WordData["high", "Antonyms"][[2, 2, 1]]
GraphData[][[Prime[705]]]
AstronomicalData["Planet"][[1]]
"헬륨"
"낮은"
"웅 그래프"
"수은"
"Hel"( "Helium"에서) + "lo"( "low"에서) + ""( FromCharacterCode[32]
) + "Wo"( "WongGraph"에서) + "r"( "Mercury"에서) + "ld"
"Hello World"라는 문자열을 생성합니다.
문자열은 문자로 분할되며 각 문자는 다음 그래프에서 정점이됩니다.
Graph[{"H" \[DirectedEdge] "e", "e" \[DirectedEdge] "l",
"l" \[DirectedEdge] "l", "l" \[DirectedEdge] "o",
"o" \[DirectedEdge] " ", " " \[DirectedEdge] "W",
"W" \[DirectedEdge] "o", "o" \[DirectedEdge] "r",
"r" \[DirectedEdge] "l", "l" \[DirectedEdge] "d"},
EdgeLabelStyle -> 16,
EdgeLabels -> {"H" \[DirectedEdge] "e" -> 1, "e" \[DirectedEdge] "l" -> 2, "l" \ [DirectedEdge] "l" -> 3,
"l" \[DirectedEdge] "o" -> 4, "o" \[DirectedEdge] " " -> 5,
" " \[DirectedEdge] "W" -> 6, "W" \[DirectedEdge] "o" -> 7,
"o" \[DirectedEdge] "r" -> 8, "r" \[DirectedEdge] "l" -> 9,
"l" \[DirectedEdge] "d" -> 10},
VertexLabelStyle -> Directive[Blue, Large], VertexLabels -> "Name", ImagePadding -> 25]
echo '
.@@@@......@@@@.@@@@@@@@@@@.@@.........@@...........@@@@@@@@..
..@@@......@@@..@@.......@@..@..........@..........@........@@.
..@@@......@@@..@............@..........@.........@..........@@
..@@@@@@@@@@@@..@@@@@@.......@..........@.........@..........@@
..@@@@@@@@@@@@..@@@@@@.......@..........@.........@..........@@
..@@@......@@@..@............@..........@.........@..........@@
..@@@......@@@..@@.......@@..@@@@@@@@@@.@@@@@@@@@..@.......@@@.
.@@@@......@@@@.@@@@@@@@@@@..@@@@@@@@@@.@@@@@@@@@...@@@@@@@@..
@@............@@@..@@@@@.....@@@@@@@.....@@........@@@@@@@@@@.
.@@..........@@...@.....@.....@.....@@...@@.........@@.......@.
..@@........@@...@.......@....@.....@@...@@.........@@........@
...@@..@@..@@...@.........@...@@@@@@.....@@.........@@........@
....@@@.@@.@....@........@@...@@@@.@@....@@.........@@........@
....@@...@@@....@.......@@....@.....@@...@@.........@@.......@
...@@......@@....@.....@@.....@......@@..@@@....@@..@@@@...@@.
..@@.......@@@....@@@@@@....@@.......@..@@@@@@@@...@@@@@@@@@'
다음은 또 다른 "Hello, world"질문에 대한 내 대답 의 적응입니다 .
"불필요한 공백"이 무엇인지 잘 모르겠습니다. 공백, 들여 쓰기 및 줄 바꿈을 사용하여 코드를 멋지게 형식화했지만 엄격하게 말하면 거의 필요하지 않습니다. 나는 1024 자의 공백을 세었다.
편집 : return!
첫 번째 줄로 변경되었습니다 . 이 방법이 더 좋다고 생각합니다.
#include <stdio.h>
int main(int argc, char **argv, char **envp) {
return!
putchar(-~-~-~-~-~-~-~-~-~-~!
putchar(~-~-~-~-~-~-~-~-
putchar(~-~-~-~-~-~-
putchar(-~-~-~
putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~
putchar(-~-~-~
putchar(
putchar(-~-~-~-~-~-~-~
putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~0))))))))))));
}
1024 자, 그 중 944자는 모두 공백입니다.
print 11*'%c'%tuple(len(x)+8for x in' / / / / / / / / / / '.split('/'))
http://golfscript.apphb.com/ 에서 스크립트의 최대 길이를 수정해야 했습니다. :)
1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))1)))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))1))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))1))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))' '1))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))1)))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))1))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))))))))))1))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))1))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))){)}8*]''+
main=putStrLn hello_world
where hello_world=show H++ello_world
where ello_world=show E++llo_world
where llo_world=show L++lo_world
where lo_world=show L++o_world
where o_world=show O++_world
where _world=show 𝞝++world
where world=show W++orld
where orld=show O++rld
where rld=show R++ld
where ld=show L++d
where d=show D
data Letter=H|E|L|O|𝞝|W|R|D
instance Show Letter where
show H=["Hello, World!"!!0]
show E=["Hello, World!"!!1]
show L=["Hello, World!"!!2]
show O=["Hello, World!"!!4]
show 𝞝=["Hello, World!"!!6]
show W=["Hello, World!"!!7]
show R=["Hello, World!"!!9]
show D=["Hello, World!"!!11]
main::IO()
( 필수 , Haskell은 들여 쓰기에 민감합니다!) 공백을 포함하여 1024 자 입니다. (줄 바꿈을 완전히 제거 할 수는 있지만 읽을 수없는 원 라이너를 원하는 사람은 누구입니까? 지금도이 프로그램이 무엇을하는지, 의견이 부족한 것을 추측하기는 어렵습니다 ...)
이 페이지에서 자바 스크립트를 잘라내어 콘솔 (크롬 브라우저)에 붙여 넣어 페이지가 사라지는 것을 볼 수 있습니다!
function pad_with_zeroes(number, length){
var my_string = '' + number;
while (my_string.length < length){
my_string = '0' + my_string;
}
return my_string;
}
var code_tags = document.getElementsByTagName('code');
var hello_world = code_tags[0].innerHTML;
var body_tags = document.getElementsByTagName('body');
var body = 'NULL';
body = body_tags[0];
var html_input = "<div id='div_that_holds_hello_world' style='font-size:50px; color:#987324; width: 900px; height: 900px; text-align: center;'><span id='hello_world_span'>" +hello_world+ "</span></div>";
body.innerHTML = html_input;
var span = document.getElementById('hello_world_span');
var div = document.getElementById('div_that_holds_hello_world');
var j_c = 1;
var i_c = 0;
var setIn = setInterval(function(){
i_c++;
if(i_c%2 == 0){
span.style.display = 'none';
}else{
span.style.display = 'block';
}
if(i_c%50 != 0){
div.style.fontSize = j_c + 'px';
if(i_c < 1000000){
div.style.color = '#'+ pad_with_zeroes(i_c, 6);
}else{
i_c = 0;
}
j_c++;
}else{
j_c = 0;
}
}, 500);
html_input
. 그리고 일부는
print''.join(chr(32if c[0]>"z"else """
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum
dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero
eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel enum...
""".count(c[0]+c[1])+99)for c in zip(' yddd~ doda','t iio~doliu')).title()
이 프로그램을 작성하는 것은 매우 지루한 프로세스였으며, 알고리즘의 길이 (첫 번째 및 마지막 행)는 더미 텍스트의 길이 (필수 총 1024자를 충족시키기 위해)에 영향을 미치며 결과적으로 특정 하위 문자열의 수에 영향을줍니다. 그리고 더 나쁜 것은 : 일부 카운트는 하위 문자열에서 발생하지 않을 수 있으므로 다른 모든 문자에 영향을 미치는 일반 바이어스 99를 조정해야합니다. 그러나 행복하게도 도우미 스크립트는 항상 빠르게 구현됩니다. :)
정규식으로 Lipsum 테스트 :
"Hello World|Ta what. Soft lad mardy bum that's champion. Tha knows chuffin' nora tha knows tha knows mardy bum shurrup. Where's tha bin. Any rooad ne'ermind. Is that thine cack-handed ah'll gi' thee a thick ear. Ah'll gi' thee a thick ear. Gerritetten tintintin ah'll learn thi shurrup chuffin' nora. Sup wi' 'im. Nah then soft southern pansy tintintin breadcake t'foot o' our stairs how much. Shu' thi gob be reet th'art nesh thee ah'll gi' thee a thick ear that's champion. Shu' thi gob t'foot o' our stairs tha daft apeth where's tha bin ah'll gi' thi summat to rooer abaht. Wacken thi sen up eeh eeh. Shu' thi gob tha what that's champion soft southern pansy ah'll learn thi a pint 'o mild. Appens as maybe gi' o'er nobbut a lad nobbut a lad.Big girl's blouse a pint 'o mild. Big girl's blouse ah'll learn thi. A pint 'o mild. How much ah'll gi' thi summat to rooer abaht michael palin nay lad. Gerritetten a pint 'o mild be reet nay lad. Nay lad how much ee by gum. 1234567I love feet so much.".match(/Hello World/)[0]
정규식 : .match(/Hello World/)[0]
킨다 :
print"""Hello World"""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""