El curioso caso de Steve Ballmer


46

Steve Ballmer es el ex CEO de Microsoft y, en un artículo reciente , afirmó que "todavía no sabe qué hizo mal con los dispositivos móviles".

Como señalaba el boletín de CodeProject , "el título de ese artículo podría terminar en tantos puntos y seguir siendo exacto".

Sin entrada, salida lo siguiente:

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.

Esto se debe generar exactamente como se muestra y debe ser el único resultado de su programa. Puede incluir una nueva línea final.

Este es el por lo que gana menos bytes en cada idioma


59
Cuando vi el título / las etiquetas pensé que la salida seríadevelopers developers ...
Rod

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

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

16
Y pensé en Ballmer Peak
ojdo

55
sí, 14 -yes developers
sergiol

Respuestas:


26

Python 3 , 100 99 99 97 bytes

-1 byte gracias a ovs
-1 byte gracias a Jonathan Allan
-1 byte gracias a Dennis

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

Pruébalo en línea!


17

Haskell, 96 bytes

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

Pruébalo en línea!

scanles como foldl(o reducir como se llama en otros idiomas), excepto que devuelve una lista de todos los resultados intermedios en lugar de solo el final. Cada resultado intermedio se agrega con ".\n"y todos ellos se concatenan en una sola cadena.


17

05AB1E , 50 49 45 44 bytes

4 bytes guardados con la inspiración de la respuesta Java de Kevin

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

Pruébalo en línea!

Explicación

„€Ž†©                                         # 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 bien, ¿logró usar la compresión de diccionario para todo menos Ballmer?
Skidsdev

@Mayube: Sí. Ahora lo tengo parcialmente (bola) para guardar un byte reestructurando la cadena original :)
Emigna

se ve mucho mejor ahora, si tan solo pudieras comprimir esomer
Skidsdev

@Mayube: podría ocultarlo al comprimirlo mepero desafortunadamente eso no ahorraría ningún byte: /
Emigna

2
@StigHemmer: Tiene 44 bytes en la página de códigos
05AB1E

15

Retina , 82 75 bytes

Gracias a Neil por guardar 7 bytes.

El recuento de bytes asume la codificación ISO 8859-1.


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

Pruébalo en línea!

Explicación


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

Inicialice la cadena de trabajo al título completo.

 w
.¶$`$&

Como señaló Neil, los tres truncamientos se hacen antes de que una palabra comience w, y no hay otras palabras que comiencen con w. Entonces hacemos coincidir un espacio seguido de a wpara encontrar los puntos de truncamiento. En estos puntos, insertamos lo siguiente:

  • , un punto y un salto de línea para truncar la oración y comenzar una nueva.
  • $`, la cadena completa frente al partido, de modo que la siguiente oración comience desde el principio.
  • $&, el espacio y wotra vez, para que también sean parte de la siguiente oración.

No es necesario que coincidamos mobileexplícitamente, porque eso simplemente será lo que quede en el tercer partido.


