Of Dumps and Cubes, and Structured Nonsense

Clean, 150 145 143 bytes

Contains many non-printable characters.

import StdEnv
$d=map(\c=['ULFRBD ']!!(digitToInt(['96':d]!!(toInt c))))['!B5J8P;H2)*\'&-,/$ "C76A43O1<Q:9']

Try it online!

Defines the function $, taking [Char], and giving [Char].

This works by mapping each character position in the input to another character position in the output (using the character codes in a string), taking advantage of the swapped 'cubies' in the output being paralleled by swapped colors in the corresponding position in the input.

Output is separated by spaces.


Ruby, 115 bytes

->s{"29&,<&$?&*6&`S&hV&nY&fP&GH&ED&KJ&MB&3:;&%=>&#@5&178&aUT&_RQ&mOZ&oXW".bytes{|i|$><<"   ULFRBD"[s[i-32].ord%9]}}

Try it online!

A function taking the input as an argument and printing to stdout.

Iterate through the long string. Each byte(minus 32) represents the index of the next character to be transcribed.

To transcribe, take the ascii code of the character in the input (012345 or newline) and find the value modulo 9. This gives a number in the range 3 to 8, which is treated as an index in the string " ULFRBD" to transcribe. Thus the ascii code for 0 is 48, 48%9 is 3, which is the index of U in the string above.

The & signs in the long string point to the first newline in the input (character #10.) This is taken modulo 9 to give the value 1, which is looked up in " ULFRBD" and transcribed as a space.

The indices in the input are looked up as follows (extra spaces added for clarity)

    #$%
    *+,
    123
567 89: ;<= >?@
BCD EFG HIJ KLM
OPQ RST UVW XYZ
    _`a
    fgh
    mno

Jelly, 87 73 62 61 60 bytes

fØDO“¬ụƘȷ$OkḌ×c¿?oƥ¤_Ọ6;ȤṚUȷ!8⁺⁻:ĠŻ’Œ?¤ịs24Ṗs"2,3ị“LFRBDU”ẎK

Try it online!