# 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 – sergiol Jun 1 '17 at 13:29
• braingolf, 23 - 1"developers "[!@11 1>] :P – Skidsdev Jun 1 '17 at 13:31
• And I thought of xkcd's Ballmer Peak – ojdo Jun 1 '17 at 15:51
• yes, 14yes developers – sergiol Jun 6 '17 at 0:12

# 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

# Bash, 92 91 bytes

printf 'Steve Ballmer still does not %s.
' know{,' what he did'{,\ wrong{,\ with\ mobile}}}


Try it online!

JavaScript (ES6, no browser dependencies) 154 Bytes

(s='Steve Ballmer still does not know what he did wrong with mobile.')=>{
let l=s.slice.bind(s)
return ${l(0,33).\n${l(0,45)}.\n${l(0,51)}.\n${s}
}


The other ES6 solution requires (and doesn't account for) the use of html and html element APIs.

# 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!

# APL (Dyalog Unicode), 81 bytesSBCS

↑1⌽¨,\'.Steve Ballmer still does not know' ' what he did' ' wrong' ' with mobile'


Try it online!

One the very right, we have a list of strings.

,\ cumulative concatenation

1⌽¨ cyclically rotate each one step left (puts the periods at the ends)

↑ mix the list of strings into a character matrix

## 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


"$_.".say for [\,] 'Steve Ballmer still does not know','what he did','wrong','with mobile'  # 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 …. – manatwork 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! – Dom Hastings 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

# C (gcc), 113 bytes

f(c){for(c=4;c--;)printf("%.*s.\n","?3-!"[c],"Steve Ballmer still does not know what he did wrong with mobile");}


Try it online!

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

# 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!