O Curioso Caso de Steve Ballmer

46

Steve Ballmer é o ex-CEO da Microsoft e, em um artigo recente , afirmou que "ainda não sabe o que fez de errado com os dispositivos móveis".

Como o boletim informativo do CodeProject apontou, "O título desse artigo pode ser encerrado em muitos pontos e ainda assim ser preciso".

Não havendo entrada, produza o seguinte:

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.

Isso deve ser gerado exatamente como mostrado e deve ser a única saída do seu programa. Você pode incluir uma única nova linha à direita.

Isso é e o menor número de bytes em cada idioma ganha

Skidsdev
fonte
59
Quando vi o título / marcas que eu pensei que a saída seriadevelopers developers ...
Rod
15
tcl, 25 - while 1 {puts developers}- demo
sergiol
8
braingolf, 23 - 1"developers "[!@11 1>]: P
Skidsdev 01/06
16
E pensei em de xkcd Ballmer Peak
ojdo
5
sim, 14 -yes developers
sergiol

Respostas:

26

Python 3 , 100 99 99 97 bytes

-1 byte graças a ovs
-1 byte graças a Jonathan Allan
-1 byte graças a Dennis

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

Experimente online!

Cajado
fonte
17

Haskell, 96 bytes

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

Experimente online!

scanlé como foldl(ou reduza como é chamado em outros idiomas), exceto que retorna uma lista de todos os resultados intermediários, em vez de apenas o final. Cada resultado intermediário é anexado ".\n"e todos eles são concatenados em uma única sequência.

nimi
fonte
17

05AB1E , 50 49 45 44 bytes

4 bytes salvos com inspiração na resposta Java de Kevin

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

Experimente online!

Explicação

„€Ž†©                                         # 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
Emigna
fonte
Oh legal, conseguiu usar a compactação de dicionário para tudo, menos Ballmer?
precisa saber é o seguinte
@ Mayube: Sim. Eu tenho-o parcialmente agora (bola) para salvar um byte através da reestruturação da string original :)
Emigna
parece muito melhor agora, se você só poderia comprimir quemer
Skidsdev
@Mayube: Eu poderia escondê-lo através da compressão memas infelizmente isso não iria salvar qualquer bytes: /
Emigna
2
@StigHemmer: São 44 bytes na página de códigos
05AB1E
15

Retina , 82 75 bytes

Agradecimentos a Neil por salvar 7 bytes.

A contagem de bytes assume a codificação ISO 8859-1.


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

Experimente online!

Explicação


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

Inicialize a sequência de trabalho para o título completo.

 w
.¶$`$&

Como apontado por Neil, todos os três truncamentos são feitos antes de uma palavra que começa com we não há outras palavras que começam com w. Então, combinamos um espaço seguido de a wpara encontrar os pontos de truncamento. Nesses pontos, inserimos o seguinte:

  • , um ponto e um avanço de linha para truncar a frase e começar uma nova.
  • $`, a sequência inteira na frente da partida, para que a próxima frase comece do início.
  • $&, o espaço e wnovamente, para que também façam parte da próxima frase.

Não precisamos corresponder mobileexplicitamente, porque isso será simplesmente o que resta na terceira partida.

