83 8 Create Your Own Encoding Codehs Answers Exclusive

  • Create a full mapping table for every character in your alphabet.
  • Encode a short sample message (4–12 characters).
  • Swap with a partner and decode each other’s message.
  • Reflect: What made decoding easy or hard? Could the encoding be compressed or improved?
  • Encoding is a process of converting information from one format to another for the purpose of secure transmission or storage. A simple form of encoding is a substitution cipher, where each character is replaced by a different character.

    To ensure the program was robust, I added logic to handle two specific scenarios: 83 8 create your own encoding codehs answers exclusive

    ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 .,?!'\"-_~@#$%^&*+=/\\|"
    def encode83(s):
        block = 8
        pad = '~'
        res = ""
        for i in range(0, len(s), block):
            chunk = s[i:i+block]
            chunk += pad * (block - len(chunk))
            for ch in chunk:
                if ch not in ALPHABET:
                    raise ValueError("Unsupported character")
                res += ch  # or map to index and pack numerically
        return res
    
    def decode83(encoded):
        pad = '~'
        res = ""
        for i in range(0, len(encoded), 8):
            chunk = encoded[i:i+8]
            for ch in chunk:
                if ch == pad:
                    continue
                res += ch
        return res
    

    Let's create a simple encoding scheme. For this example, let's assume we want to encode English text. Create a full mapping table for every character

    Since 2⁵ = 32, we can encode 26 letters + space easily. Encoding is a process of converting information from

    | Char | Code (binary) | Char | Code | |------|--------------|------|------| | a | 00000 | n | 01101 | | b | 00001 | o | 01110 | | c | 00010 | p | 01111 | | ... | ... | z | 11001 | | space| 11010 | | |

    (Remaining codes can be unused or for punctuation.)

  • Each symbol is assigned an index 0..82.
  • Encoding process:
  • Block size: 8 symbols per block (hence "83-8"). Short final block is padded with the padding symbol (~).