{"id":1021,"date":"2022-10-16T11:42:51","date_gmt":"2022-10-16T10:42:51","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/mathsinfo\/?p=1021"},"modified":"2022-10-19T12:45:58","modified_gmt":"2022-10-19T11:45:58","slug":"tableaux-de-fils-tendus-en-python","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/mathsinfo\/2022\/10\/16\/tableaux-de-fils-tendus-en-python\/","title":{"rendered":"RETOUR VERS LES ANNEES 70 ! \u23f0"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Tableaux de fils tendus en Python<\/h2>\n\n\n\n<p>Voici quelques exemples de codes en Python pour cr\u00e9er des tableaux de fils, ils sont bas\u00e9s sur des fonctions d\u00e9crites dans cette vid\u00e9o :<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Python algorithme : String Art (L&#039;art des tableaux de fils)\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/0f4QF0_rMbA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Free String Art Boat Pattern<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"765\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image.png\" alt=\"\" class=\"wp-image-1023\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image.png 764w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-300x300.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-150x150.png 150w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/a><figcaption>Le bateau<\/figcaption><\/figure><\/div>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.stringartfun.com\/product\/free-boat-pattern\/\" target=\"_blank\">Vous trouverez ici les explications<\/a> pour cr\u00e9er le tableau \u00e0 l&rsquo;ancienne avec de vrais fils et des clous.<\/p>\n\n\n\n<p>Vous pouvez copier-coller le code sur ce site : <a href=\"https:\/\/trinket.io\/turtle\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/trinket.io\/turtle<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import turtle\n\nt = turtle.Turtle()\nt.speed(0) ; t.hideturtle()\n\n# Ecran avec fond noir\nt.color(0,0,0)\nt.begin_fill()\nfor (x,y) in ((-200,200),(200,200),(200,-200),(-200,-200),(-200,200)):\n  t.goto(x,y)\nt.end_fill()  \n\n# Repr\u00e9sentation des clous\n\ndef clou(A):\n  t.pensize(5) ; t.color((160,140,130))\n  t.penup(); t.goto(A); t.pendown(); t.goto(A)\n\n# Fil entre le point \"A\" et le point \"B\" avec la couleur \"c\"\n# et ajout des clous aux extr\u00e9mit\u00e9s\n\ndef fil(A,B,c):\n  clou(A) ; t.pensize(1) ; t.pencolor(c) ; \n  t.goto(B) ; clou(B)\n\n# Division en \"n\" points du segment entre \"a\" et \"b\"\n\ndef segment(a,b,n):\n    return &#091;&#091;(i*PTS&#091;b]&#091;0]+(n-1-i)*PTS&#091;a]&#091;0])\/(n-1), \\\n             (i*PTS&#091;b]&#091;1]+(n-1-i)*PTS&#091;a]&#091;1])\/(n-1)] for i in range(n)]\n\n# Remplissage en utilisant 2 segments S1 et S2\n# Chaque point de S1 va vers un point de S2\n# puis on revient de S2 vers S1\n# sauf si c'est le dernier point \n\ndef remplir(S1, S2, c):\n  for i in range(len(S1)):\n    fil(S1&#091;i], S2&#091;i], c)\n    if i &lt; len(S1) - 1 : fil(S2&#091;i], S1&#091;i+1], c)\n\n# Les coordonn\u00e9es ont \u00e9t\u00e9 trouv\u00e9es en utilisant Geogebra\n# et l'image fournie en exemple sur le site\n\nPTS = (-142,-100),(0,-110),(2,196),(-62,-122),(142,-116),(-136,-124),\n      (-122,-152),(142,-124),(126,-164),(-156,-186),(166,-196)\n\n# segment(0,1,40) correspond au segment de (-142,-100) \u00e0 (0,-110)\n# avec 40 divisions\n\nremplir(segment(0,1,40), segment(2,1,40), (180,40,30))\nremplir(segment(3,4,40), segment(4,2,40), (240,30,50))\nremplir(segment(5,6,20), segment(7,8,20), (120,150,160))\nremplir(segment(6,9,10), segment(8,10,10), (0,100,240))<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Free String Art Heart Circle Pattern<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"763\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-1.png\" alt=\"\" class=\"wp-image-1028\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-1.png 764w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-1-300x300.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-1-150x150.png 150w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/a><figcaption>Un coeur<\/figcaption><\/figure><\/div>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.stringartfun.com\/product\/free-heart-circle-pattern\/\" target=\"_blank\">Vous trouverez ici les explications<\/a> ici. Plus complexe \u00e0 r\u00e9aliser !<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import turtle\nfrom math import *\n\nt = turtle.Turtle()\nt.speed(0) ; t.hideturtle()\n\nt.color(0,0,0)\nt.begin_fill()\nfor (x,y) in ((-200,200),(200,200),(200,-200),(-200,-200),(-200,200)):\n  t.goto(x,y)\nt.end_fill()  \n\ndef clou(A):\n  t.pensize(5) ; t.color((160,140,130))\n  t.penup(); t.goto(A); t.pendown(); t.goto(A)\n\ndef fil(A,B,c):\n  clou(A) ; t.pensize(1) ; t.pencolor(c) ; \n  t.goto(B) ; clou(B)\n\n# Cercle rayon R divis\u00e9 en N points  \n# Position du n-i\u00e8me clou\n\ndef Ce(R,N,n,D=1,d=0):\n return &#091;R*sin(2*pi*(n+d\/D)\/N), R*cos(2*pi*(n+d\/D)\/N)]\n\n# Partie bleue\n\nc = (175,220,240) \n\nfor i in range(14):\n  fil(Ce(180,80,-14+2*i),Ce(180,80,-13+2*i),c)\n  fil(Ce(180,80,-13+2*i),Ce(180,80,14+4*i),c)\n  if i != 13:\n    fil(Ce(180,80,14+4*i),Ce(180,80,15+4*i),c)\n    fil(Ce(180,80,15+4*i),Ce(180,80,16+4*i),c)\n    fil(Ce(180,80,16+4*i),Ce(180,80,-12+2*i),c)\n\n# Partie rose\n\nc = (250,160,150)\npts1 = (40,2),(54,2),(68,4),(14,2),(28,2)\npts2 = (28,2),(29,2),(15,2),(70,4),(55,2),(41,2),(42,2)\n\nfor i in range(7):\n for j,(a,b) in enumerate(pts1&#091;:-1]):\n  fil(Ce(180,80,a+b*i),Ce(180,80,pts1&#091;j+1]&#091;0]+pts1&#091;j+1]&#091;1]*i),c)\n  if i != 6:\n   for k,(u,v) in enumerate(pts2&#091;:-1]):\n    fil(Ce(180,80,u+v*i),Ce(180,80,pts2&#091;k+1]&#091;0]+pts2&#091;k+1]&#091;1]*i),c)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Free String Art Circle 2 Pattern<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.stringartfun.com\/product\/free-circle-pattern-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">Vous trouverez ici les explications<\/a> ici. Assez facile&#8230;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"677\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-2.png\" alt=\"\" class=\"wp-image-1033\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-2.png 684w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-2-300x297.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-2-303x300.png 303w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>import turtle\nfrom math import *\n\nt = turtle.Turtle()\nt.speed(0) ; t.hideturtle()\n\nt.color(0,0,0)\nt.begin_fill()\nfor (x,y) in ((-200,200),(200,200),(200,-200),(-200,-200),(-200,200)):\n  t.goto(x,y)\nt.end_fill()  \n\ndef clou(A):\n  t.pensize(5) ; t.color((160,140,130))\n  t.penup(); t.goto(A); t.pendown(); t.goto(A)\n\ndef fil(A,B,c):\n  clou(A) ; t.pensize(1) ; t.pencolor(c) ; \n  t.goto(B) ; clou(B)\n  \ndef Ce(R,N,n,D=1,d=0):\n return &#091;R*sin(2*pi*(n+d\/D)\/N), R*cos(2*pi*(n+d\/D)\/N)]\n\nfor (a,b,c) in ((14,63,(120,110,180)),(64,33,(240,90,40))):\n  for i in range(50):\n    for n in range(2): fil(Ce(180,80,a+i),Ce(180,80,b+i+n),c)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tapisseries des ann\u00e9es 70<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-3.png\" alt=\"\" class=\"wp-image-1036\" width=\"489\" height=\"490\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-3-300x300.png 300w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-3-150x150.png 150w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/a><figcaption>Tapisserie typique des ann\u00e9es 70<\/figcaption><\/figure><\/div>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/trinket.io\/turtle\/d0a83ca0c6\" target=\"_blank\">Voir le programme final en action<\/a> | <a href=\"https:\/\/my.numworks.com\/python\/schraf\/wallpaper1\" target=\"_blank\" rel=\"noreferrer noopener\">Version pour la calculatrice NUMWORKS<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import turtle\n\nt = turtle.Turtle()\nt.speed(0) ; t.hideturtle()\n\nt.color(115,80,45)\nt.begin_fill()\nt.goto(0,-400); t.circle(800)  # fond marron\nt.end_fill() \n\ncol, lig, r = 9, 9, 20  # 9*9 motifs de rayon 20\nh,e = 4.3*r, .75*r      # Calculs des espacements\n\ndef motif(x,y,a,r):\n  t.penup(); t.goto(x,y)\n  t.setheading(a) # Orientation pour obtenir une des 4 figures\n  # on parcourt les 4 couleurs\n  for c in ((240,210,7),(230,130,5),(190,90,14),(110,60,30)):\n    t.color(c)\n    t.begin_fill()\n    t.circle(r,steps=60) # 60 pour un trac\u00e9 plus pr\u00e9cis\n    r \/= 1.45   # Tailles de cercles : jaune, orange, marron...\n    t.end_fill()\n\nfor c in range(col):\n  for l in range(lig):\n    a = 45+90*(0,1,3,2)&#091;l%2+2*(c%2)] # angle d\u00e9part\n    # Motif \u00e0 la bonne place et avec la bonne orientation\n    motif(-160+h*(c\/\/2)+e*(c%2),160-e*(l%2)-h*(l\/\/2),a,r)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9p\u00e9tition de cercles<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-5.png\" alt=\"\" class=\"wp-image-1044\" width=\"417\" height=\"366\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"221\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-8.png\" alt=\"\" class=\"wp-image-1048\" \/><\/a><figcaption>Distance entre 2 centres<\/figcaption><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>import turtle\nfrom random import *\nfrom math import sqrt\n\nt = turtle.Turtle()\nt.speed(0) ; t.hideturtle()\n\nt.pensize(1)\nt.color((220,210,130))\n\nr = 20    # taille des cercles\nd = sqrt(3) \/ 2\nnc, nl = 400 \/\/ r, 280 \/\/ r\n\nfor c in range(nc):\n for l in range(nl):\n  t.penup()\n  t.goto(-160 + c * r * d, -140 + l * r -  (c % 2) * r \/ 2)\n  t.pendown()  \n  t.circle(r)<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-10.png\" alt=\"\" class=\"wp-image-1051\" width=\"379\" height=\"385\" \/><\/a><figcaption>Inspiration : <a href=\"https:\/\/www.youtube.com\/watch?v=piubQtVVA28\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.youtube.com\/watch?v=piubQtVVA28<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p><a href=\"https:\/\/uabox.univ-angers.fr\/index.php\/s\/gQSxOgkMdZBcwan\" target=\"_blank\" rel=\"noreferrer noopener\">Fichier pour la TI-83 Premium CE EDITION PYTHON<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import turtle\nfrom math import sqrt\n\nt = turtle.Turtle()\nt.speed(0) ; t.hideturtle()\n\nh = 20 # taille du motif\np, d = h \/\/ 2, sqrt(3) \/ 2\nnb = 1 + int(800 \/ 3 \/ h \/ d)\n\ndef face(x,y):\n  t.penup(); t.goto(x,y); t.pendown()\n  t.setheading(30)\n  # Chacune des 3 faces a une couleur\n  for c in ((60,)*3,(230,200,0),(230,165,20)):\n    t.color(c)\n    t.begin_fill()\n    # Dessin d'une face et remplissage\n    for (u,v) in ((h,120),(p,60),(p,300),(p,60),(p,120),(h,-60)):\n     t.forward(u)\n     t.right(v)\n    t.end_fill()\n\n# On place les motifs\nfor c in range(nb):  \n  for l in range(nb):\n    face(-200 + (h + p) * d * c, \\\n         -200 + l * (h + p) - (c % 2) * (h + p) \/ 2)<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-11.png\" alt=\"\" class=\"wp-image-1054\" width=\"184\" height=\"135\" \/><\/a><figcaption>Longueurs d&rsquo;une face<br>h-p-p-p-p-h avec p = h \/ 2<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-12.png\" alt=\"\" class=\"wp-image-1056\" width=\"238\" height=\"208\" \/><\/a><figcaption>Les angles<br>30 -120 &#8211; 60 &#8211; 300 &#8211; 120 &#8211; -60<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"240\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-16.png\" alt=\"\" class=\"wp-image-1063\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-16.png 320w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/10\/image-16-300x225.png 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><figcaption>Enchev\u00eatrements<\/figcaption><\/figure><\/div>\n\n\n\n<p><a href=\"https:\/\/my.numworks.com\/python\/schraf\/wallpaper3\" target=\"_blank\" rel=\"noreferrer noopener\">Lien vers le script pour la calculatrice NUMWORKS<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from kandinsky import *\nfrom math import sqrt\nfrom random import randint\n\n# nb d'anneaux (couleurs altern\u00e9es) et largeur anneau\n(nb, r) = (randint(3,40), randint(2,10)) \np = nb * r\nCOUL = (70, 75, 75)\nfill_rect(0, 0, 320, 222, (255, 210, 0))\n\ndef cercles(u,v,du,dv):\n # Bord oppos\u00e9 (en diagonale) au point de d\u00e9part (u,v)\n (u2, v2) = (u + du * nb * r, v + dv * nb * r)\n # Pour chaque pixel du carr\u00e9 p * p\n for x in range(p):\n    for y in range(p):\n     # Recherche du n\u00b0 de l'anneau\n     d = int(sqrt(x ** 2 + y ** 2) \/ r)\n     # Si c'est un nb impair et qu'il est inf\u00e9rieur au nb d'anneaux total\n     if d &amp; 1 and d &lt; nb:\n        # On le dessine (gris fonc\u00e9)\n        set_pixel(u + du * x, v + dv * y, COUL)\n        # Distance point par rapport \u00e0 l'autre extr\u00e9mit\u00e9\n        # et calcul du n\u00b0 de l'anneau\n        d2 = int(sqrt((x - p) ** 2 + (y - p) ** 2) \/ r)\n       # On dessine pixel si en dehors des anneaux pr\u00e9c\u00e9dents\n        if d2 &gt; nb - 2:\n         set_pixel(u2 - du * x, v2 - dv * y, COUL)\n\ndef motif(x,y):\n # (a,b) = position d\u00e9part du motif et (c,d) = directions du remplissage en x et y\n # Faire varier (c,d) avec d'autres combinaisons de 1 et -1\n for (a,b,c,d) in ((1,1,-1,-1),(2,0,-1,1),(0,2,1,-1),(1,1,1,1)):\n    cercles(x + a * p, y + b * p, c, d)\n\nfor c in range(1+ 160 \/\/ p):\n for l in range(1 + 110 \/\/ p):  motif(2 * c * p,2 * l * p)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Tableaux de fils tendus en Python Voici quelques exemples de codes en Python pour cr\u00e9er des tableaux de fils, ils sont bas\u00e9s sur des fonctions d\u00e9crites dans cette vid\u00e9o : Free String Art Boat Pattern Vous trouverez ici les explications &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/2022\/10\/16\/tableaux-de-fils-tendus-en-python\/\">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-1021","post","type-post","status-publish","format-standard","hentry","category-twitter"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/1021","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=1021"}],"version-history":[{"count":24,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/1021\/revisions"}],"predecessor-version":[{"id":1066,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/1021\/revisions\/1066"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/media?parent=1021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/categories?post=1021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/tags?post=1021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}