こんにちは世界!(他のすべてのキャラクター)


129

「Hello、World!」を出力するプログラムを作成します。ただし、プログラムの最初、3番目、5番目などの文字のみを使用する場合も、結果のプログラムは「Hello、World!」を出力するはずです。

プログラムが次の場合:

abc
def

「Hello、World!」と出力されるはずですが、そうであるべきです

acdf

2文字未満のソリューションはありません。


2
出力の周りに空白がありますか?
vroomfondel

18
素晴らしい初投稿!
アダム

11
「HHeelllloo」ですべての答えを見ると、クジラを話すことを思い出しました。
ブライアンミントン

32
「Hello、World!」を避けるためのプロのヒント このような課題の組み込み:「挨拶、地球人!」のような同様の複雑さのわずかに異なる文字列を使用します
マーティンエンダー

6
「2文字未満のソリューションはありません。」すごい。
ロバートグラント

回答:


195

Python 3、61バイト

rant="partisn't"
print(("HHeelllloo,,  WWoorrlldd!!"""[::2]))

オンラインでお試しください!

printPython 3の関数であるという事実を悪用する:)

PPCGでここにある最もパルチザンなソリューション。

になる

rn=print
rn("Hello, World!"[:])

48
美しいです。
musicman523

1
@ musicman523しかし、その場合、REPLはテキストを単一引用符で囲みません。
officialaimm

1
はい@officialaimm、私はそれがないと仮定
musicman523

1
@ yamboy1他のすべての文字を削除してみてください
vroomfondel

1
私は[:]実際に働いたとは知りませんでした:oいいね!
ハイパーニュートリノ

56

Cardinal、29バイト

%
"
H
e
l
l
o
,
 
W
o
r
l
d
!

オンラインでお試しください!

他のすべての文字を削除すると、すべての改行が削除されHello, World!ます。

%"Hello, World!

オンラインでお試しください!

これが機能する理由%は、4つの基本方向のそれぞれに移動する4つの命令ポインターを作成するためです。ソースコードを残すIPは単に削除されます。したがって、最初のケースでは南に行くIPのみが残り、2番目のケースでは東に行くIPのみが残り、他のすべては単にドロップされます。どちらの場合でも、実行されたプログラムはちょうど"Hello, World!です。"各セルは単にSTDOUTに印刷される文字列モードにトグルします。ソースコードを残すとプログラムが終了するため、文字列を終了する必要はありません。

