4 of 7 added 12 characters in body

# Jelly,  187  168 bytes

ḣ9;⁾| ṁ5¤oµ€“µ½¿‘¦
“ _/ |/|”;€⁶;”_ṁ"“¤¢¢¢¢¦¦¦‘ṃ@“Ė⁸ġṾṗ¢œƝṇRK⁹ṄẸŒÐ¤ɓḂı)ḥṆqƓị¹÷ḄƝṁPʠVW1JĊTc;[¤ÆWŒṠṬ#ʋÆ6ẉ⁷ZḷƊḤƑẹẠGḊ|qi×Ƭ®ÐėƁ1(⁸ṪU¹Bgoƭ<Gḋ×c:ȦṚƇĊ¬e*⁽%ḷİ°U’Fs27Ç¹⁸?x€15¦€19Y


A full program.

Try it online!

### How?

Note: changes have been made to the code but not yet to the explanation...

145 bytes are a 143 digit base 250 number, which is a base-4 compression of a possible cube, with trailing spaces added to equalise the row-lengths, without new lines, and without 18 characters from the middle of each row, like this, but without newlines:

         _________________
/ _____________  /|
/ / ___________/ / |
/ / /| |       / /  |
/ / / | |      / /   |
/ / /| | |     / / /| |
/ / / | | |    / / / | |
/ / /  | | |   / / /| | |
/ /_/___|_|_|__/ / / | | |
/________________/ /  | | |
| ______________ | |  | | |
| | |    | | |_| | |__| | |
| | |    | |___| | |____| |
| | |   / / ___| | |_  / /
| | |  / / /   | | |/ / /
| | | / / /    | | | / /
| | |/ / /     | | |/ /
| | | / /      | |   /
| | |/_/_______| |  /
| |____________| | /
|________________|/


The program reverses the process and changes the characters that need changing if the cube should be an impossible one:

ḣ9;⁾| ṁ5¤oµ€“µ½¿‘¦  Link 1, replace characters to make impossible: rows
¦  apply sparsely:
“µ½¿‘   ...to indexes: code-page indexes = [9,10,11]
...this:
µ€          for €ach:
ḣ9                      head to index 9
⁾|                     list of characters = ['|',' ']
ṁ5                  mould like 5 = ['|',' ','|',' ','|']
;                     concatenate
o              logical or (vectorises) with the row
(which has the effect of appending the rest of the row)

“ ... ’ṃ“ /|_”s27Ç¹⁸?x€15¦€19Y  Main link: V
“ ... ’                         base 250 number (as described above)
“ /|_”                  the characters to use [' ','/','|','_']
ṃ                        base decompression (0->'_', 1->' ', 2->'/', 3->'|')
s27               split into chunks of length 27 (the rows)
?           if:
⁸              chain's left argument = V
Ç              ...then: call last link (1) as a monad
¹             ...else: identity (do nothing)
€     for €ach
¦        apply sparsely:
15         ...to index: 15
x€    19     ...this: repeat €ach nineteen times
Y  join with newlines
implicit print

 answered Jun 21 '17 at 12:55 Jonathan Allan 64.6k55 gold badges4646 silver badges192192 bronze badges