史蒂夫·鲍尔默的奇案


46

史蒂夫·鲍尔默(Steve Ballmer)是微软的前首席执行官,在最近的一篇文章中,他声称他“仍然不知道自己在移动方面做错了什么”。

正如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 ...
Rod

15
tcl,25while 1 {puts developers}演示
sergiol

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

16
我想到了xkcd的鲍尔默峰
-ojdo

5
是的14岁yes developers
sergiol

Answers:


26

Python 3中100个 99 99 97字节

-1字节归功于ovs
-1字节归功于Jonathan Allan
-1字节归功于Dennis

for i in b'!-3?':print('Steve Ballmer still does not know what he did wrong with mobile'[:i]+'.')

在线尝试!


17

Haskell,96个字节

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

在线尝试!

scanlfoldl除了返回所有中间结果的列表而不是最终结果的列表之外,它类似于(或减少其他语言中的称呼)。每个中间结果都附加了,".\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

@Mayube:是的。我现在部分地得到了(球)以通过重组原始字符串来节省字节:)
Emigna

如果您可以压缩的话,现在看起来好多了mer
Skidsdev

@Mayube:我可以通过压缩来隐藏它,me但是不幸的是,它不会保存任何字节:/
Emigna

2
@StigHemmer:05AB1E代码页中
Emigna

15

视网膜82 75字节

感谢Neil节省了7个字节。

字节数假定为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所指出的,所有三个截断都是在以开头的单词之前进行的w,没有其他以开头的单词w。因此我们匹配一个空格,后跟一个a w来找到截断点。此时,我们插入以下内容:

  • ,句号和换行符来截断句子并开始一个新的句子。
  • $`,则整个字符串都位于匹配项的前面,因此下一个句子从头开始。
  • $&,空格,w然后它们也是下一个句子的一部分。

我们不需要mobile显式匹配,因为这仅仅是第三场比赛剩下的。


3
您只需要在<space> w上进行匹配并替换为即可.¶$`$&
尼尔

@Neil哦,那真的很好,谢谢。:)
Martin Ender

9

PHP,104 95 94字节

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

1
缺少“什么”?
TheLethalCoder



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.";}

-1个字节感谢@KonstantinCh

在这里尝试。


1
希望您不要介意我偷了您的想法,这比我的循环方法要好得多。
TheLethalCoder

@TheLethalCoder完全没有问题,因为我看到您已经相信了我。:)顺便说一句,string不能var在您的C#lambda中吗?
凯文·克鲁伊森

否,因为我要一次声明多个。
TheLethalCoder

@TheLethalCoder当然,我不好。而且()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};很不幸,它长了三个字节。
凯文·克鲁伊森

1
Konstantin Ch建议更改"+d最后以."节省一个字节,因为最后的换行是可选的。
Martin Ender


6

果冻52 46字节

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

感谢ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ@EriktheOutgolfer,他在回答中使用了它。

在线尝试!

这个怎么运作

大部分工作是通过Jelly的字典压缩完成的。

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

编码

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

|指示字之间的边界,其中该取从由字符编码的字符的字典和字符串(meres,和t)。

类似地,£Ṿ⁴'Þḣ~ẉ编码 what| he| did(令人惊讶的,he没有来自字典),¥Ị)编码 wrong,和Ṡ8gÐ/编码 with| mobile

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

因此产生字符串数组

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

;\ 通过串联累积减少,在每行上构建短语。

最后,p”.计算这些词组和点字符的笛卡尔积,并Y通过换行符分隔结果句子。


根据我的计数,这是97个字节。
Stig Hemmer

@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标签innertext时,此功能才能正常工作。那不是超过102个字节,因为它取决于o.innerText =和<pre id =“ o”>并实际上获得了该元素?
保罗

@Paul我知道这很旧,但是匿名函数可以作为输入/输出的形式接受,因此只要它返回期望的数据,就不需要直接显示它。
Dom Hastings


