From b17bdb0c526c6a8493ae3dd06cf1d45fcf0458e6 Mon Sep 17 00:00:00 2001 From: rusinthread Date: Sat, 31 Dec 2016 19:54:28 +0300 Subject: analyze new posts --- analyze_new.py | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 40 +++++++++++++++++- new/text1_orig | 1 + new/text2_orig | 1 + new/text3_orig | 1 + 5 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 analyze_new.py create mode 100644 new/text1_orig create mode 100644 new/text2_orig create mode 100644 new/text3_orig diff --git a/analyze_new.py b/analyze_new.py new file mode 100644 index 0000000..348ed8d --- /dev/null +++ b/analyze_new.py @@ -0,0 +1,131 @@ +#!/usr/bin/python3 +import re +import operator +import itertools +import sys +from pprint import pprint + +def load_text(n): + with open('new/text' + str(n) + '_orig') as f: + text = f.read() + + lines = re.split(r'[\?\.\!]+', text) + lines = list(map(lambda s: s.replace(' ', '').replace('-', ''), lines)) + + return "\n".join(lines).strip() + +def letter_pos(letter): + if letter in predefined_table: + return predefined_table[letter] + else: + letter_table = table[letter] + if len(letter_table) > 0: + return letter_table[0][0] + else: + return None + +alphabet = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' + +text = '' +text += load_text(1) + "\n" +text += load_text(3) + "\n" +#text += load_text(2) +text = text.upper() + +predefined_table = { + 'М': 8, + 'А': 5, + 'Р': 3, + 'Ш': 1, + 'Щ': 1, + 'И': 1, + 'У': 2, + 'Ю': 10, + 'В': 12, + 'Й': 5, + 'Л': 2, + 'Ц': 2, + 'О': 4, + 'Д': 8, + 'Т': 9, + 'П': 5, + 'Э': 3 +} + +table = {} +lines = text.split("\n") + +for a in alphabet: + table[a] = {} + for line in lines: + indexes = [m.start() for m in re.finditer(a, line)] + for index in indexes: + index += 1 + if index in table[a]: + table[a][index] += 1 + else: + table[a][index] = 1 + +for a, t in table.items(): + ts = sorted(t.items(), key=operator.itemgetter(1), reverse=True) + table[a] = ts + +#pprint(table['Э']) +#sys.exit() + +variants = [] +for line in lines: + valid = [] + for a in table: + if True: + index = letter_pos(a) + if index == None: + continue + + try: + if line[index-1] == a and a not in valid: + valid.append(a) + except IndexError: + continue + + if False: + letter_table = table[a] + if not len(letter_table): + continue + + for i in range(3): + if i > len(letter_table)-1: + continue + + if a == 'Щ': + index = 1 + else: + index = letter_table[i][0] + try: + if line[index-1] == a and a not in valid: + valid.append(a) + except IndexError: + continue + + variants.append(valid) + #print('('+''.join(valid)+')') + +variants = list(filter(lambda a: len(a), variants)) +variants = variants[11:31] + +pprint(variants) +sys.exit() + +#variants = variants[11:] +res = list(itertools.product(*variants)) +for r in res: + if r[0] == 'Ь': continue +# if r[1] != 'А': continue +# if r[5] != 'Л': continue +# if r[4] != 'О': continue + + #if r[3] != 'И': continue + #if r[2] != 'Д': continue + #if r[0] != 'Х': continue + + print(''.join(r)) diff --git a/main.py b/main.py index 0d3c6d5..abf732a 100755 --- a/main.py +++ b/main.py @@ -154,6 +154,41 @@ def decode2(s): return buf +def decode3(s): + buf = '' + for s in re.split(r'[\?\.\!]+', s): + s = s.strip() + s = s.replace(' ', '') + s = s.replace('-', '') + if not s: + continue + + print(s) + continue + + s = s.upper() + + if s[0] in ('Ш', 'Щ', 'И'): + buf += s[0] + elif s[4] == 'Й': + buf += s[4] + elif s[0] == 'И': + buf += 'И' + elif s[7] == 'М': + buf += 'М' + elif s[4] == 'А': + buf += 'А' + elif s[2] == 'Р': + buf += 'Р' + elif s[1] == 'У': + buf += 'У' + elif s[9] == 'Ю': + buf += 'Ю' + else: + buf += '?' + + return buf + # s: source # t: type @@ -165,6 +200,9 @@ def decode_auto(s, t, reverse_decoded=False, remove_junk=True): elif t == 2: result = decode2(s) + elif t == 3: + result = decode3(s) + if reverse_decoded: # reverse string result = result[::-1] @@ -180,7 +218,7 @@ def main(): parser.add_argument('--decode-file') parser.add_argument('--with-junk', action='store_true') parser.add_argument('--is-url', action='store_true') - parser.add_argument('--type', type=int, choices=[1, 2], default=1) + parser.add_argument('--type', type=int, choices=[1, 2, 3], default=1) parser.add_argument('--reverse-decoded', action='store_true') args = parser.parse_args() diff --git a/new/text1_orig b/new/text1_orig new file mode 100644 index 0000000..802f16e --- /dev/null +++ b/new/text1_orig @@ -0,0 +1 @@ +Ты тоже Омск теперь вспоминай с ностальгией. Атава та еще стерва. Бурак кушать всегда тебе полезно. Шлюха она и Африке шлюха. Ироды естественно ничего не поймут. Дурное это на вкус. Тупое лезвие все настроение испортило. Особую ты и юную видел. Щука исполнила желание. И не поняли ничего. Какой хозяин такая и собака. От них и хреново можно себя почувствовать. Так он и знал ее. После он дезинтегрирует их. И что это? Она даже и такая вся из себя. Это и понял сразу. С трона не скинешь его точно. По этой дороге ты всегда ходил. Их с собой теперь не носи. Как отметили в дневнике. Только у моих подопечных. И у них есть все. Но что и аммуниции вопрос не беспокоит. Но она не думает. Он решил и выполнил. Шкурные у всех интересы. Ты роботизирован насквозь. И узнал все от меня. Если вам и такая работа по вкусу. И учуяли они. diff --git a/new/text2_orig b/new/text2_orig new file mode 100644 index 0000000..c4a1bf3 --- /dev/null +++ b/new/text2_orig @@ -0,0 +1 @@ +Только не смотрели погоды прогноз. Даже не решились оценку вынести и утиному носу ее. А так что ни есть она не стругает. Информационная война не на пользу. Чтобы не было инверсии. После матча негде иподромить. Имели они вас. Самогон дерьмом не окажется. Атава ничего тебе не расскажет. При падении он что-то аргументирует. Атава не знал куда бежать. Падении нет укуса. diff --git a/new/text3_orig b/new/text3_orig new file mode 100644 index 0000000..797557b --- /dev/null +++ b/new/text3_orig @@ -0,0 +1 @@ +Если едем то на ГАЗ-53. Шок на хуторе ты что-то смотрел. Пир и это мы всегда любили. Шикарно если ты изучаешь. И сам все всегда хочет знать. На рабочей установке всегда все гладко. А устье реки в котором плавает конечность. Как по мне и юркий он уж больно. Щиплет рану эта жидкость. Использовали тебя да еще как. Пожуй немного этого растения - если вот на голову это натянешь, то и хорошо. Плавно спускается вниз. Прима это ваше любимое. То вы никогда не узнаете. Если худо надо использовать это. Так он ничего не боится. Пламя есть из этой шутки. Плева девственная хочет быть восстановлена. Изучено и шути хоть немного над этим. У целого не отнимешь. Так очень обнадеживающе звучит. -- cgit v1.2.3