こんにちは世界!文字の繰り返しが制限されている


79

選択した言語で、文字と改行を正確に出力するプログラムを作成Hello world!します。コード:

  • 2文字を超える文字を使用しないでください(英数字、記号、空白など)
  • 外部リソースを使用しないでください
  • ユーザー入力を使用しないでください
  • 何も出力しないでください

有効なpythonプログラムの例:

print("He%so world!"%(2*'l'))

無効なpythonプログラムの例(文字「r」が3回使用されます):

print("Hel"+chr(108)+'o world!')

勝者は、14日後の投票数が最も多い人です。

編集:勝者が選ばれました!この質問にご協力いただきありがとうございます!


25
「有効な」Pythonの例で繰り返される文字oはどうですか。また、これら:-"'()
アダムスパイト14年

15
@AdamSpeightどういう意味ですか?仕様に従って、文字は2回だけ使用されます。
ジョシュ14年

5
@AdamSpeight ...文字通り同じです。
VisioN 14年

4
キャラクターは2回以上表示されるべきではない、つまり、1回以上繰り返されるべきではないということだと思います。
マイケルケイ14年

56
Brainfuckは問題外だと思います...-jub0bs 14
1

回答:


61

ルビー(1.9+)

これは人気コンテストなので、「Hello world!」のキャラクターを使用しないようにしましょう。まだ他の文字を最大2回だけ使用している場合:

puts("S\107VsbG8gV29ybGQhCg".unpack(?m))

ちなみに40文字です。

バッシュ

そして、これはユニコードマジックを使用しています。

ノート:

  • 元の文字は他の場所に表示されますが(ルビーの例とは異なり)、印刷された文字列には非ASCII文字のみが含まれます。
  • 3つのスペースのうち2つは実際にはタブであるため、2回以上表示されるutf-8文字はありません。
  • バイナリとして、オクテットのいくつかは2回以上表示されますが、できればルールに反しないことを願っています。しかし、私はそれらを解決しようとしています。

コード:

echo '𝓗𝐞𝑙𝒍𝓸 𝓦𝗈𝖗𝖑𝘥¡'|iconv -t  asCIi//TRANSLIT

適切なフォントがインストールされていない場合、次のようになります。

code as image

hexdumpは次のとおりです。

00000000  65 63 68 6f 20 27 f0 9d  93 97 f0 9d 90 9e f0 9d  |echo '..........|
00000010  91 99 f0 9d 92 8d f0 9d  93 b8 e2 80 8a f0 9d 93  |................|
00000020  a6 f0 9d 97 88 f0 9d 96  97 f0 9d 96 91 f0 9d 98  |................|
00000030  a5 c2 a1 27 7c 69 63 6f  6e 76 09 2d 74 09 61 73  |...'|iconv.-t.as|
00000040  43 49 69 2f 2f 54 52 41  4e 53 4c 49 54 0a        |CIi//TRANSLIT.|
0000004e

デフォルトの文字セットがutf-8であるマシンで実行する必要があります。次の環境でiTerm2を使用してOSX10.8で試しました。

bash running in iTerm2

PHP 5.4

