Il curioso caso di Steve Ballmer


46

Steve Ballmer è l'ex CEO di Microsoft e, in un recente articolo , ha affermato che "non sa ancora cosa ha fatto di sbagliato con il cellulare".

Come ha sottolineato la newsletter di CodeProject , "Il titolo di quell'articolo potrebbe essere concluso in così tanti punti ed essere ancora accurato".

Dato nessun input, produrre quanto segue:

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.

Questo deve essere emesso esattamente come mostrato, e deve essere il solo output del tuo programma. È possibile includere una nuova riga finale finale.

Si tratta di quindi vince il minor numero di byte in ogni lingua


59
Quando ho visto il titolo / i tag ho pensato che il risultato sarebbe statodevelopers developers ...
Rod

15
tcl, 25 - while 1 {puts developers}- demo
sergiol

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

16
E ho pensato al Ballmer Peak
ojdo,

5
si, 14 -yes developers
sergiol,

Risposte:


26

Python 3 , 100 99 99 97 byte

-1 byte grazie agli ovs
-1 byte grazie a Jonathan Allan
-1 byte grazie a Dennis

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

Provalo online!


17

Haskell, 96 byte

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

Provalo online!

scanlè simile foldl(o ridotto come viene chiamato in altre lingue) tranne per il fatto che restituisce un elenco di tutti i risultati intermedi anziché solo quello finale. Ogni risultato intermedio viene aggiunto ".\n"e tutti sono concatenati in una singola stringa.


17

05AB1E , 50 49 45 44 byte

4 byte salvati con ispirazione dalla risposta Java di Kevin

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

Provalo online!

Spiegazione

„€Ž†©                                         # 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 bello, sei riuscito a usare la compressione del dizionario per tutto ma Ballmer?
Skidsdev,

@Mayube: Sì. L'ho preso parzialmente ora (palla) per salvare un byte ristrutturando la stringa originale :)
Emigna

sembra molto meglio ora, se solo potessi comprimerlomer
Skidsdev il

@Mayube: potrei nasconderlo comprimendo mema sfortunatamente questo non salverebbe alcun byte: /
Emigna

2
@StigHemmer: 44 byte nella tabella codici
05AB1E

15

Retina , 82 75 byte

Grazie a Neil per aver salvato 7 byte.

Il conteggio dei byte presuppone la codifica ISO 8859-1.


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

Provalo online!

Spiegazione


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

Inizializza la stringa di lavoro sul titolo completo.

 w
.¶$`$&

Come sottolineato da Neil, tutti e tre i troncamenti vengono fatti prima di una parola che inizia con w, e non ci sono altre parole che iniziano con w. Quindi abbiniamo uno spazio seguito da a wper trovare i punti di troncamento. In questi punti, inseriamo quanto segue:

  • , un punto e un avanzamento riga per troncare la frase e iniziarne una nuova.
  • $`, l'intera stringa davanti alla partita, in modo che la frase successiva ricomincia dall'inizio.
  • $&, lo spazio e wancora, in modo che facciano parte anche della frase successiva.

Non abbiamo bisogno di abbinare mobileesplicitamente, perché sarà semplicemente ciò che resta della terza partita.