同じアイデアがBeeswaxでも機能することに注意してください。*代わりに%との`代わりに使用します"(これはBeeswaxが主にCardinalに触発されたが、六角形のグリッドを使用しているためです)。

オンラインでお試しください!(垂直)| | オンラインでお試しください!(水平)



31

実際には、2バイト

HH

説明:

H、ご想像のとおりHello, World!、スタックにプッシュします。

メインプログラム(HH)は最初のプログラムに遭遇し、スタックにHプッシュHello, World!します。Hただし、2番目では、2つの引数を使用しようとし(スタックをプッシュするには空にする必要があるためHello, World!)、失敗します。ただし、このエラーは無視され、Hello, World!暗黙的に出力されます。

2番目のプログラム(H)はHello, World!1回プッシュされ、暗黙的に出力されます。

これはFatalizeの2バイトの答えに似ていますが、これは実際には「チート」ではありません。

オンラインでお試しください!


4
良い解決策ですが、1文字の解決策に似すぎているため、これは考慮すべきではないと思います。
レオテネンバウム

32
@LeoTenenbaumどうして?ルールに完全に適合しています。
Okx

2
あなたが説明するのはそうではなく、空のスタックにHプッシュするだけHello, World!であり、スタックが空でない場合、2つの引数を期待するため、エラーが発生し、エラーは無視されます。実際、最上位の要素のみを暗黙的に印刷するわけではありません。
エリックアウトゴルファー

@EriktheOutgolferおっと。修正します。
Okx

これが、Actuallyが私のお気に入りのゴルフ言語である理由です。それは愚かな完璧なレベルです。
RShields

22

Lua、89バイト

--- [ [
print("Hello, World!")
--[[ ] ]
pCrAiLnCtU(L"AHTeOlRlFoE,L IWNoEr:lDd !:"D)
---]]

オンラインでお試しください!構文の強調表示が示すように、これは大量のコメントの乱用です。

代わりの:

--[[pit"el,Wrd"
-[]]print("Hello, World!")--]

オンラインでお試しください!

そして、便宜上、プログラムを他のすべての文字形式に変換するプログラム:オンラインで試してみてください!


私はこれが好きです!Luaのコメント形式はT-SQLに似ているように思われるので、その言語用の1つを試してみます。
BradC

3
トリックのこの種は、ブロックコメントおよび行コメントの両方を有する任意の言語(C、JS、等)のために働くべきである
CalculatorFeline

2
CALCULATORFELINE:D:D-
ライキング

2
HHeelllloo WWoorrlldd!!ちょっと退屈です:P
CalculatorFeline

19

網膜、39バイト


HHeelllloo,,  WWoorrlldd!!


(.).x?
$1

オンラインでお試しください!

他のすべてのキャラクターを取得すると、以下が得られます。


Hello, World!
()x
1

オンラインでお試しください!

最初のプログラムは、グリーティングを複製した文字列を作成します。次に、文字の各ペアを最初の文字に置き換えます。すべての空の文字列をその間にある空の文字列に置き換える空のステージもありますが、それは何もしません。2番目のプログラムは、文字「x」と一致しないため、グリーティングの作成後に何も置き換えられません。

おそらくもっと面白いことに、3番目の段階がわずかに変更された場合、最初の文字セットは同じメッセージである必要はありません。これは、fullhalfedなど、多くの同一の長さのソリューションにつながる可能性があります。




16

Javascript、67バイト

/**/alert`Hello, World`// * / a l e r t ` H e l l o ,   W o r l d `

1文字おきに削除:

/*aetHlo ol`/*/alert`Hello, World`

LaikoniのHaskellの答えと同じように、これはコメントを悪用します。


いい答え、+ 1!Java 8 answerで回答のポートを作成して2バイトを節約し変更後の追加のバイトを作成しまし// * ///**/(残念ながら/**/alert`Hello, World` 、私の場合のように奇数のバイトであるため、これは不可能です)。
ケビンCruijssen

14

Brachylog、4バイト

Ḥ~wḤ

オンラインでお試しください!

説明

~w右側の変数をに書き込み、STDOUT左側の引数を無視します。です"Hello, World!"ので、これは印刷されHello, World!ます。

1番目と3番目の文字だけを取得すると、が得られḤwます。その場合w、左の変数を書き込み、右の変数を無視するため、を出力しHello, World!ます。

2バイト

ḤḤ

オンラインでお試しください!

これは技術的には有効な答えですが、これはに出力するのではなく、プログラムの出力変数を統一しますSTDOUT。したがって、4バイトのプログラムは挑戦の精神にあると思います。


チャレンジがprintを示しているため、2バイトの答えは「技術的に」有効ではないと思います
Okx

1
@Okx印刷、紙の上に?
-theonlygusti

@theonlygusti STDOUTへの印刷を意味します。
Okx

5
@theonlygusti ため息 ...これは、デフォルトでprintが意味するものです。
Okx

3
@Okxあなたは解決策を無効にするために病になろうとしているが、実際にはそれについて無効なものは何もない。課題は「出力」のみを示します。
-theonlygusti

11

Haskell、102バイト

完全なプログラム:

main= putStr"Hello, World!";;
putSt   x ="p u t S t r  \" H e l l o ,   W o r l d !\"";
mmaaiin = main

そして、他のすべての文字を削除した場合:

mi=ptt"el,Wrd";ptt x=putStr "Hello, World!";main=mi

p u t S t rとの間のスペースを削除することにより、2バイトを削除できます\"
スリオチリズムオジーク

11

x86マシンコード、162バイト

デモ

PROG.COM MS-DOSエミュレーター、たとえばDOSBoxダウンロードして実行します。

