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


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!


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.


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

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.


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.

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!


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

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.


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

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.


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>


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


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.


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.


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!


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>



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.


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.


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

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

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)

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

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.


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.


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!


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


1

> <> , 126 bytes

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.