Hello World 0.0!


78

ディルバートは素晴らしい
出典:Dilbert、1992年9月8日

古典的な「Hello World!」に新たな工夫を加えたいと思っています。プログラム。

以下を使用Hello World!せずに出力するプログラムをコーディングします。

  • 文字列/文字リテラル
  • 数字(任意のベース)
  • 「Hello World!」を返す事前に構築された関数
  • 正規表現リテラル

「O」および0を除きます。

†「O」は大文字で、「o」は使用できません。


4
[code-golf]と[code-challenge]のいずれか、両方ではないでください。これらのタグのポイントは、ユーザーが使用したいルールで質問を見つけやすくするためです。基本的に、このサイトのすべての質問は、何らかのゲームでなければなりません。
dmckee

4
-1 難読化されたHello Worldを既に使用していますが、この課題はあまりにも似ていると思います。私がmodでなかったら、「重複したものに近い」票を投じたでしょう。
クリスジェスターヤング

2
@zzzzBov:「hello world」テーマで別の質問を正当化するほど異なるとは思わない。別のテーマの方がよかったでしょう。しかし、それは私の意見です。
クリスジェスターヤング

1
私はこれが素晴らしいコードのゴルフだと思う-そして、前のものよりも良い。
MtnViewMark

2
一部の人々は"O"*、ゼロを含む任意の数のOを持つ文字列リテラルを持つことができることを想定しているようです。私はそれが意図ではないと思います。どうか明らかにしてください。
ティムウィ

回答:


83

Windows PowerShell、多すぎる

はい、確かに、(ほぼ排他的に)ゼロを使用して»Hello world«を記述しなければならなかったその日に戻って...

&{-join[char[]]($args|% Length)} `
O00000000000000000000000000000000000000000000000000000000000000000000000 `
O0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O0000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000

より深刻な注意事項:

Windows PowerShell、25

Write-Host Hello World!

文字列リテラルはありません。Hello World!そこにちょうどことを起こる解析された PowerShellはそこ引数解析モードであるため、文字列として。


2
それは本当ですか?? O_o
ジョシュ

1
このいくつかの例や歴史をインターネットで検索しました。これはとても奇妙です。リンクを提供していただけますか?
カレブジャレス

1
「過去に戻る」。:)あなたは、

ああ。単項。わかった。
マシュー盧

86

C、327文字

#define O(O)-~O
#define OO(o)O(O(o))
#define Oo(o)OO(OO(o))
#define oO(o)Oo(Oo(o))
#define oo(o)oO(oO(o))
#define O0 putchar
main() {
    O0(OO(oO(!O0(~O(Oo(OO(-O0(~O(Oo(-O0(O(OO(O0(oo(oO(O0(O(oo(oO(OO(Oo(oo(oO(
    O0(oo(oo(!O0(O(OO(O0(O0(O(OO(Oo(O0(O(Oo(oo(oO(O0(oo(oo(oO(oo(oo(0))))))))
    ))))))))))))))))))))))))))))))))))))));
}

奇妙なことに、前処理後にその美しさが失われることはありません。

main() {
putchar(-~-~-~-~-~-~-~-~-~-~!putchar(~-~-~-~-~-~-~-~-putchar(~-~-~-~-~-~-
putchar(-~-~-~putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~!putchar(-~-~-~putchar(putchar(-~-~-~-~-~-~-~putchar
(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0))))))))))));
}

2
驚くばかり。ただし、!がありません。
マークリード

1
これは本物の芸術です!
Askaga

さらに多くのプリプロセッサを使用すると、体を短くすることができそうです。ただし、コード全体が利益を得るかどうかはわかりません。
ツヴァイ

@Zwei、それを短くすることは確かに可能です。マクロの最適なセットを見つける努力をしませんでした。
-ugoren

CLANGの#defineに括弧を含めないのはなぜですか?数バイト節約できますか?編集:決して気にせず、試してみたところ、なぜそれがうまくいかないのかがわかりました
アルバートレンショー

52

BrainFuck、102 111文字

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

すべてのルールを満たします。

信用はダニエルクリストファニにあります。


1
規則にも述べるべきかどうか判断できません0 and/or "O" must be used。BrainFuckとgolfscriptには少し意地悪ですが、彼らはこの挑戦に苦労しているわけではありません。
zzzzBov

34
@zzzzBov:それらを使用する必要がある場合、Brainfuckコードにはそれらが含まれます。ただし、プログラムにはまったく影響しません。
ジョーイ

38

C、182バイト

#define decode(c,o,d,e,g,O,l,f) e##c##d##o
#define HelloWorld decode(a,n,i,m,a,t,e,d)
#define Puzzles(flog) #flog
#define CodeGolf Puzzles(Hello World!)
HelloWorld(){puts(CodeGolf);}