90 B3 B4 B4 02 90 90 B3 B2 B2 48 90 90 B3 CD CD 21 90 90 B3 B2 B2 65 90 
90 B3 CD CD 21 90 90 B3 B2 B2 6C 90 90 B3 CD CD 21 90 90 B3 CD CD 21 90 
90 B3 B2 B2 6F 90 90 B3 CD CD 21 90 90 B3 B2 B2 2C 90 90 B3 CD CD 21 90 
90 B3 B2 B2 20 90 90 B3 CD CD 21 90 90 B3 B2 B2 77 90 90 B3 CD CD 21 90 
90 B3 B2 B2 6F 90 90 B3 CD CD 21 90 90 B3 B2 B2 72 90 90 B3 CD CD 21 90 
90 B3 B2 B2 6C 90 90 B3 CD CD 21 90 90 B3 B2 B2 64 90 90 B3 CD CD 21 90 
90 B3 B2 B2 21 90 90 B3 CD CD 21 90 90 B3 CD CD 20 90

削除後MINI.COM ダウンロード

90 B4 02 90 B2 48 90 CD 21 90 B2 65 90 CD 21 90 B2 6C 90 CD 21 90 CD 21 
90 B2 6F 90 CD 21 90 B2 2C 90 CD 21 90 B2 20 90 CD 21 90 B2 77 90 CD 21 
90 B2 6F 90 CD 21 90 B2 72 90 CD 21 90 B2 6C 90 CD 21 90 B2 64 90 CD 21 
90 B2 21 90 CD 21 90 CD 20

実行方法

Ubuntu / Debian用のDOSBoxをインストールします

sudo apt install dosbox

それを実行します

dosbox

DOSBOXで

mount c /home/user/path/to/your/directory
c:
PROG.COM
MINI.COM

どのように機能しますか?

機械操作コードは、アセンブリ言語命令を表します

MS-DOSで文字を出力するには、レジスタを設定して割り込みを作成します。AHレジスタは0x02になり、DLレジスタには文字が含まれます。割り込みベクトルは0x21です。

mov ah,0x2  ;AH register to 0x2 (B4 02)
mov dl,0x48 ;DL register to "H" (B2 48)
int 0x21    ;0x21 interrupt     (CD 21)

MS-DOS COMフ​​ァイルの小さなモデルは適切な選択です。ヘッダーがないためです。64Kに制限されていますが、この場合は重要ではありません。

プログラムを停止するには、0x20割り込みを使用します

int 0x20    ;0x20 interrupt     (CD 20)

魔法

1つのパラメーター0xCD0xAB opcodeコマンドを実行する場合、次のように記述します。

AB CD

ではPROG.COM

90 B3 AB AB CD 90
nop         ; No operation (90)
mov bl,0xb4 ; BL register to AB (B3 AB)
AB CD command (AB CD)
nop         ; No operation (90)

ではMINI.COM

90 AB CD
nop         ; No operation (90)
AB CD command (AB CD)

BL registerを使用しない場合、マシンコードは同じです。

発生器

16進数のテキストファイルを16進数のバイナリに変換する

cat hex_file | xxd -r -p > exec.com


-52バイトのすべての `90 90`を削除します。
NieDzejkob

また、最後のnopには到達しません。
NieDzejkob

10

Pyth、31バイト

p% 2"HHeelllloo,,  WWoorrlldd!!

オンラインでお試しください!

になる

p "Hello, World!

エラーを指摘して1バイトを削除してくれた@CalculatorFelineに感謝します。


キャラクターは、2番目ではなく最初のキャラクターから始まります。先行スペースをドロップできます。
電卓

ああ、@ CalculatorFelineに感謝します。私は、仕様書で「削除」と「テイク」を読みました。
vroomfondel


7

05AB1E、29バイト

”™ ,ï‚‚ï ! ”# ¦2 ä ø¨øJð ý

オンラインでお試しください!

説明

”™ ,ï‚‚ï ! ”                # push the string "Weekly Hello , Changed World ! "
               #               # split on spaces
                               # RESULT: ['Weekly','Hello',',','Changed','World','!','']
                ¦              # remove the first element (Weekly)
                 2ä            # split in 2 parts
                               # RESULT: [['Hello', ',', 'Changed'], ['World', '!', '']]
                   ø           # zip
                               # RESULT: [['Hello', 'World'], [',', '!'], ['Changed', '']]
                    ¨          # remove the last element
                     ø         # zip
                               # RESULT: [['Hello', ','], ['World', '!']]
                      J        # join each inner list
                       ðý      # join on space

