Wikio - Top des blogs - Sciences exactes

mardi 14 mars 2017

PI day : maths et langage

Le nombre Pi est sans doute un nombre univers, ce qui veut dire que toute séquence de chiffres de votre choix est inscrite dans ses décimales . Il faut imaginer qu'il possède une infinité de décimales .
Oui, comme 1/3, c'est vrai, mais les nombres rationnels ne sont pas des nombres univers, car on ne peut pas avoir toutes les séquences de chiffres possibles, les décimales se répétant en séquences à l'infini . Le nombre de Champernowe 0.12345678910111213... possède par construction toutes les séquences de chiffres possibles, mais est un peu prévisible.

En cette année, la semaine des maths a pour thème maths et langage . Si Pi est un nombre univers, en transformant ses décimales en lettres, on pourrait aussi avoir toutes les séquences de lettres possibles, un peu comme dans "la bibliothèque de Babel", la nouvelle de Borges. Votre prénom, les paroles de votre chanson préférée s'y trouvent, à condition de les chercher assez loin .
Bon, il faut quand même trouver une méthode pour transformer ces décimales en lettres de l'alphabet. J'ai demandé à mes élèves de seconde de réfléchir à des méthodes pour trouver les séquences de lettres, de les essayer sur les premières lettres, et d'anticiper les propriétés de cette transformation, les avantages et les inconvénients.
J'ai trouvé sur un site internet les  2400 premières décimales de pi, que j'ai données aux élèves.
Voici les 100 premières pour avoir une idée de la forme :
3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 820 974 944 592 307 816 406 286 208 998 628 034 825 3
Le fait que les décimales soient rangées en paquet de trois a influencé beaucoup d'élèves, on le verra plus tard .
En utilisant les idées des élèves, j'ai programmé ensuite les algorithmes sur Python et nous avons analysé les résultats des fréquences des lettres. J'ai recopié les algorithmes en limitant le nombre de décimales de pi parce que c'est déjà assez long, mais dans le programme j'ai recopié les 2400 décimales. Sur d'autres sites, j'ai trouvé 100000 décimales, mais ça plantait python quand je les recopiais.

Méthode 1 on prend les décimales 2 par 2 , et on regard le reste de la division par  26
from math import *
pid="3.14159265358979323846264338327950288419716939937510582097494459230781640"
for i in range(2,2399,2):
    A= (10*int(pid[i])+int(pid[i+1]))%26
    if A ==0:
        L="A"
    elif A ==1:
        L="B"
    elif A ==2:
        L="C"
    elif A ==3:
        L="D"
    elif A ==4:
        L="E"
    elif A ==5:
        L="F"
    elif A ==6:
        L="G"
    elif A ==7:
        L="H"
    elif A ==8:
        L="I"
    elif A ==9:
        L="J"
    elif A ==10:
        L="K"
    elif A ==11:
        L="L"
    elif A ==12:
        L="M"
    elif A ==13:
        L="N"
    elif A ==14:
        L="O"
    elif A ==15:
        L="P"
    elif A ==16:
        L="Q"
    elif A ==17:
        L="R"
    elif A ==18:
        L="S"
    elif A ==19:
        L="T"
    elif A ==20:
        L="U"
    elif A ==21:
        L="V"
    elif A ==22:
        L="W"
    elif A ==23:
        L="X"
    elif A==24:
        L="Y"
    elif A==25:
        L="Z"