1
+ 1、Lol、あなたはまだトークン貼り付け演算子のトリックを使用しています!ナイスメイト:-)
キクソティック

35

Cプログラム-45

(不正行為)

字句的には、これは文字列リテラルまたは正規表現リテラルを使用しません。Cプリプロセッサの文字列化機能を利用します。 s(x)引数を文字列に変換するマクロです。

#define s(x)#x
main(){puts(s(Hello World!));}

3
「字句的に」の非常に便利な概念のために:)しかし、FTW!
JB

24

Haskell-143文字

o%y=o.o.o$y;o&y=(o%)%y;o!y=o$o$(o%)&y
r=succ;w=pred;a=r%y;e=r$w&l;l=r!'O';o=r e;u=(w&)&a;y=r%l
main=putStrLn[w!o,o,l,l,y,w u,w$r&'O',y,a,l,e,u]

おお、それは羊毛でした!

アミューズメント用に名前変更された数値、数値操作、変数はありません。

いくつかの説明がいいかもしれません:

  • o%yo&yおよびo!y各機能を適用oするy複数回:3、9、及び29時間それぞれ。29?!?!はい、29!
  • rおよびwは、次の文字および前の文字であり、上記の高次関数を使用して適用すると、から必要なすべての文字を取得できます'O'

必要なジャンプのシーケンスは次のとおりです。

'O' +29    -> 'l'
'O'  +9 -1 -> 'W'
'l'  -9 +1 -> 'd'
'l'  +3    -> 'o'
'd'  +1    -> 'e'
'o'  +3    -> 'r'
'e' -29    -> 'H'
'r' -81    -> '!'
'!'  -1    -> ' '

  • 編集:(134-> 144)感嘆符を出力するのを忘れた、ため息....
  • 編集:(144-> 143)不要なを削除し、ハグの$名前に変更#!ました。

1
あれ?OO ....
ジョーイ・アダムス

機能しません。codepad.org/lyKyj1Ox
nyuszika7h

@ Nyuszika7Hこれは、このサービスがデフォルトでいくつかのコンパイラオプションをオンにするためです。プレーンGHCでコンパイルする必要があります。
-FUZxxl

@ Nyuszika7H GHCでも問題なく動作します。問題は、そのサービスが2006年からHugsを使用していることです。Hugsが処理できないことは2つあるようです。1)演算子として「#」を使用します。「!」への変更 動作します。2)Hugsが単相性制限をどのように実装するかについての定義r=succw=pred実行。変更するr x=succ xw x=pred x、それは(4つの文字のコストで)動作します。これらはハグの問題のようです。
MtnViewMark

@Community編集後も有効ですか?
Hosch250 14

22

単項10 197 1137672766964589547169964037018563746793726105983919528073581559828バイト

私はまだ誰もこれをやったことがないことに驚いています...

ここに投稿するには長すぎますが、1137672766964589547169964037018563746793726105983919528073581559828ゼロです。

または、より読みやすい:〜10 67個のゼロ。

10 197バイトを節約してくれた@dzaimaに感謝


2
「かつてゼロのみを使用してデータベース全体を書いた」と読んだとき、最初に考えたのは「彼は単項でやったに違いない」というものでした。コミックが正確にどのように機能したかを示す唯一の答えであるため、+ 1
チョイス

21

Mathematica 12文字

文字列ではなく、シンボルのみ。

Hello World!   

!は階乗演算子ですが、シンボルHelloとWorldは未定義なので、入力を変更せずに返します。

プログラムを少し変更すると:

Hello=2;
World=3;
Hello World!  

次に、印刷します12(2 * 3!)


16

i386アセンブリ(Linux、gcc構文)、440 442 435

今日は私のアセンブリの日であり、その後はしばらくの間十分でした。 私は自分自身に128番を許可しました。理由については、以下のプログラムを参照してください。 特別なことは何もありません。「Hello World!」をエンコードしているだけです。アセンブリーオペコードとして、数値定数なしで意味があり、残りを算術で埋めます。

#define M mov
M $0,%ecx;inc %cx;M %ecx,%ebx;inc %cx;M %ecx,%eax;add %ax,%ax
M %ecx,%edx;shl %cl,%dx;M (e),%ch;add %dl,%ch;dec %ch;M %ch,(l)
M %ch,(j);M %ch,(z);M $0,%ch;shl %cl,%edx;M %dl,(s);inc %dl
M %dl,(b);M (o),%dl;M %dl,(u);add %al,%dl;dec %dl;M %dl,(r)
M $m,%ecx;M $n,%edx;int $c;M %ebx,%eax;M $0,%ebx;int $c
.data
m:dec %eax;e:gs;l:es;j:es;o:outsl (%esi),(%dx)
s:es;push %edi;u:es;r:es;z:es;fs;b:es;n=.-m
t=(n+n)/n;c=t<<(t*t+t)