Martin Ender
fonte
3
Você só precisa corresponder no <espaço> we substituir por .¶$`$&.
Neil
@ Neil Oh, isso é realmente legal, obrigado. :)
Martin Ender
9

PHP, 104 95 94 bytes

<?=$a="Steve Ballmer still does not know",$a=".
$a what he did",$a.=" wrong",$a?> with mobile.
user63956
fonte
1
Faltando "o que"?
TheLethalCoder
8

/// , 88 bytes

8 bytes salvos por @MartinEnder!

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

Experimente online!

steenbergh
fonte
1
Você pode economizar um pouco mais movendo o prefixo anterior para cada substituição: tio.run/…
Martin Ender
@MartinEnder Isso é particularmente inteligente. Obrigado!
steenbergh
1
Oh, e outros 5 por cair 4por completo: tio.run/##DcLRDcMgDAXA/...
Martin Ender
5
@MartinEnder "Sim, eu terei um número 3 com dispositivos móveis, por favor."
precisa
7

05AB1E , 46 bytes

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

Experimente online!

Erik, o Outgolfer
fonte
Isso é 98 bytes pela minha contagem.
perfil completo de Stig Hemmer
O @StigHemmer 05AB1E usa sua própria página de códigos com 256 bytes, que codifica cada caractere em um único byte. Daí os 46 bytes, mesmo que haja muito mais bytes na codificação básica UTF-8.
Kevin Cruijssen
7

Java 8, 127 126 bytes

()->{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 byte graças a @KonstantinCh .

Experimente aqui.

Kevin Cruijssen
fonte
1
Espero que você não se importe de ter roubado sua ideia, é muito melhor do que minha abordagem em loop.
precisa saber é o seguinte
@TheLethalCoder Sem problemas, desde que vejo que você me creditou. :) Btw, stringnão pode estar varno seu C # lambda?
Kevin Cruijssen
Não, porque estou declarando vários de uma vez.
precisa saber é o seguinte
@TheLethalCoder Ah, claro, meu mal .. E ()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};infelizmente é três bytes mais.
Kevin Cruijssen
1
O Konstantin Ch sugere alterar "+dno final ."para salvar um byte, pois o avanço de linha final é opcional.
Martin Ender
6

C (gcc) , 112 bytes

f(){printf("%.33s.\n%1$.45s.\n%1$s.\n%1$s with mobile.","Steve Ballmer still does not know what he did wrong");}

Experimente online!

Dennis
fonte
6

Geléia , 52 46 bytes

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

Os créditos para ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓvão para @EriktheOutgolfer, que o usou em sua resposta .

Experimente online!

Como funciona

A maior parte do trabalho é feita pela compressão do dicionário de Jelly aqui.

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

codifica

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

não |indica as fronteiras entre as palavras que onde obtida a partir do dicionário e cadeias que foram codificados caractere por caractere ( mer, es, e t).

Da mesma forma, £Ṿ⁴'Þḣ~ẉcodifica  what| he| did(surpreendentemente, henão não vêm do dicionário), ¥Ị)codifica  wronge Ṡ8gÐ/codifica  with| mobile.

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

assim gera a matriz de strings

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

;\ cumulativamente reduz pela concatenação, construindo as frases em cada linha.

Finalmente, p”.calcula o produto cartesiano dessas frases e o caractere de ponto e Ysepara as frases resultantes por feeds de linha.

Dennis
fonte
Pela minha contagem, isso é 97 bytes.
perfil completo de Stig Hemmer
@StigHemmer Em UTF-8, seria. No entanto, o Jelly também suporta esse conjunto de caracteres de byte único .
Dennis
6

JavaScript (ES6), 102 bytes

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

Tente

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

Shaggy
fonte
Boa abordagem Eu o "emprestei" para minha resposta em C #.
TheLethalCoder
1
Talvez eu não entenda as regras do jogo, mas essa função só funcionará corretamente se você estiver em um navegador e usando a pré-tag innertext como você. Portanto, isso não tem mais que 102 bytes, pois depende do o.innerText = e do <pre id = "o"> e da obtenção do elemento?
Paulo
@Paul Eu sei que isso é antigo, mas uma função anônima é uma forma aceitável de E / S como uma entrada; portanto, desde que retorne os dados esperados, não será necessário exibi-los diretamente.
Dom Hastings
5

C (gcc) , 124 122 bytes

#define A"Steve Ballmer still does not know"
#define B".\n"A" what he did"
f(){puts(A B B" wrong"B" wrong with mobile.");}

Experimente online!

Giacomo Garabello
fonte
Você pode remover os espaços entre Ae B, e as cadeias que os definem.
Dennis
4

Retina , 95 86 bytes

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

Experimente online! Editar: salvou 9 bytes, alternando entre a saída de partes de toda a string e a acumulando em partes. A :`é necessária nas três primeiras etapas para torná-los saída.

