# The Curious Case of Steve Ballmer

Steve Ballmer is the ex-CEO of Microsoft, and in a recent article, claimed that he "still does not know what he did wrong with mobile".

As CodeProject's newsletter pointed out, "That article's title could be ended at so many spots and still be accurate".

Given no input, output the following:

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.


This must be outputted exactly as shown, and must be the only output of your program. You may include a single trailing newline.

This is so fewest bytes in each language wins

• When I saw the title / tags I thought that the output would be developers developers ...
– Rod
Jun 1 '17 at 12:30
• tcl, 25while 1 {puts developers}demo Jun 1 '17 at 13:29
• braingolf, 23 - 1"developers "[!@11 1>] :P Jun 1 '17 at 13:31
• And I thought of xkcd's Ballmer Peak
– ojdo
Jun 1 '17 at 15:51
• yes, 14yes developers Jun 6 '17 at 0:12

# Charcoal, 71 69 bytes

Ａ⟦⟧βＦ⪪”↓/‘ZQ≔'Ｗε}÷＆’/↗∧μ~⎇²~ηρπ‖¢β\σuσＩ⌀δ#″:§▶¬QγγＱＺ–” w⁺⪫⊞Ｏβι w¦.¶


Try it online! Link is to verbose version of code, with some separators omitted because deverbosifier can't do it automatically. This is basically a port of @KevinCruijssen's answer.

# ><>, 135 bytes

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


This basically goes through the string, prints then replaces the fullstop and conditionals with spaces to keep moving along the code.

It may be best to visualise it using the below ><> pond link;

><> pond!

Try it online!

• It never occurred to me that know spelled backwards is wonk. Jun 1 '17 at 15:40
• @DigitalTrauma Well, now you wonk Jun 1 '17 at 15:40

# Mathematica, 108 104 bytes

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


-4 bytes from Martin

## ><>, 126 bytes

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


# Octave, 126 bytes

Two approaches, same length:

printf('%s.\n',(s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'}){1},[s{1:2}],[s{1:3}],[s{1:4}])


Try it online!

s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'};printf('%s.\n',s{1},[s{1:2}],[s{1:3}],[s{1:4}])


Try it online!

I could make it 21 bytes shorter, if I steal Rod's approach, but that's no fun.

for i=[33,45,51,63],disp(['Steve Ballmer still does not know what he did wrong with mobile'(1:i),46]),end


# MATLAB / Octave - 120 bytes

a=[];s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'};for i=s,a=[a i{1}];disp([a '.']);end


Logic is to start off with an empty string, then we have a cell array that contains the base string as the first element followed by the additions for the other elements. Note that each additional component has a space prepended. We then iterate through the cell array, and at each iteration we concatenate with a component and display the string to the user adding a period at the end.

We get:

>> a=[];s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'};for i=s,a=[a i{1}];disp([a '.']);end
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.


# Try it online!

http://www.tutorialspoint.com/execute_octave_online.php?PID=0Bw_CjBb95KQMRGZoWFJ1Z3NaNTQ

"$_.".say for [\,] 'Steve Ballmer still does not know','what he did','wrong','with mobile'  # Retina, 82 bytes  ABCC with mobile. C B wrong B .¶A what he did A Steve Ballmer still does not know  Try it online! # Rust, 145 bytes ||{for i in b"!-3?"{println!("{}.",&"Steve Ballmer still does not know what he did wrong with mobile".to_owned().get(..*i as usize).unwrap());}};  Inspired by this solution. Try it online! # Julia 0.6, 99 bytes Generate the 4 desired strings with cumprod (* is string concatenation). Tack on a period with a broadcasted string concatenation .* and print all elements in the list with a broadcasted call println.. println.(cumprod(["Steve Balmer still does not know"," what he did"," wrong"," with mobile"]).*".")  Try it online! # Unix TMG, 145 bytes p:parse(b)b:=(1){<Steve Ballmer still does not know>$1<.>*}=(1){1({< what he did>$1})}=(1){1({< wrong>$1})}={3({})2({})1({})1({< with mobile>})};


With some white spaces:

p:parse(b)
b:=(1){<Steve Ballmer still does not know>$1<.>*} =(1){1({< what he did>$1})}
=(1){1({< wrong>$1})} ={3({}) 2({}) 1({}) 1({< with mobile>})};  # 05AB1E, 43 bytes ”™¸ïßmer”“„â‚à€–ƒ€“…€À€½ƒ§'–Ñ„€Ž†©)η¦ðý'.«»  Try it online! # Deadfish~, 1507 bytes {{i}dd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}iii}dddc{ddd}ddddddc{{i}ddd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}i}iiic{{i}d}dddc{d}dddddc{d}iiic{ii}dc{{d}ii}ddddc{{i}ddd}iicdddc{{d}iii}ic{{i}ddd}ddciiiiicdddddc{ddddd}ddddc{ddd}ddddddc{{i}ddd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}i}iiic{{i}d}dddc{d}dddddc{d}iiic{ii}dc{{d}ii}ddddc{{i}ddd}iicdddc{{d}iii}ic{{i}ddd}ddciiiiicdddddc{{d}iii}iic{{i}d}dddcdddddcdddcdc{d}iiic{dddddd}iiic{ddd}ddddddc{{i}ddd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}i}iiic{{i}d}dddc{d}dddddc{d}iiic{ii}dc{{d}ii}ddddc{{i}ddd}iicdddc{{d}iii}ic{{i}ddd}ddciiiiicdddddc{{d}iii}iic{{i}d}dddcdddddcdddcdc{d}iiic{{d}iii}dc{{i}d}dddc{d}ddddc{i}ic{d}ddc{{d}iii}ddc{{i}dd}dddciic{d}dddc{i}dddciiic{d}iiic{ddddd}dddddc  Try it online! ## QBIC, 95 bytes ?@Steve Ballmer still does not know+@.?A+@ what he did+B?A+C+@ wrong+B?A+C+D+@ with mobile.  This makes every part of the output into a separate string literal, where 'A$' holds Steve Ballmer still does not know, and then repeatedly prints 'A$', followed by 'B$' (a period) or the next literal.

Chopping the original string into substrings takes just a byte more (96 bytes):

?B,34|+@.?_sB,46|+A?_sB,52|+A?@Steve Ballmer still does not know what he did wrong with mobile.


Here, 'B$' holds the entire thing, and parts of it are subsequently shown using substring ('_s...|). Note that 'A$' now holds the period. This allows the full sentence to be moved to the end of the program, so we can drop the closing backtick.

# Braingolf, 139 108 bytes

"Steve Ballmer still does not know
."VRMM!&@v!&@R" what he did"!&@v!&@R" wrong"!&@v!&@R " with mobile"&@v&@R


# Powershell, 101 bytes

0..3|%{-join("Steve Ballmer still does not know"," what he did"," wrong"," with mobile")[0..$_]+"."}  ## REXX, 123 bytes s='Steve Ballmer still does not know what he did wrong with mobile' w=6 9 10 12 do i=1 to 4 say subword(s,1,word(w,i)). end  # MSX-BASIC, 123 bytes 1s$="Steve Ballmer still does not know what he did wrong with mobile":forx=1to4:readl:?left$(s$,l);".":next:data33,45,51,64


# Clojure(script), 122 bytes

(print(apply str(interpose"\n"(reductions str"Steve Ballmer still does not know"[" what he did"" wrong"" with mobile"]))))


Perl, 98 bytes

for('Steve Ballmer still does not know',' what he did',' wrong',' with mobile'){$s.=$_;say "$s."}  (Run via perl -M5.10.1 ... so that "say" will be recognized) • According to J B's tip, you can rewrite it as say$s.="$_."for'Steve Ballmer …. Jun 8 '17 at 16:09 • You can shrink to 89 bytes with this, but can't think of much more to do to shrink it! Feb 20 '18 at 16:41 # Tcl, 115 bytes puts [set S "Steve Ballmer still does not know"].\n[set h "$S what he did"].\n[set w $h\ wrong].\n$w\ with\ mobile.


Try it online!

# Pyth - 98

K." w!ZÑ±§ÑÔæý^àV;KæM×ü1A_4ÿ"J" what he did"A," wrong"" with mobile"=N\.+KN++KJNs[KJGN)s[KJGHN


The first string is a packed string

# Fission 2, 109 107 bytes

R"Steve Ballmer still does not know"J2~~$$" what he did"J1~" wrong"J0" with mobile."* /0C+$$J1C+J2C@"."N


Try it online!

I was a little annoyed at the amount of whitespace in the previous Fission answer, so I decided to see if I could make it smaller.

# GolfScript, 82 bytes

4,{"Steve Ballmer still does not know
what he did
wrong
with mobile"n/\)<"."n}/


This can be considered "19 bytes" since that's the actual code.

4,{"nnn"s/\)<"."n}/ are all the excess characters that actually make the code itself.

Try it online!

Very happy with this. Splits along newlines, then adds the next element one at a time with a period until everything is printed. Lovely.

Explanation!

First of all, we have to acknowledge the string.
It's split along newlines right where we want the breaks to be.
This will be important.

For the explanation, our string is S.

4,{Sn/\)<"."n}/
4,              #Make an array [0 1 2 3]
{          }/ #For each of those elements...
Sn/          #Take our string and split it along newlines
\         #Move our number-element to the front of the stack
)        #Increase it by 1
<       #Look at a number of parts of the split string eq. to that num
"."    #Put a period after
n   #Newline
#Implicit "print the stack" at the end of creation. No quotes.