##JavaScript (ES6), <s>156</s> <s>144</s> <s>136</s> <s>134</s> 121 bytes Sadly, the infamous `String.fromCharCode()` costs 19 bytes. <!-- begin snippet: js hide: false console: true babel: false --> <!-- language: lang-js --> f=(x=y=!(k=32))=>k<127?(++x-22?String.fromCharCode(y+1>>1^5&&(y<9?x>>1^5:x-y>>1&&21-y-x>>1)?32:k++):(x=!++y,` `))+f(x):'' console.log(f()) <!-- end snippet -->