Voynichese is a numeric cipher?
I changed the alphabet (removed j) and made a couple of small changes.

Code:
import random def letter_to_num(letter):     letter = letter.upper()     if letter == 'J':         return None     if letter in ['U', 'V']:         return 20     if 'A' <= letter < 'J':         return ord(letter) - ord('A') + 1     if 'K' <= letter <= 'Z':         return ord(letter) - ord('A')     return None def num_to_roman_tokens(num):     tokens = []     roman_rules = [         (22, 'XXII'), (21, 'XXI'), (20, 'XX'), (19, 'XIX'),         (18, 'XVIII'), (17, 'XVII'), (16, 'XVI'), (15, 'XV'),         (14, 'XIV'), (13, 'XIII'), (12, 'XII'), (11, 'XI'),         (10, 'X'), (9, 'IX'), (8, 'VIII'), (7, 'VII'),         (6, 'VI'), (5, 'V'), (4, 'IV'), (3, 'III'),         (2, 'II'), (1, 'I')     ]     for val, sym in roman_rules:         while num >= val:             tokens.append(sym)             num -= val     return tokens def encrypt_word(word):     numbers = [letter_to_num(l) for l in word if letter_to_num(l) is not None]     if not numbers:         return word     numbers.sort(reverse=True)     raw_tokens = []     for num in numbers:         raw_tokens.extend(num_to_roman_tokens(num))     separate_last_i = False     if len(raw_tokens) >= 2 and raw_tokens[-2] == 'III' and raw_tokens[-1] == 'I':         separate_last_i = True         raw_tokens.pop()     encrypted_tokens = []     is_standalone_xx = len(raw_tokens) == 1 and raw_tokens[0] == 'XX'     i = 0     while i < len(raw_tokens):         token = raw_tokens[i]         if token == 'XV' and i + 1 < len(raw_tokens) and raw_tokens[i+1] == 'XV':             encrypted_tokens.append("che")             i += 2             continue         if token == 'XVI':             if i + 1 < len(raw_tokens):                 next_token = raw_tokens[i+1]                 if next_token.startswith('XV') or next_token.startswith('X') or next_token.startswith('V'):                     if next_token == 'XV':                         encrypted_tokens.append("q")                         i += 2                         continue                     else:                         encrypted_tokens.append("qo")                         i += 1                         continue             encrypted_tokens.append("s")             i += 1             continue         if token == 'XXII': encrypted_tokens.append("chol")         elif token == 'XXI': encrypted_tokens.append("chor")         elif token == 'XIX':             prefix = random.choices(["ch", "yt", "yk"], weights=[60, 20, 20])[0]             encrypted_tokens.append(f"{prefix}eor")         elif token == 'XVIII': encrypted_tokens.append("oiin")         elif token == 'XVII': encrypted_tokens.append("cph")         elif token == 'XX': encrypted_tokens.append("sh" if is_standalone_xx else "ch")         elif token == 'XV': encrypted_tokens.append("o")         elif token == 'XIV': encrypted_tokens.append("oke")         elif token == 'XIII': encrypted_tokens.append("daiin")         elif token == 'XII': encrypted_tokens.append("dan")         elif token == 'XI': encrypted_tokens.append("ey")         elif token == 'IX':             base = random.choices(["or", "ol"], weights=[60, 40])[0]             prefix = random.choices(["ch", "yk", "yt"], weights=[80, 10, 10])[0]             encrypted_tokens.append(f"{prefix}{base}")         elif token == 'VIII': encrypted_tokens.append("aiin")         elif token == 'VII': encrypted_tokens.append("ain")         elif token == 'VI': encrypted_tokens.append("an")         elif token == 'IV': encrypted_tokens.append("ok")         elif token == 'X': encrypted_tokens.append("e")         elif token == 'V': encrypted_tokens.append("a")         elif token == 'III': encrypted_tokens.append("iin")         elif token == 'II': encrypted_tokens.append("in")         elif token == 'I':             current_word_str = "".join(encrypted_tokens)             if current_word_str and current_word_str[-1] in ['a', 'o']:                 encrypted_tokens.append("n")             else:                 encrypted_tokens.append("y")         i += 1     # Объединение ok/ot, a, in/iin в okaiin/otaiin     has_ok_ot = None     ok_ot_idx = -1     for idx, t in enumerate(encrypted_tokens):         if t in ["ok", "oke"]:             has_ok_ot = "ok"             ok_ot_idx = idx             break         elif t == "ot":             has_ok_ot = "ot"             ok_ot_idx = idx             break     a_idx = encrypted_tokens.index("a") if "a" in encrypted_tokens else -1     in_idx = -1     for idx, t in enumerate(encrypted_tokens):         if t in ["in", "iin"]:             in_idx = idx             break     if ok_ot_idx != -1 and a_idx != -1 and in_idx != -1:         combined = f"{has_ok_ot}aiin"         indices = sorted([ok_ot_idx, a_idx, in_idx], reverse=True)         first_idx = indices[-1]         for idx in indices:             encrypted_tokens.pop(idx)         encrypted_tokens.insert(first_idx, combined)     if separate_last_i:         current_word_str = "".join(encrypted_tokens)         last_i_char = "n" if current_word_str and current_word_str[-1] in ['a', 'o'] else "y"         encrypted_tokens.append(last_i_char)     if encrypted_tokens and encrypted_tokens[-1] == "n":         encrypted_tokens[-1] = "y"     if len(encrypted_tokens) >= 2 and encrypted_tokens[-2] == "a" and encrypted_tokens[-1] == "y":         encrypted_tokens[-2] = "d"     if encrypted_tokens:         if encrypted_tokens[-1] == "a":             encrypted_tokens[-1] = "g"         elif encrypted_tokens[-1].endswith("a"):             encrypted_tokens[-1] = encrypted_tokens[-1][:-1] + "g"     encrypted_str = " ".join(encrypted_tokens)     return encrypted_str def encrypt_text(text):     words = text.split()     encrypted_words = [encrypt_word(w) for w in words]     return " /// ".join(encrypted_words) print(encrypt_text("OO")) print(encrypt_text("PE")) print(encrypt_text("PO")) my_text = "YOUR TEXT" print(encrypt_text(my_text))
Reply