OPONJLBGMUARMGBYCGTTRNPXKGUTXSHXHDMGCKIVICDWZIVRGBEOCIZGEEOVJMSIRYGWFUBHODCWLRTCGKBBPHVKDHMUWQLCPDDSSCDJXOHHSJCVEWXLIAFNBMBMNTMHOOIIIIKTRAMENNKHACXOMVUTJAOGFDKRWDAJUSCDZONTBMKAOHDIBNEBFWEEOANGORZQPLIQHFUSKFHHTBJVILVDPALBFFLHWHSKLVKWRPJSHXBYLMBPDFBTXMUHPHKSGEMEICNQQLRWVLTHCRUIQLCZFNVTYDFYXXGPWSUYROZGAFQMTTAJIEZHZNQXZLINVLTAUOQSJBWXBRBUCRHLKYBWBQOGOJQBVELVDCTIIOIPDHDKDZVTEVIZJHVNXVVULDAEVZFTFVCQJLSHYYTQDIRIEAQAXIZHSQYJATFSDTBADNAMXCIGXHUFDQGRRYROVDHEBXECXCQVLHECLKXBAXPXTFASFAFGRMACONATBJOLTHJVMUTLMJAFUKNWGLBKNPJBMSBSEEETADBBHDQVFVKZVPMNYTVZAFVNFZDWHUQTPYRHYERHLQJUADKMXJFDXULUXNFODGEAOZBPLNAUWEOMHFJIJLSYIKVKSTQRDSTLUYALSQWZBBZVAGTEEXIMKIEOGZMRXMPFKZCLLPVEXVKFROCOGDDYTJLZHERAJGYOYWSVGLNPVBAEAVWBPEJVDLIJIRVMMTOTIFYECJETTDSPXFHFXTKGRAVEMOUKBXJEDDGLNIXJUBDSCKWGNXNTKSIBZBELRCWACZBIZZDGRFUULJZZBPCADMSIBJTYNORGRVVUJBPSTVEHWQNJPVADVHVFPGQQRHXGNHNPRHTVYYQIZSUJRWDKJOTWVGBZYZQEKYTBEQIQBUQEUIBXBNAIHARFEBPTODTPARMFALIRGCGQZMAFLVOUWSIPCWIAQEEYTNCYWVGJSLGWQAKUNTXTETXTLISJEKRTNUJUZMNXVSYNLINFATVGNNEACXMJQNYOARMRUFUJZRSUZEAUAYLOZATQAAGEIOYVJCMBKNSLTBFGEDXKATRXNSZRODCNMNOYPUVRMJZFJHFJPFTKHHZDXXLEQRBOGQNEQQMQQBWPHNHHZYHBRQFEVUAUCGHJBKSRGWNMKVKWKIVMUIFMRKRMTMSNNXYBCBZPROJVZAMSQIQPRWQDGWOLBQUUWGCWIWPGECH

Remarque : Chaque lettre a presque la même probabilité d'apparition . est ce un avantage, est ce un inconvénient ? Borges l'aurait accepté, surtout avec 25 caractères, toutes les lettres auuraient eu la même probabilté...

Méthode 2 : addition des chiffres 3  par 3 et codage avec l’alphabet
from math import *
pid="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280..."

for i in range(2,2399,3):
    A= (int(pid[i])+int(pid[i+1])+int(pid[i+2]))
    if A ==0 or A==26:
        L="A"
    elif A ==1 or A==27:
        L="B"
    elif A ==2:
        L="C"
    elif A ==3:
        L="D"
    elif A ==4:
        L="E"
    elif A ==5:
        L="F"
    elif A ==6:
        L="G"
    elif A ==7:
        L="H"
    elif A ==8:
        L="I"
    elif A ==9:
        L="J"
    elif A ==10:
        L="K"
    elif A ==11:
        L="L"
    elif A ==12:
        L="M"
    elif A ==13:
        L="N"
    elif A ==14:
        L="O"
    elif A ==15:
        L="P"
    elif A ==16:
        L="Q"
    elif A ==17:
        L="R"
    elif A ==18:
        L="S"
    elif A ==19:
        L="T"
    elif A ==20:
        L="U"
    elif A ==21:
        L="V"
    elif A ==22:
        L="W"
    elif A ==23:
        L="X"
    elif A==24:
        L="Y"
    elif A==25:
        L="Z"
    print(L, end='')
