スティーブバルマーの奇妙な事件


46

Steve BallmerはMicrosoftの元CEOであり、最近の記事で、「モバイルで何が悪かったのかまだわからない」と主張しています。

以下のようCodeProjectののニュースレターを指摘し、 『その記事のタイトルは非常に多くの箇所で終了し、まだ正確であることができ、』。

入力がない場合、次を出力します。

Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.

これは示されているとおりに出力する必要があり、プログラムの唯一の出力でなければなりません。単一の末尾改行を含めることができます。

これはので、各言語で最少のバイト勝ちます


59
私はタイトルを見たとき/タグが、私は、出力が可能だろうと思ったdevelopers developers ...
ロッド

15
tcl、25while 1 {puts developers}デモ
sergiol

8
braingolf、23 - 1"developers "[!@11 1>]:P
Skidsdev

16
そして、xkcdのBallmer Peak
ojdo

5
はい、14yes developers
sergiol

回答:



17

Haskell、96バイト

(++".\n")=<<scanl(++)"Steve Ballmer still does not know"[" what he did"," wrong"," with mobile"]

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

scanlfoldl、最終結果だけでなく、すべての中間結果のリストを返すことを除いて、似ています(または、他の言語で呼び出されるときにreduceを実行します)。各中間結果に追加され".\n"、それらすべてが単一の文字列に連結されます。


17

05AB1E50 49 45 44バイト

KevinのJava回答からインスピレーションを得て4バイトを節約

„€Ž†©'–Ñ…€À€½ƒ§“mer„â‚à€–ƒ€“”™¸ïß”[Žì'.«=¨ð«

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

説明

„€Ž†©                                         # push "with mobile"
     '–Ñ                                      # push "wrong"
        …€À€½ƒ§                               # push "what he did"
               “mer„â‚à€–ƒ€“                  # push "mer still does not know"
                            ”™¸ïß”            # push "Steve Ball"
                                  [Ž          # loop until stack is empty
                                    ì         # prepend the top string to the 2nd top string
                                     '.«      # append a dot
                                        =     # print without popping
                                         ¨    # remove the dot
                                          ð«  # append a space

ああ、なんとか辞書ディクショナリーを使うことができたのBallmerか?
Skidsdev

@マユベ:ええ。元の文字列を再構築することでバイトを保存するために、(ボール)今部分的にそれを得た:
エミニャ

あなたがそれを圧縮することができれば、今ははるかに良く見えますmer
-Skidsdev

@Mayube:圧縮することで隠すことができましたmeが、残念ながらバイトを節約できませんでした:/
Emigna


15

網膜82 75バイト

7バイトの節約をしてくれたNeilに感謝

バイトカウントはISO 8859-1エンコードを前提としています。


Steve Ballmer still does not know what he did wrong with mobile.
 w
.¶$`$&

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

説明


Steve Ballmer still does not know what he did wrong with mobile.

作業文字列を見出し全体に初期化します。

 w
.¶$`$&

Neilが指摘したように、3つすべての切り捨ては、で始まる単語の前に行われ、で始まるw単語は他にありませんw。そのため、スペースに続いてaを突き合わせてw、切り捨てポイントを見つけます。これらのポイントで、次を挿入します。

  • 、ピリオドと改行は、文を切り捨てて新しい文を開始します。
  • $`、マッチの前の文字列全体。次の文が最初からやり直します。
  • $&、スペース、そしてw次の文の一部でもあるように。

mobile明示的に一致させる必要はありません。なぜなら、それは3番目の一致で残ったものになるからです。


3
<space> wでのみ一致し、で置き換える必要があり.¶$`$&ます。
ニール

@ニールああ、それは本当にすてきです、ありがとう。:)
マーティンエンダー

9

PHP、104 95 94バイト

<?=$a="Steve Ballmer still does not know",$a=".
$a what he did",$a.=" wrong",$a?> with mobile.

1
「何」が足りない?
TheLethalCoder

8

///、88バイト

@MartinEnderによって8バイトが節約されました!

/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong/1.
2.
3.
3 with mobile.

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


1
あなたは、各置換に前の接頭辞を移動することによって、より多くのビットを保存することができます:tio.run/...
マーティン・エンダー

