別の「Hello World」プログラムを作成する「Hello world」


19

hello world文字列(「Hello world」、「Hello、World」など)およびソースコードを出力するプログラムを作成します。出力はstdoutまたは同等のものに書き込まれます。Hello World文字列はソースコードに埋め込まれています。

たとえば、の出力は

(some source code here)hello world(some source code here)

出力が再度コンパイルまたは解釈されると、同様の出力が作成されますが、hello world文字列には異なる句読点または大文字を使用する必要があります。たとえば、前の例では次の出力を作成できます

(some source code here)hello, wORld(some source code here)

これらの例の各「(ここのソースコード)」は、実行のたびに変更される場合もあれば、同じ場合もあります。

出力には、有効なhello world文字列を1回だけ含める必要があります。無効なhello world文字列をいくつでも含めることができます。ソースコードには任意の量のコメントを含めることができ、hello world文字列をコメントに埋め込むことができます。最初のプログラムには、ゼロまたは1つの有効なHello World文字列を含めることができますが、それ以上はできません。

次の句読点が有効です。

hello, world
hello world
helloworld

すべての大文字を使用できます。たとえば、これらは有効なhello world文字列です。

Hello, world
hellO WORld
HELLoworlD

これらの文字列は無効です。

Hello     world
Hello(newline)world
Hello,world
Hello, Steve

次の条件のいずれかが満たされると、プログラムはすぐに失敗します。

  • 以前の実行中に出力されたhello world文字列を出力します。
  • 出力が同じ言語の有効なソースコードではなくなった、または
  • 出力には、有効なhello world文字列が1つだけ含まれていません。

プログラムは、少なくとも2回の最初の実行が成功しない限り、このコンテストでは無効です。これは、3番目の出力が無効であることを意味します。プログラムの出力はランダムではない場合があります。最初の実行では常に同じ2番目の出力が作成され、2番目の実行では常に同じ3番目の出力が作成されます。

スコアは、初期プログラムのソースコードのバイト数として計算されます。最低スコアが勝ちます。

次のボーナスが適用されます(最大-60%):

  • -5%*(N-2)。Nは、プログラムが無効な出力を生成するまでの実行のインデックスです。このボーナスの上限は-50%です。プログラムが12回以上成功すると、最大ボーナスを獲得できます。
  • 出力(最初のソースコードを含む)に3つの有効な句読点の選択肢がすべて含まれている場合、-10%。

送信には最初のソースコードが含まれている必要があり、成功した実行の出力も含まれている必要があります。プログラムが12回以上成功した場合は、12回の実行の出力を追加します。

次の行は最初のソースコードです。実行するのは、最初の実行です。

hello world(some source code here)

次の行は、最初のソースコードコードからの出力です。これが最初の出力です。

hello, world(some source code here) 

次の行は、2回目の実行からの出力です。2番目の出力です。

helloworld(some source code here)

最初の出力を実行すると、このプログラムは-10%のボーナスの対象となりました。つまり、2つの出力と1つの元のコードがあり、それらはすべて異なる句読点を持っています。さらに、2番目の出力が有効だったため、このプログラムはこのコンテストの対象となります。

次の行は、3回目の実行からの出力です。3番目の出力です。

Helloworld(some source code here)

次の行は、4回目の実行からの出力です。4番目の出力です。

hellworld(some source code here)

この出力は無効でした。最後の有効な実行のインデックスは4でした。このプログラムは、句読点からの-5%*(4-2)ボーナスと-10%ボーナスの対象です。これにより、合計で-20%になります。最初のソースコード(「hello world(ここにソースコード)」)の長さは34バイトであったため、最終スコアは27.2です。


1
通常のクインルールが適用されますか、それともプログラムは独自のソースファイルを読み取ることができますか?
マーティンエンダー

1
通常のクインルールが適用されます。

元のコードはボーナスにカウントされますか?同様に、元のコードには有効なコードを含める必要がありますhello worldか?
マーティンエンダー

1
元のコードはボーナスにカウントされます。元のコードに有効なHello Worldを含める必要はありません。

