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 .



 

 

 

 



 

 











vendredi 13 janvier 2017

une rencontre imaginaire

Une planche de travail pour le concours maths et BD organisé par images des maths .
Je compte la refondre totalement, mais il y a des idées que j'aime bien.

J'espère faire concourir deux élèves de mon lycée par ailleurs .


dimanche 16 octobre 2016

Suite de pliage

Voici une aide pour démarrer le pliage pour un devoir maison.


Et voici le devoir associé 
Sur une idée de Ruben Rodriguez.

dimanche 9 octobre 2016

QCM en classe

Depuis la rentrée, pour dynamiser un peu mes classes et faire se poser des bonnes questions à mes élèves, j'ai décidé de faire dans chacune des mes séances de deux heures de cours un QCM, souvent placé au milieu de la séance . Je me suis renseigné sur les méthodes qu'on peut employer, J'ai appris qu'il y avait des boitiers pour cela dans certains amphis, ou des applications sur téléphone. Chacun ayant un compte, on peut garder la trace des réponses et arriver à une note .Mon objectif étant plutôt de créer une réflexion, puis un débat en classe, et non d'évaluer, j'ai opté pour une solution plus simple. Et puis, la technologie, c'est bien quand ça marche . Je me méfie un peu des solutions compliquées ou coûteuses.
La question est projetée au tableau . Quatre réponses sont proposées, dont au moins un bonne, dans des rectangles de couleur bleue, verte, jaune ou rose . J'ai donné en première séance un post it de chacune des couleurs repositionnable . Au bout d'un certain temps que j'ai défini, les élèves levent le post it en même temps . En un coup d'oeil, on voit si la notion est comprise, et on explique les pièges s'ils sont tombés dedans . Les élèves aiment beaucoup ce rituel, et me le demandent si par hasard j'ai oublié ou si on n'est pas allés assez loin pour poser la bonne question .
Pour l'instant, ça me demande du temps d'imaginer les questions qui peuvent faire avancer le débat, mais j'engrange pour les années suivantes .
Les questions les plus efficaces pour le moment, avant d'aborder le théorème des valeurs intermédiaires et son corollaire :

QUESTION 1 ( 30 secondes ) :
f est continue sur [ -5 ; 5 ] ,
 f(-5) = - 3 , f(5) = 3 .
 Alors l'équation f(x) = 0  admet 

QUESTION 2 ( 30 secondes )
f est continue et strictement croissante sur[ -5 ; 5 ] .
 f(-5) = - 3 , f(5) = 3 .
 Alors l'équation f(x) = 0  admet 

QUESTION 3 (30 secondes)
f est strictement croissante sur[ -5 ; 5 ] .
 f(-5) = - 3 , f(5) = 3 .
 Alors l'équation f(x) = 0  admet 

Résultat, en cinq minutes ( débat et correction compris ),  le théorème des valeurs intermédiaires et son corollaire étaient prêts à l'emploi .

Je compte faire en fin de chapitre sur les suites un QCM en forme de vrai ou faux, avec élimination directe en cas de mauvaise réponse ( 20 secondes par question ). Sans doute les élèves qui auront trouvé toutes les bonnes réponses auront une note bonus .
QUESTION 1 : Une suite monotone et bornée converge .
QUESTION 2 : Une suite minorée et croissante converge.
QUESTION 3 : Une suite minorée est croissante.
QUESTION 4 : Une suite majorée et convergente est croissante
QUESTION 5  Une suite convergente est bornée.
QUESTION 6  Une suite croissante est minorée
QUESTION 7 : Une suite convergente est monotone .
QUESTION 8 : Une suite divergente n'est pas bornée .
Je crois que c'est une bonne idée d'avoir opté pour des post it repositionnables. Les élèves les recollent sur la première page de le cahier, voire sur le protège cahier, il sont toujours à disposition.
C'est amusant, quand le cours devient un peu pointu, et que certains élèves veulent passer à autre chose, je les vois ouvrir la première page en espérant ce moment un peu plus détendu.  






jeudi 12 mai 2016

François Morellet

François Morellet vient de mourir . Je ne sais rien de lui, mais je lui dois ma meilleure surprise quand j'ai visité Beaubourg . Son oeuvre est drôle et rigoureuse à la fois, empreinte de géométrie, un régal pour l'esprit . Je voulais lui rendre hommage .
8 trames 0° - 22°55 - 45° - 67°5 - 90° - 112°5 - 135° - 157°5, Une huile sur bois constituée de 8 familles de droites parallèles régulièrement disposées .Suivant la position d'om on regarde le tableau, on voit des fleurs, des rosaces de différentes tailles, qui vibrent .




Une belle façon de simuler le hasard, et pourtant vérifiable et reproductible avec le même annuaire. PAr ailleurs, cela peut faire l'objet d'un exercice d'algorithmique : programmer l'ordinateur (algobox? ) pour faire une image sur le même principe .