@MartinEnderそれは特に賢いです。ありがとう!
-steenbergh

1
ああ、そして4完全に落とすことによる別の5 :tio.run
マーティン・エンダー

5
@MartinEnder「はい、モバイルで3番になります。お願いします。」
-steenbergh

7

05AB1E、46バイト

”™¸ïßme”“r„â‚à€–ƒ€“«…€À€½ƒ§'–Ñ„€Ž†©).pvyðý'.«»

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


これは私のカウントでは98バイトです。
スティグヘマー

@StigHemmer 05AB1Eは 256バイトの独自のコードページを使用して各文字を1バイトにエンコードします。したがって、基本的なUTF-8エンコーディングではさらに多くのバイトがありますが、46バイトです。
ケビンCruijssen

7

Java 8、127 126バイト

()->{String t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile.";}

@KonstantinChのおかげで-1バイト。

ここで試してみてください。


1
私があなたのアイデアを盗んだことを気にしないでください、それは私のループアプローチよりもはるかに優れています。
TheLethalCoder

@TheLethalCoderあなたは私を信じているので、まったく問題ありません。:)ところで、あなたのC#ラムダにするstringことはできませんvarか?
ケビンCruijssen

いいえ、私は一度に複数を宣言しているからです。
TheLethalCoder

@TheLethalCoderああ、もちろん悪いことです。そして()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};、残念ながら3バイト長くなっています。
ケビンCruijssen

1
Konstantin Chは、最後の改行がオプションであるため"+d、最後に."を変更してバイトを保存することを提案しています。
マーティンエンダー


6

ゼリー52 46バイト

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»;\p”.Y

ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ@EriktheOutgolferへのクレジットは、彼の回答で使用しまし

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

使い方

ここでの作業の大部分は、Jellyの辞書圧縮によって行われます。

ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ

エンコードする

Steve| Ball|mer| still| do|es| no|t| know

そこに|単語間の境界を示しているところフェッチ文字で文字をエンコードされた辞書や文字列から(meres、およびt)。

同様に、£Ṿ⁴'Þḣ~ẉencodes  what| he| did(驚くべきことに、辞書に由来しheませ)、¥Ị)encodes  wrong、およびṠ8gÐ/encodes  with| mobile

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»

したがって、文字列配列を生成します

“Steve Ballmer still does not know“ what he did“ wrong“ with mobile”

;\ 連結によって累積的に減少し、各行にフレーズを構築します。

最後に、p”.これらのフレーズとドット文字のデカルト積を計算しY、結果の文を改行で区切ります。


私のカウントでは、これは97バイトです。
スティグヘマー

@StigHemmer UTF-8では、そうなります。ただし、Jellyはこのシングルバイト文字セットもサポートしています。
デニス

6

JavaScript(ES6)、102バイト

_=>(s="Steve Ballmer still does not know")+`.
${s+=" what he did"}.
${s+=" wrong"}.
${s} with mobile.`

それを試してみてください

o.innerText=(
_=>(s="Steve Ballmer still does not know")+`.
${s+=" what he did"}.
${s+=" wrong"}.
${s} with mobile.`
)()
<pre id=o>


私は、C#の回答のためにそれを「借りた」素晴らしいアプローチです。
TheLethalCoder

1
ゲームのルールを理解していないかもしれませんが、この機能は、ブラウザーを使用していて、前と同じようにpreタグのインナーテキストを使用している場合にのみ正しく機能します。それはo.innerText =および<pre id = "o">に依存し、実際に要素を取得するため、102バイトを超えないでしょうか。
ポール

@Paul私はこれが古いことを知っていますが、匿名関数はエントリとしてI / Oの許容される形式であるため、期待されるデータを返す限り、それを直接表示する必要はありません。
ドムヘイスティングス


4

網膜95 86バイト

:`
Steve Ballmer still does not know.
:`.$
 what he did.
:`.$
 wrong.
.$
 with mobile.

オンラインでお試しください!編集:文字列全体の一部を出力する部分から文字列を構築する部分に切り替えることで9バイトを保存しました。:`それらの出力を作るために最初の三つの段階に必要とされています。


