![]() |
|
Voynichese is a numeric cipher? - Printable Version +- The Voynich Ninja (https://www.voynich.ninja) +-- Forum: Voynich Research (https://www.voynich.ninja/forum-27.html) +--- Forum: Theories & Solutions (https://www.voynich.ninja/forum-58.html) +--- Thread: Voynichese is a numeric cipher? (/thread-5798.html) |
RE: Voynichese is a numeric cipher? - ololololo - 02-08-2026 (02-08-2026, 03:38 PM)JoJo_Jost Wrote: You are not allowed to view links. Register or Login to view.No, I just meant that a little structure would help your approach. Then people might understand better what you're doing.But I have to agree here... RE: Voynichese is a numeric cipher? - ololololo - 03-08-2026 ¡Experiment!* I assumed that if we know the principle of letter alignment (which is probably similar to alphabetical alignment, but in the form of Roman numerals), we can generally match the unknown numbers with letters and enjoy the result. I took the most "convenient" passage for this experiment - the first line of f6v, which clearly depicts the ricinus. koary sar cheekar qoar shor chapchy s chear char otchy You can see sequences of ar that are comparable to the series of numbers "XXV XV IV". There are only 10 words, so the original word should have about the same number of letters.This number includes the Bavarian (and apparently German traditional) name for the ricinus - Wunderbaam. The following picture is emerging: koary - W sar - U/V cheekar - R qoar - N shor - M chapchy - E s - D chear - B char - A otchy - A Unclear... By the way, it could also be ricin9 if --us is encrypted as a single character. In this case, the ricin9 part is the words before the s. What can be seen from the German translation: the parts chear (B) and char (A) can indeed be such, assuming that che follows ch (perhaps B = II and A = I. By the way, this might also be a trick - replacing numbers with similar ones, i.e. n/y with ch. But I don't know). The sar part (U/V) should then be equal to 20. So, oar = sar, it turns out that o = s. Perhaps this is 15? But we have s = D, and D = 4. Even more confusing... For some reason, this example gives me the impression that the peculiarity of the VMS cipher and its difference from a simple substitution is that it allows the same number (or letter) to be written in different ways. Perhaps these are simply two different alphabets that differ from each other in their numerical values, which alternate with each other. Alternatively, they may be the same numbers in principle, but written in different forms (for example, XV could be written as VVV or VVIV). Perhaps (almost as in my cipher), the principle of polyphonic encryption applies, which makes s equal to 15 somewhere and 4 somewhere else. At the moment, I can't say for sure... * This header means that everything below is highly questionable. RE: Voynichese is a numeric cipher? - ololololo - 07-08-2026 The previous example made me think that ar is probably null, just like ch in my cipher. It only appears at the end of words. But in the word koary, it comes before the supposed unit y. Perhaps in the word koary this is true, while in the rest of the sequence it is superfluous. It can also be with ch at the end of the line. A possible cleaned-up version of the line: koary s eek qo shor ?chapchy? s ear ar oty Well, that’s not entirely accurate, and I don’t know what to do with the word chapchy. But something like that. It can be observed that s are located in different places, with the first one having a null ar. This may indicate that the second s is a space between words. According to this logic, at least the second ch in the word chapchy could also be null. But it’s still unclear how to properly “clean” this word. By the way, here’s another way to use my mini‑cipher — to compare it with the text. In any case, the meanings of the letters in it roughly correspond to the arrangement of the letters in VMS (for example, the number oiin will be closer to the beginning, but or can appear anywhere in combination with ch). RE: Voynichese is a numeric cipher? - ololololo - 08-08-2026 What speaks to me most about Voynichese in terms of numbers is the phenomenon of “sequences,” when a symbol or combination, unchanged or with only minor variations, repeats throughout the entire line in the words: In the 17th line, at the end, there are daiin dy. Sorry, but this also somehow resembles the sequences of my cipher and fits into them — XIII VI ![]() The single y at the end of 6th line also seems suspicious to me... RE: Voynichese is a numeric cipher? - JoJo_Jost - 08-08-2026 @ Olololo that ist normal... u find this in other languages, too RE: Voynichese is a numeric cipher? - ololololo - 08-08-2026 (08-08-2026, 12:58 PM)JoJo_Jost Wrote: You are not allowed to view links. Register or Login to view.that ist normal... u find this in other languages, tooWhich ones? I’ve sometimes come across examples in languages where one word ends with the same letter that the next one starts with (e.g., “eat toffee”). However, this feature is characteristic of almost the entire Voynich manuscript. The only similar linguistic phenomenon I know of is tongue twisters. But VMS isn’t a set of tongue‑twisters, right? RE: Voynichese is a numeric cipher? - ololololo - 08-08-2026 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))RE: Voynichese is a numeric cipher? - bi3mw - 08-08-2026 It would be better if you put the code inside the code - tag (formatting). RE: Voynichese is a numeric cipher? - ololololo - 09-08-2026 (08-08-2026, 10:39 PM)bi3mw Wrote: You are not allowed to view links. Register or Login to view.It would be better if you put the code inside the code - tag (formatting).I don’t know how to do this, sorry RE: Voynichese is a numeric cipher? - bi3mw - 09-08-2026 When you write or edit a new post, you'll find a “Code” button in the menu bar. This button inserts a “code start” and “code end” tag. You can paste your code between them. |