他のすべての文字を削除すると、コードが残ります

”Ÿ™,‚ï!” 2äøøðý

オンラインでお試しください!

説明

”Ÿ™,‚ï!”       # push the string "Hello, World!"
        2ä     # split in 2 parts
               # RESULT: ['Hello, ', 'World!']
          ø    # zip, as the string has an odd length the space is lost
               # RESULT: ['HW', 'eo', 'lr', 'll', 'od', ',!']
           ø   # zip again
               # RESULT: ['Hello,', 'World!']
            ðý # join on space

7

Mathematica、62バイト

P0r0i0n0t0@0"0H0e0l0l0o0,0 0W0o0r0l0d0!0"Print@"Hello, World!"

を返し"0H0e0l0l0o0,0 0W0o0r0l0d0!0" Null P0r0i0n0t0[0]Hello, World!副作用として出力します。(REPLではなく)プログラムとして実行すると、戻り値は出力されません。

他のすべての文字を削除した後:

Print@"Hello, World!"rn@Hlo ol!

戻りNull ol! rn[Hlo]、印刷しHello, World!ます。


7

ゼリー26 25バイト

““3ḅaė;œ»ḷ“ 3 ḅ a ė ; œ »

オンラインでお試しください!

1文字おきに削除すると、次のコードが残ります。

“3a;»“3ḅaė;œ»

オンラインでお試しください!

使い方

““3ḅaė;œ»ḷ“ 3 ḅ a ė ; œ »  Main link.

““3ḅaė;œ»                  Index into Jelly's dictionary to yield
                           ["", "Hello, World!"]. 
          “ 3 ḅ a ė ; œ »  Index into Jelly's dictionary to yield.
                          " FullERebitingBEfluffiest adoptable".
         ḷ                 Take the left result.
“3a;»“3ḅaė;œ»  Main link.

“3a;»          Index into Jelly's dicrionary to yield " N-".
               Set the argument and the return value to the result.
     “3ḅaė;œ»  Index into Jelly's dicrionary to yield "Hello, World!".
               Set the return value to the result.

7

立方 V2.1、222のバイト

+0503 @@6 :22 //1 +050501 @@6 :55 +0502 @@6@6 :33 //1 +050502 @@6 :55 +03 //1 +04 @@6 :55 //1 +03 @@6 :55 +01 //1 +0504 @@6 :33 //1 +050502 @@6 :55 +01 //1 +050502 @@6 :55 +0502 @@6 :11 //1 +050501 @@6 :55 +01 //1 +03 @@6

オンラインでお試しください!

他のすべての手紙:

+53@6:2/1+551@6:5+52@66:3/1+552@6:5+3/1+4@6:5/1+3@6:5+1/1+54@6:3/1+552@6:5+1/1+552@6:5+52@6:1/1+551@6:5+1/1+3@6

オンラインでお試しください!



6

助けて、WarDoq!、2バイト

Hi

オンラインでお試しください!

HプリントはHello, World!i何もしません。

助けて、WarDoq!2つの数値を追加して素数をテストできるため、このメタ投稿ごとに有効なプログラミング言語と見なされます。


なぜこれがダウン投票されたのですか?
ウリエル

NOPと大規模なスペースは精神に反しています。
RShields

1
+1は、結果のソースコードが出力されるメッセージを再強調する方法が斬新であるためです。
-TOOGAM


6

PHP、53バイト