その最新のルール変更について確かですか?「最初のプログラムには有効なhello world文字列を含める必要はありません。または、複数の有効なhello world文字列を含めることができます。」私はボーナスを得るために元のソースコードにコメントとして不足しているバリエーションを追加します(ほとんどの場合、それはおそらくない価値をまだ抜け穴のように見える)ことができ
ファビアンSchmengler

回答:


8

Pyth、17バイト

別のPythソリューション:

"r\"helloworld\"1

出力:

r"helloworld"1

2番目の出力:

HELLOWORLD

現在、ルールは「次の条件の1つが満たされるとすぐにプログラムが失敗します。出力は同じ言語の有効なソースコードではなくなります」および「最初の実行が少なくとも3回成功しない限り、このコンテストに対してプログラムは無効です」と述べています。 。HELLOWORLDはPythで有効なプログラムですか?はいの場合は、その出力も投稿するか、それが何をするのか説明してください。そうでない場合、このプログラムは無効だと思います。

さらに、このプログラムが同じ文字列の繰り返しに関する規則に違反しないことを明確にしたいと思います。このソリューションは、最初のソースコードにあった「helloworld」を繰り返します。ルールは、前の出力にあった文字列の繰り返しのみを禁止します。2番目の出力が有効なPythプログラムである場合、このソリューションは完全に有効です。

留守番の時には、ルール「とは、少なくとも2回の最初の実行が成功しない限り、あなたのプログラムがこのコンテストのために有効ではありません」でした
ファビアンSchmengler

ああ、あなたは正しい。最初の投稿の例では、2つの出力=有効なソリューションであると述べているため、なぜ変更したのかわかりません。これを反映するようにルールを修正します。したがって、ソリューションは有効です。また、現時点で最も有効なソリューションです。

9

Mathematica、214-50%= 107バイト