Neil
fonte
ooh que é inteligente, apagar tudo entre a we e, em seguida, apagar tudo entre a wre e, em seguida, wie e. Não super Golfy devido à nova linha-iness de Retina, mas definitivamente arrefecer nontheless
Skidsdev
@ Mayube Acabou não sendo muito golfe, então eu mudei de método. (Ainda não é tão legal quanto a resposta de Martin Ender.) #
Neil
3

C #, 158 128 120 114 bytes

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

Guardou 30 bytes graças a @KevinCruijssen.
Guardado 6 bytes graças a @Shaggy.


Versão usando sub-string para 120 bytes:

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

Versão emprestada de @KevinCruijssen por 128 bytes:

()=>{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;};

Versão usando loop para 158 bytes:

()=>{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;};

Abordagem simples usando declarações ternárias para em um loop para anexar as novas partes na string a cada vez.

TheLethalCoder
fonte
Como um aparte, vale a pena notar que isso só funciona para C# >= 6cordas que as versões anteriores não têm interpolados
Skidsdev
@Mayube É verdade, mas eu golfing isto para usar a abordagem de Kevin no momento como que é muito melhor do que a minha haha
TheLethalCoder
Tenho que
colocar
@ Mayube As respostas Java geralmente batem em C # porque não incluem ponto e vírgula à direita. É sempre chato!
precisa saber é o seguinte
@Mayube Feito isso, por enquanto, pelo menos ...
TheLethalCoder
3

Bash, 111 109 107 bytes

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

Experimente online!

DrnglVrgs
fonte
3

Vim, 79 pressionamentos de teclas

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>termina automaticamente com a linha anterior. Como alternativa, você pode substituir todas as ocorrências de <CR><C-x><C-l>por<Esc>o<C-a>

BlackCap
fonte
3

CJam , 79 bytes

4{)"Steve Ballmer still does not know
hat he did
rong
ith mobile"N/<" w"*'.+N}%

Experimente online!

Erik, o Outgolfer
fonte
wow, padrão interessante encontrar
Destrutível Lemon
3

Ruby, 94 bytes

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

Repete os 4 caracteres da primeira sequência, convertendo cada um para seu valor ascii ne gerando os primeiros ncaracteres da segunda sequência de cada vez. Realmente não importa qual é o último caractere da primeira string, desde que seu valor ascii seja igual ou superior ao comprimento da segunda string.

Level River St
fonte
3

Fissão, 299 291 269 ​​bytes

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

Experimente online!

Finalmente uma linguagem 2D eu entendo!

Explicação

O programa gera um átomo com 1 massa e 0 de energia (um 1:0átomo) na Rlinha 3 e começa a se mover para a direita.

"Steve Ballmer still does not know" imprime cada caractere.

% move o átomo para cima se ele tiver 0 de energia ou diminui sua energia e o move para baixo.

]move o átomo para a esquerda, $incrementa a energia do átomo, Wmove o átomo para cima.

Quando o átomo está na linha superior, ele se move para a esquerda, até atingir ".", o que imprime um ponto N, o que imprime uma nova linha e M, finalmente , o que move o átomo para baixo Rnovamente, o que posteriormente move o átomo para a direita .

A cada loop, a energia do átomo é uma mais alta, o que significa que passará por mais uma %. Após o 4º loop, atinge o ;final da terceira linha, que destrói o átomo. O programa termina quando todos os átomos são destruídos.

Skidsdev
fonte
Você poderia adicionar uma explicação?
Shaggy
@Shaggy will do
Skidsdev 2/17
Você pode compactar muito mais o topo: 209 bytes .
KSmarts
3

Japt , 70 68 65 61 60 59 bytes

Contém alguns caracteres que não serão exibidos aqui; siga o link abaixo para ver o código completo.

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