3
Devi solo abbinare su <spazio> w e sostituirlo con .¶$`$&.
Neil,

@Neil Oh, è davvero pulito, grazie. :)
Martin Ender,

9

PHP, 104 95 94 byte

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

1
Manca "cosa"?
TheLethalCoder

8

/// , 88 byte

8 byte salvati da @MartinEnder!

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

Provalo online!


1
Puoi risparmiare un po 'di più spostando il prefisso precedente in ogni sostituzione: tio.run/…
Martin Ender,

@MartinEnder È particolarmente intelligente. Grazie!
Steenbergh,

1
Oh, e altri 5 cadendo del 4tutto: tio.run/##DcLRDcMgDAXA/…
Martin Ender

5
@MartinEnder "Sì, avrò un numero 3 con il cellulare, per favore."
Steenbergh,


7

Java 8, 127 126 byte

()->{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 grazie a @KonstantinCh .

Provalo qui.


1
Spero non ti dispiaccia che ho rubato la tua idea, è molto meglio del mio approccio a ciclo continuo.
TheLethalCoder

@TheLethalCoder Nessun problema, visto che mi hai accreditato. :) A proposito, stringnon puoi essere varnel tuo C # lambda?
Kevin Cruijssen,

No perché sto dichiarando multipli contemporaneamente.
TheLethalCoder

@TheLethalCoder Ah, certo, mio ​​cattivo .. Ed ()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};è purtroppo tre byte più lungo.
Kevin Cruijssen,

1
Konstantin Ch suggerisce di modificare la "+dfine in ."per salvare un byte poiché l'alimentazione di linea finale è facoltativa.
Martin Ender,


6

Gelatina , 52 46 byte

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

I crediti per ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓvanno a @EriktheOutgolfer, che l'ha usato nella sua risposta .

Provalo online!

Come funziona

La parte del leone del lavoro è fatta dalla compressione del dizionario di Jelly qui.

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

codifica

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

ci |indica confini tra le parole che dove inverosimile dal dizionario e archi che sono stati codificati carattere per carattere ( mer, es, e t).

Analogamente, £Ṿ⁴'Þḣ~ẉcodifica  what| he| did(sorprendentemente, hefa non provengono dal dizionario), ¥Ị)codifica  wronge Ṡ8gÐ/codifica  with| mobile.

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

quindi produce l'array di stringhe

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

;\ riduce cumulativamente per concatenazione, costruendo le frasi su ogni riga.

Infine, p”.calcola il prodotto cartesiano di queste frasi e il carattere punto e Ysepara le frasi risultanti per avanzamenti di riga.


Secondo il mio conteggio, questo è 97 byte.
Stig Hemmer,

@StigHemmer In UTF-8, lo sarebbe. Tuttavia, Jelly supporta anche questo set di caratteri a byte singolo .
Dennis,

6

JavaScript (ES6), 102 byte

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

Provalo

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


Bel approccio l'ho "preso in prestito" per la mia risposta C #.
TheLethalCoder

1
Forse non capisco le regole del gioco, ma questa funzione funziona correttamente solo se sei in un browser e usi il pre-tag innertext come hai fatto tu. Quindi non sono più di 102 byte, poiché dipende da o.innerText = e <pre id = "o"> e sta effettivamente ottenendo l'elemento?
Paul,

@Paul So che questo è vecchio, ma una funzione anonima è una forma accettabile di I / O come voce, quindi finché restituisce i dati previsti, non è necessario visualizzarli direttamente.
Dom Hastings,

5

C (gcc) , 124 122 byte

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

Provalo online!


È possibile rimuovere gli spazi tra Ae Be le stringhe che li definiscono.
Dennis,

4

Retina , 95 86 byte

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

Provalo online! Modifica: salvato 9 byte passando dall'output di parti dell'intera stringa alla creazione della stringa in pezzi. La :`necessaria sui primi tre stadi per renderli uscita.


ooh che è intelligente, cancellando tutto tra il we e, quindi cancellando tutto tra il wre e, quindi wie e. Non super golfy a causa della newline-iness di Retina, ma decisamente cool
Skidsdev

@Mayube Si è rivelato non molto golfy, quindi ho cambiato metodo. (Comunque non è bello come la risposta di Martin Ender.)
Neil

3

C #, 158 128 120 114 byte

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

Risparmiato 30 byte grazie a @KevinCruijssen.
6 byte salvati grazie a @Shaggy.


Versione che utilizza la sotto stringa per 120 byte:

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

Versione presa in prestito da @KevinCruijssen per 128 byte:

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

Versione che utilizza il looping per 158 byte:

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

Approccio semplice usando istruzioni ternarie in un ciclo per aggiungere ogni volta le nuove parti alla stringa.


Per inciso, vale la pena notare che questo funziona solo C# >= 6perché le versioni precedenti non hanno stringhe interpolate
Skidsdev

@Mayube Vero, ma sto giocando a golf per usare l'approccio di Kevin in questo momento poiché è molto meglio del mio haha
TheLethalCoder

Devo golf 2 byte in più per poter battere la risposta java D:
Skidsdev

@Mayube Le risposte Java di solito battono C # perché non includono un punto e virgola finale. È sempre fastidioso!
TheLethalCoder

@Mayube Fatto, almeno per ora ...
TheLethalCoder

3

Bash, 111 109 107 byte

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

Provalo online!


3

Vim, 79 sequenze di tasti

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>si completa automaticamente con la riga precedente. In alternativa puoi sostituire ogni ricorrenza di <CR><C-x><C-l>con<Esc>o<C-a>



3

Rubino, 94 byte

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

Scorre i 4 caratteri nella prima stringa, convertendoli ciascuno nel suo valore ASCII ne producendo nogni volta i primi caratteri della seconda stringa. Non importa quale sia l'ultimo carattere della prima stringa, purché il suo valore ASCII sia uguale o maggiore della lunghezza della seconda stringa.