#
echo date(
$e_c_h_o='\H\e\l\l\o\,\ \W\o\r\l\d\!
');

他のすべてのキャラクターを削除した場合:

#eh ae
echo'Hello, World!';

6

オクターブ、49 45バイト

Octaveはインデックス作成にブラケットを必要としないため、4バイトを節約しました。

'HHeelllloo,,  WWoorrlldd!! ' (1:2 : 3 ^ 3)''

オンラインでお試しください!

そして、削減されたもの:

'Hello, World!'(:    )'

オンラインでお試しください!

説明:

最初のコードには、文字列内の文字が複製されているためHello, World!、1秒ごとに削除されるときに残ります。ブラケットとアポストロフィが保持されるように、いくつかのスペースが追加されます。

インデックスは本当に1:2:endです。27文字あり、使用できないend27、文字を削除する必要があるため、3 ^ 3代わりに使用します。3文字ごとに削除すると、インデックス付けが(:)(およびいくつかの追加スペース)になります。

(:)「平坦化して垂直ベクトルに変換することを意味します。そのため、を使用して転置する必要があり'ます。元のコードで文字列を転置する必要はありませんが、二重転置は機能するため、最初の文字列はを使用''して2回転置され、2番目は1回だけ転置されます。


6

APL(Dyalog)35 34バイト

-1 Martin Enderに感謝します。

'0H0e0l0l0o0,0 0W0o0r0l0d0!0'~  0

オンラインでお試しください!

'0H0e0l0l0o0,0 0W0o0r0l0d0!0' 削除可能なフィラー文字としてゼロを含むメッセージ

~ を除く

 フォーマット済み(文字列化)

0 ゼロ

奇妙な文字だけを残して、これはになり 'Hello, World!' ます。


5

T-SQL、75バイト

---
PRINT 'Hello, World!'
/*
-P-R-I-N-T-'-H-e-l-l-o-,- -W-o-r-l-d-!-'
---*/

CalculatorFelineのLUAバージョンに触発された、単一行および複数行のコメントの乱用。

すべての偶数番号の文字を削除した後、そのうちのいくつかは改行です:

--PIT'el,Wrd'/
PRINT'Hello, World!'--/

5

Javascript、73バイト

a ='a0l0e0r0t0`0H0e0l0l0o0,0 0W0o0r0l0d0!0`0/0/';eval(a.replace(/0/g,''))

文字列を作成しaたコンテンツをa0l0e0r0t0`0H0e0l0l0o0,0 0W0o0r0l0d0!0`0/0/、すべて削除されます0「が与える秒alert`Hello, World!`//である、evalD」。

プログラムの他のすべてのキャラクターを取得すると、

a=alert`Hello, World!`//;vlarpae//,')

これHello, Worldは、完全なプログラムで評価されたものと同じ方法でテンプレート文字列構文を使用して警告し、呼び出しの結果を保存しa、洞察に富んだコメントを含め//;vlarpae//,')ます。


5

> <>、47バイト

元の:

| v~" H e l l o ,   W o r l d ! "

~o<< ;!!!? l

1文字おきに削除:

|v"Hello, World!"
o<;!?l

オンラインで試してください:オリジナル変更

元のプログラムは、「Hello、World!」のキャラクターをプッシュします スタックに(逆順で)スペースを散在させてから、スタックの長さがゼロになるまで文字を交互に印刷して削除します。2番目のプログラムも同じことを行います~が、削除の指示はなくなります。

エラーで停止することを気にしない場合は、Martin EnderのCardinalブックからリーフを取り出すことができます。変更されたコードは

\"!dlroW ,olleH"!#o#

元の文字は同じですが、39バイトの場合、すべての文字の間に改行が挿入されます。それらをオンラインで試してください:originalmodified


5

、、、、 34 バイト

 2"Hteoltlaol,l yWhourmladn!! "⟛

偶数番号の文字を削除するには...

 "Hello, World!"

説明

すべての文字で:

 2"..."⟛

               no-op
 2             push 2 to the stack
  "..."        push "Hteoltlaol,l yWhourmladn!! " to the stack
       ⟛      pop 2 and the string and push every 2nd character of the string
               implicit output

偶数文字なし:

 "..."

               no-op
 "..."         push "Hello, World!" to the stack
               implicit output

5
これは、これが競合していないと言う必要がないことを意味します。
FryAmTheEggman

2
ただし、すべての偶数インデックスの文字を保持することになっています...(0インデックス)
...-HyperNeutrino

おっと、修正しました。別のキャラクターを追加するだけです(笑)。
完全に人間

4

Brainfuck、155バイト

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

オンラインでお試しください!

1文字おきに削除:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.