Would have been ideal for this 2017 MIT Mystery Hunt puzzle. Requires some thought about how to handle encodings that interleave input from multiple lines at once, though.
A sketch of a composable implementation:
cxLines :: CxList Char -> [CxList Char]
breaks things into lines;
cxInterleave :: Int -> [CxList Char] -> [CxList Char]
interleaves k lines into a time, as k = 3 would turn
a1 a2 a3 ...
b1 b2 b3 ...
c1 c2 c3 ...
into
a1 b1 c1 a2 b2 c2 a3 b3 c3 ...
and a final interleaved-Braille encoder/decoder that would take chunks of six characters in the traditional way.
Would have been ideal for this 2017 MIT Mystery Hunt puzzle. Requires some thought about how to handle encodings that interleave input from multiple lines at once, though.
A sketch of a composable implementation:
breaks things into lines;
interleaves
klines into a time, ask = 3would turninto
and a final interleaved-Braille encoder/decoder that would take chunks of six characters in the traditional way.