3

Fissione, 299 291 269 ​​byte

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

Provalo online!

Finalmente un linguaggio 2D ho capito!

Spiegazione

Il programma genera un atomo con 1 massa e 0 energia (un 1:0atomo) Rsulla linea 3 e inizia a muoversi verso destra.

"Steve Ballmer still does not know" stampa ogni personaggio.

% sposta l'atomo verso l'alto se ha 0 energia o diminuisce la sua energia e la sposta verso il basso.

]sposta l'atomo a sinistra, $aumenta l'energia dell'atomo,W sposta l'atomo verso l'alto.

Una volta che l'atomo si trova sulla riga superiore, si sposta a sinistra, fino a raggiungere ".", che stampa un punto N, che stampa una nuova riga e M, infine , che sposta l'atomo verso il bassoR nuovo, che successivamente sposta l'atomo a destra .

Ad ogni ciclo l'energia dell'atomo è una più alta, il che significa che ne attraverserà un'altra %. Dopo il 4o ciclo raggiunge la ;fine della terza linea, che distrugge l'atomo. Il programma termina quando tutti gli atomi vengono distrutti.


Potresti aggiungere una spiegazione?
Shaggy

@Shaggy farà
Skidsdev il

Puoi comprimere la parte superiore molto di più: 209 byte .
KSmarts,

3

Japt , 70 68 65 61 60 59 byte

Contiene alcuni personaggi che non verranno visualizzati qui; segui il link qui sotto per vedere il codice completo.

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

Provalo online

  • 3 4 byte salvati grazie a ETH , più altri 4 con alcuni suggerimenti.

Spiegazione

Tutto tra i 2 backtick è una stringa compressa di quanto segue:

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
Bello. Puoi salvare alcuni byte facendo [`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}, quindi un altro paio di byte che comporta la rimozione di [e ](ti farò capire quello).
ETHproductions

Bello, @ETHproductions. Mi ci sono voluti un paio di minuti per decifrare che tra la compressione e i caratteri non viene visualizzato SE, ma ci sono arrivato e ora penso di vedere l'altro salvataggio che stai accennando.
Shaggy

1
Potresti stare meglio se rimuovi la divisione e l'unione e invece fai £P±X +'.}Ralla fine
ETHproductions

@ETHproductions, arriva ancora a 61 byte, ma è decisamente più ordinato; elimina la necessità della nuova riga finale. EDIT: Oh, aspetta, no, posso salvare 1 byte con quell'approccio :)
Shaggy



2

SOGL , 42 byte

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

Spiegazione:

..‘                    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)

Come usi SOGL? Ho installato Elaborazione e tutte le versioni, anche se non riesco a capire come lo faresti.
Erik the Outgolfer,

apri il "P5Parser" senza etichette di versione e nella sua cartella data/p.soglincolla il codice. Quindi eseguire il codice di elaborazione dovrebbe eseguirlo e l'output dovrebbe essere nella console
dzaima

Ho provato a eseguire il tuo codice, ma non ha alcun output ..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Erik the Outgolfer

Per me funziona. Prova a dargli il percorso completo invece di p.sogl. se non c'è nulla in STDOUT o P5Parser/output.txt, non lo so.
dzaima,

Questo è l'output per me, separato in STDOUT e STDERR.
Erik the Outgolfer,


2

Vai , 140 127 byte

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

Provalo online!


2

Nim , 100 byte

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

qui lo stesso nel codice più leggibile:

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

La lingua presenta lo slicing delle stringhe e i limiti superiori inclusivi. Il resto dovrebbe spiegarsi se conosci la programmazione.


1

Carbone , 71 69 byte

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

Provalo online! Il collegamento è alla versione dettagliata del codice, con alcuni separatori omessi perché deverbosifier non può farlo automaticamente. Questo è fondamentalmente un port della risposta di @ KevinCruijssen.


1

> <> , 135 byte

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

Questo in sostanza passa attraverso la stringa, stampa quindi sostituisce fullstop e condizionali con spazi per continuare a muoversi lungo il codice.

Potrebbe essere meglio visualizzarlo usando il link pond> <> sottostante;

> <> stagno!

Provalo online!


1
Non mi è mai venuto in mente che l' knowortografia al contrario lo sia wonk.
Trauma digitale

8
@DigitalTrauma Bene, ora hai vinto
ETHproductions

1

Mathematica, 108 104 byte

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


Provalo online!

-4 byte da Martin


1

> <> , 126 byte

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.