これはzLibを使用します:(残念ながら文字eとを使用しますo

<?=gzuncompress('x▒▒H▒▒▒W(▒/▒IQ▒!qh');

Hexdump:

00000000  3c 3f 3d 67 7a 75 6e 63  6f 6d 70 72 65 73 73 28  |<?=gzuncompress(|
00000010  27 78 9c f3 48 cd c9 c9  57 28 cf 2f ca 49 51 e4  |'x..H...W(./.IQ.|
00000020  02 00 21 71 04 68 27 29  3b                       |..!q.h');|
00000029

+1

重複のテストに使用したルビー2.0コードは次のとおりです。

d=ARGF.read
p [d.split(//),d.unpack('C*')].map{|x|x.inject(Hash.new(0)){|i,s|i[s]+=1;i}.select{|k,v|v>2}}

2
私は常にユニコードの賢さを高く評価していますが、あなたのbashの試みは質問の仕様を満足していないようです。「プログラムの書き込みを正確に文字を出力しHello world!、改行が続くが、」
ホタル

14
@FireFly:それは満足しています。ターゲットエンコーディングのiconvは、ascii//translitUnicode文字を基本的なASCIIに音訳します。そしてもちろんエコーは、改行を追加しますので、(私たちはオクテットの類似性を考慮していない場合)、この1は仕様に合っ
SztupY

5
私のシステムでは、私が得るHello World?代わりにHello World!
マリナス

1
@SztupYああ、あなたは正しい、私の悪い。非常に賢い、私はそれが好きです!
ホタル14年

1
重複チェッカーも繰り返し仕様に適合した場合、ボーナスポイントはいくつ獲得できますか?:-)
corsiKa 14年

55

より表現力豊かな言語を使用する必要があります。

中国語、 6 4   3文字

喂世!

これでグーグル翻訳を実行すると、 Hello world!

(@sreservoirと@Quincunxに感謝します)


33
ルールベンディングの+1 ... 「選択した言語で...」
WallyWest 14年

4
大好きです。しかし、それはどのくらい正確にプログラムですか?
ピエールアラード14年

3
実際には、Google翻訳言語のプログラムとしてそれを見ることができます-そのサブ言語としての中国語の場合:)
トマス14年

2
+1。良いアイデア。世界=Shìjiè=世界。你好=nǐhǎo=こんにちは。「World、Hello!」「Hello World!」に変換されます。それはもう少しゴルフダウンすることができます:你好世!
ジャスティン14年

2
喂世!...を犠牲にしてさらにゴルフダウンすることができます。
muhmuhten

45

HQ9 +、1文字

H

シンプルに保つ:)


7
HQ9 +はコンマを出力します;)
ジョシュ14年

8
私はまだあなたの答えを締め出します...それは結局のところ人気コンテストです、ルールは風のためです!
ジョシュ14年

26
@Joshこれは、コメントのダウンボットボタンを見逃す珍しいイベントの1つです。ルールを捨てると、コンテストを正当化するものは何も残りません。
ハワード14年

5
@Howard汚い気分です。私はあなたとジョシュさんのコメントupvoted
たけた

22
すべてのprint Hello World質問は実際にはwho can submit a HQ9+ answer faster質問です。
totymedli 14年

44

C、192文字

#
#
/*$$@``*/ATION_[]={9.};main(BBCDDEEFFGGHJJKKLLMMPPQQRRSSUUVVWWXXYYZZabbdefgghhjjkkmpqqsstuuvvwxyyzz) {printf("He%clo \
world!%c\
",2^7&!8.&~1|~-1?4|5?0x6C:48:6<3>2>=3<++ATION_[0],'@'^79-5);}

これはゴルフではないので、私はいくつかの楽しみを持ち、すべてのキャラクターを正確に 2回使用することしました(退屈なので、コメントにできる限り少なくします)。私のコードにはたくさんの退屈な「デッド」コードも含まれているので、私はひどくうまくやっていなかったことに気づきました(文字通りの意味ではなく、要件を満たすために使用されるプレースホルダー文字の意味で)。とにかく、2文字の制限があるため、これは驚くほど難しい(しかし楽しい)でしたので、残念ながらこれ以上面白いものは思いつきませんでした。それは私に新しい問題のアイデアを与えました...

(@ugorenのコメントごとに更新。)


3
創造的に印象的。私はそれが好きです。
ジョシュ14年