gcc -nostartfiles hello.S -o helloおそらく-m32、あなたのアーチに応じて、でアセンブルします)

なぜ128の許容範囲なのか?実際に何かを表示するにはsyscallが必要です。LinuxのシステムコールはINT 80h(10進数で128)です。INTの唯一のオペランド形式は即値であるため、そこに(コードに対して)定数以外のものを含めることはできません。私(落ち着いた後)コード内の他の記号定数、おそらくnの関数としてそれを表現することを試みることができましたが、それはあまり利益がないために非常に退屈しています。ASCIIコーディングを防ぐ方法として数値の制約を読みましたが、これは私がここでやっていることではないので、これを提出するのに十分無実だと感じています。(FWIW、自己修正コードも試しましたが、それはセグメンテーション違反です) 現在、128個も残っていません。コードは純粋です!

  • Edit1は行を保存するために再フォーマットされました。数値1を削除しました(誰も気付きませんか?!)
  • movCPPマクロで圧縮されたEdit2。残りの128を削除しました。

6
これが本物の男性のプログラムです。
Nit 14年

14

Javascript-305

少し長いですが、私は使用される方法が好きです。

O=0;O++;O=O.toString();alert([O+0+0+O+0+0+0,0+O+O+0+0+O+0+O,O+O+0+O+O+0+0,O+O+0+O+O+0+0,O+O+0+O+O+O+O,O+0+0+0+0+0,O+0+O+0+O+O+O,O+O+0+O+O+O+O, O+O+O+0+0+O+0,O+O+0+O+O+0+0,O+O+0+0+O+0+0,O+0+0+0+0+O].map(function(e){O=0;O++;O++;return String.fromCharCode(parseInt(e,O))}).reduce(function (a,b){return a+b}))

私はそれが好きです。関数パラメータはOO、のようにすると良いでしょうOOOが、もちろんそれは長くなります。
zzzzBov

すごくいい。'、new String()'は最後にある必要がありますか?それなしで動作するようです。
スティーブンペレルソン

3
ああ、そうではありません。たまに型付けされたJavascriptがどれほど弱いかを忘れてしまうことがあります。
david4dev

左0ビット( '0+')も必要ありません。スペースと感嘆符には2つの左0ビットがあります。28文字の合計削減。
スティーブンペレルソン

10

C#(131文字)

141文字 142文字

enum X{Hello,World,A,B=A<<A<<A}class Y{static void Main(){var c=(char)X.B;System.Console.Write(X.Hello.ToString()+c+++X.World+c);}}

読みやすい:

// Define some constants (B = 32)
enum X { Hello, World, A, B = A << A << A }
class Y
{
    static void Main()
    {
        // Generate the space (character #32)
        var c = (char) X.B;

        // Remember that “!” is character #33
        System.Console.Write(X.Hello.ToString() + c++ + X.World + c);
    }
}

2
これはねじれていていいです。大好きです。
-jcolebrand

特定の数を生成するための+1の良い方法。覚えておいてください!
イグビーラージマン

LINQPadプログラム、102の文字:enum X{Hello,World,A,B=A<<A<<A}void Main(){var c=(char)X.B;(X.Hello.ToString()+c+++X.World+c).Dump();}
・クール

.ToString()- > +""いくつかのcahrsを節約する
フィーロ

2
@Firo:...そして規則を破ります。(文字列リテラルは許可されていません。)
ティムウィ14

8

JavaScript、88

t=!0<<-~-~-~-~!0
r=[]
for(i in{Hello:"O",World:0})r+=i+String.fromCharCode(t++)
alert(r)

99

@Timwiの提案に感謝します

三項演算子を削除しました:

o={Hello:"O",World:0}
t=!0<<-~-~-~-~!0
c=String.fromCharCode
r=c(0)
for(i in o)r+=i+c(t++)
alert(r)

103
エイリアスString.fromCharCode

o={Hello:"O",World:0}
t=!0<<-~-~-~-~!0
c=String.fromCharCode
for(i in o)o[i]?r=i+c(t):alert(r+i+c(++t))

117
if-elseを三項演算子に切り替え

o={Hello:"O",World:0},t=!0<<-~-~-~-~!0
for(i in o)o[i]?r=i+String.fromCharCode(t):alert(r+i+String.fromCharCode(++t))

125
私は"O"プログラムに「O」を入れるだけにしておきます。

o={Hello:"O",World:0},t=!0<<-~-~-~-~!0
for(i in o)if(o[i])r=i+String.fromCharCode(t)
else alert(r+i+String.fromCharCode(++t))

