{"id":310,"date":"2022-06-09T07:02:27","date_gmt":"2022-06-09T06:02:27","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/mathsinfo\/?p=310"},"modified":"2022-06-19T08:02:52","modified_gmt":"2022-06-19T07:02:52","slug":"kata8","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/mathsinfo\/2022\/06\/09\/kata8\/","title":{"rendered":"Huiti\u00e8me exercice en Python, JavaScript et APL"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"956\" height=\"406\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-7.png\" alt=\"\" class=\"wp-image-311\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-7.png 956w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-7-300x127.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-7-768x326.png 768w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/06\/image-7-500x212.png 500w\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" \/><\/a><\/figure>\n\n\n\n<p>Quelques explications sur la <strong>notation polonaise inverse<\/strong> (<strong>RPN<\/strong>), utilis\u00e9e par exemple sur les calculatrices de la marque <strong>HP<\/strong> (<a href=\"https:\/\/youtu.be\/oxBTEypCLDc\" target=\"_blank\" rel=\"noreferrer noopener\">vid\u00e9o sur ma chaine Youtube pour en savoir plus<\/a>) :<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/scontent.fcdg3-1.fna.fbcdn.net\/v\/t1.15752-9\/286291435_773825063621001_7901655887809768460_n.jpg?_nc_cat=107&amp;ccb=1-7&amp;_nc_sid=ae9488&amp;_nc_ohc=0B-FmJk3VL4AX-35I7A&amp;_nc_ht=scontent.fcdg3-1.fna&amp;oh=03_AVJ_g5iRe5JRidHVKLxAcmq6gtEfQc8Dzk2KwI6czVakyg&amp;oe=62C418F3\" alt=\"Aucune description disponible.\" \/><figcaption>Calculateur HP-11C utilisant le mode RPN (collection personnelle)<\/figcaption><\/figure>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/stendec.io\/ctb\/rpn_sci.html\" target=\"_blank\">Utilisez ce simulateur<\/a> pour faire les calculs ci-dessous :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2 ENTER 3 +\nAffichage : 5\n\n3 ENTER 4 ENTER 5 * +\nAffichage : 23<\/code><\/pre>\n\n\n\n<p>Ces calculatrices utilisent une <strong>pile<\/strong> (<strong>stack<\/strong>) pour placer (<strong>empiler<\/strong>) les valeurs (<strong>op\u00e9randes<\/strong>) et les calculs sont effectu\u00e9s d\u00e8s que l&rsquo;on appuie sur un <strong>op\u00e9rateur<\/strong> (+, -, *, sin, etc.). Pour cela la machine d\u00e9pile 1 ou plusieurs \u00e9l\u00e9ments sur le principe du \u00ab\u00a0dernier arriv\u00e9, premier sorti\u00a0\u00bb (LIFO = Last In First Out). Pour des op\u00e9rateurs <strong>dyadiques<\/strong> comme l&rsquo;<strong>addition<\/strong> ou la <strong>multiplication<\/strong>, il faut d\u00e9piler <strong>2 \u00e9l\u00e9ments<\/strong>. Pour un op\u00e9rateur <strong>monadique<\/strong>, comme <strong>sinus<\/strong>, on ne d\u00e9pile qu&rsquo;<strong>une seule<\/strong> valeur.<\/p>\n\n\n\n<p>Reprenons les \u00e9tapes de l&rsquo;exemple propos\u00e9 dans l&rsquo;\u00e9nonc\u00e9 : <strong>5 1 2 + 4 * + 3 &#8211;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>5 ENTER 1 ENTER 2  \/\/ Pile = 5 | 1 | 2     (3 \u00e9l\u00e9ments empil\u00e9s)\n+                  \/\/ Pile = 5 | 3         (calcul 1 + 2 = 3)\n4                  \/\/ Pile = 5 | 3 | 4     (4 empil\u00e9)\n*                  \/\/ Pile = 5 | 12        (calcul 3 * 4 = 12)\n+                  \/\/ Pile = 17            (calcul 5 + 12 = 17) \n3                  \/\/ Pile = 17 | 3        (3 empil\u00e9)\n-                  \/\/ Pile = 14            (calcul 17 - 3 = 14) <\/code><\/pre>\n\n\n\n<p>Un des int\u00e9r\u00eats du RPN est qu&rsquo;il n&rsquo;y a <strong>pas besoin de parenth\u00e8ses<\/strong>, d&rsquo;ailleurs vous n&rsquo;en trouverez pas sur les anciennes calculatrices HP.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Les piles en python et javascript<\/h3>\n\n\n\n<p>Les <strong>piles<\/strong> sont simplement des <strong>listes<\/strong> o\u00f9 l&rsquo;on va pouvoir <strong>empiler<\/strong> et\/ou <strong>d\u00e9piler<\/strong> des \u00e9l\u00e9ments :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"text-decoration: underline\">En Python<\/span>\n\n&gt;&gt; pile = &#091; ]        # pile vide\n&gt;&gt; pile.append(2)    # on empile la valeur 2\n&gt;&gt; pile.append(9)    # et la valeur 9\n&gt;&gt; pile\n&#091;2, 9]\n&gt;&gt; pile.pop()        # On d\u00e9pile suivant \"Last In First Out\"\n9\n&gt;&gt; pile\n&#091;2]                  # Il n'y a plus qu'un seul \u00e9l\u00e9ment dans la pile\n\n<span style=\"text-decoration: underline\">En JavaScript<\/span>\n\n&gt;&gt; pile = &#091; ]\n&gt;&gt; pile.push(2)\n1\n&gt;&gt; pile.push(9)\n2\n&gt;&gt; pile\n&#091;2, 9]\n&gt;&gt; pile.pop()\n9\n&gt;&gt; pile\n&#091;2]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Evaluer une expression en python et javascript<\/h3>\n\n\n\n<p>Une premi\u00e8re solution (Python et JavaScript) est d&rsquo;utiliser <strong>eval<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; eval('2 + 3')\n5<\/code><\/pre>\n\n\n\n<p>Une autre id\u00e9e est de voir <strong>2 + 3<\/strong> comme <strong>l&rsquo;op\u00e9rateur<\/strong> <strong>+<\/strong> appliqu\u00e9 aux <strong>op\u00e9randes<\/strong> <strong>2<\/strong> et <strong>3<\/strong>, c&rsquo;est-\u00e0-dire <strong>+(2,3)<\/strong>. C&rsquo;est tout simplement la notation <strong>f(x,y)<\/strong> utilis\u00e9e en math\u00e9matique.<\/p>\n\n\n\n<p>Voici comment traduire les 4 op\u00e9rations en JavaScript \u00e0 l&rsquo;aide d&rsquo;un <strong>dictionnaire<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; OPS = {\n  '+': (x, y) =&gt; x + y, '-': (x, y) =&gt; x - y, \n  '*': (x, y) =&gt; x * y, '\/': (x, y) =&gt; x \/ y\n}\n\n&gt;&gt; OPS&#091;'+'](2,3)\n5<\/code><\/pre>\n\n\n\n<p>Et en Python :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; OPS = {  \\\n  '+': lambda x, y: x + y, '-': lambda x, y: x - y, \\\n  '*': lambda x, y: x * y, '\/': lambda x, y: x \/ y  \\\n  }\n\n&gt;&gt; OPS&#091;'+'](2,3)\n5<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Id\u00e9e du programme<\/h2>\n\n\n\n<p>Gardons l&rsquo;exemple : <strong>5 1 2 + 4 * + 3 &#8211;<\/strong><\/p>\n\n\n\n<p>On va <strong>s\u00e9parer<\/strong> (<strong>split<\/strong>) les diff\u00e9rents \u00e9l\u00e9ments de la chaine puis, en partant de la gauche, <strong>empiler<\/strong> <strong>si<\/strong> c&rsquo;est un <strong>nombre<\/strong>, sinon <strong>si <\/strong>c&rsquo;est un <strong>op\u00e9rateur<\/strong>, <strong>d\u00e9piler<\/strong> les <strong>2 derniers<\/strong> \u00e9l\u00e9ments (les 4 op\u00e9rateurs <strong>+-\/*<\/strong> \u00e9tant tous dyadiques), effectuer le <strong>calcul<\/strong> et <strong>empiler<\/strong> le r\u00e9sultat.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>On empile 5 puis 1 puis 2\n'+' \u00e9tant un op\u00e9rateur dyadique, on d\u00e9pile 1 et 2\nOn effectue le calcul +(1,2) qui donne 3\nOn empile cette valeur, etc.<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Python<\/h3>\n\n\n\n<p><a href=\"https:\/\/tio.run\/##fVJBasMwELz7FQM52I7thCbNxVB6KD0n0GOagxLL1KBIQpJNQumD\/A4\/LF3ZBJq6qUAgMTOanV3ps\/tQcnm5FLzEgYlDZOM8ANabNzzhE3inS5iEOQQ77guGU4pzjhMSnFOE2RjIPNCrpmNw2qvmY2CO8@D1RVtXgpP7FjvcWxNsPKmpCk6CUhk0qCTszGpRuSjOx4K1hGbmoGrjILhF14quPXLpbOAJVTk8QcnzO5av1mUHjlpC6a41zPHa4DkY4H0KRkX72mda6ShOf5y9WkkUXdtnW\/w2HzLPmNZcFhGVsG12EUuxj@OruR9OLajv\/Oi5hjLAdK2thWOuf4QLy3P8syawlVTyD8dSKOai5uo2kKngwYuGhYYJSktSw11t5E22sc@Lko7LGkWv9dwg0KaSLur\/WLjCAzUhwSP9iARLZGEc3xCWsxUWtBMCLpdv\" target=\"_blank\" rel=\"noreferrer noopener\">Vous pouvez tester le programme ici <\/a>: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def calc(s):\n  OPS = {  \\\n  '+': lambda x, y: x + y, '-': lambda x, y: x - y, \\\n  '*': lambda x, y: x * y, '\/': lambda x, y: x \/ y  \\\n  }\n  pile = &#091; ]                         # Pile vide\n  for v in s.split():                # On parcourt les \u00e9l\u00e9ments\n    if v in OPS:                     # Est-ce un op\u00e9rateur ?\n      b, a = pile.pop(), pile.pop()  # on d\u00e9pile 2 \u00e9l\u00e9ments\n      pile.append(OPS&#091;v](a, b))      # calcul + empiler le r\u00e9sultat\n    else:                            # sinon\n      pile.append(float(v))          # on empile la valeur\n  return pile.pop()                  # Contenu de la pile\n\n&gt;&gt; calc('5 1 2 + 4 * + 3 -')\n14.0\n&gt;&gt; calc('3.5 2.5 +')\n6.0<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">JavaScript<\/h3>\n\n\n\n<p>Pour r\u00e9cup\u00e8rer les <strong>cl\u00e9s<\/strong> d&rsquo;un dictionnaire on peut utiliser la fonction <strong>Object.keys<\/strong>. Vous <a href=\"https:\/\/tio.run\/##bVFLTsMwFNznFLOL0\/xESzegInGCIrGsukhSF1xCbPkTNUI9EOfgYOE5aQQtPCmxM35vZpw5FG1hKi2UTRu5431fycZYVEVdYQWD1QOCjwBU66dnQobtCABhHN6BHRN0kW88IkaXIEyv0NSj08js6nA2jORXaI5uGDjdD4sSNSfxDbbj915qsBZyD5MZVQvLQoRRdOlO7MHW5YFXNnvjnWF0gSgTTVW7HTespXaqPMcEkQBd3gre2DPDxES1KRMUW@\/Be8mUVCxK8LM\/G8PkNlPOvHrJTbtlRYJylPN6jwfpLHYO@uvTuNoWk9zpvPLacPy18EMbt9EEEh@lACWd9u5brq3Q4A0a@V5qfsE8vjW3Tje\/rAenIPCpSwJq@cJ89ixc4gZzCvSWEoqxQEr\/95@2RbbEnJ6Yjvv@Gw\" target=\"_blank\" rel=\"noreferrer noopener\">pouvez tester le programme ici<\/a> : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt; const calc = s =&gt; \n{\n    OPS = \n    {\n      '+': (x, y) =&gt; x + y, '-': (x, y) =&gt; x - y, \n      '*': (x, y) =&gt; x * y, '\/': (x, y) =&gt; x \/ y\n    };\n    pile = &#091; ];\n    for (v of s.split(' ')) \n    {\n      if (Object.keys(OPS).includes(v))    \/\/ includes = contient\n      {\n         &#091;b, a] = &#091;pile.pop(), pile.pop()];\n         pile.push(OPS&#091;v](a, b))     \/\/ Ajout du r\u00e9sultat\n      }\n      else \n      {\n         pile.push(+v)        \/\/ '+' pour convertir en nombre\n      }\n    }\n    return pile.pop()\n}\n\n&gt;&gt; calc('5 1 2 + 4 * + 3 -')\n14\n&gt;&gt; calc('3.5 2.5 +')\n6<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Version APL<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Un peu plus loin avec les r\u00e9ductions<\/h3>\n\n\n\n<p>Les calculs s&rsquo;effectuant de la droite vers la gauche, nous allons d\u00e9j\u00e0 <strong>retourner<\/strong> le vecteur :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      s \u2190 5 1 2 '+' 4 '\u00d7' '+' 3 '-'\n      \u233ds\n- 3 +\u00d7 4 + 2 1 5<\/code><\/pre>\n\n\n\n<p>Nous avons vu des <strong>r\u00e9ductions simples<\/strong> comme <strong>+\/<\/strong>, <strong>\u00d7\/<\/strong> etc :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      +\/ 1 2 3 4       \u235d Somme des \u00e9l\u00e9ments du vecteur\n10\n      \u00d7\/ 1 2 3 4       \u235d Produit des \u00e9l\u00e9ments du vecteur\n24<\/code><\/pre>\n\n\n\n<p>Mais il est possible de faire des <strong>r\u00e9ductions plus complexes<\/strong>, premier exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            {\u237a,\u237a,\u2375} \/ 1 3 4\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u25021 1 3 3 4\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p><span style=\"text-decoration: underline\">Etape 1<\/span> : \u2375 = 4 (terme de droite)<br><span style=\"text-decoration: underline\">Etape 2<\/span> : \u237a = 3 que l&rsquo;on ajoute 2 fois \u00e0 \u2375 (concat\u00e9nation \u237a,\u237a,\u2375), ce qui donne \u2375 = 3 3 4<br><span style=\"text-decoration: underline\">Etape 3<\/span> : \u237a = 1 que l&rsquo;on ajoute 2 fois \u00e0 \u2375 = 3 3 4 d&rsquo;o\u00f9 le 1 1 3 3 4<\/p>\n\n\n\n<p><span style=\"text-decoration: underline\">Autre exemple<\/span> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      {\u237a, \u233d\u2375} \/ 1 2 3 4\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u25021 3 4 2\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p><span style=\"text-decoration: underline\">Etape 1<\/span> : \u2375 = 4 (terme de droite)<br><span style=\"text-decoration: underline\">Etape 2<\/span> : Ajouter \u237a = 3 et inverser \u2375 = 4, on obtient \u2375 = 3 4<br><span style=\"text-decoration: underline\">Etape 3<\/span> : Ajouter \u237a = 2 et inverser \u2375 = 3 4, on obtient \u2375 = 2 4 3<br><span style=\"text-decoration: underline\">Etape 4<\/span> : Ajouter \u237a = 1 et inverser \u2375 = 2 4 3, on obtient \u2375 = 1 3 4 2<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00e9valuation d&rsquo;une expression<\/h3>\n\n\n\n<p>Voici comment on peut transformer un vecteur \u00e0 3 \u00e9l\u00e9ments, par exemple <strong> &lsquo;+&rsquo; 4 2 <\/strong>en <strong>&lsquo;4 + 2&rsquo;<\/strong> et <strong>l&rsquo;\u00e9valuer<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      '+' 4 2 &#091;2 1 3]    \u235d Prendre 2e 1er et 3e \u00e9l\u00e9ment dans cet ordre\n4 + 2                    \u235d Le r\u00e9sultat reste un vecteur \u00e0 3 \u00e9l\u00e9ments\n     \u2355 '+' 4 2 &#091;2 1 3]   \u235d Transformer ce vecteur en chaine avec \u2355\n4 + 2\n    \u234e \u2355 '+' 4 2 &#091;2 1 3]  \u235d Evaluer le r\u00e9sultat avec \u234e\n6<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">simulation d&rsquo;une pile<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>      pile \u2190 4 6 8 9        \u235d Une pile de 4 \u00e9l\u00e9ments\n      \u00af1\u2191pile               \u235d R\u00e9cup\u00e9rer le dernier \u00e9l\u00e9ment\n9\n      \u00af1\u2193pile               \u235d Supprimer le dernier \u00e9l\u00e9ment\n4 6 8\n      \u00af2\u2191pile               \u235d R\u00e9cup\u00e9rer les 2 derniers \u00e9l\u00e9ments\n8 9<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Programme final<\/h3>\n\n\n\n<p><a href=\"https:\/\/tio.run\/##SyzI0U2pTMzJT9dNzkksLs5M\/g8EyYk5yQqP2iYoVD\/q3aXwqKNLQV1b9\/D0w9vVFawUNA6tN3rUNvlR71ZNnUe9fY96p2oAVemARSeCRKONFAwVjGMVHnW3KAD5QEW7ahX0H\/Xs5QKbawqUNQIaqK5goqB@eLo6mGmsoK6rDgA\" target=\"_blank\" rel=\"noreferrer noopener\">Lien pour tester directement le code ci-dessous<\/a> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      calc \u2190 {\u237a \u220a '+-\u00d7\u00f7' : (\u00af2\u2193\u2375), \u234e\u2355 (\u237a,\u00af2\u2191\u2375)&#091;2 1 3] \u22c4 \u2375, \u237a} \/ \u233d\n\n      calc 4 2 '+'\n\u250c\u2500\u2510\n\u25026\u2502\n\u2514\u2500\u2518\n      calc 5 1 2 '+' 4 '\u00d7' '+' 3 '-'\n\u250c\u2500\u2500\u2510\n\u250214\u2502\n\u2514\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p><span style=\"text-decoration: underline\">Explications<\/span> :<br><br>Si l&rsquo;\u00e9l\u00e9ment <strong>\u237a<\/strong> du vecteur est un op\u00e9rateur (<strong>\u237a \u220a &lsquo;+-\u00d7\u00f7&rsquo;<\/strong>) alors supprimer les 2 derniers \u00e9l\u00e9ments de la pile ( <strong>\u00af2\u2193\u2375<\/strong> ) et concat\u00e9ner le calcul (<strong>\u234e<\/strong>) entre l&rsquo;op\u00e9rateur <strong>\u237a<\/strong> et les 2 op\u00e9randes au sommet de la pile ( <strong>\u00af2\u2191\u2375<\/strong> ) en les mettant dans le bon ordre (<strong>[2 1 3]<\/strong>). Sinon, ajouter la valeur <strong>\u237a<\/strong> \u00e0 la pile (<strong> \u2375,\u237a <\/strong>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quelques explications sur la notation polonaise inverse (RPN), utilis\u00e9e par exemple sur les calculatrices de la marque HP (vid\u00e9o sur ma chaine Youtube pour en savoir plus) : Utilisez ce simulateur pour faire les calculs ci-dessous : Ces calculatrices utilisent &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/2022\/06\/09\/kata8\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4913,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-310","post","type-post","status-publish","format-standard","hentry","category-twitter"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/users\/4913"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/comments?post=310"}],"version-history":[{"count":42,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/310\/revisions"}],"predecessor-version":[{"id":657,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/310\/revisions\/657"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/media?parent=310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/categories?post=310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/tags?post=310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}