Pocatecni commit
authorTomas Musil <tomik.musil@gmail.com>
Sat, 17 Mar 2012 17:09:49 +0000 (18:09 +0100)
committerTomas Musil <tomik.musil@gmail.com>
Sat, 17 Mar 2012 17:09:49 +0000 (18:09 +0100)
.gitignore [new file with mode: 0644]
TODO [new file with mode: 0644]
bref [new file with mode: 0644]
jakobsen.py [new file with mode: 0644]
koincidence.py [new file with mode: 0644]
ocesavac.py [new file with mode: 0644]
ref [new file with mode: 0644]
referencni.py [new file with mode: 0644]
robot.py [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..fa75c40
--- /dev/null
@@ -0,0 +1,3 @@
+*.pyc
+*.log
+*.tmp
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..2fbefea
--- /dev/null
+++ b/TODO
@@ -0,0 +1,18 @@
+==Nutno dodelat==
+efektivni jakobsen
+jakobsen bez mezer + tabulky
+index(y) koincidence
+roztridit a prehazet obsah jednotlivych souboru
+    v robot.py jenom handling mailu
+    ostatni nastroje prehledne roztridit
+automaticke rozpoznani typu sifry
+
+==Moznosti rozsireni==
+dalsi/lepsi referencni tabulky
+polyalfabeticky jakobsen
+kasisskeho test? (odhali neco co by nenasli indexy koincidence? asi ne...)
+
+==Vyzkum==
+neco na transpozice?
+podivat se jestli nekdo navazal na jakobsena
+    (rozptyly, optimalita)
diff --git a/bref b/bref
new file mode 100644 (file)
index 0000000..3b867c0
--- /dev/null
+++ b/bref
@@ -0,0 +1,1475 @@
+(i__main__
+reference
+p0
+(dp1
+S'tabulka'
+p2
+(dp3
+S'A'
+p4
+(dp5
+g4
+F0.001267490780855574
+sS'C'
+p6
+F0.0049603901166548935
+sS'B'
+p7
+F0.0021313352612648785
+sS'E'
+p8
+F0.00049069360058262557
+sS'D'
+p9
+F0.0060197002810932912
+sS'G'
+p10
+F0.00071374702689450033
+sS'F'
+p11
+F0.00071985103928678604
+sS'I'
+p12
+F0.00069930368038611038
+sS'H'
+p13
+F0.0017683577354253425
+sS'K'
+p14
+F0.0056937129295433391
+sS'J'
+p15
+F0.0029755933951051642
+sS'M'
+p16
+F0.0042605020844480677
+sS'L'
+p17
+F0.0095780086077768938
+sS'O'
+p18
+F0.0011649370363201305
+sS'N'
+p19
+F0.010456095783768198
+sS'Q'
+p20
+F1.5629651108274798e-05
+sS'P'
+p21
+F0.0042536025087336043
+sS'S'
+p22
+F0.0068623567277141476
+sS'R'
+p23
+F0.0062187741616057139
+sS'U'
+p24
+F0.0012507593097479998
+sS'T'
+p25
+F0.0071685324404268547
+sS'W'
+p26
+F0.00013247537390939312
+sS'V'
+p27
+F0.007052908224142531
+sS'Y'
+p28
+F0.00014771076354827
+sS'X'
+p29
+F0.00013541121377973124
+sS'Z'
+p30
+F0.0056306170136729066
+ssg6
+(dp31
+g4
+F0.0021483518678994278
+sg6
+F0.00016683244481406926
+sg7
+F8.1045373303110518e-05
+sg8
+F0.0080832718523054011
+sg9
+F8.0770798351208385e-05
+sg10
+F1.4988976220503174e-05
+sg11
+F1.9480740818286652e-05
+sg12
+F0.0057741352289171332
+sg13
+F0.0095187285796995633
+sg14
+F0.0029695703471217727
+sg15
+F8.6202454130502991e-05
+sg16
+F0.00014602811191994673
+sg17
+F0.00064149861262733103
+sg18
+F0.0013828897048716697
+sg19
+F0.001731511888995092
+sg20
+F9.9797434441349222e-06
+sg21
+F0.00014787973274944054
+sg22
+F0.00023990458393694501
+sg23
+F0.00018527824927518636
+sg24
+F0.00055891491555523035
+sg25
+F0.00071980527679480237
+sg26
+F5.3929336706930161e-06
+sg27
+F0.00016714926206626402
+sg28
+F0.00010670405053919498
+sg29
+F3.3406619148091856e-06
+sg30
+F0.00011183649002475008
+ssg7
+(dp32
+g4
+F0.0015829210775240587
+sg6
+F0.00040905683507541814
+sg7
+F5.375684731406857e-05
+sg8
+F0.002380871089668544
+sg9
+F0.00019388159776811961
+sg10
+F5.8435182071477849e-06
+sg11
+F8.9483272786564272e-06
+sg12
+F0.0013388239452830698
+sg13
+F3.867634610959802e-05
+sg14
+F9.9871358466861331e-05
+sg15
+F0.00024189701243408092
+sg16
+F2.9020460301039963e-05
+sg17
+F0.00093087597059033321
+sg18
+F0.0021635414950463209
+sg19
+F0.00070848786050806741
+sg20
+F5.3154894534898531e-07
+sg21
+F3.9714802658458619e-05
+sg22
+F0.00041654428280228758
+sg23
+F0.0015416749914799921
+sg24
+F0.0012507276280227801
+sg25
+F4.01125843195476e-05
+sg26
+F5.0233135431324636e-06
+sg27
+F0.00015948932494653294
+sg28
+F0.0039986103832088064
+sg29
+F8.8708830614532638e-07
+sg30
+F4.0746218823937119e-05
+ssg8
+(dp33
+g4
+F0.0020574957203533533
+sg6
+F0.0047914948395098673
+sg7
+F0.0024825377458978421
+sg8
+F0.00059785175584996632
+sg9
+F0.0063960404545920632
+sg10
+F0.00065193246079961172
+sg11
+F0.0010645798913999037
+sg12
+F0.00069236186237135408
+sg13
+F0.0038261808336059635
+sg14
+F0.0041119499950856364
+sg15
+F0.0048664150792705457
+sg16
+F0.0080256251931727189
+sg17
+F0.0066462521598004117
+sg18
+F0.0019799318166326936
+sg19
+F0.013315533413643691
+sg20
+F1.4925612770064221e-05
+sg21
+F0.0044326570590990091
+sg22
+F0.00913449613642945
+sg23
+F0.0092427561116960912
+sg24
+F0.0010825962324747126
+sg25
+F0.0060410432033161446
+sg26
+F0.00019003050805810776
+sg27
+F0.0054019207200802742
+sg28
+F0.00014819655000163532
+sg29
+F0.00087223661740077436
+sg30
+F0.0054003471943943736
+ssg9
+(dp34
+g4
+F0.0035240392605712036
+sg6
+F0.00048926792294774909
+sg7
+F0.00032127381487563237
+sg8
+F0.0054908231612378145
+sg9
+F0.00026840405586770914
+sg10
+F5.3165455109971685e-05
+sg11
+F5.147224290657525e-05
+sg12
+F0.0031356494709139566
+sg13
+F0.00017439381656645086
+sg14
+F0.0010170326622288524
+sg15
+F0.00018937223221188087
+sg16
+F0.00044270282725850156
+sg17
+F0.0014098895751420452
+sg18
+F0.0054766543896813272
+sg19
+F0.0036595560801016662
+sg20
+F2.8196735445333589e-06
+sg21
+F0.00056170642756623527
+sg22
+F0.00094989556629709198
+sg23
+F0.0019106614845361553
+sg24
+F0.0019397875505879267
+sg25
+F0.00021200706478535092
+sg26
+F4.9486854792821425e-05
+sg27
+F0.00093395261812831345
+sg28
+F0.0015465504569721002
+sg29
+F3.0801677296712722e-06
+sg30
+F0.00025559759849565878
+ssg10
+(dp35
+g4
+F0.00073602984029886513
+sg6
+F3.6008040807779937e-05
+sg7
+F3.8204640422996937e-05
+sg8
+F0.0008041490697124295
+sg9
+F4.0904627450034495e-05
+sg10
+F4.2178936842195639e-05
+sg11
+F2.2289853787746854e-05
+sg12
+F0.00066862520979858449
+sg13
+F0.00012731477289030959
+sg14
+F3.6666316654006826e-05
+sg15
+F3.7475960742948985e-05
+sg16
+F6.9048560020002289e-05
+sg17
+F0.00027823595126081984
+sg18
+F0.00052882079678841926
+sg19
+F0.0001744430992501256
+sg20
+F1.1863045998848215e-06
+sg21
+F5.828733402045363e-05
+sg22
+F9.8586488499627028e-05
+sg23
+F0.00066719601197201702
+sg24
+F0.00034666143735150577
+sg25
+F5.4851626929986014e-05
+sg26
+F1.3799151428927299e-05
+sg27
+F4.3752462528096278e-05
+sg28
+F0.00012781464011043912
+sg29
+F1.0102950153321772e-06
+sg30
+F2.2979811359193218e-05
+ssg11
+(dp36
+g4
+F0.00047577150800425238
+sg6
+F3.2832827902450236e-05
+sg7
+F3.9028365278703308e-05
+sg8
+F0.00076852824999066531
+sg9
+F1.8706298646255017e-05
+sg10
+F1.8051542991719181e-05
+sg11
+F9.5678810162817354e-05
+sg12
+F0.0011337727792792394
+sg13
+F1.3549217818862545e-05
+sg14
+F2.9228151610812086e-05
+sg15
+F2.3493759346086939e-05
+sg16
+F2.5109527332280212e-05
+sg17
+F0.00016192881778843261
+sg18
+F0.00069598413962144751
+sg19
+F2.5077845607060736e-05
+sg20
+F4.1890281123529305e-07
+sg21
+F2.6566886692376105e-05
+sg22
+F5.1606010190835257e-05
+sg23
+F0.00056000969517114784
+sg24
+F0.00024029884540634292
+sg25
+F9.9015951885935485e-05
+sg26
+F7.2234333500405155e-06
+sg27
+F2.0645924268025156e-05
+sg28
+F8.0411738798720999e-05
+sg29
+F2.129715973086994e-06
+sg30
+F1.1986252708035065e-05
+ssg12
+(dp37
+g4
+F0.0025461124078382572
+sg6
+F0.0090184037346502169
+sg7
+F0.0013119015192298972
+sg8
+F0.0018420388677107703
+sg9
+F0.0028617046333245305
+sg10
+F0.00054705538974807318
+sg11
+F0.00052885951889702085
+sg12
+F0.0011027246885641528
+sg13
+F0.0017780699443009573
+sg14
+F0.0043911082365695117
+sg15
+F0.0015976636403261882
+sg16
+F0.0044319424601857258
+sg17
+F0.0049278705858129468
+sg18
+F0.0021897810039114294
+sg19
+F0.0075303975856920178
+sg20
+F1.8762621713311866e-05
+sg21
+F0.0033404788648412507
+sg22
+F0.0078062574075613766
+sg23
+F0.0021982118630115011
+sg24
+F0.00070273586728488693
+sg25
+F0.0051049925509399638
+sg26
+F4.5769532367069578e-05
+sg27
+F0.0045342568316861778
+sg28
+F9.6770069587043738e-06
+sg29
+F7.7898321931309239e-05
+sg30
+F0.0035931335830831895
+ssg13
+(dp38
+g4
+F0.0028894789457669374
+sg6
+F0.00024644510009892126
+sg7
+F0.00020522365539669201
+sg8
+F0.0014951169361741266
+sg9
+F0.00039881659744614526
+sg10
+F3.1051610906777474e-05
+sg11
+F8.1826855858524255e-05
+sg12
+F0.0007861221680625476
+sg13
+F0.00016882135311951414
+sg14
+F0.00035302946412062045
+sg15
+F0.00021467184989547793
+sg16
+F0.00033394298477173171
+sg17
+F0.0017551464560088209
+sg18
+F0.0069500341421632021
+sg19
+F0.00081429074197435279
+sg20
+F1.3095113090716723e-06
+sg21
+F0.00064653600693722767
+sg22
+F0.00071051901111380492
+sg23
+F0.0018799302110732636
+sg24
+F0.0012379317312258031
+sg25
+F0.00047271598161641843
+sg26
+F3.2980675953474454e-05
+sg27
+F0.00063850644968993606
+sg28
+F0.00076229399050581066
+sg29
+F2.3620486246964841e-06
+sg30
+F0.00038636919962658231
+ssg14
+(dp39
+g4
+F0.0059078919526020695
+sg6
+F0.00047203658462004525
+sg7
+F0.00017540411158178303
+sg8
+F0.0045753339485290739
+sg9
+F0.00093565639090678306
+sg10
+F4.7033281184157564e-05
+sg11
+F6.0005187565687434e-05
+sg12
+F0.0004288051104622248
+sg13
+F0.0001075911388453403
+sg14
+F0.00018519728486629216
+sg15
+F0.00024573050118563753
+sg16
+F0.0004417453351185352
+sg17
+F0.0017490494839999173
+sg18
+F0.0070770074564594793
+sg19
+F0.00064783847786291729
+sg20
+F6.7587680468215342e-07
+sg21
+F0.00043314550681729301
+sg22
+F0.00042960771416778484
+sg23
+F0.00210543017061042
+sg24
+F0.0039092643978981935
+sg25
+F0.0028115102200018073
+sg26
+F2.324030554433113e-05
+sg27
+F0.00077782155605504494
+sg28
+F0.0044022883653802962
+sg29
+F4.2981540547755698e-06
+sg30
+F0.00028834594179752372
+ssg15
+(dp40
+g4
+F0.0021151811015946366
+sg6
+F0.00011413165500731656
+sg7
+F6.0938038363816449e-05
+sg8
+F0.0074491797229960452
+sg9
+F0.00017194376314947805
+sg10
+F7.3572006343005248e-06
+sg11
+F1.2401635327579305e-05
+sg12
+F0.004077712610698456
+sg13
+F2.8862051674942583e-05
+sg14
+F9.7970454953692773e-05
+sg15
+F3.9630318057873352e-05
+sg16
+F0.00056747954193956209
+sg17
+F8.6392544481819842e-05
+sg18
+F0.00052226619985967879
+sg19
+F0.0005735835543318478
+sg20
+F2.8513552697528347e-07
+sg21
+F0.00026352859037560091
+sg22
+F0.0014346013208132364
+sg23
+F4.8047096391180793e-05
+sg24
+F0.00032589230637429376
+sg25
+F6.9587149348733382e-05
+sg26
+F5.9948864498630591e-06
+sg27
+F0.00030633764153049502
+sg28
+F1.4643997434779993e-06
+sg29
+F1.2919103506164078e-06
+sg30
+F8.9609999687442177e-05
+ssg16
+(dp41
+g4
+F0.0041979130761811475
+sg6
+F0.00046295449005712879
+sg7
+F0.00060233295987267659
+sg8
+F0.0056763971066150498
+sg9
+F0.00040249519776329554
+sg10
+F7.0139819444228687e-05
+sg11
+F0.0001428775403564544
+sg12
+F0.0042335022141776922
+sg13
+F0.00021219011475328566
+sg14
+F0.00066105679766282081
+sg15
+F0.00043829554726130334
+sg16
+F0.00054891053076925808
+sg17
+F0.00046295096986543775
+sg18
+F0.0031134088998098848
+sg19
+F0.0013527815053380945
+sg20
+F3.7666051094265843e-06
+sg21
+F0.0013510108489174948
+sg22
+F0.0012040076438991263
+sg23
+F0.00063616200202369481
+sg24
+F0.0022682179151714697
+sg25
+F0.00043533858624081892
+sg26
+F3.300531729531183e-05
+sg27
+F0.00073764208809336729
+sg28
+F0.0006158469757746286
+sg29
+F6.3821075358788765e-06
+sg30
+F0.00070295059897804114
+ssg17
+(dp42
+g4
+F0.008624550607488457
+sg6
+F0.00044127714962362513
+sg7
+F0.00050350357814636692
+sg8
+F0.0085788197972299883
+sg9
+F0.00057105253650598076
+sg10
+F0.00011312135999198439
+sg11
+F0.00018260994397336828
+sg12
+F0.0064246138505483401
+sg13
+F0.00024024252233928608
+sg14
+F0.0011472903153728824
+sg15
+F0.00040021763373918431
+sg16
+F0.00063517282815850893
+sg17
+F0.00064455061882347383
+sg18
+F0.0060313661963574405
+sg19
+F0.0021715569715268484
+sg20
+F2.6401437682896619e-06
+sg21
+F0.00073525539812683346
+sg22
+F0.0017495739925618842
+sg23
+F0.00021490770273877849
+sg24
+F0.0019025861647968799
+sg25
+F0.00060388536440843092
+sg26
+F2.7197001005074571e-05
+sg27
+F0.00082669941768531425
+sg28
+F0.0017247953632485631
+sg29
+F5.2486058113598476e-06
+sg30
+F0.00061005626044284664
+ssg18
+(dp43
+g4
+F0.00067773898608672041
+sg6
+F0.0034042330565579094
+sg7
+F0.0048275556831930124
+sg8
+F0.00021827652618711609
+sg9
+F0.0076329126081188595
+sg10
+F0.00079829499093020851
+sg11
+F0.00060459996332171465
+sg12
+F0.00028610709988201408
+sg13
+F0.0017647917812423058
+sg14
+F0.0035323046706617956
+sg15
+F0.0022824113280697947
+sg16
+F0.0031446400404929057
+sg17
+F0.0046792852091658652
+sg18
+F0.00090054951917191265
+sg19
+F0.0047911956232161278
+sg20
+F5.9878460664809535e-06
+sg21
+F0.0035720300338953274
+sg22
+F0.0069516710312995415
+sg23
+F0.005785853947056648
+sg24
+F0.0070502469592240956
+sg25
+F0.0034948498310689931
+sg26
+F0.00017315118889950918
+sg27
+F0.011064663003125729
+sg28
+F5.8850564691022093e-05
+sg29
+F9.7009442622035343e-05
+sg30
+F0.0045151809129123617
+ssg19
+(dp44
+g4
+F0.013085985233661824
+sg6
+F0.0020292602627994178
+sg7
+F0.00025842783261526529
+sg8
+F0.012006539572750602
+sg9
+F0.0012807865448726807
+sg10
+F0.00081952878721063948
+sg11
+F0.00024104160585315508
+sg12
+F0.014434781882005646
+sg13
+F0.00015083317357823391
+sg14
+F0.0011869276738141379
+sg15
+F0.00028590292876393305
+sg16
+F0.00020750825980418532
+sg17
+F0.00016583975075719234
+sg18
+F0.0056570677340394785
+sg19
+F0.00092172347219359569
+sg20
+F7.8077851707552936e-06
+sg21
+F0.00037673443496817057
+sg22
+F0.0021924809909384668
+sg23
+F0.0001779386495993411
+sg24
+F0.0019155651115617919
+sg25
+F0.0022053648925277206
+sg26
+F3.9169172946345427e-05
+sg27
+F0.00042310239992271914
+sg28
+F0.0036471790861159242
+sg29
+F8.4871821671284992e-06
+sg30
+F0.00058014871183566133
+ssg20
+(dp45
+g4
+F4.7557789746124442e-06
+sg6
+F6.6179603791794197e-07
+sg7
+F9.3989118151111967e-07
+sg8
+F1.1194209577548166e-06
+sg9
+F7.1811910497478807e-07
+sg10
+F2.7105476021107197e-07
+sg11
+F5.1394798689372084e-07
+sg12
+F2.1860390401438402e-06
+sg13
+F3.5553936079634112e-07
+sg14
+F8.5188638923479755e-07
+sg15
+F9.3285079812901384e-07
+sg16
+F1.3130315007627253e-06
+sg17
+F3.1435311801102241e-06
+sg18
+F1.228546900177456e-06
+sg19
+F8.0260370556005728e-07
+sg20
+F6.8995757144636497e-07
+sg21
+F1.2637488170879849e-06
+sg22
+F1.439758401640629e-06
+sg23
+F1.1053401909906052e-06
+sg24
+F9.5854819747369995e-05
+sg25
+F1.1299815328279752e-06
+sg26
+F5.4914990380424967e-07
+sg27
+F4.2277502209545119e-06
+sg28
+F7.392402551211054e-08
+sg29
+F8.0964408894216303e-08
+sg30
+F4.2594319461739878e-07
+ssg21
+(dp46
+g4
+F0.0030654322072525249
+sg6
+F0.00013251761620968575
+sg7
+F2.5000401389857571e-05
+sg8
+F0.0020449849590833511
+sg9
+F3.3403098956400805e-05
+sg10
+F0.00012831802752225969
+sg11
+F1.6840597049996992e-05
+sg12
+F0.0016488929900060807
+sg13
+F0.00014049437058161161
+sg14
+F7.8366507426219276e-05
+sg15
+F3.6518468602982601e-05
+sg16
+F2.8995818959202593e-05
+sg17
+F0.00120318391904342
+sg18
+F0.0090990196445670194
+sg19
+F0.00037185896947606228
+sg20
+F9.9973444025901858e-07
+sg21
+F0.00012255899391569716
+sg22
+F0.00052895456407267929
+sg23
+F0.0099973514429735691
+sg24
+F0.0012682018595771667
+sg25
+F0.00023268467077859555
+sg26
+F1.050073181441075e-05
+sg27
+F3.9274778697077011e-05
+sg28
+F0.00019298394888690113
+sg29
+F1.1972171941270854e-05
+sg30
+F1.9748275386806672e-05
+ssg22
+(dp47
+g4
+F0.0027221571943078118
+sg6
+F0.0007395993146735927
+sg7
+F0.00033243282253627002
+sg8
+F0.007347745399418357
+sg9
+F0.0002639474931868362
+sg10
+F6.238835734053024e-05
+sg11
+F0.00012962753883133136
+sg12
+F0.0045062361058253965
+sg13
+F0.00035213533543109301
+sg14
+F0.0067325883812151743
+sg15
+F0.00025811101536307051
+sg16
+F0.00099300383374572557
+sg17
+F0.0026441884685426817
+sg18
+F0.0034225063716261652
+sg19
+F0.0014799237888355424
+sg20
+F1.5995751044144297e-05
+sg21
+F0.0023539134616984612
+sg22
+F0.00074793512859800597
+sg23
+F0.00040559648664311316
+sg24
+F0.00091571098478527744
+sg25
+F0.015164999885822582
+sg26
+F5.185242360920896e-05
+sg27
+F0.0019700435981725261
+sg28
+F0.000640234863810243
+sg29
+F8.2266879819905863e-06
+sg30
+F0.00014614427824575149
+ssg23
+(dp48
+g4
+F0.010836346890235731
+sg6
+F0.00082301729717647288
+sg7
+F0.00039384960697006968
+sg8
+F0.0087137804264732655
+sg9
+F0.00067172649867840216
+sg10
+F0.00048254435681783809
+sg11
+F0.0001230870226693551
+sg12
+F0.0072355604104161926
+sg13
+F0.00024278410074022626
+sg14
+F0.00070301396242848017
+sg15
+F0.00016433310871342172
+sg16
+F0.0008060394126505249
+sg17
+F0.00036660684347301139
+sg18
+F0.010674763051233022
+sg19
+F0.0021777102666028091
+sg20
+F6.5088344367567801e-06
+sg21
+F0.00043985147198874876
+sg22
+F0.0014293562351935676
+sg23
+F0.00023608165576046158
+sg24
+F0.0032440396932731661
+sg25
+F0.0011536865036755255
+sg26
+F4.1408014861855061e-05
+sg27
+F0.0013511657373519012
+sg28
+F0.0017463952594648634
+sg29
+F1.0528893347939172e-05
+sg30
+F0.00065625173600453363
+ssg24
+(dp49
+g4
+F0.0014382799211303868
+sg6
+F0.0018544229020798944
+sg7
+F0.0015751731356120513
+sg8
+F0.00031326185858679601
+sg9
+F0.002285142996822052
+sg10
+F0.00022351457142340278
+sg11
+F0.00020889169513876911
+sg12
+F0.00028895493496007584
+sg13
+F0.0011030239048578922
+sg14
+F0.0016453340762064262
+sg15
+F0.0022880612357339346
+sg16
+F0.0019243867119395704
+sg17
+F0.0015452374254713375
+sg18
+F0.00066679118992754593
+sg19
+F0.002239954296084006
+sg20
+F6.2201787180904439e-06
+sg21
+F0.0029934161256369649
+sg22
+F0.004412736294319341
+sg23
+F0.0020619910051428276
+sg24
+F0.00030168394811492307
+sg25
+F0.0020609771899358044
+sg26
+F3.9588075757580718e-05
+sg27
+F0.0023975603184758255
+sg28
+F1.6900440308744889e-05
+sg29
+F3.9922493968230741e-05
+sg30
+F0.0031595832542214253
+ssg25
+(dp50
+g4
+F0.0073170528480640661
+sg6
+F0.00036176305970612261
+sg7
+F0.00026664043983049164
+sg8
+F0.010114176044624541
+sg9
+F0.00030290545463171846
+sg10
+F5.9459557853574242e-05
+sg11
+F8.8311048953443663e-05
+sg12
+F0.006494433332548683
+sg13
+F0.00060424794415260942
+sg14
+F0.0010176205342412583
+sg15
+F0.00031822180867948952
+sg16
+F0.00033855443588701097
+sg17
+F0.00060969368069866824
+sg18
+F0.0065468278656783136
+sg19
+F0.0021497705051509225
+sg20
+F1.7882573790548644e-06
+sg21
+F0.00056427264730901292
+sg22
+F0.0013670523624536228
+sg23
+F0.0048101870573893576
+sg24
+F0.0031051786916362028
+sg25
+F0.00042724566554308834
+sg26
+F5.7224236129755661e-05
+sg27
+F0.0020085157731640434
+sg28
+F0.0018231917613968731
+sg29
+F8.4590206336000767e-06
+sg30
+F0.00046279608143103142
+ssg26
+(dp51
+g4
+F0.00026724239260966169
+sg6
+F9.7650117509806958e-06
+sg7
+F9.4939569907696244e-06
+sg8
+F0.0001609502044983199
+sg9
+F6.5158748201388857e-06
+sg10
+F3.6574791670039451e-06
+sg11
+F5.2450856196687948e-06
+sg12
+F0.00022788312931199941
+sg13
+F3.2755383685247074e-05
+sg14
+F1.3679464911431502e-05
+sg15
+F9.2158618471764475e-06
+sg16
+F8.1598043398605812e-06
+sg17
+F1.2208024784571397e-05
+sg18
+F8.821952396947629e-05
+sg19
+F2.8960617042292065e-05
+sg20
+F2.3585284330054315e-07
+sg21
+F1.0669701015581288e-05
+sg22
+F4.8392075176903975e-05
+sg23
+F1.8903429380953978e-05
+sg24
+F1.4211013856780488e-05
+sg25
+F1.7280621011378599e-05
+sg26
+F1.8477486186336581e-05
+sg27
+F6.9840603150489194e-06
+sg28
+F4.1640347513464546e-05
+sg29
+F7.6740178864952845e-07
+sg30
+F4.2312704126455648e-06
+ssg27
+(dp52
+g4
+F0.0081931053532579429
+sg6
+F0.00057326673707965296
+sg7
+F0.0004153403772439475
+sg8
+F0.0087659285461845222
+sg9
+F0.00041010233200766081
+sg10
+F5.1134304504234174e-05
+sg11
+F2.0128456089440383e-05
+sg12
+F0.0039554281917346607
+sg13
+F0.00019399776409392437
+sg14
+F0.00059339519316909338
+sg15
+F0.0003141207853594129
+sg16
+F0.00027135397650481148
+sg17
+F0.0012050425802562958
+sg18
+F0.0040919658668555296
+sg19
+F0.0024926970191182208
+sg20
+F1.7530554621443355e-06
+sg21
+F0.0007557393935770702
+sg22
+F0.0018486568280899496
+sg23
+F0.0021205106718148905
+sg24
+F0.00097267824692158619
+sg25
+F0.00034372559748116764
+sg26
+F4.9001068339456128e-06
+sg27
+F0.00010434552210618955
+sg28
+F0.0052729056946031862
+sg29
+F2.6542245350538735e-06
+sg30
+F0.00093188978579735642
+ssg28
+(dp53
+g4
+F0.0010398399841951842
+sg6
+F0.0032429237925071025
+sg7
+F0.00099748151757674485
+sg8
+F0.00025084533971273735
+sg9
+F0.00088348362985368831
+sg10
+F0.00010447928939044955
+sg11
+F0.00016563909983080235
+sg12
+F0.00018888292556682452
+sg13
+F0.00052613841071983704
+sg14
+F0.0011892932426305254
+sg15
+F0.00086220759127296465
+sg16
+F0.002362699860159329
+sg17
+F0.0029702919864184386
+sg18
+F0.00065773021651477587
+sg19
+F0.0014217526211408936
+sg20
+F3.632837825166575e-06
+sg21
+F0.0019172336824233509
+sg22
+F0.0029390256438185068
+sg23
+F0.001092480930743189
+sg24
+F0.00043050184285731228
+sg25
+F0.0014411101552499932
+sg26
+F4.0520926555709732e-05
+sg27
+F0.0019071060909281918
+sg28
+F7.0615045322520829e-06
+sg29
+F9.0504128376969604e-06
+sg30
+F0.0014086328667083394
+ssg29
+(dp54
+g4
+F7.5120890687068519e-05
+sg6
+F1.891398995602714e-05
+sg7
+F1.3697065869886766e-05
+sg8
+F5.5791518111497134e-05
+sg9
+F1.7551675771589672e-05
+sg10
+F3.3441821065002384e-06
+sg11
+F1.0997078842849206e-05
+sg12
+F0.00026650667254623166
+sg13
+F7.3818419761378944e-06
+sg14
+F1.4774244527348949e-05
+sg15
+F1.2690291046245642e-05
+sg16
+F2.5014482156621782e-05
+sg17
+F8.4801417837463935e-06
+sg18
+F4.2756248279528313e-05
+sg19
+F2.6000135830116592e-05
+sg20
+F3.0273648543054788e-07
+sg21
+F9.8322474122798068e-05
+sg22
+F2.4137954425549616e-05
+sg23
+F7.2304737334226211e-06
+sg24
+F6.0913397021979079e-05
+sg25
+F0.00047626433484099977
+sg26
+F3.1400109884191712e-06
+sg27
+F1.9896123437830894e-05
+sg28
+F2.0519197367147254e-05
+sg29
+F1.1454703762686079e-05
+sg30
+F6.5053142450657273e-06
+ssg30
+(dp55
+g4
+F0.0049722144405451403
+sg6
+F0.00027000926327882928
+sg7
+F0.00055801726667401193
+sg8
+F0.0052409317934733529
+sg9
+F0.0019199583107922258
+sg10
+F2.3919702540704339e-05
+sg11
+F5.1243430446656811e-05
+sg12
+F0.0040057986146419368
+sg13
+F0.00037354514129607665
+sg14
+F0.00074011326266048649
+sg15
+F0.00028228417170553065
+sg16
+F0.0005036197444721717
+sg17
+F0.00042693588867427569
+sg18
+F0.001188335750490559
+sg19
+F0.0030426284054778843
+sg20
+F1.7812169956727586e-06
+sg21
+F0.0009826685509407942
+sg22
+F0.00082742809736536214
+sg23
+F0.00060616292843254215
+sg24
+F0.00069984931009822358
+sg25
+F0.00037286926449139451
+sg26
+F1.3644262994520974e-05
+sg27
+F0.0010087954136717887
+sg28
+F0.00091984721002226456
+sg29
+F3.5166714993618298e-06
+sg30
+F0.00017014494519535002
+sssS'komentar'
+p56
+S'Z cele cswiki bez mezer'
+p57
+sS'abeceda'
+p58
+S'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+p59
+sS'poradi'
+p60
+(lp61
+g8
+ag4
+ag18
+ag12
+ag19
+ag23
+ag22
+ag25
+ag17
+ag27
+ag14
+ag24
+ag6
+ag9
+ag16
+ag21
+ag30
+ag28
+ag13
+ag15
+ag7
+ag10
+ag11
+ag29
+ag26
+ag20
+asb.
\ No newline at end of file
diff --git a/jakobsen.py b/jakobsen.py
new file mode 100644 (file)
index 0000000..25f01dc
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+
+from itertools import combinations
+import pickle
+from ocesavac import ocesat
+
+MABECEDA = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+def nova_tabulka(zprava, abc=MABECEDA):
+    tabulka = dict()
+    for i in abc:
+        tabulka[i] = dict()
+        for j in abc:
+            tabulka[i][j] = 0
+    for i in range(len(zprava) - 1):
+        if zprava[i] in tabulka and zprava[i+1] in tabulka[zprava[i]]:
+            tabulka[zprava[i]][zprava[i+1]] += 1
+    celkem = sum(sum(tab2.values()) for tab2 in tabulka.values())
+    if celkem != 0:
+        for i in abc:
+            for j in abc:
+                tabulka[i][j] /= float(celkem)
+    return tabulka
+
+def vzdalenost(tab1, tab2, abc=MABECEDA):
+    rozdil = 0
+    for i in abc:
+        for j in abc:
+            rozdil += abs(tab1[i][j] - tab2[i][j])
+    return rozdil
+
+def substituce(zprava, slovnik, abc=MABECEDA):
+    pole = []
+    for c in zprava:
+        if c in abc:
+            pole.append(slovnik[c])
+        else:
+            pole.append(c)
+    return pole
+
+def poradi_dle_frekvence(zprava, abc=MABECEDA):
+    freq = dict()
+    for char in abc:
+        freq[char] = 0
+    for char in zprava:
+        if char in abc:
+            freq[char] += 1
+    return sorted(freq.keys(), key=freq.get, reverse=True)
+
+class reference:
+    pass
+
+def jakobsen(zprava, ref):
+    slovnik = dict(zip(poradi_dle_frekvence(zprava), ref.poradi))
+    tabulka = nova_tabulka(substituce(zprava, slovnik))
+    vzdal = vzdalenost(tabulka, ref.tabulka)
+
+    vzdal_old = vzdal + 1
+    while vzdal_old > vzdal:
+        vzdal_old = vzdal
+        for (x, y) in combinations(ref.abeceda, 2):
+            slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
+            v1 = vzdalenost(nova_tabulka(substituce(zprava, slovnik)),
+                            ref.tabulka)
+            if  v1 < vzdal:
+                vzdal = v1
+            else:
+                slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
+
+    return '\n'.join([''.join(substituce(zprava, slovnik)),
+                      ' '.join(ref.abeceda),
+                      ' '.join([slovnik[c] for c in ref.abeceda])])
+
+def desifruj(zprava, refs):
+    f = open(refs, 'rb')
+    ref = pickle.load(f)
+    f.close()
+    return jakobsen(zprava, ref)
diff --git a/koincidence.py b/koincidence.py
new file mode 100644 (file)
index 0000000..c01f28d
--- /dev/null
@@ -0,0 +1,29 @@
+from ocesavac import ocesat
+from collections import deque
+
+def index_koincidence(text):
+    t = ocesat(text, False) #zatim bez mezer
+    deq = deque(t)
+    shod = 0
+    for i in range(1, len(t)):
+        deq.rotate(1)
+        shod += sum (x == y for x, y in zip(deq, t))
+    return float(shod)/(len(t)*(len(t) - 1))
+    
+def index_rozkladu(text, deleni):
+    if (deleni == 1):
+        return index_koincidence(text)
+    t = ocesat(text, False) #zatim bez mezer
+    texty = rozklad(t, deleni)
+    return sum([index_koincidence(text) for text in texty])/len(texty)
+
+def tabulka_indexu(text):
+    return '\n'.join(['{1:>2} {0:.3%}'.format(
+        index_rozkladu(text, d), d) for d in range(1, 11)])
+
+def rozklad(text, deleni):
+    texty = []
+    for i in range(deleni):
+        texty.append(''.join(
+            [text[j] for j in range(len(text)) if j % deleni == i]))
+    return texty
diff --git a/ocesavac.py b/ocesavac.py
new file mode 100644 (file)
index 0000000..31e49fb
--- /dev/null
@@ -0,0 +1,26 @@
+import unicodedata
+
+ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+def deaccent(unistr):
+    return ''.join(aChar 
+                   for aChar in unicodedata.normalize('NFD', unistr) 
+                   if not unicodedata.combining(aChar))
+
+def ocesat(text, mezery=True):
+    text = deaccent(unicode(text)).upper()
+    if mezery:
+        pole = [' ']
+        lastWh = True
+        for c in text:
+            if c in ABECEDA:
+                pole.append(c)
+                lastWh = False
+            elif not lastWh:
+                pole.append(' ')
+                lastWh = True
+        if not lastWh:
+            pole.append(' ')
+        return ''.join(pole)
+    else: # bez mezer
+        return ''.join([c for c in text if c in ABECEDA])
diff --git a/ref b/ref
new file mode 100644 (file)
index 0000000..1959ae5
--- /dev/null
+++ b/ref
@@ -0,0 +1,1585 @@
+(i__main__
+reference
+p0
+(dp1
+S'tabulka'
+p2
+(dp3
+S' '
+p4
+(dp5
+g4
+F0.0
+sS'A'
+p6
+F0.0086919411899263211
+sS'C'
+p7
+F0.0052665736732081768
+sS'B'
+p8
+F0.0057258675766810431
+sS'E'
+p9
+F0.0016614994474099247
+sS'D'
+p10
+F0.0073314704688528234
+sS'G'
+p11
+F0.0010005083615082979
+sS'F'
+p12
+F0.0018976039190979465
+sS'I'
+p13
+F0.0020403734350523347
+sS'H'
+p14
+F0.0032988245893600561
+sS'K'
+p15
+F0.0080138046352504835
+sS'J'
+p16
+F0.0078036406283252535
+sS'M'
+p17
+F0.006738213978922953
+sS'L'
+p18
+F0.0033271875564100692
+sS'O'
+p19
+F0.0071621101119058225
+sS'N'
+p20
+F0.010170088241316504
+sS'Q'
+p21
+F4.0955802215480971e-05
+sS'P'
+p22
+F0.016383636555538032
+sS'S'
+p23
+F0.016470831720991987
+sS'R'
+p24
+F0.0062218868534983564
+sS'U'
+p25
+F0.00328547099300833
+sS'T'
+p26
+F0.0062491191205891862
+sS'W'
+p27
+F0.00042617244978724076
+sS'V'
+p28
+F0.013917955850086752
+sS'Y'
+p29
+F8.917314453822306e-05
+sS'X'
+p30
+F8.2296460089892372e-05
+sS'Z'
+p31
+F0.0091984888048860028
+ssg6
+(dp32
+g4
+F0.021007480394691972
+sg6
+F5.1012766760089536e-05
+sg7
+F0.0035188456745574269
+sg8
+F0.0010059828586721534
+sg9
+F0.0001854586603236567
+sg10
+F0.0040681122676583872
+sg11
+F0.00045972052641261103
+sg12
+F0.00033317759905452244
+sg13
+F0.00030533075626028441
+sg14
+F0.0010218991760395479
+sg15
+F0.0037084959798485044
+sg16
+F0.0013154843762594513
+sg17
+F0.0026474190944052781
+sg18
+F0.0076810685760217105
+sg19
+F7.5855348712909322e-05
+sg20
+F0.007539164239455616
+sg21
+F7.8910326966744724e-06
+sg22
+F0.0013269882787465502
+sg23
+F0.0035933704370386854
+sg24
+F0.0045409536870010458
+sg25
+F0.00059143066308285099
+sg26
+F0.0051418893898463177
+sg27
+F5.6520081073156104e-05
+sg28
+F0.0039496453423834357
+sg29
+F0.00011666198206833974
+sg30
+F0.00010093660084180999
+sg31
+F0.0034233955043882765
+ssg7
+(dp33
+g4
+F0.0011213858555616664
+sg6
+F0.0017363941486641084
+sg7
+F0.00010435853449136978
+sg8
+F1.7428889608307097e-05
+sg9
+F0.0068398099061261868
+sg10
+F2.2613999183664463e-05
+sg11
+F3.3204988247254022e-06
+sg12
+F4.2274454938327894e-06
+sg13
+F0.0048798355032639009
+sg14
+F0.0080432505682244641
+sg15
+F0.0024533086401986892
+sg16
+F1.9421785578582539e-06
+sg17
+F7.6338655819473123e-05
+sg18
+F0.00051731760665533219
+sg19
+F0.0011271199065420099
+sg20
+F0.0013805995670487206
+sg21
+F8.1237361183533421e-06
+sg22
+F1.5316658549991209e-05
+sg23
+F8.2776783819255169e-05
+sg24
+F0.00012512582318760835
+sg25
+F0.000453279415035628
+sg26
+F0.00056905831745246839
+sg27
+F8.9501316030334282e-07
+sg28
+F3.5215784480735533e-05
+sg29
+F8.9444631863515076e-05
+sg30
+F1.6020735569429837e-06
+sg31
+F3.8575067209074077e-05
+ssg8
+(dp34
+g4
+F0.00035013511506506973
+sg6
+F0.001312688951822104
+sg7
+F0.00033321339958093454
+sg8
+F2.9180412403089988e-05
+sg9
+F0.0020140809317798236
+sg10
+F0.0001501503911496898
+sg11
+F1.6856081185712958e-06
+sg12
+F2.4791864540402596e-06
+sg13
+F0.0011294379906271954
+sg14
+F2.51409196729209e-05
+sg15
+F6.5881918729929063e-05
+sg16
+F0.00018322112742289834
+sg17
+F1.1673954987556602e-05
+sg18
+F0.00078203564907825191
+sg19
+F0.0018186786752451968
+sg20
+F0.00058169590327595167
+sg21
+F1.8198600926167972e-07
+sg22
+F3.3354157107304578e-06
+sg23
+F0.00031661090545730754
+sg24
+F0.0012886906656171702
+sg25
+F0.0010534006559050244
+sg26
+F2.1889038523818755e-05
+sg27
+F2.7089064985181179e-06
+sg28
+F0.00010397069545523833
+sg29
+F0.0033884929745136472
+sg30
+F5.161242557749277e-07
+sg31
+F1.3150726702057118e-05
+ssg9
+(dp35
+g4
+F0.027225700677610286
+sg6
+F0.00045071669401995943
+sg7
+F0.0032260063186377763
+sg8
+F0.0011185456804663038
+sg9
+F0.00014636746885880768
+sg10
+F0.0041319058223476084
+sg11
+F0.000408836044872165
+sg12
+F0.0005242450085160801
+sg13
+F0.00024197277464241076
+sg14
+F0.0027134859825216698
+sg15
+F0.0022145280791613601
+sg16
+F0.0027917339997497901
+sg17
+F0.0056433384131694721
+sg18
+F0.0051300752161303137
+sg19
+F0.00037729876448027621
+sg20
+F0.0094544118513203417
+sg21
+F6.7275155882801271e-06
+sg22
+F0.00093648210339739772
+sg23
+F0.0042589559238298694
+sg24
+F0.0069699865869151069
+sg25
+F0.00027656204991093395
+sg26
+F0.0040223890286756906
+sg27
+F8.6583573127745384e-05
+sg28
+F0.0017695663197621514
+sg29
+F0.00011658739763831445
+sg30
+F0.00073090354723012187
+sg31
+F0.002715147723622633
+ssg10
+(dp36
+g4
+F0.002557362870215556
+sg6
+F0.0028652802145091166
+sg7
+F0.0003191229090605589
+sg8
+F0.00016909781975331159
+sg9
+F0.0046269674350833973
+sg10
+F0.00011379495657816802
+sg11
+F2.3112223176233324e-05
+sg12
+F1.0784908581655281e-05
+sg13
+F0.00262432178811505
+sg14
+F8.2377011274319681e-05
+sg15
+F0.00073839182400465989
+sg16
+F2.6892162089914444e-05
+sg17
+F0.00025639143665489764
+sg18
+F0.0011209801162623289
+sg19
+F0.0045146611837285347
+sg20
+F0.0029256965862067934
+sg21
+F1.3276028544499585e-06
+sg22
+F0.00023878354441452985
+sg23
+F0.00054433208721048809
+sg24
+F0.0014152276262208569
+sg25
+F0.0015963514394714445
+sg26
+F6.9972128872515348e-05
+sg27
+F2.7026414063959943e-05
+sg28
+F0.00059187220290860063
+sg29
+F0.0013086673593551408
+sg30
+F1.2798688192337803e-06
+sg31
+F0.00010374992554236351
+ssg11
+(dp37
+g4
+F0.00047733438540738086
+sg6
+F0.00058580998043614597
+sg7
+F5.4744971638554472e-06
+sg8
+F1.0614856081197646e-05
+sg9
+F0.00067420148014770418
+sg10
+F1.6739729474873522e-05
+sg11
+F2.7661873407775318e-05
+sg12
+F5.5610151026847708e-06
+sg13
+F0.00055521843061697774
+sg14
+F9.2875515644677884e-05
+sg15
+F4.2930797922550348e-06
+sg16
+F3.6814874660477505e-06
+sg17
+F3.4201436232391742e-05
+sg18
+F0.00022189762945680678
+sg19
+F0.00043201986910122259
+sg20
+F0.00012761097639605063
+sg21
+F5.728084225941394e-07
+sg22
+F9.1410677438981421e-06
+sg23
+F3.654338733518549e-05
+sg24
+F0.00054813290976457628
+sg25
+F0.00028545549734714816
+sg26
+F2.5430307261418981e-05
+sg27
+F5.0568243557138869e-06
+sg28
+F7.3062907652762887e-06
+sg29
+F0.00010738069559599407
+sg30
+F3.0430447450313659e-07
+sg31
+F1.8526772418279198e-06
+ssg12
+(dp38
+g4
+F0.00028434866440557306
+sg6
+F0.00037919320900291827
+sg7
+F1.5054121356302227e-05
+sg8
+F1.9976693737970614e-05
+sg9
+F0.00064540294002634355
+sg10
+F3.8992740017215638e-06
+sg11
+F8.9292479626263505e-06
+sg12
+F7.2314079975309089e-05
+sg13
+F0.00095343663603074413
+sg14
+F1.4887052233045603e-06
+sg15
+F1.0215083536262153e-05
+sg16
+F5.1284254085381545e-06
+sg17
+F6.8528174307225951e-06
+sg18
+F0.00012889681196968643
+sg19
+F0.00058265953411187823
+sg20
+F1.0432870071935966e-05
+sg21
+F1.7005250045763515e-07
+sg22
+F2.2613999183664463e-06
+sg23
+F1.7291654257060584e-05
+sg24
+F0.00046614075414918703
+sg25
+F0.00019854076935009056
+sg26
+F6.2498768983982431e-05
+sg27
+F1.7214086449834296e-06
+sg28
+F9.7258096752963266e-07
+sg29
+F6.7343773558424533e-05
+sg30
+F9.2186355511244315e-07
+sg31
+F7.8164482666491942e-07
+ssg13
+(dp39
+g4
+F0.020851100711946572
+sg6
+F0.000889147840726155
+sg7
+F0.0068102386713097644
+sg8
+F0.00044779298436296849
+sg9
+F0.001353677571186796
+sg10
+F0.0014484057640733019
+sg11
+F0.00034970550874812415
+sg12
+F0.0002116467453941325
+sg13
+F0.00066375667656696417
+sg14
+F0.0010609515836007837
+sg15
+F0.0025533442611257937
+sg16
+F0.00043022984278061593
+sg17
+F0.0028766767154169794
+sg18
+F0.0037648042411403885
+sg19
+F0.00067039170746201291
+sg20
+F0.0049845878435458048
+sg21
+F1.187682463722536e-05
+sg22
+F0.00051868399341339531
+sg23
+F0.0042664710509992161
+sg24
+F0.0011848184216095652
+sg25
+F0.00017583726885039575
+sg26
+F0.0035120316410303175
+sg27
+F6.7722662462952944e-06
+sg28
+F0.0019089556693477939
+sg29
+F4.1140771601943664e-06
+sg30
+F5.94915247653632e-05
+sg31
+F0.0017318415150553654
+ssg14
+(dp40
+g4
+F0.0047784036618067236
+sg6
+F0.0021261932636166213
+sg7
+F4.3730343012421333e-05
+sg8
+F8.2788717328059214e-06
+sg9
+F0.001221934617367345
+sg10
+F9.4179251481519766e-05
+sg11
+F2.5448207524625051e-06
+sg12
+F4.5526336087430039e-06
+sg13
+F0.00060463807395172734
+sg14
+F2.8491252269656415e-06
+sg15
+F3.947604712377944e-05
+sg16
+F4.2423623798378454e-06
+sg17
+F8.1094159077884891e-05
+sg18
+F0.0013208395383352664
+sg19
+F0.005645083688832063
+sg20
+F0.00046336919672944766
+sg21
+F5.0120736976987196e-07
+sg22
+F7.4435261165228017e-06
+sg23
+F2.8362967050012934e-05
+sg24
+F0.0014383607330374973
+sg25
+F0.00094265172744908878
+sg26
+F0.00022363693836499629
+sg27
+F1.6918732106934191e-05
+sg28
+F0.00010647673230408769
+sg29
+F0.00064466007910329176
+sg30
+F3.3413824651324801e-07
+sg31
+F6.1755908060930656e-05
+ssg15
+(dp41
+g4
+F0.0032087981989423441
+sg6
+F0.0048293925615492048
+sg7
+F0.000308973459822719
+sg8
+F8.240087829192777e-06
+sg9
+F0.0038511073768112388
+sg10
+F0.00063828758540193198
+sg11
+F2.4827665066814732e-05
+sg12
+F1.0802808844861349e-05
+sg13
+F0.00031091265500337624
+sg14
+F2.6334270553325358e-05
+sg15
+F2.7942310864670364e-05
+sg16
+F7.6613126521966145e-06
+sg17
+F0.00022380102411105189
+sg18
+F0.0014172891398667555
+sg19
+F0.0058587979146264967
+sg20
+F0.00028926228665563839
+sg21
+F5.9667544020222861e-08
+sg22
+F6.3366931749476679e-06
+sg23
+F7.3331411600853898e-05
+sg24
+F0.0016705062631797774
+sg25
+F0.0032321669925578643
+sg26
+F0.0022378998561540814
+sg27
+F1.1366667135852454e-05
+sg28
+F0.0003691064106862996
+sg29
+F0.0037295377392472357
+sg30
+F3.8783903613144856e-07
+sg31
+F3.7086361985769515e-05
+ssg16
+(dp42
+g4
+F0.00055321658451509923
+sg6
+F0.0017648376668985488
+sg7
+F7.8752207975091136e-05
+sg8
+F3.0824253240847131e-05
+sg9
+F0.0063050962270117588
+sg10
+F0.00012336563063901178
+sg11
+F2.2912336903765576e-06
+sg12
+F4.1170605373953774e-06
+sg13
+F0.0034485811747192122
+sg14
+F1.3174593719665208e-05
+sg15
+F5.2552189395811284e-05
+sg16
+F7.8283817754532396e-06
+sg17
+F0.00045592865399012592
+sg18
+F6.2797106704083546e-05
+sg19
+F0.00041734165327224777
+sg20
+F0.0004474409458532492
+sg21
+F9.5468070432356567e-08
+sg22
+F0.00014930907877900467
+sg23
+F0.0011634544574731245
+sg24
+F2.4785897786000576e-05
+sg25
+F0.00026362612636734962
+sg26
+F3.7969441637268817e-05
+sg27
+F8.5622925669019801e-07
+sg28
+F0.0002033708570385276
+sg29
+F1.0173316255447998e-06
+sg30
+F6.4739285261941799e-07
+sg31
+F4.1540544146879152e-05
+ssg17
+(dp43
+g4
+F0.0072927581662925022
+sg6
+F0.0030935384041584795
+sg7
+F0.0001600522200798458
+sg8
+F0.00023192177685220423
+sg9
+F0.0047492113158948291
+sg10
+F2.2038207383869312e-05
+sg11
+F1.1041479020942239e-05
+sg12
+F2.4606895153939906e-05
+sg13
+F0.0034959721215572746
+sg14
+F1.2127428322110296e-05
+sg15
+F0.00012393545568440491
+sg16
+F1.6292222894721851e-05
+sg17
+F0.00011795080101917655
+sg18
+F0.00026041302912186066
+sg19
+F0.0023080360707726524
+sg20
+F0.00067758761327085175
+sg21
+F1.2918023280378249e-06
+sg22
+F0.00030944781679767981
+sg23
+F0.00022438576604245008
+sg24
+F0.00026357839233213346
+sg25
+F0.0017426890745582419
+sg26
+F9.1216757920915701e-05
+sg27
+F7.9059495826795284e-06
+sg28
+F2.5985215420807053e-05
+sg29
+F0.0005196386741177189
+sg30
+F1.3156693456459141e-06
+sg31
+F0.00012541521077610643
+ssg18
+(dp44
+g4
+F0.0054649384233034079
+sg6
+F0.0069940922746992767
+sg7
+F0.00019085260630308484
+sg8
+F0.00025581266147790143
+sg9
+F0.0072285708058127474
+sg10
+F0.00019136873055885977
+sg11
+F4.7343212802845824e-05
+sg12
+F8.8203546947894442e-05
+sg13
+F0.0053458867560970576
+sg14
+F8.1279128464347577e-05
+sg15
+F0.00073892584852364087
+sg16
+F2.5143903050121914e-05
+sg17
+F0.0003384701102091162
+sg18
+F0.00047108122679406149
+sg19
+F0.0048863094317900951
+sg20
+F0.0014445721243700024
+sg21
+F7.547944318558192e-07
+sg22
+F4.2686160992067433e-05
+sg23
+F0.00087077918729952931
+sg24
+F1.3684751221038112e-05
+sg25
+F0.001514326466706844
+sg26
+F0.00030301863892950078
+sg27
+F7.5747947133672918e-06
+sg28
+F8.8761438484483517e-05
+sg29
+F0.0014594174093222338
+sg30
+F1.5513561445257943e-06
+sg31
+F0.00013787379396752896
+ssg19
+(dp45
+g4
+F0.011564226374103412
+sg6
+F0.00013726220164132167
+sg7
+F0.0024679152549748396
+sg8
+F0.0037128546939391815
+sg9
+F7.6499758188327727e-05
+sg10
+F0.005848448579116189
+sg11
+F0.00061371947415160522
+sg12
+F0.00036723881655846666
+sg13
+F0.00010779538502693462
+sg14
+F0.0012502349334961365
+sg15
+F0.0023700306490096641
+sg16
+F0.0013883115971133344
+sg17
+F0.0020929286078253469
+sg18
+F0.0037378553948836549
+sg19
+F0.00016398132785357746
+sg20
+F0.0033010054380939952
+sg21
+F2.7148732529201399e-06
+sg22
+F0.0016998328610657169
+sg23
+F0.0046036344419942898
+sg24
+F0.0043643079229291754
+sg25
+F0.0056557552290800806
+sg26
+F0.0024648155260629892
+sg27
+F0.00012606260362872583
+sg28
+F0.0083981441699251466
+sg29
+F4.6242346615672717e-05
+sg30
+F7.86597232818598e-05
+sg31
+F0.0031213136458998932
+ssg20
+(dp46
+g4
+F0.0033821383810754935
+sg6
+F0.010848350097834783
+sg7
+F0.0015981474325464531
+sg8
+F6.7648078032927667e-05
+sg9
+F0.010138718030047872
+sg10
+F0.00091475715061963459
+sg11
+F0.00065023601109198161
+sg12
+F0.00015305321716627365
+sg13
+F0.012176818131673036
+sg14
+F5.2749092291078018e-05
+sg15
+F0.00083329901952322637
+sg16
+F2.3637297563611285e-05
+sg17
+F1.7649659521181923e-05
+sg18
+F2.9866589159322553e-05
+sg19
+F0.004673564803585991
+sg20
+F0.00055366409109525096
+sg21
+F4.7465531268087284e-06
+sg22
+F1.3016474728011617e-05
+sg23
+F0.0015556164071688383
+sg24
+F4.7978672146661199e-05
+sg25
+F0.0015691221557578158
+sg26
+F0.0017420685321004317
+sg27
+F1.1035512266540217e-05
+sg28
+F6.8638559263663364e-05
+sg29
+F0.0030867542044033802
+sg30
+F3.8873404929175196e-06
+sg31
+F0.00028255565470776536
+ssg21
+(dp47
+g4
+F1.0755074809645171e-05
+sg6
+F2.9028260165838419e-06
+sg7
+F1.9391951806572428e-07
+sg8
+F2.1181978127179114e-07
+sg9
+F7.547944318558192e-07
+sg10
+F2.8043745689504746e-07
+sg11
+F5.6684166819211713e-08
+sg12
+F2.8342083409605855e-07
+sg13
+F1.6885914957723068e-06
+sg14
+F9.5468070432356567e-08
+sg15
+F2.3867017608089142e-08
+sg16
+F2.3867017608089142e-08
+sg17
+F5.5490815938807262e-07
+sg18
+F2.4254856644220591e-06
+sg19
+F8.0252846707199745e-07
+sg20
+F1.5811899165359056e-07
+sg21
+F2.7148732529201402e-07
+sg22
+F1.46185482849546e-07
+sg23
+F3.0132109730212544e-07
+sg24
+F3.9082241333245971e-07
+sg25
+F8.1037474911065677e-05
+sg26
+F4.9524061536784977e-07
+sg27
+F3.7888890452841517e-07
+sg28
+F3.0102275958202432e-06
+sg29
+F3.878390361314486e-08
+sg30
+F2.6850394809100286e-08
+sg31
+F1.4916886005055715e-08
+ssg22
+(dp48
+g4
+F0.0003728714327139757
+sg6
+F0.0025686668864301869
+sg7
+F9.9161491407208363e-05
+sg8
+F4.7823536532208618e-06
+sg9
+F0.0017282137283789359
+sg10
+F6.5992303686366481e-06
+sg11
+F0.00010420339887691721
+sg12
+F9.0664833138728635e-06
+sg13
+F0.0013900419558899209
+sg14
+F0.00010984794854123028
+sg15
+F4.3085933537002928e-05
+sg16
+F8.5682593213040017e-06
+sg17
+F8.1595366447654763e-06
+sg18
+F0.0010129937950945295
+sg19
+F0.0076975189179080859
+sg20
+F0.00029200699368056864
+sg21
+F2.5358706208594713e-07
+sg22
+F6.7782330006973174e-05
+sg23
+F0.00041508025335388135
+sg24
+F0.0084596852748276032
+sg25
+F0.0010683175419100802
+sg26
+F0.00018312565935246598
+sg27
+F1.608040311345006e-06
+sg28
+F4.8778217236532185e-06
+sg29
+F0.0001630773645616711
+sg30
+F9.3200703759588097e-06
+sg31
+F2.213665883150268e-06
+ssg23
+(dp49
+g4
+F0.0031044366810737732
+sg6
+F0.0020998649598176979
+sg7
+F0.00048540442073611597
+sg8
+F0.00015445540445074889
+sg9
+F0.006180778899045624
+sg10
+F7.4808183315354412e-05
+sg11
+F1.4666282320170778e-05
+sg12
+F5.8238506340938518e-05
+sg13
+F0.00376519208017652
+sg14
+F0.00021846077892124195
+sg15
+F0.0055438308500069464
+sg16
+F3.1561147409496879e-05
+sg17
+F0.00067378679071676355
+sg18
+F0.0021667075260063525
+sg19
+F0.0027511242692896264
+sg20
+F0.001024900453503765
+sg21
+F1.0784908581655281e-05
+sg22
+F0.0016855454676500746
+sg23
+F0.00043369951046539186
+sg24
+F0.00021903060396663508
+sg25
+F0.00071624323166435315
+sg26
+F0.012696787960660066
+sg27
+F2.5197603839740115e-05
+sg28
+F0.0014043949836039854
+sg29
+F0.00053958553408367939
+sg30
+F1.2977690824398472e-06
+sg31
+F2.9583168325226493e-05
+ssg24
+(dp50
+g4
+F0.002007007344436226
+sg6
+F0.0090256110462190106
+sg7
+F0.00062155083930425946
+sg8
+F0.00023940408687234019
+sg9
+F0.0073550838993988264
+sg10
+F0.00048399626669723872
+sg11
+F0.00037554155530888065
+sg12
+F6.4566249384283154e-05
+sg13
+F0.0060994281695284525
+sg14
+F0.00015394524694937599
+sg15
+F0.00048434830520695802
+sg16
+F2.0686737511811263e-05
+sg17
+F0.00058919313018209265
+sg18
+F0.00025783539122018704
+sg19
+F0.0089697025574720611
+sg20
+F0.0017048330012546116
+sg21
+F4.302029923858068e-06
+sg22
+F0.00020400929975954399
+sg23
+F0.0010219767438467741
+sg24
+F0.00013888515883867173
+sg25
+F0.002715604180334388
+sg26
+F0.00090201514659411601
+sg27
+F1.8529755795480208e-05
+sg28
+F0.00097918019789826924
+sg29
+F0.0014774936917831603
+sg30
+F6.6081805002396812e-06
+sg31
+F0.00046293660703530104
+ssg25
+(dp51
+g4
+F0.012364917080819587
+sg6
+F0.00020664362182803682
+sg7
+F0.0011770825245273433
+sg8
+F0.00083123153912292565
+sg9
+F0.00015316360212271106
+sg10
+F0.0013825208619661718
+sg11
+F0.00012371170239432907
+sg12
+F4.3885478626873911e-05
+sg13
+F0.00010490150914195381
+sg14
+F0.00069577428068821575
+sg15
+F0.00064673054288079358
+sg16
+F0.0013210453913621361
+sg17
+F0.0011320514290552811
+sg18
+F0.0010813399833924939
+sg19
+F5.7946135375239431e-05
+sg20
+F0.0010625208400085156
+sg21
+F2.6015049192817165e-06
+sg22
+F0.0012167882916956007
+sg23
+F0.0024295997415822537
+sg24
+F0.001366822331134451
+sg25
+F1.0799825467660337e-05
+sg26
+F0.0012904568249201688
+sg27
+F4.2930797922550348e-06
+sg28
+F0.0007945956670945088
+sg29
+F1.0635739721604724e-05
+sg30
+F2.7831925908232953e-05
+sg31
+F0.0018948950125994284
+ssg26
+(dp52
+g4
+F0.0042320339279679443
+sg6
+F0.0059002519408345461
+sg7
+F0.00017800618407553086
+sg8
+F8.2869268512486519e-05
+sg9
+F0.0085316801334424045
+sg10
+F3.2545661885830555e-05
+sg11
+F1.6492109167189598e-05
+sg12
+F2.9353448280748634e-05
+sg13
+F0.0054234843970953576
+sg14
+F0.00043427231888798598
+sg15
+F0.00066280199586264059
+sg16
+F3.0138076484614566e-05
+sg17
+F0.00010603519247833805
+sg18
+F0.00042996133883252489
+sg19
+F0.0053488492496576619
+sg20
+F0.0015010116542587312
+sg21
+F1.4916886005055715e-07
+sg22
+F3.3383990879314691e-05
+sg23
+F0.00071177114924003747
+sg24
+F0.0039592816507427022
+sg25
+F0.0025506980055484967
+sg26
+F0.00019378526609167878
+sg27
+F3.1829651357587885e-05
+sg28
+F0.001314326825905459
+sg29
+F0.0015415826008152817
+sg30
+F1.9063780314461203e-06
+sg31
+F0.00013540654102229275
+ssg27
+(dp53
+g4
+F0.00011824018860767462
+sg6
+F0.00021811470716592466
+sg7
+F3.9887753177518984e-06
+sg8
+F3.1146457978556331e-06
+sg9
+F0.00013452644474799445
+sg10
+F1.9272616718531982e-06
+sg11
+F9.3976381831851004e-07
+sg12
+F2.2196326375522905e-06
+sg13
+F0.00019072133770624034
+sg14
+F2.4588994890733838e-05
+sg15
+F6.70961532507406e-06
+sg16
+F1.7900263206066857e-07
+sg17
+F2.3896851380099254e-06
+sg18
+F8.0760020831371637e-06
+sg19
+F7.038383492625489e-05
+sg20
+F2.0889607161480021e-05
+sg21
+F7.756780722628972e-08
+sg22
+F2.4135521556180146e-06
+sg23
+F3.2688863991479092e-05
+sg24
+F1.2962773938393416e-05
+sg25
+F1.1080262924555385e-05
+sg26
+F1.0758058186846181e-05
+sg27
+F1.3117909552845995e-05
+sg28
+F3.8783903613144856e-07
+sg29
+F1.2052843892085017e-05
+sg30
+F2.7148732529201402e-07
+sg31
+F4.027559221365043e-07
+ssg28
+(dp54
+g4
+F0.0055375627745076214
+sg6
+F0.0067636353360527694
+sg7
+F0.0002081382938057434
+sg8
+F0.00012087749405336848
+sg9
+F0.0073669398403956449
+sg10
+F9.754748434146134e-05
+sg11
+F9.8123276141256494e-06
+sg12
+F1.5961068025409614e-06
+sg13
+F0.0032836004155032961
+sg14
+F3.2557595394634603e-05
+sg15
+F0.00021288186355535111
+sg16
+F6.4575199515886191e-05
+sg17
+F3.8962906245205527e-06
+sg18
+F0.00070997515616502878
+sg19
+F0.0031612252660950203
+sg20
+F0.0017818787174707243
+sg21
+F4.4750658015167142e-08
+sg22
+F1.8714725181942898e-05
+sg23
+F0.001188768413023704
+sg24
+F0.000836419632075484
+sg25
+F0.00071375807845591092
+sg26
+F1.4627498416557633e-05
+sg27
+F8.7711289709727604e-07
+sg28
+F2.338967725592736e-06
+sg29
+F0.0044673657049609048
+sg30
+F7.9357833546896401e-07
+sg31
+F0.00061075996396820213
+ssg29
+(dp55
+g4
+F0.011277643160174282
+sg6
+F6.0186651653198799e-05
+sg7
+F0.0024059206767378283
+sg8
+F0.00037396633214674678
+sg9
+F5.9843563275082518e-05
+sg10
+F0.00027379049249119463
+sg11
+F1.793606373247899e-05
+sg12
+F1.0447786957941022e-05
+sg13
+F1.370265148424418e-05
+sg14
+F0.00022055809309355279
+sg15
+F0.00037531780201880479
+sg16
+F9.3391639900452817e-05
+sg17
+F0.0014972585657398593
+sg18
+F0.002299393227021323
+sg19
+F9.1786582966308817e-05
+sg20
+F0.00047330384280881477
+sg21
+F1.8198600926167972e-07
+sg22
+F0.00037443173899010451
+sg23
+F0.0012969784874815793
+sg24
+F0.00049807184033160931
+sg25
+F0.00014541875490888613
+sg26
+F0.00078258757386043894
+sg27
+F7.1093878700095532e-06
+sg28
+F0.00057310676031424059
+sg29
+F1.9839458386724101e-06
+sg30
+F2.8908925077797973e-06
+sg31
+F0.00055388486100812573
+ssg30
+(dp56
+g4
+F0.00017757657775858526
+sg6
+F4.9491244387573849e-05
+sg7
+F8.6458271285302922e-06
+sg8
+F2.6134384280857611e-06
+sg9
+F4.4398619505447827e-05
+sg10
+F1.4499213196914154e-06
+sg11
+F5.6982504539312825e-07
+sg12
+F5.3611288302170242e-06
+sg13
+F0.00022308799696001022
+sg14
+F2.9386265429959757e-06
+sg15
+F4.5854507579541262e-06
+sg16
+F6.0860894900627317e-07
+sg17
+F7.2913738792712335e-06
+sg18
+F2.9863605782121541e-06
+sg19
+F3.1692416006341369e-05
+sg20
+F1.3744418765058335e-05
+sg21
+F7.756780722628972e-08
+sg22
+F6.9109932861423124e-05
+sg23
+F2.3628347432008251e-06
+sg24
+F5.8474193139818399e-07
+sg25
+F4.8748383464522073e-05
+sg26
+F0.00039800340225529355
+sg27
+F1.1396500907862565e-06
+sg28
+F6.0860894900627319e-06
+sg29
+F1.4039773107958439e-05
+sg30
+F7.8641823018653721e-06
+sg31
+F1.7900263206066857e-07
+ssg31
+(dp57
+g4
+F0.0031733228606451204
+sg6
+F0.0041229706076305805
+sg7
+F0.00011326093205918703
+sg8
+F0.0003107336523713156
+sg9
+F0.0044150730693815815
+sg10
+F0.0013988220349924966
+sg11
+F2.9595101834030538e-06
+sg12
+F7.2406564668540441e-06
+sg13
+F0.0033672155283160357
+sg14
+F0.00024043036862948802
+sg15
+F0.00048147531296238429
+sg16
+F4.8969153377396902e-05
+sg17
+F0.00027080711529018346
+sg18
+F0.00028717988936933261
+sg19
+F0.00086685007952579769
+sg20
+F0.0022732797263808726
+sg21
+F5.8772530859919514e-07
+sg22
+F0.0004961028113789419
+sg23
+F0.0004703920666606279
+sg24
+F0.0003079740284603803
+sg25
+F0.0005364142041190045
+sg26
+F0.00016636206285998437
+sg27
+F3.9649083001438092e-06
+sg28
+F0.00058291908792836619
+sg29
+F0.00077810355792731919
+sg30
+F1.3902537756711927e-06
+sg31
+F2.7629056258564196e-05
+sssS'komentar'
+p58
+S'Z cele cswiki s mezerami'
+p59
+sS'abeceda'
+p60
+S' ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+p61
+sS'poradi'
+p62
+(lp63
+g4
+ag9
+ag6
+ag19
+ag13
+ag20
+ag24
+ag23
+ag26
+ag18
+ag28
+ag15
+ag25
+ag7
+ag10
+ag17
+ag22
+ag31
+ag29
+ag14
+ag16
+ag8
+ag11
+ag12
+ag30
+ag27
+ag21
+asb.
\ No newline at end of file
diff --git a/referencni.py b/referencni.py
new file mode 100644 (file)
index 0000000..d135b3d
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+
+from itertools import combinations
+import pickle
+from ocesavac import ocesat
+import codecs
+
+ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+MABECEDA = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+def nova_tabulka(tabulka, abc=MABECEDA):
+    celkem = sum(sum(tab2.values()) for tab2 in tabulka.values())
+    if celkem != 0:
+        for i in abc:
+            for j in abc:
+                tabulka[i][j] /= float(celkem)
+    return tabulka
+
+def poradi_dle_frekvence(freq):
+    return sorted(freq.keys(), key=freq.get, reverse=True)
+
+class reference:
+    def __init__(self, tref, komentar=''):
+        self.abeceda = tref.abeceda
+        self.poradi = poradi_dle_frekvence(tref.frekvence)
+        self.tabulka = nova_tabulka(tref.tabulka, tref.abeceda)
+        self.komentar = komentar
+
+class treference:
+    def __init__(self, mezery=True):
+        if mezery:
+            self.abeceda = MABECEDA
+        else:
+            self.abeceda = ABECEDA
+        self.mezery = mezery
+        self.frekvence = dict()
+        for c in self.abeceda:
+            self.frekvence[c] = 0
+        self.tabulka = dict()
+        for i in self.abeceda:
+            self.tabulka[i] = dict()
+            for j in self.abeceda:
+                self.tabulka[i][j] = 0
+        self.soubory = []
+        
+    def pridej(self, soubor):
+        f = codecs.open(soubor, encoding='UTF-8')
+        text = ocesat(f.read(), self.mezery)
+        f.close()
+        for i in range(len(text) - 1):
+            self.tabulka[text[i]][text[i+1]] += 1
+            self.frekvence[text[i]] += 1
+        else:
+            self.frekvence[text[i+1]] += 1
+        self.soubory.append(soubor)
+
+def uloz(co, kam):
+    f = open(kam, 'w')
+    pickle.dump(co, f)
+    f.close()
+
+def nacti(odkud):
+    return pickle.load(open(odkud))
diff --git a/robot.py b/robot.py
new file mode 100755 (executable)
index 0000000..1bf94fc
--- /dev/null
+++ b/robot.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+
+import sys
+import smtplib
+import email
+from email.mime.text import MIMEText
+from time import asctime
+from ocesavac import ocesat
+import jakobsen
+from jakobsen import reference
+import koincidence
+import pickle
+import os
+
+ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+class settings:
+    pass
+
+settings = pickle.load(open('./robot_settings'))
+os.chdir(settings.path)
+
+# Cteni mailu
+mail = email.message_from_file(sys.stdin)
+predmet, _, opsny = mail['Subject'].strip().upper().partition(' ')
+if predmet != settings.subject:
+    sys.exit()
+if (opsny == 'L'):
+    mail = pickle.load(open('./msg_last.tmp'))
+odesilatel = mail['From']
+telo = mail.get_payload().strip()
+if len(telo) < 2:
+    sys.exit()
+zprava = telo.upper()
+analyza = []
+
+# Zakladni udaje
+analyza.append("Delka zpravy (bez mezer a zvlastnich znaku):")
+analyza.append(str(len(ocesat(zprava, False))))
+
+# Index koincidence
+analyza.append("\nIndexy koincidence:")
+analyza.append(koincidence.tabulka_indexu(zprava))
+
+# Jakobsen
+analyza.append("\nJakobsen:")
+analyza.append(jakobsen.desifruj(zprava, './ref'))
+
+# Posuny v abecede
+analyza.append("\nPosuny v abecede:")
+
+def posun(char):
+    if 65 <= ord(char) < 90:
+        return chr(ord(char) + 1)
+    if ord(char) == 90:
+        return 'A'
+    else:
+        return char
+
+posunuty = zprava
+for i in range(26):
+    posunuty = map(posun, posunuty)
+    analyza.append(''.join(posunuty))
+
+# Frekvence znaku 
+analyza.append("\nFrekvencni analyza:")
+freq = dict()
+for char in ABECEDA:
+    freq[char] = 0
+for char in zprava:
+    if char in freq:
+        freq[char] += 1
+celkem = sum(freq.values())
+for char in sorted(freq, key=freq.get, reverse=True):
+    analyza.append('{0} {1:>3} {2:>6.2%}'.format(char, freq[char],
+                   float(freq[char])/celkem))
+
+# Bigramy
+analyza.append("\nBigramy podle cetnosti:")
+bigramy = dict()
+for i in ABECEDA:
+    for j in ABECEDA:
+        bigramy[i+j] = 0
+for i in range(0, len(zprava)-1):
+    if zprava[i:i+2] in bigramy:
+        bigramy[zprava[i:i+2]] += 1
+celkem = sum(bigramy.values())
+for char in sorted(bigramy, key=bigramy.get, reverse=True):
+    if bigramy[char] == 0:
+        break
+    analyza.append('{0} {1:>3} {2:>6.2%}'.format(char, bigramy[char],
+                   float(bigramy[char])/celkem))
+
+# Kompozice odpovedi
+msg = MIMEText("Puvodni zprava:\n" + 
+               telo + "\n\n" + "\n".join(analyza) +
+               "\n\nS pozdravem\nVas Robot\n")
+msg['Subject'] = "Analyza Vasi zpravy"
+msg['From'] = settings.name + " <" + settings.mail  + ">"
+msg['To'] = odesilatel
+
+# Odeslani odpovedi
+s = smtplib.SMTP('localhost')
+s.sendmail(settings.mail, odesilatel, msg.as_string())
+s.quit()
+
+# Zalogovani posledni zpravy
+f = open('./robot_last.tmp', 'w')
+f.write(msg.as_string())
+f.close()
+
+f = open('./msg_last.tmp', 'w')
+pickle.dump(mail, f)
+f.close()
+
+f = open('./robot.log', 'a')
+f.write(asctime() + " " +  odesilatel + "\n")
+f.close()