133

o={Hello:"O",World:0},t=!0<<(!0+!0<<!0)+!0
for(i in o)if(o[i])r=i+String.fromCharCode(t)
else r+=i+String.fromCharCode(t+!0)
alert(r)

@Joey、それが主なポイントです。
zzzzBov

@Joey、私はcodegolfメタを読んで、他の人がさまざまなアプローチを試すよう奨励するために、しばらく自分の質問に答えることを避けるべきだと読みました。私の計画は、1〜2日でコメントを外すことでした。
zzzzBov

@Joeyは、当時は自分のマシンで作業していなかったので、コメントとして投稿するだけで答えを自分にメールで送信する気はありませんでした。
zzzzBov

@ジョーイ:「そのうち5つしかない」というのは間違っています。誰でも編集を提案できます。「リンク」と「フラグ」の間の「編集」をクリックするだけで、コードを確認できます。
ジョン

@zzz:「それが主なポイントです」 誰でもそれを見ることができます。「リンク」と「フラグ」の間の「編集」をクリックすると、誰でも編集を提案できます。編集ダイアログが表示され、コードが表示されます。
ジョン

7

GolfScript、63文字

[0))):O.)?O.*-.O.?+)).O.*+((..O+.O(.O+?.O-O*@.O+O.+$.O.*-).O/]+

何、GolfScriptエントリはまだありませんか?

これは、単一の数値リテラル0O(数値を格納するために使用される)という名前の変数を使用し3ます。それ以外はすべて算術演算とスタック操作です。文字列Hello World!は、ASCIIコードから1文字ずつ作成されます。

仕組みは次のとおりです。

[             # insert start-of-array marker
  0))):O      # increment 0 thrice to get 3, and save it in the variable O
  .)?O.*-     # calculate 3^(3+1) - 3*3 = 81 - 9 = 72 = "H" 
  .O.?+))     # calculate 72 + 3^3 + 1 + 1 = 72 + 27 + 2 = 101 = "e"
  .O.*+((     # calculate 101 + 3*3 - 1 - 1 = 101 + 9 - 2 = 108 = "l"
  .           # ...and duplicate it for another "l"
  .O+         # calculate 108 + 3 = 111 = "o"
  .           # ...and duplicate it for later use
  O(.O+?      # calculate (3-1)^(3-1+3) = 2^5 = 32 = " "
  .O-O*       # calculate (32 - 3) * 3 = 29 * 3 = 87 = "W"
  @           # pull the second 111 = "o" to the top of the stack
  .O+         # calculate 111 + 3 = 114 = "r"
  O.+$        # copy the (3+3 = 6)th last element on the stack, 108 = "l", to top
  .O.*-)      # calculate 108 - (3*3) + 1 = 108 - 9 + 1 = 100 = "d"
  .O/         # calculate int(100 / 3) = 33 = "!"
]             # collect everything after the [ into an array
+             # stringify the array by appending it to the input string

7

Brainfuck、111バイト

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

アルゴリズムの説明

Increment cell 0 to 10 (it will be loop counter)
Repeat 10 times ; will stop at cell 0
  Increment cell 1 to 7
  Increment cell 2 to 10
  Increment cell 3 to 3
  Increment cell 4 to 1
Increment cell 1 by 2 and output it ; Thus, output ASCII 72 'H'
etc. for all symbols in 'Hello World!'

ループなしの長いバージョン、389バイト:

+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.+++++++++++++++++
++++++++++++.+++++++..+++.-------------------
---------------------------------------------
---------------.+++++++++++++++++++++++++++++
++++++++++++++++++++++++++.++++++++++++++++++
++++++.+++.------.--------.------------------
---------------------------------------------
----.-----------------------.

これはコードとゴルフのパズルであり、ポイントは最短のプログラムを作成することです。その一部には、コードの長さの投稿が含まれます。
zzzzBov

5

Lua 144 97 86文字

テーブルキーも文字列であるという事実と、#Hello == #World == 32 == string.byte '\ n'という事実に基づく、異なるアプローチ

e=#"O"t=e+e for k,v in pairs{Hello=0,World=e}do T=t^#k io.write(k,string.char(T+v))end

145文字のソリューション

  • 「O」または0以外の文字列はありません
  • 正規表現なし
  • 事前に構築された機能はありません

バイトのデルタエンコーディング、次にいくつかの素数などをしました:)

ゴルフバージョン:

e=#"O"d=e+e t=d+e v=d+t z=v+t T=t^d*d^t n=0 for l,m in pairs{T,T/t-z,z,0,d,-T-z,z*z+t*d,T/d,d,-d*t,-t^d,-T+v}do n=n+m io.write(string.char(n))end