GQOWTNMNOSHURQVPGKURQKPKQKAQHPJJNTNOJMJRMQPKPGORMLNJJODIUIGTOKVSMMTOJVRPOLQSIVSMKDSKSROKPHNLSGPNIPGMNUGMJVMRHLRTLKNNQTOJCGIRKQIPLPOHPKMJOVPRLPJMOITGKRLMTRUSJVONSLUMCWMOQLIRNODQTRIRKJROQJORKOOOOPRRRVJGATKKLLRUPJTYPLQQKSIKIRHLSSLFSSXPOLKUEMDPSHNPMRSPMPOOEQBAMYNPOLMPPMTGSONRFMJLKLTIJNRJBDLTOWULKMGOPVMGWKNORSLPNRSLWRNVQUPKJKOKBSVIPSJGSUOODLRRRTSJMRXFEQIEPXXRKXISPKTNUFLQUINGUOTLIPQSZMRMQQOVNMGESIONJUODVKJOOMFIKPTUSTUSRQMTSPTFLMQKKSQPOOHUKAIFOJLVGNLGNHKNHIUKNTOLOTLKRNWRMQPJIKLMPTJDQLUPNUTKRVTRXPSDXOFTGMLYERPLMRWLRPXPRSPMLOQLRMQPRXQTIJRGHKPMLKHQIGJTTRIKNKMHQMVSPKIQQIKQPLQOUURNSMGNLKLNXOQRHOQMZPHRVNTORWWPNBRTVJOOKJIHJOVXMLUOSKHUPEDNPJPRKMOSLGLVPUNLRRRRSPRIRTNPXMMTJOSPRPPRSUKTQPMIJVLPRTQOHRSLKKQOOIOFTJKUVMIPRKUHTFVLLQVSFVVXQVVMIPTSMQRWPSLTSQLRXINSLORYMOUUORQGOSHOGJUMKKKSPPXNQMZHMNRJTWPUKLIJJSUSOPK

Remarque : Beaucoup d'élèves ont été tentés par cette méthode, après avoir remarqué que 9+9+9 = 27  , que c'est presque  26 , qu'on ne va pas trop s'embêter avec ces détails . Les nombres vont de 0 à 27, ce qui fait 28 possiilités . En regardant les fréquences des lettres, on se rend compte que les lettres au début et à la fin de l'alphabet avaient moins de chances d'apparaitre, et que cette méthode avantage les lettres du milieu de l'alphabet.

Méthode 3 : on prend les décimales une par une et on code par une lettre  .
from math import *
pid="3.141592653589793238462643383279502884197169399375105820974944592307816…"