OOHそれは間のすべての削除、巧妙だwe、その後の間にすべて削除するwre、その後wiとをe。Retinaの改行のせいでスーパーゴルフではありませんが、それでも間違いなくクールです
Skidsdev

@Mayubeはまったくゴルフっぽくないことがわかったので、方法を切り替えました。(それでもマーティン・エンダーの答えほどクールではありません。)
ニール

3

C位、158の 128 120 114バイト

()=>{var s="Steve Ballmer still does not know";return s+$@".
{s+=" what he did"}.
{s+=" wrong"}.
 with mobile.";};

@KevinCruijssenのおかげで30バイト節約されました。
@Shaggyのおかげで6バイト節約されました。


120バイトのサブストリングを使用したバージョン:

s=n=>"Steve Ballmer still does not know what he did wrong with mobile".Substring(0,n)+".\n";()=>s(33)+s(45)+s(51)+s(63);

@KevinCruijssenから128バイト借りたバージョン:

()=>{string t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile"+d;};

158バイトのループを使用するバージョン:

()=>{var r="";for(int i=0;++i<5;)r+=$"Steve Ballmer still does not know{(i>1?$" what he did{(i>2?$" wrong{(i>3?" with mobile":"")}":"")}":"")}.\n";return r;};

ループ内で3回のステートメントを使用して、毎回新しい部分を文字列に追加する単純なアプローチ。


余談ですが、これC# >= 6は以前のバージョンには文字列が補間されていないためにのみ機能することに注意する価値があります
-Skidsdev

@Mayube確かに、私はそれは多くの良い私より母であるとして、現時点ではケビンのアプローチを使用するために、これをゴルフをしています
TheLethalCoder

あなたはJavaの答えDを打つことができるようにゴルフをもう2バイト得なければなりません:
-Skidsdev

@Mayube Javaの答えは、セミコロンが末尾に含まれていないため、通常C#に勝っています。いつも迷惑です!
TheLethalCoder



3

Vim、79キーストローク

iSteve Ballmer still does not know.<CR><C-x><C-l><Backspace> what he did.<CR><C-x><C-l><Backspace> wrong.<CR><C-x><C-l><Left> with mobile

<C-x><C-l>前の行でオートコンプリート。別の方法としては、のすべての出現置き換えることができます<CR><C-x><C-l>とし<Esc>o<C-a>



3

ルビー、94バイト

"!-3Z".bytes{|i|puts"Steve Ballmer still does not know what he did wrong with mobile"[0,i]+?.}

最初の文字列の4文字を反復処理し、それぞれをASCII値に変換して、毎回2番目の文字列のn最初のn文字を出力します。ASCII値が2番目の文字列の長さ以上である限り、最初の文字列の最後の文字が何であるかは実際には関係ありません。


3

核分裂、299 291 269バイト

MN"."                             ]              ]        ]
                                  W$]            W$$]     W$$$]