コメント:

-- without numbers, strings, regex
-- except "O" and 0
e=#"0"
t=e+e --2
d=t+e -- 3
v=d+t -- 5
z=v+t -- 7
n=0
T=t^d*d^t -- 72 = 2^3+3^2
for l,m in pairs{T, --72
T/t-z, -- 29 = 72/2-7
z, --7
0, -- 0
d, -- 3
-T-z, -- -79 = -72 - 7
z*z+t*d, -- 55 = 7*7 + 2*3
T/d, -- 24 = 72/3
d, -- 3
-d*t, -- -6
-t^d, -- -8
-T+v -- -67 = -72+5
} do
    n=n+q[k]
    io.write(string.char(n))
end

編集:複数のO文字列を変更し、さらにいくつかの最適化が見つかりました。


「O」*-*は脚注用であり、「Oの数は何でもない
-RomanSt

まあ、正規表現は私が自然に行うことです:p。1つ
目と

しかし、とにかく、私はそれらを編集します、ヘッズアップに感謝します
-jpjacobs

テーブルコンストラクターのHelloとWorldは、まだ文字列リテラルです。これは単なる合成シュガーです。
オレグV.ボルコフ

5

パイソン(126 130)

O=ord("O")
N=O/O
T=N+N
R=N+T
E=T**R
E<<T
print'O'[0].join(chr(c+O)for c in[N-E,E*R-T,_-R,_-R,_,N-_-E-E,E,_,_+R,_-R,E*R-R,T-_-E-E])

リテラル''は許可されていません。
RomanSt

1
@romkyns:非常に正しい、修正済み。
ホアロングタム

5
修正されていません(出力が間違っています)。あなたはおそらく考えてい[:0]ます。
WolframH

5

J、250

oo=:#a.
o0=:<.o.^0
o0o=:%:%:%:oo
ooo=:p:^:(-*oo)
o=:<.(^^^0)*(^^0)*(^^0)
o00=:o,~(,[)o0(**(**[))o0o
oo0=:*/p:(!0),>:p:!0
echo u:(o0(**(**]))o0o),(ooo ooo ooo(o.o.^^^0)*oo),o00,(+:%:oo),(oo0-~!p:>:>:0),o,(<.-:o.o.^o.^0),(>:p:(]^])#o00),(*:#0,#:oo),oo0

私はこれで完全に楽しみすぎて、ブートするためにもう少しJを学びました。また、ooo ooo ooo私が今まで書いた中で最も愚かなコードかもしれません。


5

QRハーフブロック(169) 121文字

UTF-8ハーフブロック文字を使用したQRコード:

▗▄▄▄▗▄▖▗▄▄▄  
▐▗▄▐▝█▙▐▗▄▐  
▐▐█▐▝▄ ▐▐█▐  
▐▄▄▟▗▗▗▐▄▄▟  
▗▗▖▄▞▝ ▗ ▖▄  
 ▟▜ Code ▀▟  
 ▙▀ Golf ▘▚  
▗▄▄▄▐▗▘▟▙▝▝  
▐▗▄▐▝▀▛▘▘█▖  
▐▐█▐▐▖▐▝▖▜▘  
▐▄▄▟▗ ▌█▛▗▝  3

残念ながら、これはそこにうまくレンダリングされません。適切なスタイルシートの小さなスニペットがありますが、..いいえ!ここに表示される言語 HTML ではありません!ここに表示される言語はQRコードです!(ここでは、HTMLとCSSはプレゼンテーションのバグを回避するためにのみ使用されます!)

ハーフブロック付きQR(169)

  ▛▀▀▌▚▝▐▀▌▛▀▀▌
  ▌█▌▌▖▞▚▚▘▌█▌▌
  ▌▀▘▌ ▚▛▞ ▌▀▘▌
  ▀▀▀▘▚▌▙▘▌▀▀▀▘
  ▄▙▛▚▜▀▄▀█▖▝▄▌
  ▖▄▄▘▖▄▄▄▟▗ ▀▘
  ▜Code  golf!▌
  ▚▟▘▘▝▙▛▚▐▀▖▜▘
  ▘▘ ▀▛▗▚▗▛▀▌▄ 
  ▛▀▀▌▟▌▜▖▌▘█▐▘
  ▌█▌▌▘█▌▟█▜▙▐ 
  ▌▀▘▌▚▌▌█▗▝▌▚▘
  ▀▀▀▘ ▝▘▘▀▀▀▀▘

考えてみると、これは次のようになります。

QR:Hello World!