1 VARIABLES
2 i EST_DU_TYPE NOMBRE
3 j EST_DU_TYPE NOMBRE
4 numero EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6 POUR i ALLANT_DE 1 A 200
7 DEBUT_POUR
8 POUR j ALLANT_DE 1 A 200
9 DEBUT_POUR
10 numero PREND_LA_VALEUR ALGOBOX_ALEA_ENT(0,9)
11 SI (numero%2==0) ALORS
12 DEBUT_SI
13 TRACER_POINT (i,j) {rouge}
14 FIN_SI
15 SINON
16 DEBUT_SINON
17 TRACER_POINT (i,j) {bleu}
18 FIN_SINON
19 FIN_POUR
20 FIN_POUR
21 FIN_ALGORITHME

(réglages dessiner dans un repère : xmin =0 , xmax =200 , y min = 0 , ymax = 200)


6 répartitions aléatoires de 4 carrés noirs et blancs d'après les chiffres pairs et impairs du nombre Pi, 1958 Ensemble de 6 éléments. 6 panneaux carrés Huile sur bois, 80x80 cm (dimension de chaque panneau)



 Je viens de m'inspirer de cette dernière installation pour proposer un exercice de seconde, dans la continuité de ce que je fais en ce moment sur les probabilités: Un tableau de François Morellet est composé de 4 carrés peints de façon aléatoire en blanc ou noir. Calculer les probabilités des événements suivants :
 A : " le tableau est monochrome."
 B : " Le tableau comporte un seul carré noir ."
 C:  " Le tableau dessine une bande noire ."

samedi 28 mars 2015

stella octangula

La stella octangula, nommée ainsi par Johannes Kepler, peut être vue comme l'intersection de deux tétraèdres réguliers,
ou encore comme un octaèdre étoilé, c'est à dire un octaèdre où on a posé sur chaque face un tétraèdre régulier.
Pour le construire, j'ai utilisé des baguettes de 20 cm découpées dans des tourillons, aux bouts desquelles j'ai vissé deux pitons à vis. L'attache se fait par des collerettes .

J'ai commencé par fabriquer l'octaèdre pour ne pas me perdre dans la construction : au bout du compte, sur chaque sommet, il n'y aura pas moins que  8 arêtes !
Puis j'ai posé les tétraèdres par dessus.

La construction comporte 12 + 8 * 4 = 36 baguettes.

La troisième partie de la construction consiste à faire passer au sommet de chaque tétraèdre une ficelle de manière à faire apparaître un cube .

A partir de là, on peut avoir une petite réflexion  sur les rapports de volumes de ces trois solides de Platon, et sur les pavages de l'espace.

On sait paver l'espace avec des cubes de même taille, tout le monde en a fait l'expérience depuis son plus jeune âge.
Imaginons que l'on pose plusieurs cubes de cette sorte de manière à paver l'espace.
Oublions alors les cubes en ficelles, on a alors construit une structure composée de tétraèdres et d'octaèdres, chaque quart d'octaèdre se complétant avec ceux qui sont dans les cubes voisins.
La structure composée d'octaèdres et de tétraèdres pave donc l'espace.

On a vu dans une précédente activité que le volume de l'octaèdre  est égal à quatre fis celui du tétraèdre régulier de même longueur d'arête.
Le cube que nous avons formé a une longueur de côté égale à \sqrt 2 fois celle du côté de l'octaèdre . Le volume du cube que nous obtenons est donc \( \sqrt{2})^3 = 2 \sqrt 2 fois plus grande que celle du carré de même longueur d'arête . On garde ce fait sous le coude et on continue l'exploration: Le cube est composé d'un octaèdre entier, de 8 tétraèdres et de 12 quarts d'octaèdres, dont une diagonale est figurée par les arêtes des cubes. On peut compléter les octaèdres si avec quelques baguettes supplémentaires .
Faisons les comptes , le volume du grand cube est donc celui de 4 octaèdres et de 8 tétraèdres, ce qui équivaut au volume de 6 octaèdres ou encore de 24 tétraèdres. Le volume d'un cube de la même arête est donc \frac{6}{2 \sqrt2 } = \frac{3 \sqrt 2} {2} fois plus grand que celui de l'octaèdre . On trouve donc les formules :
Pour l'octaèdre régulier d'arête a: V = \frac{\sqrt 2}{3} a^3
Pour le tétraèdre régulier d'arête a : V = \frac{\sqrt 2}{12} a^3
On peut aussi faire le rapport du volume de la stella octangula sur celui du cube : ainsi, le volume de l'étoile est celui du cube ôté des 12 quarts d'octaèdre. On a vu que le volume du cube est celui de 6 octaèdres. Donc la volume de l'étoile est de 3 octaèdres, soit la moitié du volume du cube qui la contient. Encore une fois, la perception du volume n'est pas évidente, je n'aurait pas parié sur ce rapport avant le calcul. Si on veut dessiner la stella octangula avec un logiciel de géométrie dans l'espace, il suffit de commencer en donnant les coordonnées des sommets, qui sont aussi ceux du cube.