正確に1024文字で、それ以上でもそれ以下でも:
- 印刷する必要があります
Hello World
。 - 不要な空白を使用しないでください。
- コメントを使用しないでください。
回答を投票するとき、判断は単純な難読化よりも創造性やユーモアを優先すべきです。
回答を選択する最も早い時期は、11月(2012年)の11日(日曜日)です。私はこれまでにいくつかの素晴らしいエントリを見ています。他の人々が思い付くものを見るのを待つことができません。
正確に1024文字で、それ以上でもそれ以下でも:
Hello World
。回答を投票するとき、判断は単純な難読化よりも創造性やユーモアを優先すべきです。
回答を選択する最も早い時期は、11月(2012年)の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文字です。
戦略は次のとおりです。
最初の数バイトに「Hello World」という文字を入力します。ただし、各バイトが小さすぎる場合は除きます。これは、最後の16文字を除くすべてで行われます。最初のバイトは、ポインターが後で範囲外にならないように空白のままになります。
ポインタを先頭に戻し、次を使用して各バイトに5を追加します [+++++<]
文字を調べて印刷し、次を使用してバイトをゼロにします >[.[-]>]
不要な空白はありませんか?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]]
"ヘリウム"
「低い」
「WongGraph」
"水銀"
「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 文字。(改行を完全に削除することもできますが、読み取り不能なワンライナーが必要な人はいますか?今でも、このプログラムが何をしているのか、コメントがないと推測するのは十分困難です...)
Javascript、このページのコンソール(もちろんクロムブラウザー)にカットアンドペーストして、ページが消えるのを確認してください!
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
。たとえば、のhtmlを作成するときです。そして一部は、私がこれを非常に迅速にやろうとしていた原因でした:)
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を調整する必要があります。しかし幸いなことに、ヘルパースクリプトは常に迅速に実装されます。:)
正規表現を使用したリップサムテスト:
"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"""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""