Experimente online

  • 3 4 bytes salvos graças ao ETH , mais outros 4 com alguns avisos.

Explicação

Tudo entre os 2 backticks é uma sequência compactada do seguinte:

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 "."
Shaggy
fonte
1
Agradável. Você pode salvar alguns bytes fazendo isso [`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}, e mais alguns bytes que envolvem a remoção de [e ](deixarei você descobrir isso).
ETHproductions
Bom, @ETHproductions. Levei alguns minutos para decifrar que entre a compressão e os caracteres o SE não aparece, mas cheguei lá e agora acho que vejo o outro salvando o que você está sugerindo também.
Shaggy
1
Você pode ser melhor fora se você remover a divisão e união, e em vez disso fazer £P±X +'.}Rno final
ETHproductions
@ETHproductions, ele ainda chega aos 61 bytes, mas é definitivamente mais limpo; elimina a necessidade da nova linha à direita. EDIT: Oh, espere, não, eu posso salvar 1 byte com essa abordagem :)
Shaggy
2

Geléia , 49 bytes

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“¡=~Ṃ©N|ȯ“¡ṭṂ“CṬṀWỌ»ḣJK;¥€”.Y

Experimente online!

Erik, o Outgolfer
fonte
2

PHP, 116 bytes

for(;$i<4;)echo"Steve Ballmer still does not know",["",$t=" what he did",$t.=" wrong","$t with mobile"][+$i++],".

";

Experimente online!

Jörg Hülsermann
fonte
2

SOGL , 42 bytes

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

Explicação:

..‘                    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)
dzaima
fonte
Como você usa o SOGL? Instalei o Processing e todas as versões, embora não consiga descobrir como você o executaria.
Erik the Outgolfer
abra o "P5Parser" sem rótulos de versão e, na pasta, data/p.soglcole o código. Em seguida, executar o código de processamento deve executá-lo e a saída deve ser no console
dzaima
Tentei executar o seu código, mas ele não tem saída ..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Erik the Outgolfer 6/17
Funciona para mim. Tente dar o caminho completo em vez de p.sogl. se não há nada em STDOUT ou P5Parser/output.txt, eu não sei.
Dzaima 6/06
Esta é a saída para mim, separada em STDOUT e STDERR.
Erik the Outgolfer,
2

Sed, 96

s/^/Steve Ballmer still does not know./p
s/\./ what he did./p
s/\./ wrong./p
s/\./ with mobile./

Experimente online .

Entrada implícita de nova linha fornecida, de acordo com esta meta-pergunta .

Trauma Digital
fonte
Você pode obter 92 bytes removendo os dois segundos \.s
H.PWiz 19/01
2

Go , 140 127 bytes

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

Experimente online!

totalmente humano
fonte
2

Nim , 100 bytes

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

aqui o mesmo em código mais legível:

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], ".")

O idioma possui corte de cadeia e limites superiores inclusivos. O resto deve se explicar se você souber programar.

Arne
fonte
1

Carvão , 71 69 bytes

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

Experimente online! Link é uma versão detalhada do código, com alguns separadores omitidos porque o deverbosifier não pode fazê-lo automaticamente. Esta é basicamente uma porta da resposta de @ KevinCruijssen.

Neil
fonte
1

> <> , 135 bytes

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

Isso basicamente passa pela string, imprime e substitui o ponto final e os condicionais por espaços para continuar se movendo ao longo do código.

Talvez seja melhor visualizá-lo usando o link abaixo da lagoa;

> <> lagoa!

Experimente online!

Pelicano-verde
fonte
1
Nunca me ocorreu que knowsoletrar para trás é wonk.
Digital Trauma
8
@DigitalTrauma Bem, agora você
ganhou
1

Mathematica, 108 104 bytes

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


Experimente online!

-4 bytes de Martin

J42161217
fonte
1

> <> , 126 bytes

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
AGourd
fonte