{"id":1027,"date":"2020-01-21T22:43:20","date_gmt":"2020-01-21T21:43:20","guid":{"rendered":"http:\/\/labodemaths.fr\/WordPress3\/?p=1027"},"modified":"2020-09-09T19:18:57","modified_gmt":"2020-09-09T17:18:57","slug":"dictionnaires-en-python-proposition-correction-automates-de-wolfram","status":"publish","type":"post","link":"https:\/\/labodemaths.fr\/WordPress3\/dictionnaires-en-python-proposition-correction-automates-de-wolfram\/","title":{"rendered":"Dictionnaires en Python + proposition correction automates de Wolfram"},"content":{"rendered":"\n<div class=\"wp-block-file\"><a href=\"https:\/\/labodemaths.fr\/WordPress3\/wp-content\/uploads\/2020\/01\/dictionnaires_en_python.pdf\">dictionnaires_en_python<\/a><a href=\"https:\/\/labodemaths.fr\/WordPress3\/wp-content\/uploads\/2020\/01\/dictionnaires_en_python.pdf\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<h4><strong>Proposition de correction des automates de Wolfram avec cha\u00eenes de caract\u00e8res et dictionnaire<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># automate de Wolfram avec gestion des donn\u00e9es sous forme\n# de cha\u00eenes de caract\u00e8res\n\ndef initialisation(n):\n    '''\n    renvoie une cha\u00eene de caract\u00e8re de longueur n\n    correspondant \u00e0 l'\u00e9tape 0\n    : n : int ( n > 1 )\n    : return : une cha\u00eene de caract\u00e8re\n    >>> a=initialisation(3)\n    >>> print(a)\n    ' * '\n    >>> a=initialisation(5)\n    >>> print(a)\n    '  *  '\n    '''\n    retour=\"\"\n    vide=\"\"\n    if n%2==0 :\n        for i in range(n\/\/2-1):\n            vide+=\"-\"\n        retour+=vide+\"**\"+vide\n        return retour\n    for i in range(n\/\/2):\n            vide+=\"-\"\n    retour+=vide+\"*\"+vide\n    return retour\n\ndef transcription(regle):\n    '''\n    traduit la regle en binaire\n    : regle : int ( entre 0 et 255 compris )\n    : retour : cha\u00eene de caract\u00e8re de longueur 8\n    >>>print(transcription(0))\n    --------\n    >>>print(transcription(2))\n    ------*-\n    >>>print(transcription(255))\n    --------\n    >>>print(transcription(120))\n    -****---\n    '''\n    regle_binaire=bin(regle)\n    regle_binaire=regle_binaire[2:len(regle_binaire)]\n    # on ajoute les 0 n\u00e9cessaire pour obtenir une cha\u00eene\n    # de 8 caract\u00e8res\n    vide=\"\"\n    for i in range(0,8-len(regle_binaire)):\n        vide+=\"0\"\n    regle_binaire=vide+regle_binaire\n    retour=\"\"\n    for bit in regle_binaire:\n        if bit==\"0\" :\n            retour+=\"-\"\n        else :\n            retour+=\"*\"\n    return retour\n\ndef ecriture_dictionnaire(regle):\n    '''\n    traduit l'application de la regle aux diff\u00e9rents cas\n    : regle : str ( cha\u00eene de caract\u00e8res de longueur 8 )\n    : return : dict ( dictionnaire )\n    >>> print(ecriture_dictionnaire('--**--*-'))\n    {'***': '-', '**-': '-', '*-*': '*', '*--': '*', '-**': '-', '-*-': '-', '--*': '*', '---': '-'}\n    >>> print(ecriture_dictionnaire('******-*'))\n    {'***': '*', '**-': '*', '*-*': '*', '*--': '*', '-**': '*', '-*-': '*', '--*': '-', '---': '*'}\n    '''\n    retour=dict()\n    retour['***']=regle[0]\n    retour['**-']=regle[1]\n    retour['*-*']=regle[2]\n    retour['*--']=regle[3]\n    retour['-**']=regle[4]\n    retour['-*-']=regle[5]\n    retour['--*']=regle[6]\n    retour['---']=regle[7]\n    return retour\n\ndef evolution(situation,regle):\n    '''\n    d\u00e9termine l'\u00e9volution d'une situation donn\u00e9e en fonction\n    de la r\u00e8gle\n    : situation : str\n    : regle : int\n    >>>situation=\"--*--**-\"\n    >>>print(evolution(situation,5))\n    --*-----\n    '''\n    regle_bin=transcription(regle)\n    regle_a_appliquer=ecriture_dictionnaire(regle_bin)\n    retour=\"-\"\n    for j in range(1,len(situation)-1):\n        cases=situation[j-1:j+2]\n        retour+=regle_a_appliquer[cases]\n    retour+=\"-\"\n    return retour\n\n    \n\ndef evolution_finale(longueur,regle,nombre_etapes):\n    '''\n    retourne une cha\u00eene de caract\u00e8re correspondant \u00e0 l'\u00e9volution\n    selon la regle sur un nombre d'\u00e9tapes donn\u00e9 d'une situtation\n    de longueur initiale donn\u00e9e\n    : longueur : int ( >0 )\n    : nombre_etapes: int\n    : regle : int ( entre 0 et 255 )\n    : return : un tuple contenant les diff\u00e9rentes \u00e9tapes d'\u00e9volution\n    >>> evolution_finale(41,78,10)\n    --------------------*--------------------\n    -------------------**--------------------\n    ------------------***--------------------\n    -----------------**-*--------------------\n    ----------------***-*--------------------\n    ---------------**-*-*--------------------\n    --------------***-*-*--------------------\n    -------------**-*-*-*--------------------\n    ------------***-*-*-*--------------------\n    '''\n    evolutions=(initialisation(longueur),)\n    for j in range(nombre_etapes):\n        situation=evolutions[-1]\n        print(situation)\n        nvl_situation=evolution(situation,regle)\n        evolutions+=(nvl_situation,)\n    return evolutions\n    \nregle=150\nprint(ecriture_dictionnaire(transcription(regle)))\nevolution_finale(40,regle,10)\n\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Proposition de correction des automates de Wolfram avec cha\u00eenes de caract\u00e8res et dictionnaire<\/p>\n","protected":false},"author":2,"featured_media":1029,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts\/1027"}],"collection":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/comments?post=1027"}],"version-history":[{"count":1,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts\/1027\/revisions"}],"predecessor-version":[{"id":1030,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts\/1027\/revisions\/1030"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/media\/1029"}],"wp:attachment":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/media?parent=1027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/categories?post=1027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/tags?post=1027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}