3
Solo necesita hacer coincidir en <space> w y reemplazar con .¶$`$&.
Neil

@Neil Oh, eso es genial, gracias. :)
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
¿Falta "qué"?
TheLethalCoder

8

/// , 88 bytes

¡8 bytes guardados por @MartinEnder!

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

Pruébalo en línea!


1
Puede ahorrar un poco más moviendo el prefijo anterior a cada sustitución: tio.run/…
Martin Ender

@MartinEnder Eso es particularmente inteligente. ¡Gracias!
steenbergh 01 de

1
Ah, y otros 5 al dejar caer por 4completo: tio.run/##DcLRDcMgDAXA/…
Martin Ender

55
@MartinEnder "Sí, tendré un nr. 3 con el móvil, por favor".
steenbergh 01 de


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 gracias a @KonstantinCh .

Pruébalo aquí


1
Espero que no te importe que robé tu idea, es mucho mejor que mi enfoque de bucle.
TheLethalCoder

@TheLethalCoder No hay problema en absoluto, ya que veo que me has acreditado. :) Por cierto, stringno puede estar varen tu C # lambda?
Kevin Cruijssen

No porque estoy declarando múltiples a la vez.
TheLethalCoder

@TheLethalCoder Ah, por supuesto, mi mal ... Y ()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};lamentablemente es tres bytes más largo.
Kevin Cruijssen

1
Konstantin Ch sugiere cambiar "+dal final ."para guardar un byte ya que el salto de línea final es opcional.
Martin Ender


6

Jalea , 52 46 bytes

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

Los créditos para ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓir a @EriktheOutgolfer, quien lo usó en su respuesta .

Pruébalo en línea!

Cómo funciona

La mayor parte del trabajo se realiza mediante la compresión del diccionario de Jelly aquí.

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

codifica

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

no |indica los límites entre las palabras que, cuando descabellada del diccionario y las cuerdas que fueron codificados carácter por carácter ( mer, esy t).

Del mismo modo, £Ṿ⁴'Þḣ~ẉcodifica  what| he| did(sorprendentemente, hehace no vienen del diccionario), ¥Ị)codifica  wrong, y Ṡ8gÐ/codifica  with| mobile.

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

por lo tanto produce el conjunto de cadenas

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

;\ se reduce acumulativamente por concatenación, construyendo las frases en cada línea.

Finalmente, p”.calcula el producto cartesiano de estas frases y el carácter de punto, y Ysepara las oraciones resultantes por saltos de línea.


Según mi cuenta, esto es 97 bytes.
Stig Hemmer

@StigHemmer En UTF-8, sería. Sin embargo, Jelly también admite este conjunto de caracteres de un solo byte .
Dennis

6

JavaScript (ES6), 102 bytes

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

Intentalo

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


Buen enfoque, lo he "prestado" para mi respuesta C #.
TheLethalCoder

1
Tal vez no entiendo las reglas del juego, pero esta función solo funciona correctamente si estás en un navegador y estás usando la etiqueta previa de texto inverso como lo hiciste. Entonces, ¿no son más de 102 bytes, ya que depende del o.innerText = y el <pre id = "o"> y de hecho obtener el elemento?
Paul

@Paul Sé que esto es antiguo, pero una función anónima es una forma aceptable de E / S como entrada, por lo que siempre que devuelva los datos esperados, no necesita mostrarlos directamente.
Dom Hastings


4

Retina , 95 86 bytes

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

Pruébalo en línea! Editar: ahorró 9 bytes al cambiar de la salida de partes de la cadena completa a construir la cadena en pedazos. El :`es necesario en las primeras tres etapas para que salgan.


ooh eso es inteligente, eliminar todo entre el wy e, luego eliminar todo entre el wry e, luego wiy e. No es súper golf debido a la nueva línea de Retina, pero definitivamente es genial
Skidsdev

@Mayube Resultó no ser muy golfista en absoluto, así que he cambiado de método. (Todavía no es tan genial como la respuesta 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.";};

Guardado 30 bytes gracias a @KevinCruijssen.
Guardado 6 bytes gracias a @Shaggy.


Versión con subcadena de 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);

Versión prestada de @KevinCruijssen para 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;};

Versión con bucle de 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;};

Enfoque simple usando declaraciones ternarias en un bucle para agregar las nuevas partes a la cadena cada vez.


Por otro lado, vale la pena señalar que esto solo funciona C# >= 6ya que las versiones anteriores no tienen cadenas interpoladas
Skidsdev

@Mayube Cierto, pero estoy jugando al golf para usar el enfoque de Kevin en este momento, ya que es mucho mejor que el mío jaja
TheLethalCoder

Tengo que jugar 2 bytes más para que puedas vencer a la respuesta Java D:
Skidsdev

@Mayube Las respuestas Java generalmente superan a C # porque no incluyen un punto y coma final. Siempre es molesto!
TheLethalCoder

@Mayube Hecho, por el momento al menos ...
TheLethalCoder


3

Vim, 79 pulsaciones 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>autocompleta con la línea anterior. Alternativamente, puede reemplazar cada aparición de <CR><C-x><C-l>con<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]+?.}

Itera a través de los 4 caracteres en la primera cadena, convirtiendo cada uno a su valor ascii ny sacando los primeros ncaracteres de la segunda cadena cada vez. Realmente no importa cuál sea el último carácter de la primera cadena, siempre que su valor ascii sea igual o mayor que la longitud de la segunda cadena.


