| Bytes | Lang | Time | Link |
|---|---|---|---|
| 114 | Python 3.8 prerelease | 240803T220319Z | Jakque |
| 012 | Tcl | 180415T154637Z | jimmy230 |
| 004 | dc | 180307T210202Z | brhfl |
| 002 | DipDup | 180307T105200Z | alephalp |
| 032 | JavaScript | 180202T120122Z | Shaggy |
| 004 | Underload | 180202T111404Z | Kevin Cr |
| 046 | JavaScript Node.js | 180202T112424Z | DELETE_M |
| 016 | Jelly | 180202T120426Z | DELETE_M |
Python 3.8 (pre-release), 114 bytes
for x in[a:='for x in[a:=%r,~(i:=-1)]:##\\',~(i:=-1)]:##\
exec(b:="x or input(a%a*i+'\\n exec(b:=%r)'%b*i);i+=1")
dc, 4 bytes
[]p
Similar to some other answers, since strings in dc have start ([) and end (]) delimiters (that is, " doesn't perform both duties, etc.), they're nestable without any real effort. p to print.
N=1: Try it online!
N=2: Try it nested!
N=3: Try it nesteder!
DipDup, 2 bytes
[]
It pushes the list onto the stack, and prints it without the outmost brackets.
N = 1: Try it online!
N = 2: Try it online!
N = 3: Try it online!
JavaScript, 36 32 bytes
Takes advantage of the fact that Function.prototype.toString() takes no arguments and will therefore ignore any that are passed to it.
Partly inspired by user202729's solution.
f=_=>f.toString( ).slice(14,-16)
Try it
o.innerHTML=["<span>Five</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Four</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Three</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Two</span>",(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16))(),"<span>One</span>",(f=_=>f.toString( ).slice(14,-16))(),"<span>Thunderbirds Are Go!</span>"].join`\n`
span{font-weight:bold;font-size:16px;line-height:1.5em;text-transform:uppercase;}span:last-child{font-size:8px;}
<pre id=o></pre>
Underload, 4 bytes
N=1: Try it online.
()S
N=2: Try it online.
( ()S)S
N=3: Try it online.
( ( ()S)S)S
Explanation:
Self-explanatory, but I add it anyway.
(...)Sprints anything between the parenthesis to STDOUT- The space before it is a no-op to make the byte-count even and comply to the rules of the challenge.
JavaScript (Node.js), 46 bytes
Full program. So console.log is necessary.
Use an idea from this answer to save some bytes.
l=console.log; g=_=>{};l((''+g).slice(4,-1))
Try it online! Try it online twice! Try it online, three times!
My approach is similar to that used in Kevin Cruijssen's answer, find a nestable structure (a function in this case).
Jelly, 16 bytes
Ṿḣ-9Ḋð}“““““““““
Doubled: Try it online!
Tripled: Try it online!
Jelly doesn't have any nestable structure, but its string literals are auto-terminated.
Ṿḣ-9Ḋ First chain. (monadic)
Ṿ UneṾal. (to string)
ḣ-9 Take the ḣead, ends at the -9'th character.
Ḋ Ḋequeue, remove the first character.
ð Terminate the first chain, start a new one.
} Convert the last monadic chain to a dyadic one.
“““““““““ String literal.
This matches the pattern <dyad> <nilad>, so applies
the the corresponding rules. This way a link can take data
to the right of it.
Will try different approaches to see if they can be shorter.