4

视网膜95 86字节

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

在线尝试!编辑:通过从输出整个字符串的一部分切换到分段构建字符串,节省了9个字节。的:`需要对前三个阶段,使它们的输出。


哦这是聪明的,删除之间的所有内容we之间,然后删除一切wre,然后wie。由于Retina的换行功能,它不是超级高尔夫,但是绝对很酷
Skidsdev

@Mayube原来一点也不像高尔夫,所以我切换了方法。(虽然还不如马丁·恩德的回答那么酷。)
尼尔(Neil

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;};

一种简单的方法,使用三元语句在循环中每次将新部分追加到字符串上。


C# >= 6
顺便说一句

@Mayube True,但我现在想以此来使用Kevin的方法,因为这比我的哈哈好得多
TheLethalCoder

高尔夫2个字节,所以您可以击败Java答案D:
Skidsdev

@Mayube Java答案通常胜过C#,因为它们不包含结尾的分号。总是烦人!
TheLethalCoder

@Mayube完成了,暂时至少……
TheLethalCoder

3

击,111个 109 107字节

a=(Steve Ballmer still does not know "what he did" wrong with\ mobile)
for i in {6..9};{ echo ${a[@]::i}.;}

在线尝试!


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

Ruby,94个字节

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

遍历第一个字符串中的4个字符,将每个字符串转换为其ascii值,n并每次输出n第二个字符串的第一个字符。只要第一个字符串的ascii值等于或大于第二个字符串的长度,那么实际上并不重要。


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再次向下移动到原子,随后原子又向右移动。

每个循环中,原子的能量都高一个,这意味着它将再通过一个%。在第四个循环之后,它到达;第三行末尾的,这将破坏原子。一旦所有原子都被破坏,该程序即终止。


你能补充一个解释吗?
毛茸茸的

@Shaggy会做
Skidsdev

您可以压缩更多的顶部:209个字节
KSmarts '17

3

Japt70 68 65 61 60 59字节

包含一些不会在此处显示的字符;请点击以下链接查看完整代码。

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

在线尝试

  • 3 ETH节省了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},然后再删除两个字节,这涉及到删除[](我会让您知道)。
ETHproductions '17

不错,@ ETHproductions。花了我几分钟的时间来解释压缩和字符SE之间没有显示,但我到了那里,现在我想我也看到了您所暗示的其他节省。
毛茸茸的

1
如果删除拆分和连接,而£P±X +'.}R在末尾执行,则可能会更好
ETHproductions 2015年

@ETHproductions,它仍然是61个字节,但是绝对更整洁。摆脱了尾随换行符的需要。编辑:哦,等等,不,我可以用这种方法保存1个字节:)
Shaggy



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和所有版本,尽管我不知道您将如何运行它。
暴民埃里克(Erik the Outgolfer)'17年

打开没有版本标签的“ P5Parser”,并在其文件夹中data/p.sogl粘贴代码。然后运行处理代码应该运行它,输出应该在控制台中
dzaima

试图运行您的代码,但没有任何输出..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Erik the Outgolfer

这个对我有用。尝试给它完整的路径,而不是p.sogl。如果STDOUT或中没有任何内容P5Parser/output.txt,我不知道。
dzaima

是我的输出,分为STDOUT和STDERR。
暴民埃里克(Erik the Outgolfer)


2

围棋140个 127字节

import."fmt"
func f(){for _,i:=range"!-3?"{Println("Steve Ballmer still does not know what he did wrong with mobile"[:i]+".")}}

在线尝试!


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
Digital Trauma'6

8
@DigitalTrauma好了,您现在可以眨眼了
ETHproductions '17

1

Mathematica,108 104字节

"Steve Ballmer still does not know what he did wrong with mobile"~StringTake~#~Print~"."&/@{33,45,51,63}


在线尝试!

来自马丁的-4个字节


1

> <>,126个字节

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.