# [Jelly], <s> 187 </s> 166 [bytes] ḣ9;⁾| ṁ5¤oµ€“µ½¿‘¦ “ _/ |/|”;€⁶;”_ṁ"“¡ẇḞ6’D¤ṃ@“Ė⁸ġṾṗ¢œƝṇ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!**][TIO-j46zy1ru] ### How? 103 bytes are a 101 digit base 250 number, which is a base-8 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 8 base-8 digits represent the strings of characters: 1 2 3 4 5 6 7 0 " ", "_", "/", " ", "|", "/ / /", "| | |", "_____" So the compression is then like the below where `1`s, `6`s, `7`s and `0`s are to be replaced by the strings shown above: 111000__111/ 00___ /|11 / / 00_/ / |116| |11 / / |1 6 | |11/ /1|1 671 6| |16 71 6 | | 6 7167 6___|_|_|__6 7/000_/ / 7| 00____ | | 771 7_7__771 | |___7____| |71/ / ___7_ / / 7 6176 7 61 7 / /1761 7/ /1 7 / /11| |1/1 7/_/0__| | /11| |00__| | /11 |000_|/11 The program reverses the process and changes the characters that need changing if the cube should be an impossible one: “ _/ |/|”;€⁶;”_ṁ"“¡ẇḞ6’D¤ṃ@“ ... ’Fs27ǹ⁸?x€15¦€19Y Main link: V ...splitting this up... ...Main link part 1: “ _/ |/|”;€⁶;”_ṁ"“¡ẇḞ6’D¤ - make the list of strings of characters “ _/ |/|” - list of characters = " _/ |/|" ⁶ - literal space character ;€ - concatenate €ach -> [" ","_ ","/ "," ","| ","/ ","| "] ”_ - literal = '_' ; - concatenate -> [" ","_ ","/ "," ","| ","/ ","| ", '_'] ¤ - nilad followed by link(s) as a nilad: “¡ẇḞ6’ - base 250 literal = 31111555 D - convert to decimal list -> [3,1,1,1,1,5,5,5] " - zip with: ṁ - mould like - -> [" ","_","/"," ","|","/ / /","| | |","_____"] ...Main link, part 2: ...ṃ@“ ... ’Fs27 - make the rows of a possible cube without the middle repetitions: ... - part 1, above “ ... ’ - the 101 digit base 250 number ṃ@ - base decompression with swapped @rguments F - flatten (because the digit values we are using are actually lists) s27 - split into chunks of length 27 (into the rows) ...Main link part 3: ...ǹ⁸?x€15¦€19Y - make "impossible" if need be, add the row middles and output ... - part 2, above ? - if: ⁸ - chain's left argument = V Ç - ...then: call last link (1) as a monad - (make it an impossible cube - see link 1, below) ¹ - ...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 ḣ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 ¤ nilad followed by link(s) as a nilad: ⁾| 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) [Jelly]: https://github.com/DennisMitchell/jelly [bytes]: https://github.com/DennisMitchell/jelly/wiki/Code-page [TIO-j46zy1ru]: https://tio.run/##FY/PSgJRFMb3PYUUQbUxAw2boIgoqE1EJdXChUgUgkibglnMNXFo3JhCU5GhNbkIC1uY90xocO44lG9x7otMd1bn3/f7ON9ZNpe7DALiL0lNsqEeIWBxdPLYk8WONB6xhwP8kcYdtifUGElHI3pUl0ZDC@/sS1NtWjGTobZFrkn8KSGN@3V0CK5W1da7lYx7LYIhgY3Po7rfIDB3tyUDghK5fFQTVXT@6sSL3ucs8VeCcsGv03cFQfSJl0KA7YybB6nYlmftZbRjdEQ5NaoRNAk6U@OKKCfIvZasf0S871vEHf@GXCC3uUnc0gunwvY7@CGqnu2z2Ix6iOBtH2HtJO@/LytNRdiZpd82wYNvehZ2snOSDaaVmdfF7r7Ks3G@sChMBIWuXKjosTi2w5I8DIJg/h8 "Jelly – Try It Online"