3

Fisión, 299 291 269 bytes

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

Pruébalo en línea!

¡Finalmente un lenguaje 2D que entiendo!

Explicación

El programa genera un átomo con 1 masa y 0 energía (un 1:0átomo) en la Rlínea 3, y comienza a moverse hacia la derecha.

"Steve Ballmer still does not know" Imprime cada personaje.

% mueve el átomo hacia arriba si tiene 0 de energía, o disminuye su energía y lo mueve hacia abajo.

]mueve el átomo a la izquierda, $incrementa la energía del átomo, Wmueve el átomo hacia arriba.

Una vez que el átomo está en la fila superior, se mueve hacia la izquierda, hasta que alcanza ".", que imprime un punto N, que imprime una nueva línea y M, finalmente , que mueve el átomo hacia abajo Rnuevamente, que posteriormente mueve el átomo hacia la derecha .

En cada bucle, la energía del átomo es una más alta, lo que significa que pasará por una más %. Después del cuarto ciclo, llega ;al final de la tercera línea, que destruye el átomo. El programa termina una vez que se destruyen todos los átomos.


¿Podría agregar una explicación?
Shaggy

@Shaggy lo hará
Skidsdev

Puede comprimir la parte superior mucho más: 209 bytes .
KSmarts

3

Japt , 70 68 65 61 60 59 bytes

Contiene algunos caracteres que no se mostrarán aquí; siga el siguiente enlace para ver el código completo.

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

Pruébalo en línea

  • 3 4 bytes guardados gracias a ETH , más otros 4 con algunas indicaciones.

Explicación

Todo entre los 2 backticks es una cadena comprimida de lo siguiente:

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
Agradable. Puedes guardar algunos bytes haciendo [`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}, luego un par de bytes más que implican eliminar el [y ](te dejaré averiguarlo).
ETHproductions

Buena, @ETHproductions. Me tomó un par de minutos descifrar que entre la compresión y los caracteres SE no se muestra, pero llegué allí y ahora creo que veo el otro ahorro que también estás insinuando.
Shaggy

1
Puede que esté mejor si elimina la división y la unión, y en su lugar lo hace £P±X +'.}Ral final
ETHproductions

@ETHproductions, todavía viene en 61 bytes, pero definitivamente es más ordenado; elimina la necesidad de la nueva línea final. EDITAR: Oh, espera, no, puedo guardar 1 byte con ese enfoque :)
Shaggy



2

SOGL , 42 bytes

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

Explicación:

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

¿Cómo usas SOGL? He instalado Processing y todas las versiones, aunque no puedo entender cómo lo ejecutarías.
Erik the Outgolfer

abra el "P5Parser" sin etiquetas de versión, y en su carpeta data/p.soglpegue el código. Luego, ejecutar el código de procesamiento debería ejecutarlo y la salida debería estar en la consola
dzaima

Intenté ejecutar su código, pero no tiene salida ..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Erik the Outgolfer

Esto funciona para mi. Intenta darle el camino completo en lugar de p.sogl. si no hay nada en STDOUT o P5Parser/output.txt, no lo sé.
dzaima

Este es el resultado para mí, separado en STDOUT y 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],"."

aquí lo mismo en código más legible:

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

El lenguaje tiene segmentación de cadenas y límites superiores inclusivos. El resto debería explicarse si conoce la programación.


1

Carbón , 71 69 bytes

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

Pruébalo en línea! El enlace es a una versión detallada del código, con algunos separadores omitidos porque el desverbosificador no puede hacerlo automáticamente. Esto es básicamente un puerto de la respuesta 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

Básicamente, esto pasa por la cadena, imprime y luego reemplaza el fullstop y los condicionales con espacios para seguir moviéndose a lo largo del código.

Puede ser mejor visualizarlo usando el siguiente enlace> <> estanque;

> <> estanque!

Pruébalo en línea!


1
Nunca se me ocurrió que se knowdeletrea al revés wonk.
Trauma digital

8
@DigitalTrauma Bueno, ahora te
preguntas

1

Mathematica, 108104 bytes

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


Pruébalo en línea!

-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"."
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.