(a = Characters[StringJoin["helloworl", "d"]]; b = Apply[StringJoin, Tuples[Transpose[{a, ToUpperCase[a]}]], {1}]; StringReplacePart[ToString[#0, InputForm], b[[FirstPosition[b, "helloworld"] + 1]], {180, 189}]) & 

ここで文字列数を最適化することにしました。これは、大文字と小文字のすべての組み合わせを通過することなく、1024個のプログラムに対して実行されます。実行はここで見ることができます


1
空白をゴルフで消し去り、Mathematica quinesで接頭辞と中置記法を使用できないのは残念ですね。;)(これは、コードを文字列に保存し、s評価する逆のクインアプローチが機能するのに十分な長さかもしれませんToExpression。)
マーティン・エンダー

6

Vitsy、33-33 * .05 *(11-2)= 18.15バイト

へえ!それを打ち負かす!おそらくそうなります。:c

最初の出力:

'0DV \ {25 ^ -V \}} 1+ {rd3 * Z; helloworld
'文字列としてキャプチャを開始
 0DVスタックに0をプッシュし、最終変数として設定します。
    \次の項目をこの回数繰り返します。(出力では1、2、3 ...)
     {スタックを左に回転させます。
      25 ^ 32をスタックにプッシュします。
         -一番上のアイテムを減算します-これにより、小文字が大文字になります。
          V \次の項目を最後の変数回実行します。
            }スタックを右に回転させます。
             } そしてまた...
              1+を追加します。これにより、このコードの0が1、2になります...
                rスタックを逆にします。
                 d3 *文字 'を取得
                    Zスタック内のすべてのアイテムを出力します。
                     ; 実行を終了します。
                      helloworld操作する文字列。

2番目の出力:

'1DV \ {25 ^ -V \}} 1+ {rd3 * Z; helloworlD

3番目の出力:

'2DV \ {25 ^ -V \}} 1+ {rd3 * Z; helloworLD

4番目の出力:

'3DV \ {25 ^ -V \}} 1+ {rd3 * Z; hellowoRLD

5番目の出力:

'4DV \ {25 ^ -V \}} 1+ {rd3 * Z; hellowORLD

6番目の出力:

'5DV \ {25 ^ -V \}} 1+ {rd3 * Z; helloWORLD

7番目の出力:

'6DV \ {25 ^ -V \}} 1+ {rd3 * Z; hellOWORLD

8番目の出力:

'7DV \ {25 ^ -V \}} 1+ {rd3 * Z; helLOWORLD

9番目の出力:

'8DV \ {25 ^ -V \}} 1+ {rd3 * Z; heLLOWORLD

10番目の出力:

'9DV \ {25 ^ -V \}} 1+ {rd3 * Z; hELLOWORLD

11番目の出力:

':DV \ {25 ^ -V \}} 1+ {rd3 * Z; HELLOWORLD

エラーが発生するため、これが最後の出力です。


1
o_oシンプレックスは21に苦労しました。しかし、18.15を破ることに取り組みます!
コナーオブライエン

@CᴏɴᴏʀO'BʀɪᴇɴVitsyは、独自のソースコードを編集し、基本的な文字列操作を行うために実際に構築されました。XDでも、これはもっとゴルフできると思います。
アディソンクランプ

シンプレックスは外部プログラム機能を備えているため素晴らしいと思いましたが、nooooは1つのプログラムとしてカウントされます。ルため息
コナーオブライエン

「古典的な」ゴルフ言語を打つ(またはほぼ打つ)+1
ev3commander

@ ev3commanderイテレーションボーナスが高ければ、私は彼らを打ち負かしたでしょう。:c
アディソンクランプ

5

CJam、N = 3 4、28 バイト-10%-10%= 22.4

{`_E=-"_~Hello!, World"2<}_~

これにより、次のチェーンが開始されます。

{`_E=-"_~Hello, World"2<}_~
{`_E=-"_~Hello World"2<}_~
{`_E=-"_~HelloWorld"2<}_~
{`_E=-"_~Helloorld"2<}_~

最後の行には有効な「Hello、World」が含まれなくなりました。

ここでテストしてください。

説明

{`     e# Quine framework. Leaves a string representation of the block on the stack.
  _E=  e# Make a copy and get the 14th element, which is the character of the first 'o'.
  -    e# Remove that character from the string.
  "_~Hello!, World" e# Push this string, so the "Hello, World!" is part of the code.
  2<   e# Truncate to just "_~" to get the output right.  
}_~

初期プログラムには有効な「Hello、World」が含まれていないことに注意してください。ただし、これにより、さらに1つの反復を実行できます。


これは-10%のボーナスの対象ですか?出力には、3つの有効な句読点形式のうち2つのみが含まれます。
マイクブファルデシ

@MikeBufardeciいい質問です...元のコードがその一部であると思いました。
マーティンエンダー

1
オリジナルのコードがボーナスとしてカウントされるように、ルールを明確にしました。認めざるを得ないが、-10%を得るのがこれほど簡単だとは気づかなかった。

5

CJam 69 60-50 %= 30

私はまだ初心者です。CJamでゴルフをする方法を教えてください。

{`_40>\40<_38>~)`2Te[\25<"helloworld"00YbATe[.{{el}{eu}?}`+]W%"_~"}_~

99回の反復で有効になるため、各反復を印刷するのは面倒です。

hello wordの大文字を列挙することで機能します。退屈なのは、「hello world」とカウンターの両方を更新する必要があるため、文字列を部分に分割することです。

説明

{`_40>\40<_38>~)`2Te[\25<"helloworld"00YbATe[.{{el}{eu}?}`+]W%"_~"}_~
{`                                                                      e# standard quine framework. Thanks for Dennis.
  _40>                                                                  e# get the Yb11..
      \40<                                                              e# get those that not included in top
          _38>~)`2Te[                                                   e# get the accumulator and increment it
                     \25<                                               e# get those before "hello world"
                         "helloworld"                                   e# the Hello World
                                     00                                 e# accumulator
                                        YbATe[                          e# convert to binary and align right.
                                              .{{el}{eu}?}              e# Uppercase if the corresponding bit is 0
                                                          `             e# add quote
                                                           +]W%         e# reorder stack
"_~"}_~

注:Mathematicaの答えは読んでいません

並べ替えと大文字の使用の違いにより、9バイトが失われます。

{`_6<\"helloworld"01YbW%.{{eu}{el}?}`\I>_2<~)`2Te[\2>"_~"}_~
{`                                                   "_~"}_~ e# Standard quine framework
  _6<\                                                       e# Get "{~_6<\"
      "helloworld"                                            e# The helloworld
                  01                                          e# The accumulator
                    Yb                                        e# Convert to base 2
                      W%                                      e# Reverse the binary
                        .{{eu}{el}?}                          e# Convert to uppercase while the corresponding bit is 1.
                                    `                         e# Add quote
                                     _2<                      e# Get accumulator
                                        ~)`2Te[               e# Increment the accumulator
                                               \2>            e# get the rest

CJam 73-60%= 29.2

今回は句読点も列挙します。

{`:Z6<"HELLOWORLD"0:AYbW%.{{eu}{el}?}`", ":B-_6<BA3%>@6>A)ZW%52<W%"_~"}_~
{`:Z                                                              "_~"}_~ e# Standard Quine Framework
    6<                                                                    e# take the first 6 character
      "HELLOWORLD"                                                        e# Hello, world
                  0:A                                                     e# Accumulator
                     YbW%.{{eu}{el}?}`                                    e# See above
                                      ", ":B                              e# Punctuation
                                            -                             e# Delete punctuation
                                             _6<                          e# "hello
                                                BA3%>                     e# punctuation
                                                     @6>                  e# world"
                                                        A)                e# incremented accumulator
                                                          ZW%52<W%        e# Remaining part

異なる言語と短い回答があるため、Mathematicaの回答と同じアプローチを使用しても問題はありません。

最速のポスターや最も新しいアルゴリズムではなく、最低スコアを探していることに注意してください。

@ Ville-ValtteriTiittanenそれでも、
MartinBüttner

@ChristianIrwan Yoursは面白いですが、異なる大文字を生成します(そして、私に近づいたり、たぶん打ち負かしたりすることはゴルフに適していると確信していますが、今は詳細に見る時間はありません)。
マーティンエンダー

4

GolfScript、35バイト-50%= 17.5

0"HelloWorld"{@@{^.32&\}%`@".~"}.~

私は、繰り返しの前に実行回数をやり過ぎにしようと決めました。出力がGolfScriptインタープリターにフィードバックされるこのプログラムは、最初の繰り返しの前に890個の異なるHello World文字列を生成します。簡単なサンプルとして、最初の15回の反復を以下に示します。

0"HelloWorld"{@@{^.32&\}%`@".~"}.~
0"HeLlOWoRlD"{@@{^.32&\}%`@".~"}.~
0"HelLOWorLD"{@@{^.32&\}%`@".~"}.~
0"HeLLOWoRLD"{@@{^.32&\}%`@".~"}.~
0"HellowORLD"{@@{^.32&\}%`@".~"}.~
32"HeLlOworld"{@@{^.32&\}%`@".~"}.~
0"hELloWoRlD"{@@{^.32&\}%`@".~"}.~
32"helLowORld"{@@{^.32&\}%`@".~"}.~
0"HeLLoWORlD"{@@{^.32&\}%`@".~"}.~
32"HellOWORld"{@@{^.32&\}%`@".~"}.~
0"hElLOWORlD"{@@{^.32&\}%`@".~"}.~
32"heLLOWORld"{@@{^.32&\}%`@".~"}.~
32"HelloworLd"{@@{^.32&\}%`@".~"}.~
32"hElLoWoRLd"{@@{^.32&\}%`@".~"}.~
0"HEllOWorlD"{@@{^.32&\}%`@".~"}.~

動作方法は、文字列を反復処理し、前の文字(場合によっては大文字と小文字を反転させた後)が小文字の場合、各文字の大文字化を反転します(ASCIIコードを32とXORすることにより)。開始プログラムの番号が0ではなく32の場合、最初の文字の大文字と小文字が反転します。また、文字列の最後の文字が小文字の場合、次の反復の数値出力は32になります。次の反復で伝播して最初に戻る文字列。

(この特定のフィードバックプロセスは完全にアドホックな方法で取得されました。元々は大文字と小文字をビットとして使用して単純なバイナリカウンタを実行したかったのですが、実装するにはバイトが多すぎたので、もっと短いものを見つけるために調整し始めましたケースフリッピングのみを使用した理論上の最大値は2 10 = 1024であるため、890反復サイクルを取得することは非常に便利です。

残念ながら、追加の反復のボーナスの上限は-50%です。上限がなければ、このプログラムにはなんと-4440%のボーナスがあります。;-)


3

Pyth、18バイト

"-\"hello world\"d

返されるもの:

-"hello world"d

順番に印刷されるもの:

helloworld

3つのスペルすべてを実行するソリューションがありましたが、ボーナスを使用してもさらに長くなります。


ルールが3回ではなく2回の反復を要求するように戻るまで、この回答は一時的に無効であったことに注意してください。しかし、今では再び有効になっています。
DLosc

3

シンプレックス、21バイト。

これがSimplexが生まれた理由です。私は間違いなくこれをさらに進めることができます。

(Ctrl + Enterを押し続けます、ごめんなさい!タブレットのキーボードのせいにします)

試行3、v.0.8 +、31 -5%= 29.45バイト(UTF-8の方法)

真ん中のエモートは自分を表現しています。並べ替え。なぜ私は再びこれをしたのですか?._。

"\"f[helloworld]-:D-``\"§R'Hg"g
"                            "  ~~ write that string
 \"f[helloworld]-:D-``\"§R'Hg   ~~ escaped quotes
                              g ~~ output that string

2番目の出力:

"f[helloworld]-:D-``"§R'Hg
"                   "      ~~ write that string
 f[helloworld]-:D-``       ~~ string to be written
                     §R    ~~ go to second cell
                       'H  ~~ set it to H charcode
                         g ~~ output that string

3番目の出力:

f[Helloworld]-:D-``
f                   ~~ turns off safety mode (heck yeah error suppression!)
 [          ]-      ~~ write inside to outer program
  H                 ~~ sort strip
   e                ~~ write e = 2.718281828459045... to the strip
    ll              ~~ writes 1 twice to the cell
      o             ~~ outputs 1
       wo           ~~ apply o backwards through the strip (outputs 1)
         r          ~~ error! tries to access register for modification. nope!
          l         ~~ write 1 to to the current cell
           d        ~~ reverse the strip (NOP)
              :     ~~ removes last char of outer program
               D    ~~ double the current byte (2)
                -   ~~ writes previous char to outer program
                 `` ~~ suppress outer program evaluation and instead output it

最終出力:

HelloworlD

試行2、v.0.8 +、21バイト(UTF-8、私は思う)

"\"helloworld\"§'Hg"g
"                  "  ~~ write that string
 \"helloworld\"§'Hg   ~~ escaped quotes
                    g ~~ output that string

出力:

"helloworld"§'Hg
"          "     ~~ write that string
 helloworld      ~~ string to be written
            §    ~~ go to first cell
             'H  ~~ set it to H charcode
               g ~~ output that string

最終出力:

helloworld

試行1、v.0.7 + 28 26バイト

これが最初のボーナスにふさわしいかどうかはわかりません…

"BhelloworldB"t[s32S;]'gs;
"            "             ~~ write that string
 BhelloworldB              ~~ the string
              t[     ]     ~~ apply the inner from left to right
                s          ~~ output as character
                 32S       ~~ subtract 32 ("capitalize")
                    ;      ~~ add the current byte's char to the outer program
                      'g;s ~~ add g to the outer program

最初の出力:

"HELLOWORLD"g

外側のプログラムは、実行の最後に評価されます(yに対して実行されます。これは、外側のプログラムの外観です。

"HELLOWORLD"g
"          "  ~~ write that string
            g ~~ output that string as string characters

最終出力:

HELLOWORLD

このプログラムは-50%のボーナスの対象ですか?可能性があるように見えますが、出力を投稿しませんでした。

@ Ville-ValtteriTiittanenこれは2回だけ実行されます。私は現在ボーナスに取り組んでいます。
コナーオブライエン

2

ルビー、81-50%= 40.5

元のコード:

_='_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)';puts _%[_,'HELLOWORL'+?D]

連続出力:

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"HELLOWORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"hELLOWORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"heLLOWORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"helLOWORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"hellOWORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"helloWORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"hellowORLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"hellowoRLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"helloworLD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"helloworlD"]).sub(/[[:upper:]]/,&:swapcase)

_="_=%p;puts (_%%[_,%p]).sub(/[[:upper:]]/,&:swapcase)";puts (_%[_,"helloworld"]).sub(/[[:upper:]]/,&:swapcase)

これは全体の50%としてカウントされると思いますか?1つずれている場合があります。また、Rubyにはスコアのないボーナスのないソリューションがおそらくあるでしょう。

元のコードには「helloworld」は含まれていませんが、ソースコードの最初の大文字を小文字に置き換えるクインを作成します。したがって、クインを連続して実行するたびに、大文字が1文字少なくなります。

ここでのコツは、形式文字列を使用して、文字列自体(クイニング用)とHello World文字列の両方を補間して、一度だけ表示されるようにすることです。


1

PHP、297-40%= 178.2バイト

それほど競争的ではないが、書くのは楽しかった

<?ob_start(function($s){$s=substr(str_replace(0,0+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[0]=$h[0]^' ';return "<"."?".$s."?".">".$s.$h;});?>ob_start(function($s){$s=substr(str_replace(0,0+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[0]=$h[0]^' ';return "<"."?".$s."?".">".$s.$h;});

これはこの馬のバリエーションです:

<?
ob_start(function($b){ return "<"."?\n$b?".">\n$b"; });?>
ob_start(function($b){ return "<"."?\n$b?".">\n$b"; });

それはまた、出力や置き換えに「HelloWorldの」を追加0して0+1(次の反復で1持つ1+1と上のように)。substr既存の「helloworld」出力を使用すると、新しい「helloworld」が追加される前に削除されます。

異なる出力を取得するために、「helloworld」の1文字が大文字になります(増分する数値によって決定されます)。これは関連するコードです:

$h=hello.world;$h[0]=$h[0]^' '

課題は、ここを除いて数字を使用せず、数字を置き換えることです

str_replace(0,0+(int)true,$s)

すでにあなたはそれ+1がとして認識されているのを見ます+(int)true

私が必要とした部分文字列引数について0, 146

!i, ord(I)+ord(I)

空ではない文字列「i」は、強制されtrueて否定されます。falseは有効な整数引数で、のように扱われ0ます。ord(I)「I」のASCII値です:73

出力(1回目の反復):

<?ob_start(function($s){$s=substr(str_replace(1,1+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[1]=$h[1]^' ';return "<"."?".$s."?".">".$s.$h;});?>ob_start(function($s){$s=substr(str_replace(1,1+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[1]=$h[1]^' ';return "<"."?".$s."?".">".$s.$h;});Helloworld

出力(2回目の反復):

<?ob_start(function($s){$s=substr(str_replace(2,2+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[2]=$h[2]^' ';return "<"."?".$s."?".">".$s.$h;});?>ob_start(function($s){$s=substr(str_replace(2,2+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[2]=$h[2]^' ';return "<"."?".$s."?".">".$s.$h;});hElloworld

出力(10回目の反復):

これは最後の有効な出力ですが、有効なプログラムではありません

<?ob_start(function($s){$s=substr(str_replace(10,10+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[10]=$h[10]^' ';return "<"."?".$s."?".">".$s.$h?>ob_start(function($s){$s=substr(str_replace(10,10+(int)true,$s),!i,ord(I)+ord(I));$h=hello.world;$h[10]=$h[10]^' ';return "<"."?".$s."?".">".$s.$hhelloworlD

「Hello world」の文字列を見つけるために右にスクロールしてください!


私は(int)true`` !! i`に変更して12バイト節約できることに気付きました。ゴルフをもう少し後でしようとする
ファビアンシュメングラー

1

ピップ、48-50%= 24

V Y"`V Y`.RPyRh:ST`helloworld`UCh@<0.h@>0R0o+0"

次のように進化します。

V Y"`V Y`.RPyRh:ST`helloworld`UCh@<1.h@>1R1o+1"
V Y"`V Y`.RPyRh:ST`Helloworld`UCh@<2.h@>2R2o+2"
V Y"`V Y`.RPyRh:ST`HElloworld`UCh@<3.h@>3R3o+3"
V Y"`V Y`.RPyRh:ST`HELloworld`UCh@<4.h@>4R4o+4"
V Y"`V Y`.RPyRh:ST`HELLoworld`UCh@<5.h@>5R5o+5"
V Y"`V Y`.RPyRh:ST`HELLOworld`UCh@<6.h@>6R6o+6"
V Y"`V Y`.RPyRh:ST`HELLOWorld`UCh@<7.h@>7R7o+7"
V Y"`V Y`.RPyRh:ST`HELLOWOrld`UCh@<8.h@>8R8o+8"
V Y"`V Y`.RPyRh:ST`HELLOWORld`UCh@<9.h@>9R9o+9"
V Y"`V Y`.RPyRh:ST`HELLOWORLd`UCh@<10.h@>10R10o+10"
V Y"`V Y`.RPyRh:ST`HELLOWORLD`UCh@<11.h@>11R11o+11"
V Y"`V Y`.RPyRh:ST`HELLOWORLD`UCh@<12.h@>12R12o+12"

最後の出力HELLOWORLDは変更されていないため無効です。(ボーナスを正しく行っていない場合は修正してください。)

この質問のおかげで、私は新しい馬術を発見しました!基本クインはV Y"`V Y`.RPy"次のとおりです。

  Y"         "  Yank that string into the variable y
V               Evaluate it as a Pip expression:
          RPy   y wrapped in double quotes (repr)
    `V Y`.      Prepend that regex pattern
                When this is evaluated, it returns a pattern object, which is
                auto-printed--conveniently, without the `` delimiters

追加のコードは、y次のように、再入力する前にの文字列を変更します。

  • 現在のhelloworldを左端の0文字が大文字のhelloworldに置き換えます。
  • すべての出現置き換える0とするo+0(ここでo1に等しい組み込み変数です)。

コード内の次の回数は、の1代わりに0なります。


1

Javascript、52バイト

function(){return '("hello world").replace(" ","")'}

テスト

=>

<='("hello world").replace(" ","")'

=> eval('("hello world").replace(" ","")')

<= 'helloworld'



1

BBC BASIC、56バイト

試合にどれだけ遅れるかに気付く前に、私はこれにひびがありました。価値のあるものとして、ここに私のバージョンとStackExchangeコードゴルフでの最初の試みがあります。

ここで、V。は、次のコンマ区切りリストのASCIIコードで指定された文字をエコーアウトし、P。は印刷の省略形です。バックスペース文字を使用して、既存の「helloworld」文字列を上書きします。

入力コード:

V.80,46,34:P."helloworld";:V.8,68,34,59:P.":V.8,8,76,68"

最初の出力:

P."helloworlD";:V.8,8,76,68

2番目の出力:

helloworLD

https://bbc.godbolt.org/でオンラインでテストできます。


BBC BASICを使用したことはありませんが、これをどのようにテストできますか?これをリンクされたエミュレータに貼り付けると、最後の行に「Mistake」が出力されているように見えます。
私の代名詞は、

わかりやすくするために回答を編集します。貼り付ける必要があるのは最初の行だけです。2番目の生成された行は、PCのカーソルと「end」キーを使用してエミュレータでコピーして実行できます。3行目は、規則に従って無効にすることができます。
アンドリューポール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.