“Ø^ÞṠṠẠ'Ḣߥ»=⁶œṗ;11;“RcGEs436X578 ”µ“ƈ`¿øÐ⁽ḞÆCḊḋɲÑF×GÇz ⁸¦MƊ‘ד£¿Þ瑦5ŻṃµṚ“®Ɲ,»,K)Y
Try it online!
How?
Uses eighteen non-"iPhone " parts and constructs each line from a big-endian number in base eighteen, then prefixes each with "iPhone " and joins with newline characters.
The parts used are (comma separated):
Max, Plus, Pro, ,S,R,c,G,E,X,s,3,4,5,6,7,8,11
The mapping to the eighteen digits was chosen so that:
- the space character is a zero - allowing a single byte prepend-zero to make the first line
- no two digit "numbers" are greater than 255 - allowing encoding with code-page indices
- the three digit "numbers" (
S,G,3
; Plus,s,6
; Max,S,X
; and Max, Pro,11
) are all exact multiples of five (and less than 1275) - allowing encoding with code-page indices, with post multiplication to acquire their full value
- the three words are adjacent and do not occupy digit one - allowing compression with a split-before spaces application
One such (1-indexed) ordering is:
S, Max, Plus, Pro,11,R,c,G,E,s,4,3,6,X,5,7,8,
As such the code works like so:
“...»=⁶œṗ;11;“...”µ“...‘ד£¿Þ瑦5ŻṃµṚ“®Ɲ,»,K)Y - Main Link: no arguments
“...» - string = "S"+" Max"+" Plus"+" Pro"
⁶ - space character
= - equals? (vectorises)
œṗ - partition before truthy indices
;11 - concatenate 11
“...” - list of characters "RcGEs436X578 "
; - concatenate
- giving our "digits" [1,2,...,17,0]
µ - start a new monadic chain
“...‘ - list of code-page indices = [156, 96, 11, 29, 15, 141, 195, 13, 67, 193, 233, 163, 16, 70, 17, 71, 14, 122, 32, 136, 5, 77, 145]
¦ - sparse application...
- ...to indices:
“£¿Þç‘ - code-page indices = [2, 11, 20, 23]
× 5 - ...do: multiply by five -> [156, 480, 11, 29, 15, 141, 195, 13, 67, 193, 1165, 163, 16, 70, 17, 71, 14, 122, 32, 680, 5, 77, 725]
Ż - prepend a zero
ṃ - base-decompress (convert to base-18 using the "digits")
- e.g. 680 -> [2, 1, 14] -> [" Max",'S','X']
µ ) - for each:
Ṛ - reverse it (e.g. [" Max",'S','X'] -> ['X','S'," Max"])
“®Ɲ,» - string = "iPhone"
, - pair
K - join with a space character
Y - join with newline characters
- implicit, smashing print