これを確認するには、またはzbarlinuxでスマートフォンを使用してください。(サンプル:xwd | xwdtopnm | zbarimg /dev/stdin
F.ハウリ14年

Code golf!文字リテラルではありませんか?
ウゴレン14

2
私は実際、この答えは創造的ではあるが、プログラムではないので資格がないと思う。QRはデータをエンコードする方法であり、プログラミング言語ではありません。
ウゴレン14

1
また、のような言語postscriptsvgまたはそこで使用されている他のプレゼンテーション言語についてはどうでしょうか?エンコードする方法がある言語だと思う...とにかく!
F.ハウリ14

1
言語ではないものの例として、HTML(マイナスJS)を使用しました。QRについても同じことが言えます。これらの基準を参照してください。
ugoren

4

Scala(357 423 361文字)

残念ながら、最短の回答ではありませんが、'O''0'

def h(){type t=scala.Char;def OO(c:t)={(c-('O'/'O')).toChar};def O(c:t)={OO(OO(OO(c)))};def O00(c:t)={(c+('O'/'O')).toChar};def O0(c:t)={O00(O00(O00(c)))};val l=O('O');val z=O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0)))))))))));print(OO(O(O('O'))).toString+(OO(O(O(O('O')))).toString+l+l+'O'+OO(z)+O0(O0(O0(OO('O'))))+'O'+O0('O')+l+OO(OO(O(O(O('O')))))+z).toLowerCase)}

以前:

def h(){type t=scala.Char;print(OO(O(O('O'))).toString+(OO(O(O(O('O')))).toString+O('O')+O('O')+'O'+OO(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0))))))))))))+O0(O0(O0(OO('O'))))+'O'+O0('O')+O('O')+OO(OO(O(O(O('O')))))+O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0)))))))))))).toLowerCase);def OO[Char](c:t)={(c-('O'/'O')).toChar};def O[Char](c:t)={OO(OO(OO(c)))};def O00[Char](c:t)={(c+('O'/'O')).toChar};def O0[Char](c:t)={O00(O00(O00(c)))}}

古い(違法)バージョン:

def h(){type t=scala.Char;print(""+OO(O(O('O')))+(""+OO(O(O(O('O'))))+O('O')+O('O')+'O'+OO(O(O(O(O(O('0'))))))+O0(O0(O0(OO('O'))))+'O'+O0('O')+O('O')+OO(OO(O(O(O('O')))))+O(O(O(O(O('0')))))).toLowerCase);def O0[Char](c:t)={O00(O00(O00(c)))};def O[Char](c:t)={OO(OO(OO(c)))};def OO[Char](c:t)={(c-('O'/'O')).toChar};def O00[Char](c:t)={(c+('O'/'O')).toChar}}

空の文字列("")および文字ゼロ('0')を含む文字列/文字リテラルは許可されていないと思います。文字列"O"(大文字のO)と数字0のみがあります。
ティムウィ

バガー。その後、いくつかの編集が必要です
ガレス

4

C(またはC ++)(本体セグメント:49)(不正行為)

コンパイル時に、というバイナリにコンパイルしHello\ World\!ます。コードは次のとおりです。

#include <stdio.h>
#include <string.h>
int main(int i,char**a)
{
  int j=i+i,k=j<<j;puts(strrchr(*a,'O'-(k<<j))+i);
}

strrchrセグメントがイベントに渡されたプログラム名が完全なパスが含まれている完全なパスを除去する必要がある、また、引数が渡されてはなりません。..

典型的なコンパイル行は次のとおりです。 gcc -o Hello\ World\! foo.c


3

C ++、141、 146

初めてこれらのいずれかを試すと、おそらくかなり改善される可能性があります。

char o='O'/'O',T=o+o,X=T+o,f=T+X,t=f+f,F=t*f,h=F+F,l=h+t-T,O=l+X;
char c[]={F+t+t+T,h+o,l,l,O,o<<f,h-t-X,O,l+f+o,l,h,0};
cout<<c;

編集:

別の投稿から分割トリックを盗んだ、私はそれを考えていなかったとは信じられない:(


1
あなたが技術的には、任意の付属図書館、メインのようなものを含め、文字カウントで全体の作業プログラムを含めることになっているstd::、などなど
WUG

3

ハスケル-146

a:b:c:f:g:s:j:z=iterate(\x->x+x)$succ 0
y=[f+j,d+a,c+s+h,l,a+b+l,s,f-s+o,o,a+b+o,l,l-f,a+s]
[h,e,l,_,o,_,w,_,r,_,d,x]=y
main=putStrLn$map toEnum y

特に次のように2のべき乗を初期化できるため、パターンマッチングはHaskellに大きな足をかけると考えました。

one:two:four:eight:sixteen:thirty_two:sixty_four:the_rest = iterate (*2) 1

しかし、中に見られるようにMtnViewMarkのHaskellの答え(方法によって、多くの多くのupvotesに値する)と他の回答、より良い圧縮はちょうどより多く用いることによって達成することができる+とし-


3

Clojure-46文字

(map print(butlast(rest(str'(Hello World!)))))

Helloand World!はシンボルであり、あらゆる種類のリテラルではないことに注意してください。


3

C ++

/*
Hello World!
*/
#define CodeGolf(r) #r
#include<iostream>
using namespace std;
int main()
{
    char str[*"O"];
    freopen(__FILE__,CodeGolf(r),stdin);
    gets(str);gets(str);puts(str);
}

1
100数字についての規則に違反します。もっと面白いものに置き換えてください。
ジョーイアダムス

@ joey-adams指摘してくれてありがとう。変更しました。
fR0DDY

Line 7: error: ISO C++ forbids declaration of 'main' with no type
ネイサンオスマン

@ george-edison修正済み。intg ++ なしで
動作しましたが-fR0DDY

3

PHP – 49文字

<?=Hello.chr(($a=-~-~-~0).~-$a).World.chr($a.$a);

変更ログ

  • (73-> 86)感嘆符を出力するのを忘れた... ため息
  • (86-> 57)インクリメントする単一の変数を使用します
  • (57-> 51)0でビット演算子を使用するように変更
  • (51-> 49)よりビット単位の演算子

1
変換が原因で定数が文字列リテラルとしてカウントされることを確認してください。
ケビンブラウン

@ Bass5098編集ありがとうございます!私はそれを承認しました。
-nyuszika7h

動作しない@ Bass5098では、21と22ではなく32と33の文字が必要です。<?$a=-~-~-~0;echo Hello.chr($a.$a-1).World.chr($a.$a);動作しますが、54文字です。
zzzzBov

@zzzzBov最初に編集をクリアする方法がわからず、承認された後にロールバックするのを忘れました。
ケビンブラウン

おっと、私1はそこに残しました。そこで私は自分のルールを破りに行きます...それ<?$a=-~-~-~0;echo Hello,chr($a.~-$a),World,chr($a.$a);は私が使用すべきだったもので、54文字です。
zzzzBov

3

Python、106

o=-~-~-~0
L=o+o
d,W=-~L,o**o
_=o*W
print str().join(chr(L+W+_-i)for i in[d*L,L+d,L,L,o,-~_,W,o,0,L,d+d,_])

str()の代わりに ''(先行スペースなし)を使用してください
-aditsu

2
また、とても素敵です!:)ところで、複数の割り当ては文字を保存していません
aditsu

@aditsu:できません。それは文字列リテラルです。コメントしてくれてありがとう。:)
flornquake

おっとああ、何とか空の文字列は、私の心の中でリテラルとして登録しなかった
aditsu

3

Perl、186バイト

@A=(0,0,0,0);@B=(@A,@A);@C=(@B,@B);@D=(@C,@C);@E=(@D,@D);@d=(@E,@D,@A);$l=[@d,@B];$o=[@$l,0,0,0];print(chr@$_)for[@E,@B],[@d,0],$l,$l,$o,\@D,[@E,@C,@A,0,0,0],$o,[@$o,0,0,0],$l,\@d,[@D,0]

各文字は、配列の長さである序数で出力されます。配列の構築は、文字番号のバイナリ表現を介して最適化されます。

ゴルフをしていない:

@A = (0, 0, 0, 0);          # A = 2^2
@B = (@A, @A);              # B = 2^3
@C = (@B, @B);              # C = 2^4
@D = (@C, @C);              # D = 2^5
@E = (@D, @D);              # E = 2^6

# d = 100 = 0x64 = 1100100b
@d = (@E, @D, @A);          # d = 2^6 + 2^5 + 2^2 

# l = 108 = 0x6C = 1101100b
$l = [@d, @B];              # l = d + 2^3

# o = 111 = 0x6F = 1101111b
$o = [@$l, 0, 0, 0];        # o = l + 3

print (chr @$_) for
    [@E, @B],              # "H"    H  =  72 = 0x48 = 1001000b = 2^6 + 2^3
    [@d, 0],               # "e"    e  = 101 = 0x65 = 1100101b = d + 1  
    $l, $l, $o,            # "llo"
    \@D,                   # " "   ' ' =  32 = 0x20 = 0100000b = 2^5
    [@E, @C, @A, 0, 0, 0], # "W"    W  =  87 = 0x57 = 1010111b = 2^6 + 2^4 + 2^2 + 3
    $o,                    # "o"
    [@$o, 0, 0, 0],        # "r"    r  = 114 = 0x72 = 1110010b = o + 3
    $l, \@d,               # "ld"
    [@D,0]                 # "!"    !  =  33 = 0x21 = 0100001b = 2^5 + 1

私のバイナリvodooはあなたにインスピレーションを与えたようです:) +1
masterX244 14

3

Java 389文字

不要な宣言を見つけた

class A{static int a=0,b=a++,f=a,e=a++;static char p(String s){return(char)Byte.parseByte(s,a);}public static void main(String[]z){long x=e,y=b;String c=((Long)x).toString(),d=((Long)y).toString();char l=p(c+c+d+c+c+d+d),m=p(c+c+d+d+c+d+c),o=(char)(l+a+f),_=p(c+d+d+d+d+d),$=_++;System.out.print(new char[]{p(c+d+d+c+d+d+d),m,l,l,o,$,p(c+d+c+d+c+c+c),o,(char)(o+a+f),l,(char)(m-f),_});}}

履歴は編集履歴にあり、元のバージョンは読み取り可能です。

// H  e  l    l   o      W  o  r   l    d  !
//72,101,108,108,111,32,87,111,114,108,100 33
import static java.lang.Integer.*;
class A
{


    public static void main(String[] args)
    {
        Integer a=0,b=a++,e=a++;  // making a 0 a 1 and a 2 which is required later;
        String c=e.toString(),d=b.toString(),z=c.substring(0,0);  //

        String H = ((char)parseInt(d+c+d+d+c+d+d+d,a))+z+  // make binary values and then to char
                (char)parseInt(d+c+c+d+d+c+d+c,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+c+c+c+c,a)+
                (char)parseInt(d+d+c+d+d+d+d+d,a)+
                (char)parseInt(d+c+d+c+d+c+c+c,a)+
                (char)parseInt(d+c+c+d+c+c+c+c,a)+
                (char)parseInt(d+c+c+c+d+d+c+d,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+d+c+d+d,a)+
                (char)parseInt(d+d+c+d+d+d+d+c,a)
                ;
        System.out.println(H);  //obvious
    }

3

Perl 6、199バイト

my \O=+[0];my \t=O+O;my \T=t+O;my \f=(t+t,O);my \F=t+T;my \S=T+T;my \L=(S,F);
say [~] ((S,T),(|L,t,0),(my \l=(|L,T,t)),l,(my \o=(|l,O,0)),F,(S,|f,t,0),o,(|L,|f),l,(|L,t),(F,0),)
.map({chr [+] t X**@_})

(幅を減らすために改行が追加されますが、不要なのでカウントされません)


Hello World! は、各文字の2のべき乗のリストのリストとしてエンコードされます。

a 0以外に使用されるリテラルを持っている場所は1つだけ0です。これは、1つの要素のリストを作成するために使用されます。このリストは1、数値プレフィックス演算子(+[0])ですぐに数値に変換されます。

my \O=+[0];    # one          # (List.elems)
my \t=O+O;     # two
my \T=t+O;     # Three
my \f=(t+t,O); # (four, one)  # <W r>
my \F=t+T;     # five
my \S=T+T;     # six

my \L=(S,F);   # lowercase letter  # (6,5)

say [~] (
  (S,T),            # H
  (|L,t,0),         # e
  (my \l=(|L,T,t)), # l
  l,                # l  reuse <l>
  (my \o=(|l,O,0)), # o  reuse <l>, add 0,1
  F,                # ␠
  (S,|f,t,0),       # W
  o,                # o  reuse <o>
  (|L,|f),          # r
  l,                # l  reuse <l>
  (|L,t),           # d
  (F,0),            # !
).map({chr [+] t X**@_})

3

JavaScript 662文字

O=[[,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[],[,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]];for(O_O=[].length;O.length>O_O;O_O++)document.write(String.fromCharCode((O[O_O].length||-Math.pow([,,].length,[,,,,,].length)-[,,,,,,,].length)+Math.pow([,,].length,[,,,,,,].length)+Math.pow(++[,].length,[,,,].length)-[,].length));document.write(String.fromCharCode(Math.pow([,,].length,[,,,,,].length)+[,].length))

単項ベースを持つために配列リテラルを乱用するのはどうですか。このプログラムには、を使用しないという利点があり0ます。


これは有効かもしれませんが、この特定のパズルはコードゴルフです。つまり、できるだけ短いコードを目指してください。600文字以上の場合、既存のJSソリューションがすでに持っている100文字未満にはなりません。
zzzzBov

1
@zzzzBov:私は実際に勝とうとはしていません。
コンラッド

1
このプログラムには、を使用しないという利点があり0ます。どうO_O=0;
エリックアウトゴルファー16

@EriktheGolfer:修正、ありがとう。私はそのことに気づきませんでした。
コンラッドボロスキー

O_O=[].lengthO_O=false4減少するように書くことができます
。-アトモクリエーション
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.