aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrusinthread <rusinthread@cock.li>2016-12-31 19:54:28 +0300
committerrusinthread <rusinthread@cock.li>2016-12-31 19:54:28 +0300
commitb17bdb0c526c6a8493ae3dd06cf1d45fcf0458e6 (patch)
tree4651f79ddd05d597e6baaf11aa4653082a6cab67
parentc7e5380f9976d79c1dc81dc49f60288649a43c2b (diff)
analyze new posts
-rw-r--r--analyze_new.py131
-rwxr-xr-xmain.py40
-rw-r--r--new/text1_orig1
-rw-r--r--new/text2_orig1
-rw-r--r--new/text3_orig1
5 files changed, 173 insertions, 1 deletions
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. Шок на хуторе ты что-то смотрел. Пир и это мы всегда любили. Шикарно если ты изучаешь. И сам все всегда хочет знать. На рабочей установке всегда все гладко. А устье реки в котором плавает конечность. Как по мне и юркий он уж больно. Щиплет рану эта жидкость. Использовали тебя да еще как. Пожуй немного этого растения - если вот на голову это натянешь, то и хорошо. Плавно спускается вниз. Прима это ваше любимое. То вы никогда не узнаете. Если худо надо использовать это. Так он ничего не боится. Пламя есть из этой шутки. Плева девственная хочет быть восстановлена. Изучено и шути хоть немного над этим. У целого не отнимешь. Так очень обнадеживающе звучит.