for i in range(2,2399,1):
    A= (int(pid[i])
    if A ==0
        L="A"
    elif A ==1
        L="B"
    elif A ==2:
        L="C"
    elif A ==3:
        L="D"
    elif A ==4:
        L="E"
    elif A ==5:
        L="F"
    elif A ==6:
        L="G"
    elif A ==7:
        L="H"
    elif A ==8:
        L="I"
    elif A ==9:
        L="J"

    print(L, end='')


BEBFJCGFDFIJHJDCDIEGCGEDDIDCHJFACIIEBJHBGJDJJDHFBAFICAJHEJEEFJCDAHIBGEAGCIGCAIJJIGCIADEICFDECBBHAGHJICBEIAIGFBDCICDAGGEHAJDIEEGAJFFAFICCDBHCFDFJEAIBCIEIBBBHEFACIEBACHABJDIFCBBAFFFJGEEGCCJEIJFEJDADIBJGEECIIBAJHFGGFJDDEEGBCIEHFGEICDDHIGHIDBGFCHBCABJAJBEFGEIFGGJCDEGADEIGBAEFEDCGGEICBDDJDGAHCGACEJBEBCHDHCEFIHAAGGAGDBFFIIBHEIIBFCAJCAJGCICJCFEAJBHBFDGEDGHIJCFJADGAABBDDAFDAFEIICAEGGFCBDIEBEGJFBJEBFBBGAJEDDAFHCHADGFHFJFJBJFDAJCBIGBBHDIBJDCGBBHJDBAFBBIFEIAHEEGCDHJJGCHEJFGHDFBIIFHFCHCEIJBCCHJDIBIDABBJEJBCJIDDGHDDGCEEAGFGGEDAIGACBDJEJEGDJFCCEHDHBJAHACBHJIGAJEDHACHHAFDJCBHBHGCJDBHGHFCDIEGHEIBIEGHGGJEAFBDCAAAFGIBCHBEFCGDFGAICHHIFHHBDECHFHHIJGAJBHDGDHBHIHCBEGIEEAJABCCEJFDEDABEGFEJFIFDHBAFAHJCCHJGIJCFIJCDFECABJJFGBBCBCJACBJGAIGEADEEBIBFJIBDGCJHHEHHBDAJJGAFBIHAHCBBDEJJJJJJIDHCJHIAEJJFBAFJHDBHDCIBGAJGDBIFJFACEEFJEFFDEGJAIDACGECFCCDAICFDDEEGIFADFCGBJDBBIIBHBABAAADBDHIDIHFCIIGFIHFDDCAIDIBECAGBHBHHGGJBEHDADFJICFDEJAECIHFFEGIHDBBFJFGCIGDIICDFDHIHFJDHFBJFHHIBIFHHIAFDCBHBCCGIAGGBDAABJCHIHGGBBBJFJAJCBGECABJIJDIAJFCFHCABAGFEIFIGDCHIIGFJDGBFDDIBICHJGICDADABJFCADFDABIFCJGIJJFHHDGCCFJJEBDIJBCEJHCBHHFCIDEHJBDBFBFFHEIFHCECEFEBFAGJFJFAICJFDDBBGIGBHCHIFFIIJAHFAJIDIBHFEGDHEGEJDJDBJCFFAGAEAAJCHHABGHBBDJAAJIEIICEABCIFIDGBGADFGDHAHGGABAEHBABIBJECJFFFJGBJIJEGHGHIDHEEJEEICFFDHJHHEHCGIEHBAEAEHFDEGEGCAIAEGGIECFJAGJEJBCJDDBDGHHACIJIJBFCBAEHFCBGCAFGJGGACEAFIADIBFABJDFBBCFDDICEDAADFFIHGEACEHEJGEHDCGDJBEBJJCHCGAECGJJCCHJGHICDFEHIBGDGAAJDEBHCBGEBCBJJCEFIGDBFADACIGBICJHEFFFHAGHEJIDIFAFEJEFIIFIGJCGJJFGJAJCHCBAHJHFAJDACJFFDCBBGFDEEJIHCACHFFJGACDGEIAGGFEJJBBJIIBIDEHJHHFDFGGDGJIAHECGFECFCHIGCFFBIBIEBHFHEGHCIJAJHHHHCHJDIAAAIBGEHAGAABGBEFCEJBJCBHDCBHCBEHHCDFABEBEEBJHDFGIFEIBGBDGBBFHDFCFFCBDDEHFHEBIEJEGIEDIFCDDCDJAHDJEBEDDDEFEHHGCEBGIGCFBIJIDFGJEIFFGCAJJCBJCCCBIECHCFFACFECFGIIHGHBHJAEJEGABGFDEGGIAEJIIGCHCDCHJBHIGAIFHIEDIDICHJGHJHGGIBEFEBAAJFDIIDHIGDGAJFAGIAAGECCFBCFCAFBBHDJCJIEIJGAIEBCIEIIGCGJEFGAECEBJGFCIFACCCBAGGBBIGDAGHEECHIGCCADJBJEJEFAEHBCDHBDHIGJGAJFGDGEDHBJBHCIHEGHHGEGFHFHDJGCEBDIJAIGFIDCGEFJJFIBDDJAEHIACHFJAAJJEGFHGEAHIJFBCGJEGIDJIDFCFJFHAJICFICCGCAFCCEIJEAHHCGHBJEHICGIEICGABEHGJJAJACGEABDGDJEEDHEFFDAFAGICADEJGCFCEFBHEJDJJGFBEDBECJIAJBJAGFJCFAJDHCCBGJGEGBFBFHAJIFIDIHEBAFJHIIFJFJHHCJHFEJIJDABGBHFDJCIEGIBDICGIGIDIGIJECHHEBFFJJBIFFJCFCEFJFDJFJEDBAEJJHCFCEGIAIEFJIHCHDGEEGJFIEIGFDIDGHDGCCCGCGAJJBCEGAIAFBCEDIIEDJAEFBCEEBDGFEJHGCHIAHJHHBFGJBEDFJJHHAABCJGBGAIJEEBGJEIGIFFFIEIEAGDFDECCAHCCCFICIEIIGEIBFIEFGACI


Remarque :  c'est simple, mais on ne pourra pas coder tout ce qu'on veut, car l'alphabet s'arrête à J . Sinon, on code plus de lettres, c'est appréciable .

Méthode 4 : on prend les décimales 3 par  3  . En remarquant que 1000 / 26 vaut environ 38,5 , on crée 26 intervalles d'amplitude 38  ou 39, qui correspondent chacun à une lettre de l'alphabet .

from math import *
pid="3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408"

for i in range(2,2399,3):
    A= (100*int(pid[i])+10*int(pid[i+1])+int(pid[i+2]))
    if A <38: p=""> <38 38:="" :="">
<38: p="">       L="A"
    elif A <77: p=""> <77 77:="" :="">
<38: p=""><77: p="">       L="B"
    elif A <115: p="">  < 115:
<38: p=""><77: p=""><115: p="">     L="C"
    elif A <154: p="">   <154 154:="" :="">
<38: p=""><77: p=""><115: p=""><154: p="">     L="D"
    elif A < 192:
        L="E"
    elif A <230: p="">   <230: 230:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p="">     L="F"
    elif A <259: p="">  < 269:
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p="">      L="G"
    elif A <307: p="">   <307: 307:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p="">     L="H"
    elif A <346: p="">  < 346:
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p="">      L="I"
    elif A  <384: 346:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p="">        L="J"
    elif A <; 422:
        L="K"
    elif A  <461: 384:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p="">        L="L"
    elif A <499: p=""> <499: 499:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p="">       L="M"
    elif A <538: p=""> <538: 538:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p="">       L="N"
    elif A <576: p=""> <576: 576:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p="">       L="O"
    elif A <614: p="">  <614: 614:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p="">      L="P"
    elif A <653: p="">  <653: 653:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p="">      L="Q"
    elif A <730: 653:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p="">        L="R"
    elif A <768: p=""> <768: 768:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p="">       L="S"
    elif A <806: p="">  <806: 806:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p=""><806: p="">      L="T"
    elif A <845: p="">  <845: 845:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p=""><806: p=""><845: p="">      L="U"
    elif A <883: p=""> <883: 883:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p=""><806: p=""><845: p=""><883: p="">      L="V"
    elif A <921: 883:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p=""><806: p=""><845: p=""><883: p=""><921: p="">        L="W"
    elif A <960: p=""> <960: 960:="">
       L="X"
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p=""><806: p=""><845: p=""><883: p=""><921: p=""><960: p="">     elif A<1000: p="">   <1000: 1000:="">
<38: p=""><77: p=""><115: p=""><154: p=""><230: p=""><259: p=""><307: p=""><346: p=""><384: p=""><461: p=""><499: p=""><538: p=""><576: p=""><614: p=""><653: p=""><730: p=""><768: p=""><806: p=""><845: p=""><883: p=""><921: p=""><960: p=""><1000: p="">       L="Y"
    else::
        L="Z"
     

    print(L, end='')


DPRPTGMQJHNWFEKJCUYXPIUKHFYQAUIDBYDCNHHQCUPOPGRJKDMDLHCRXNCOQQXXXJYLUYRXLDMQGTTEHFWDQOXLJPLIQFKPHGDHRPAPIPEVNWYUGCRJJWPJAINOUMNKDXXNPLBHJSPXCEDJXPTCDOBMJYSOJWSRWFXEAXDURJLRQCAKXKFSEREVXRTOFEHESKRUMRKDAODDHOUTTISTPEQERMLWFXLDOPJBTHRGXOAXCDAYVAKEUQTTIYNRFJYYJYBXBSSUCIPALLJWHQNIGIRAHXEEAADUSWPNFJKQERDHPGMLSMSEOVVJTPSXTVTNEFUPAXVPFWFKFXCGFBMVHVXDJUYGHXAHVYYTQPKWGRTHMDNOVGLDRXUNDVRVWBCJSQMXIGBKXRRDAVUAVJPORRCREXXPFXSULLGJTRVCBNQFBRHBMHIRAYDCSEBYABBDFNGJLAPQGMMHWFHPHXTTJTQAIRQFXPIAHEYORSUNMPPXYRXFTNHXIEIYFSYGMRNDVUTSOJULONVOUKORWYTTTCQBADGFEFFTJDLYOOEJEJODMSVMLNIWKDIOSKVNYOMOCFFEHOGGWRTMPRMTYQGTTCTJUYYRLCXWTJXRBFDFDKYWCDMQXPGYHAFREHSHQBFXBDRTYXJJWHMSROYKWVUQYUKMAPCMSCXHMKJPRUUQNMKRRMHMPMYWQDKLLHBFMGLSKQLLUERGXFRMNRVKKPWXTYMXESXMDHRVXTEYVXGXXLBYNRVYHQRVRUSFQCDPBGWKLGDOSTTRRLYRDQCLRVOVKJLBFUMQELA

Remarque : les lettres sont équiréparties.

Méthode 5 : Conversion en base 26 des décimales de pi
Bon, celle-ci c'est moi qui ai voulu l'essayer. On multiplie le nombre décimal par  26, on retient la partie entière du résultat pour la convertir en lettres, puis on enlève cette partie entière, et on continue...

from math import *
pid="3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408..." #2400 décimales#
dpi=float(pid)
dpi=dpi-3
for i in range(60):
    A= (int(dpi*26))
    dpi=26*dpi-A
    lettre=65+A
    L=chr(lettre)
 
         

    print(L, end='')

DRSQLOLYRTRCLRGGUKBJKPSRFVKRODHLJRFSZSOXNHXZEWTNAAAAAAAAAAAA

Bon, là, j'ai été surpris , à partir de  la 49 eme lettre, plus que des A , cette méthode est vraiment gourmande en décimales.



Après avoir remarqué qu'on avait peu de chances d'obtenir un mot compréhensible avec ces méthodes, parce qu'il y avait trop de lettres rares comme k ou w , nous avons recherché les fréquences des lettres en français, et essayé de respecter davantage ce critère afin d'optimiser les chances d'obtenir un mot intelligible.

Méthode 6 :
Pour commencer, prenons les  100 jetons du scrabble (  hors joker ) et rangeaons les dans l'ordre alphabétique . Prenons ensuite les décimales de pi 2 par 2 , et cherchons la lettre qui correspond ( en commençant à compter à 0) :
from math import *
pid="3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408"# 2400 décimales#

for i in range(2,2399,2):
    A= (10*int(pid[i])+1*int(pid[i+1]))
    if A <9: p="">        L="A"
    elif A <11: p="">        L="B"
    elif A <13: p="">        L="C"
    elif A <16: p="">        L="D"
    elif A < 31:
        L="E"
    elif A <33: p="">        L="F"
    elif A <35: p="">        L="G"
    elif A <37: p="">        L="H"
    elif A <45: p="">        L="I"
    elif A <46: p="">        L="J"
    elif A < 47:
        L="K"
    elif A <52: p="">        L="L"
    elif A <55: p="">        L="M"
    elif A <61: p="">        L="N"
    elif A <67: p="">        L="O"
    elif A <69: p="">        L="P"
    elif A <70: p="">        L="Q"
    elif A <76: p="">        L="R"
    elif A <82: p="">        L="S"
    elif A <88: p="">        L="T"
    elif A <94: p="">        L="U"
    elif A <96: p="">        L="V"
    elif A <97: p="">        L="W"
    elif A <98: p="">        L="X"
    elif A<99: p="">        L="Y"
    elif A<100: p="">        L="Z"
     

    print(L, end='')

DDUOHUSFIKEIIFSLETERQIURBNEXLINEASOAEOAZTEALEGEEASTDSTLFTEOLBIINVLNEFRMNISELCEJATBEAUTEBNNOKEVUMUASWIESBRONGIOELNLEITSFOECAUUJOTOUGNGTBJIEOTDIHAEALDCRRJTAOAFNUELSMBEWEEEIURMOHSUNANADEMALTAOMDTDQLVDCNVGARRHNNNEMBETCRSUECSFACTLAIOIZORVPHETREEUCEUSTAELCYGPGOIANOETADVVOVELIEAAEYNVIASAIERSEFSRETPLEKSQILFAAPCRJEHNTSTSDIRSUNURORSRDPIBAELMIAKMVTIBLSESPUNUHIAZNCEEAENTIGISNSHESLREZNLTAEDLZZYIESAZLAXFREEBOENLEJVNGQAEEIMEAEGIPLHEEFESRAAADSIRETNRGETSIAEESQDRANTMLAERMPRCNNEOUEMSRURENSENSAFECESODAEETOCENBEOEEUIBMNEBOLNOEUOUOMIEEWTEEEMAMATEPZNROEZIIUEXESMTLUFLNRTRIJILQNLTVGCPORSNUURBTSRKIKLIFUNAAAUSAPCIAYLTICTTONHORSNBLBEEIVNWEUKSSIIVLEMSSLETRAARGOOAAOTEUQLCUFHSAUUDEAREOAQOAINASLEHCEGTIAHNSIERWLFOUIZEEAEZESPTHLSONBGEEOCEUJTFLEEOTXJNRPLTTALJUNQEZNUURBSRBEENFCOGLTEENWAHLAOLUEUEGSSMNOQSREMEETELSTENKRUBSSEUSASORNAOJEUUEFEELRHAIIERNTLEDODRMNEGLNITVPITEFIAIIIGJLSEETEEYHQLNOBUEEETEELEINUSRSAVNEMKPAYTEEEUSNTSITTSPXOSJIAVITSONVASAIECMACRUYLWAIELTEVNAEEOELEEAOEOARISOEIELJARERITWBNHIRURTKSOORRWEDUAOTEJZNDIASARUBVOSISVCQKTYHEVRYETEEMEUISERVSETTNDSZBAOAHIIIJMAATALOMJELIWLIDESUUOULUREQOOLNBTTTIAXUNNSERLUEEEMUTPDTPPIPVERDNUTNEENMVVFAZRMKSTNTEHIQNLOIHROEONZCKAACIUIUJCIDOLSESSSDQDHZSACWEAVIQLPNNLIOMIERENELTLDTNAT
>>>

Remarques : la fréquence des lettres suit la fréquence de celles du scrabble
C'est là que j'ai remarqué le premier mot, sur la deuxième ligne : BEAUTE .
C'était magnifique, j'en étais ému .

Méthode 8 : plus précis que le scrabble, on a utilisé les fréquences des lettres en français trouvées sur le magnifique site ars cryptographica de Didier Muller, l'un de mes sites préférés. On a pris les décimales 3 par 3 et on a utilisé les fréquences cumulées des lettres rangées par ordre croissant.
from math import *
pid="3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408"

for i in range(2,2399,3):
    A= (100*int(pid[i])+10*int(pid[i+1])+int(pid[i]))
    if A <84: p="">        L="A"
    elif A <95: p="">        L="B"
    elif A <125: p="">        L="C"
    elif A <167: p="">        L="D"
    elif A < 339:
        L="E"
    elif A <351: p="">        L="F"
    elif A <363: p="">        L="G"
    elif A <372: p="">        L="H"
    elif A <446: p="">        L="I"
    elif A <449: p="">        L="J"
    elif A < 450:
        L="K"
    elif A <511: p="">        L="L"
    elif A <540: p="">        L="M"
    elif A <610: p="">        L="N"
    elif A <663: p="">        L="O"
    elif A <693: p="">        L="P"
    elif A <703: p="">        L="Q"
    elif A <769: p="">        L="R"
    elif A <849: p="">        L="S"
    elif A <920: p="">        L="T"
    elif A <977: p="">        L="U"
    elif A <991: p="">        L="V"
    elif A <992: p="">        L="W"
    elif A <996: p="">        L="X"
    elif A<999: p="">        L="Y"
    elif A<1000: p="">        L="Z"
     

    print(L, end='')

 DNONSELOIELTEDIICSVUNESIEEZOASFCAVDAMEEOBSNNNERGICLCLECRUMCNOOUUUIUISVPUICLOESSDEETDONULFOLEOEINEEDERNANENETMUUSEBRHHTNHAEMNSLMIDUUMNIAEHRNUBECIUOSCCNALIURNGTRRTEUEAUCSPHIOOAAIUIERERETURSMEEEERIPSLPIDANCDENSSSFRSNEOERLITEUIDNNIASEPEUNAUCCAUTAIDSOSSEUMREFZZIVAUARRSBENALLFTEOMEEFPAEUEEAADSRTNMEIIOEPDENELIRLRDNTTGSNRUSTSMEESOAUTOETEIEUBEEALTETUDISUEEUAETUZSONITERSELDMNTELDQUSMCTRTTABIROLUEEAIURPDASSATHNNRPCREUUNEURSIIEISRSCAMOEAPEALEEPAVDCRDAUAAADEMEIIANOELLETEENEUSSGSOAFROEUNEAEEVNRRSLLNNUZQUESLEUEDFVERUELPLCTSSRNHSINMTNSINPTVSSSAOAADEEEEESGDIVNNDHDGNDLRSLIMETIDENRITMVNLNBEEEENEETPSLNOLSVOESSASISUVPLCUTSHUPAECECIVTACLOUNEUEAEPEEREOAEUACRSUUHITELRONUITTSOZSILANBLRAUELIGNRSSOMLIRRLELNLZTODIILEAELELRIOIISEOEUEQLMRTIINTUSVLUDRULDEPTUSDZTUEUUIAVMPSVEOQSOSREOBCNAETILEDNRSSRQIZRCOAIQTNSIGIAESLODLA


Remarque : les lettres suivent les fréquences du français .On peut commencer à reconnaitre des débuts de mots .

On peut faire quelques autres variations sur ce thème, en rangeant les lettres par fréquences croissantes ou décroissantes, par exemple . Le choix des méthodes est très varié .

Bien sûr, ce n'est pas très spectaculaire, nous n'avons pas trouvé de jolies phrases, ni même notre prénom . Mais savoir qu'en allant chercher aussi loin qu'on veut, on trouvera certainement la phrase que l'on veut, ça donne un frisson , une réflexion sur l'infini que l'on peut ressentir en se promenant dans la bibliothèque de Babel .



 

 

 

 



 

 











Aucun commentaire:

Enregistrer un commentaire