行3と4を終了するスラッシュ `\`は、改行ではなく行の継続を行います。また、4行目はEOFで終了しているため、合法になります。
ジョシュ14年

1
.分数に使用すると簡単にコメント解除できると思います。また、配列を宣言してを使用することもできます[]
ウゴレン14年

@ugorenの良い呼びかけ.; 構造体へのアクセスにのみ使用することを考えました。<S>配列宣言については、私は外だ,が原因のprintf呼び出し、と私は外にもよ;S、SO、私は私は1つを宣言することができるかわからない。</ S>おやおや、私は置き換えることができますATION_。 ..
FireFly 14年

44

Vimコマンド(18キーストローク)

iHeEsc3alEscio WorRightd!Enter

キーストロークを2回以上繰り返しません。

それはちょっと、それはまだ入力にそのシーケンスを必要とするユーザーのため、「ユーザー入力」ルールに違反していますが、単に明示的に行うことなく、それを実行しているので、私は、あなたがマクロまたはnnoremapとしてそれを格納する場合、事前に、それは数えるだろうと仮定しますそれを実現するための入力。

またnocompatible、外部リソースの使用としてカウントされる可能性があるため、設定する必要があるため、以下に別のバリエーションを提供しました。


Vimコマンド(21キーストローク)

iHeEsc3alEscio WorCtrl+[$ad!Enter

このバリエーションをnocompatible設定する必要はありませんが、代わりにEsc使用することCtrl+[で3回使用すると回避できます。


16
あなたが内の文字の話をしている場合はRightEsc、とEnter、彼らは文字通りそれらの文字はありません。Vimはキーストロークを扱います。これは、このコンテストの目的での文字と同等と見なします(「2回以上繰り返さない」ルール)。iキーストロークを2回、<Right>キーストロークを1 回だけ使用します。に関してはE、私はまったくそれを使用しません-しかし、私は<Esc>二度<Enter>一回使用します。
ジョーZ. 14年

6
今私は... Emacsのは、MXのhello世界のコマンドを持っていないことをがっかり
RemcoGerlich

4
たとえそれが行われたとしても、それは3 l秒です。
ジョーZ. 14年

1
する必要があることに注意してください:set nocompatible
jazzpi

1
驚くべきことですが、私自身Rightはあまりvim-y を使用していません。
gefei 14年

29

ピート-キャラクターは一切いません!

Hello world in Piet


7
コーデルを「キャラクター」と見なします。
パエロエベルマン14

3
@PaŭloEbermannユニークなコーデルとは何だと思いますか?EGの異なる形状?色?サイズ?それらのいくつかの組み合わせ?
ApproachingDarknessFish 14年

1
@ValekHalfHeart固有のコーデルの定義は、言語の仕様に記載されています。これは、単一の色付きピクセルとして単純化できるコーデルのブロックです。
plannapus 14年

@plannapusその場合、私はこの挑戦がPietで技術的に可能だとは思わない。私は創造的な何かを思い付くかもしれません。
ApproachingDarknessFish 14年

@ValekHalfHeartああ、それはこの答えに対する批判ではありませんでした:私はそれが大好きです!とにかく、この挑戦​​はコードゴルフではありませんでした。
plannapus 14年

26

Perl、29文字

この回答には、xレートの詰まりが含まれています!

say"07-8*d<#B+>!"^xRATEDkL0GZ

Perl、23文字

短いが、ポルノシューズはありません。:-(ただし、基本的な考え方は同じです...

say'0@@lo World!'^"x%,"

Perl、20文字

退屈な...

say"Hello Wor\x6Cd!"

7
ええと...変態?+1 :)
ジョシュ



18

Scala:34 29文字

私はこのことを誇りに思っています。

printf("He%c%co world!\n",108,108)

重複した「l」、「r」、引用符、角括弧を克服するのは本当に大変でした。それから、古いJava printf関数を発見しました。これは、%cフォーマット指定子が与えられると、数字を文字にうまく変換します。

更新

MrWonderfulは、文字列内の2番目の「l」を手動で使用することで、一連の文字全体を保存できることを指摘して、すばらしいことをしました!

printf("Hel%co world!\n",108)

4
@KCaloux、最大2個の 'l'が許可されているので、28でprintf( "Hel%co world \ n"、108)はさらに良くないでしょうか?
MrWonderful 14年

@MrWonderfulあなたは絶対に正しいと思います!(また、私はちょうど私が含まれるように忘れたことに気づい「!」)
KChaloux

私が理解していることから、これは有効なエントリではありませんが、良い試みです。printf含まれていrないようworld。同じことが、o複数回使用される手紙にも当てはまります。これは、「無効なPythonプログラムの例(文字『R』 3回使用されている):OPから次の文の私の解釈に基づいておりprint("Hel"+chr(108)+'o world!')、」
javatarz

@JAnderton ruby​​プログラムでスクリプトを解析し、2回以上文字が含まれていないことを確認しました。もう一度読んでください。3つではなく2つのrsがあります。「printf」に1つ、「world」に1つです。python 1が無効な理由は、それが含まれているためですchr
KChaloux 14年

16

Python 3 [38バイト]

exec('import '+chr(95)*2+"h\x65llo__")

import __hello__外部のリソースとは考えません。


15

Perl:34文字

$_="He12o wor3d!
";s{\d}{l}g;print

サンプル実行:

bash-4.1# perl -e '$_="He12o wor3d!
> ";s{\d}{l}g;print'
Hello world!

(大したことではありません。s///これらの派手な区切り文字で私の人生で少なくとも一度使用するために投稿されました。)


15

PHP、33文字

PHPがどれだけ寛容で理解しているのかが大好きです!

<?=Hel.str_rot13("yb jbe").'ld!';

削除される前(または、まだ存在する場合、私は完全に盲目です)、「No brainf * ck?:D」というコメントを見ました。ご存知のように、BrainF * ckでソリューションを作成することはほとんど不可能です。しかし、私はこれをなんとかlulzのためにコーディングすることができました。

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

BFインタープリターがない場合、上記のコードはPHPを1つだけ出力します:P


このようなコードでさえ有効だとは知りませんでした!PHPタグは閉じHelられておらず、文字列は引用符で囲まれていません。また、私はstr_rot13前に聞いたことがありません。
アイカンヤシュト14年

1
@ PHP終了タグがEOFに必要な、とあなたが引用符なしの文字列を置けば、それはその名前と同じ内容の宣言されていない定数であると仮定し、警告を与えていないAycanYaşıt
Einacio

1
.Hel前に置くことで、警告を回避できます(そして最初のを保存します)<?=
パエロエベルマン14

4
@PaŭloEbermann– Hel<?=str_rot13("yb jbe")?>ld!
MirroredFate

2
@PaŭloEbermannこれは純粋なPHPではなくなったため、これを使用することは不正行為のようなものです。
ヴェレオ14年

13

HTMLフィドル -21文字

Hel&#108;o World!<br>

末尾の改行も含まれますか?
ジョシュ14年

Doh ...その要件を満たしていません!そこに<br>を追加します。
Briguy37 14年

7
@netinept:改行ではなく、カウント\nを要求したので、<br>
クリス

1
しかし、この特徴rはソリューション内で繰り返されます。要件を誤って解釈しましたか?
javatarz 14年

2
「l」と「o」も使用できますが、各文字は最大で2回使用できます。
xem

12

ルビー:27文字

puts [:Hel,'o wor',"d!"]*?l

サンプル実行:

bash-4.1# ruby <<ENDOFSCRIPT
> puts [:Hel,'o wor',"d!"]*?l
> ENDOFSCRIPT
Hello world!

Ruby:25文字

(Vacheのコメントに基づきます。)

puts 'He'+?l*2+"o world!"

ルビー:23文字

DankoDurbićのPowershell 回答のコピー。)

puts"He#{?l*2}o world!"

puts 'He'+'l'*2+'o world!'1文字短いです!
ディー参照14年

3
しかし、6個の「 '」があります…
マナトワーク14年

ハハ私は文字に非常に集中していたので、私はそれに気づきませんでした。気にしないで!
ディー参照14年

1
プットの後にスペースを削除し、それを23にする-puts"He#{?l*2}o world!"
ゼロファイバ

1
@SampritiPanda、p出力に引用符が含まれます。必要な出力形式に厳密に従うことを好みます。しかし、あなたは正しい、スペースは必要ありません。ありがとうございました。
マナトワーク14年

12

JavaScript、66文字

alert('Hel'+window.atob("\x62G8gd29ybGQhCg=="));//rH+in.\x689yQhC;

FireFlyから着想を得て、このコードで使用されるすべての文字は正確に2回使用されます。


一部の文字を一度だけ使用することが許可されていると思うので、コメントをドロップできます。
ジョンドボラック14年

2
@JanDvorak-まあ、彼はそのようにできたはずですが、この解決策は、すべてのキャラクターを正確に2回使用することの血まみれさの賛成に値すると思います。:-)
ボブジャービス14年

6
+1ですが、コメントとして意味不明なものを追加するだけで、各文字を正確に2回使用するのは簡単です。
カミロマーティン14年

11

C-43文字

main(){printf("Hel%co World!%c",'k'+1,10);}

出力

Hello World!

文字数

' ' Count: 1    '!' Count: 1    '"' Count: 2    '%' Count: 2    ''' Count: 2
'(' Count: 2    ')' Count: 2    '+' Count: 1    ',' Count: 2    '0' Count: 1
'1' Count: 2    ';' Count: 1    'H' Count: 1    'W' Count: 1    'a' Count: 1
'c' Count: 2    'd' Count: 1    'e' Count: 1    'f' Count: 1    'i' Count: 2
'k' Count: 1    'l' Count: 2    'm' Count: 1    'n' Count: 2    'o' Count: 2
'p' Count: 1    'r' Count: 2    't' Count: 1    '{' Count: 1    '}' Count: 1

mainなどは必要ありませんか?
ホタル14年

@FireFlyそうですね!プログラムを書くと言っていました。
カークバッカス14年

それはCですが、C ++ではありません。C ++には暗黙的なintがありません(そして別のものをspareしむことはできませんi
ベンフォイト14年

@BenVoigt Okie dokie!
カークバッカス14年


9

nginx.conf

return  200 "He&#x6clo wo&#x72ld!\n";

動作中:

% curl -6 http://localhost/ | lynx -dump -stdin
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    21  100    21    0     0  20958      0 --:--:-- --:--:-- --:--:-- 21000

   Hello world!

%

この溶液中の4つのスペースがあります...
ジョシュ・

3
@Josh、実際には5つあります。しかし、最初の4つのうち2つがタブであり、最後の1つが壊れないスペースであると考えることはできませんか?:-)
cnst 14年

それは私のために働く!
ジョシュ14年

実際、@ JoshはHTMLを使用しているため、これ以上は必要ありませんset。これには現在3つのスペースしかありませんが、そのうちの1つはタブである可能性があります!
cnst 14年

とてもうまくできました。
ジョシュ14年

9

Emacsコマンド(15キーストローク)

He<Ctrl-3>l<Left>o wor<End>d!<Enter>

そのvimの回答が合法である場合、これも必要です:)

冗談はさておき、マクロになることもあります:)

もっとナンセンスなことは別として、私はおそらくもう少し絞ることができますが、これは当分の間は十分に良いようです(vimに勝るので)。

PS、私のナンセンスをすべて無視してください(私は(まれですが)vimも使用しています!)。


2
私はまだvim> emacsだと思います。
ジョーZ. 14年

6

Befunge 98

a"!dlrow ol":'e'Hck,@

これは、すべての文字が2回現れるバージョンです。

bka!e:dw"H@!dlrow  ol":'e'Hbk,a,@

スタックに大量のジャンクを残します。

ボーナスとして、すべてのキャラクターがIPによって何かをします。



5

実際に私は浮気が好きではありません:P

Python

print("!dlrow os%eH"[::-1]%('l'*2))

2
python2用であることを指定する必要があります。python3では、出力として逆の文字列を取得し、次にTypeError
バクリウ14年

1
printのPy3K引数で使用するには、括弧で囲む必要があります。print("!dlrow os%eH"[::-1]%('l'*2))両方のバージョン(Python2およびPy3K)で動作します。
AMK 14年

4

GolfScript

'He

o world!'n/"l"*

2つの改行を置換します(残念なことに、置換に必要な3つ目の改行は組み込みにより提供されますn)。両方のタイプの文字列リテラルを使用して、引用符の4重コピーを回避します。l元の文字列で2回以上出現する唯一の文字であるため、それほど難しくありません。


「!」を忘れました。
ハワード14年

@Howard、それを見逃した。おっと。
ピーターテイラー14年

文字oも繰り返されます
アダム

1
@AdamSpeight:文字は2倍しかありませんo。ルールでは、キャラクターを2回以上持つことは許可されていません。
ProgramFOX 14年

4

うーん。

Cでは、これらの規則が与えられた場合、#definein)が原因で1つだけ、OR定義(())を最大2つの関数呼び出ししか持つことができません。

私はおそらくそれを行うには1つの方法しかないと思います(おそらく間違っていますが):

main(){puts("Hello w\x6fr\154d!");}

末尾の改行を出力する必要があります。Cでこの挑戦を行うことは困難である...
ジョシュ

1
@ジョシュ私はただのputs()代わりに使用する必要がありprintf()ます。
オベロン14年

2
しかし、oinの何が問題になっていworldますか?
VisioN 14年

@VisioN同じコードの古いドラフトで(そのようなプログラムを書くのが実際にどれほど難しいかを理解する前に)別の場所で別の 'o'を使用しました。しかし、これはcode-golfではないので、修正する必要はないと思います。
オベロン14年

4
実際、すべての回答が文字数を表示している理由はわかりません。
オベロン14年


4

C-46文字

main(){printf("He%clo wor%cd!\x0d",'l',108);}

プリントアウト:

こんにちは世界!


あなたがゴルフを目指しているなら、うまくいくmain(){printf("He%clo world!%c",108,10);}はずで、あなたにいくつかの炭を節約します。
ホタル14年

@FireFlyあなたは正しい、あなたは私に3文字を保存するでしょう。あなたの提案も完璧に機能します。
フィリップキンケード14年

4

フーガ

エソランwikiから:

ここに画像の説明を入力してください

そして、ソースコードを聞くことができます


11
これは無効だと思います。右手に4つ以上のミドルcがあります。
ジャスティン14年

4
9番目の小節の4つの連続したGの文字列は言うまでもありません。
ジョーZ. 14年

これを書いたのですか、それともレンダリングするだけですか?esolangアーカイブのMIDIにリンクするとします。
ホタル14年

4
盗作の場合は-1。これはesolang wikiからです。引用しないでください。編集:元に戻しました。現在、esolang wikiが引用されています。
ジャスティン14年

同じノートを2回以上使用する場合は-1。
エリックアウトゴルファー16年

4

PHP

32文字

l!= Lであるため、文字を2回以上使用していないことに注意してください。

He<?=strtolower("LLO WOR");?>ld!

また、Stack Overflowが表現でそれを削除しているにもかかわらず、の後に改行があることに注意してください!


1
3つのスペースを使用していますが、PHPタグの近くのスペースを削除することで修正できると思います。:P
ヴェレオス14年

1
あなたのコメントを読む前に(実際には別の答えから)
フランシスコプレゼンシア14年

出力 "H"は大文字ではないのですか?
デビッドケーリー14年

完全に真実、それも見逃した):
フランシスコプレゼンシア14年

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