R"Steve Ballmer still does not know"%[" what he did"%[" wrong"%[" with mobile.";
                                    [W              [W        [W

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

最後に、私が理解できる2D言語です!

説明

プログラムは、行3 で1質量、0エネルギー(1:0原子)の原子を生成Rし、右に移動し始めます。

"Steve Ballmer still does not know" 各文字を出力します。

% エネルギーが0の場合は原子を上に移動し、エネルギーを減らして下に移動します。

]原子を左$W移動し、原子のエネルギーを増やし、原子を上に移動します。

原子は上部列上で一度に達するまで、それは、左に移動する"."期間、印刷れ、N最後に改行を出力し、そして、Mまでの原子を移動させ、R続いて右に原子を移動再度し、 。

原子のエネルギーのループはそれぞれ1つ高くなり、もう1つ通過します%。4番目のループの後、;3番目の行の終わりに到達し、原子が破壊されます。すべてのアトムが破棄されると、プログラムは終了します。


説明を追加してもらえますか?
シャギー

@Shaggyがやる
Skidsdev

トップをさらに圧縮できます:209バイト
KSmarts

3

Japt70 68 65 61 60 59バイト

ここに表示されない文字がいくつか含まれています。完全なコードを確認するには、以下のリンクに従ってください。

`Sve Ba¥´r Ð]l º not know
 Ø  ¹d
 Ùg
 ØP ¶ßè`£'.iP±X}R

オンラインで試す

  • ETHのおかげで3 4バイトが節約され、さらにプロンプ​​トが表示されてさらに4バイトが節約されました。

説明

2つのバックティックの間はすべて、次の圧縮文字列です。

Steve Ballmer still does not know
 what he did
 wrong
 with mobile
`...`             :Decompress the string.
     £       }R   :Map over the each line X in the string
         P±X      :   Append X to P (initially the empty string)
      '.i         :   Prepend that to the string "."

1
いいね を実行することで、いくつかのバイトを節約できます[`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}。その後、[and を削除することでさらに2バイトを節約できます](その1つを把握します)。
ETHproductions

いいですね、@ ETHproductions。圧縮と文字SEが表示されないことを解読するのに数分かかりましたが、私はそこにたどり着きました。
シャギー

1
分割と結合を削除し、代わり£P±X +'.}Rに最後に行うと、より良い場合があります
-ETHproductions

@ETHproductions、それはまだ61バイトで入っていますが、それは間違いなくきれいです。末尾の改行の必要性を取り除きます。編集:ああ、待って、いや、そのアプローチで1バイト節約できます:)
シャギー



2

SOGL、42 バイト

⁹⁴<>‘υG‘Γω/w¹‘O‛Æw▓½0H(æ█◄K∆2Ξgh‘4{Tļ.@+;+

説明:

..‘                    push "with mobile"
   ..‘                 push "wrong"
      ..‘              push "what he did"
         ..‘           push "Steve Ballmer still does not know"
            4{         4 times do
              T          output, not popping the top of stack
               ļ.        output "."
                 @+      append a space to the top thing in stack
                   ;+    reverse add (adding the next part to the top thing in stack)

SOGLはどのように使用しますか?Processingとすべてのバージョンをインストールしましたが、どのように実行するかわかりません。
エリックアウトゴルファー

バージョンラベルのない「P5Parser」を開き、そのフォルダーにdata/p.soglコードを貼り付けます。その後、処理コードを実行すると実行され、出力がコンソールに表示されます
-dzaima

あなたのコードを実行しようとしましたが、それは任意の出力を持っていません..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
エリックOutgolfer

わたしにはできる。の代わりにフルパスを指定してみてくださいp.sogl。STDOUTまたはP5Parser/output.txtに何もない場合はわかりません。
dzaima

これは私にとっての出力であり、STDOUTとSTDERRに分かれています。
エリックアウトゴルファー



2

Nim、100バイト

for i in " ,2>":echo "Steve Ballmer still does not know what he did wrong with mobile"[0..i.int],"."

ここでより読みやすいコードで同じ:

const str = "Steve Ballmer still does not know what he did wrong with mobile"

for i in [32, 44, 50, 62]:
  echo(str[0..i], ".")

この言語には、文字列スライスと包括的な上限があります。あなたがプログラミングを知っているなら、残りはそれ自身を説明するべきです。


1

71 69バイト

A⟦⟧βF⪪”↓/‘ZQ≔'Wε}÷&’/↗∧μ~⎇²~ηρπ‖¢β\`σuσI⌀δ#″:§▶¬QγγQZ–” w⁺⪫⊞Oβι w¦.¶

オンラインでお試しください!リンクは冗長バージョンのコードへのリンクですが、deverbosifierが自動的に実行できないため、一部のセパレータは省略されています。これは基本的に@KevinCruijssenの答えの移植版です。


1

> <>、135バイト

".wonk ton seod llits remllaB evetS"\
l?!\o99+2*1./"h tahw  "32p10pao     \
52p\".did e"/"   "53p33p
  /\".gnorw"/
1p/\".elibom htiw;"3

これは基本的に文字列を通過し、印刷してからコードに沿って移動し続けるために、フルストップと条件をスペースに置き換えます。

以下の> <>池リンクを使用して視覚化するのが最善かもしれません。

> <>池!

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


1
know綴りが逆であることは私には決してありませんでしたwonk
デジタル外傷

8
@DigitalTraumaさて、今あなたはまばたき
ETHproductions


1

> <>、126バイト

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.