Messages In This Thread
Voynichese is a numeric cipher? - by ololololo - 04-06-2026, 12:10 AM
RE: Voynichese is a numeric cipher? - by RobGea - 04-06-2026, 05:57 PM
RE: Voynichese is a numeric cipher? - by RobGea - 05-06-2026, 11:53 PM
RE: Voynichese is a numeric cipher? - by JoeyB - 08-06-2026, 11:24 PM
RE: Voynichese is a numeric cipher? - by DG97EEB - 09-06-2026, 11:10 PM
RE: Voynichese is a numeric cipher? - by Koen G - 10-06-2026, 09:56 AM
RE: Voynichese is a numeric cipher? - by Koen G - 10-06-2026, 07:38 PM
RE: Voynichese is a numeric cipher? - by eggyk - 17-06-2026, 06:47 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 20-06-2026, 10:51 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 21-06-2026, 08:34 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 21-06-2026, 09:23 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 23-06-2026, 11:55 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 24-06-2026, 11:03 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 24-06-2026, 01:04 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 24-06-2026, 09:50 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 26-06-2026, 12:02 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 12:29 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 09:03 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 11:51 AM
RE: Voynichese is a numeric cipher? - by JoeyB - 19-07-2026, 03:02 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 03:42 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 04:31 PM
RE: Voynichese is a numeric cipher? - by JoeyB - 19-07-2026, 03:58 PM
RE: Voynichese is a numeric cipher? - by JoeyB - 19-07-2026, 04:47 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 05:57 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 19-07-2026, 10:23 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 20-07-2026, 07:59 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 20-07-2026, 01:32 PM
RE: Voynichese is a numeric cipher? - by JoeyB - 20-07-2026, 03:38 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 20-07-2026, 03:47 PM
RE: Voynichese is a numeric cipher? - by JoeyB - 20-07-2026, 04:08 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 20-07-2026, 07:24 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 22-07-2026, 03:56 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 22-07-2026, 07:25 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 22-07-2026, 09:16 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 23-07-2026, 08:58 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 29-07-2026, 09:45 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 08:11 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 10:29 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 11:33 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 01:15 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 08:40 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 09:01 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 30-07-2026, 10:25 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 09:04 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 10:13 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 11:30 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 12:02 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 11:10 AM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 04:00 PM
RE: Voynichese is a numeric cipher? - by oshfdk - 31-07-2026, 07:23 PM
RE: Voynichese is a numeric cipher? - by ololololo - 08-08-2026, 10:31 PM
RE: Voynichese is a numeric cipher? - by bi3mw - 08-08-2026, 10:39 PM
RE: Voynichese is a numeric cipher? - by bi3mw - 09-08-2026, 11:46 AM
RE: Voynichese is a numeric cipher? - by Mauro - 01-10-2026, 02:31 PM
RE: Voynichese is a numeric cipher? - by Oscroft - 30-09-2026, 05:20 PM
RE: Voynichese is a numeric cipher? - by tavie - 03-10-2026, 01:15 AM
RE: Voynichese is a numeric cipher? - by nablator - 03-10-2026, 10:26 PM
RE: Voynichese is a numeric cipher? - by Linda - 04-10-2026, 01:17 AM
RE: Voynichese is a numeric cipher? - by nablator - 04-10-2026, 01:41 AM
RE: Voynichese is a numeric cipher? - by Linda - 05-10-2026, 06:22 AM
RE: Voynichese is a numeric cipher? - by eggyk - 05-10-2026, 10:03 AM
RE: Voynichese is a numeric cipher? - by eggyk - 05-10-2026, 12:33 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Voynichese a Morse Code Cipher? (new book) Gavin Güldenpfennig 10 14,631 03-10-2019, 02:13 AM
Last Post: -JKP-

Forum Jump:


Users browsing this thread: 4 Guest(s)