I'm reasonably happy with the normal decoding, but am not sure how far to take the error checking.
The problem descriptions simply says "... the input does not conform to SBS rules stated above output simply the sign ?", but the rules are annoyingly vague on the subject.
These are my tests - can anybody confirm or disagree with any?
Error conditions:
000011
000101 => ? (inconsistent line length)
01010100
00001
00011 => ? (odd line length)
01011
100010
000100 => ? (a / letter sign / a - unnecessary letter sign)
000100
01100110
01000100 => ? (number sign / 1 / number sign / 1 - unnecessary number sign)
11001100
0000100010
0000000000 => ? (capital sign / capital sign / A / capital sign / A - unnecessary capital sign)
0101000100
00
00 => ? (capital sign with no following letter)
01
00
01 => ? (letter sign with no following letter)
01
01
01 => ? (number sign with no following digit)
11
0000
0000 => ? (double capital sign with no following letter)
0101
00000010
00000000 => ? (triple capital sign / A)
01010100
11
01 => ? (TION sign not preceded by letter sign)
10
000100
010110 => ? (redundant letter sign / number sign / 2)
011100
010000
010110 => ? (redundant number sign / letter sign / b)
110100
000100
000110 => ? (redundant capital sign / number sign / 2)
011100
000000
000110 => ? (redundant capital sign / letter sign / b)
010100
00000100
00000110 => ? (redundant double capital sign / number sign / 2)
01011100
100000
000110 => ? (a / redundant letter sign / b)
000100
1001
0001 => ? (a / orphaned number sign)
0011
1001
0001 => ? (a / orphaned number sign)
0011
000010
000000 => ? (capital sign / space / A)
010000
Not sure about this one. As Hagen von Eitzen pointed out in the comments, this seems to contradict the earlier statement. If this is valid, can k be used for 11, and all the way up to z for 26?
0101
0110 => 10 (number sign / 10(j) - Is this valid or not?)
1100
Non-error tests:
100011
000101 => ation (a / letter sign / tion)
000110
00100011
00000101 => Ation (capital sign / a / letter sign / tion)
01000110
0000100011
0000000101 => ATION (capital sign / capital sign / a / tion)
0101000110
000011
000101 => Tion (capital sign / letter sign / tion)
010110
00000011
00000101 => TION (capital sign / capital sign / letter sign / tion)
01010110
1110
0100 => the (th / e)
0110
001110
000100 => The (capital sign / th / e)
010110
00001110
00000100 => THE (capital sign / capital sign / th / e)
01010110
0000100010
0000001010 => ABC (capital sign / capital sign / a / b / c)
0101000000
00100010
00001010 => Abc (capital sign / a / b / c)
01000000
00001000100000
00000010100100 => ABCd (capital sign / capital sign / a / b / c / letter sign / d)
01010000000110
00001000100100
00000010100100 => ABC4 (capital sign / capital sign / a / b / c / number sign / 4)
01010000001110
000010001001000000
000000101001000100 => ABC4d (capital sign / capital sign / a / b / c / number sign / 4 / letter sign / d)
010100000011100110
01100010
01000100 => 1a (number sign / 1 / letter sign / a)
11000100
01100010
01000000 => 1A (number sign / 1 / capital sign / a)
11000100
100011
000101 => ation (a / letter sign / tion)
000110
0011
0101 => tion (letter sign / tion)
0110
100100
000100 => a0 (a / number sign / 0)
001100
00100100
01000100 => a0 (letter sign / a / number sign / 0)
01001100
00100100
00000100 => A0 (capital sign / A / number sign / 0)
01001100
0000111010001110
0000010000010100 => THEATIONA (capital sign / capital sign / th / e / a / letter sign / tion / a)
0101011000011000
000011101000110010
000001000001010100 => THEATIONa (capital sign / capital sign / th / e / a / letter sign / tion / letter sign / a)
010101100001100100
000011101000001110
000001000001010100 => THEAtiona (capital sign / capital sign / th / e / a / letter sign / letter sign / tion / a)
010101100001011000
00001110100011
00000100000101 => THEATION (capital sign / capital sign / th / e / a / letter sign / tion)
01010110000110
0100
0100 => 0 (number sign / 0)
1100
0110
0100 => 1 (number sign / 1)
1100
01100010
01000100 => 1a (number sign / 1 / letter sign / a)
11000100
01001000100010
01000000000000 => 01A a (number sign / 0 / 1 / capital sign / A / space / a)
11000001000000
0100100010
0100000000 => 01A (number sign / 0 / 1 / capital sign / A)
1100000100
01
11 => z (z)
00
00001000100000100010011101001101
00000010100100001010000010001000 => ABCdefghijKl (capital sign / capital sign / a / b / c / letter sign / d / e / f / g / h / i / j / capital sign / K / l)
01010000000110101010000000010010
011000
010000 => 10 (number sign / 1 / 0)
110000
000011
010101 => tion (letter sign / letter sign / tion)
010110