{"id":108,"date":"2022-03-13T18:29:37","date_gmt":"2022-03-13T17:29:37","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/mathsinfo\/?page_id=108"},"modified":"2022-05-19T07:50:34","modified_gmt":"2022-05-19T06:50:34","slug":"apl-et-rpl-caracteres","status":"publish","type":"page","link":"https:\/\/blog.univ-angers.fr\/mathsinfo\/apl-et-rpl-caracteres\/","title":{"rendered":"et RPL : Caract\u00e8res"},"content":{"rendered":"<p>Dans <a title=\"Vid\u00e9o Youtube\" href=\"https:\/\/youtu.be\/s-E7BsMg_Qc?t=222\" target=\"_blank\" rel=\"noopener\">cette vid\u00e9o sur APL<\/a>, j&rsquo;explique comment travailler sur chacun des \u00e9l\u00e9ments d&rsquo;une liste. Nous avons vu de DOSUBS ou DOLIST permettent d&rsquo;arriver au m\u00eame r\u00e9sultat. Voyons sur cet exemple que cela fonctionne \u00e9galement avec des chaines de caract\u00e8res.<\/p>\n<h2>Exemple 4 &#8211; R.A.T.P<\/h2>\n<pre>\u2283\u00a8 'RENTRE' 'AVEC' 'TES' 'PIEDS'\nRATP<\/pre>\n<p>Ce qui signifie prendre le premier \u00e9l\u00e9ment \u2283 de chaque terme du vecteur. Donc bien voir que :<\/p>\n<pre>\u2283 'RENTRE'\nR\n\u2283 'RENTRE' 'AVEC' 'TES' 'PIEDS'\nRENTRE<\/pre>\n<p>En RPL, le premier \u00e9l\u00e9ment d&rsquo;une liste peut \u00eatre r\u00e9cup\u00e9r\u00e9 par HEAD. Ce qui donne :<\/p>\n<pre>2: {\"RENTRE\" \"AVEC\" \"TES\" \"PIEDS\"}\n1: \u00ab 1 \u00ab HEAD \u00bb DOLIST \u00bb\n<strong>EVAL<\/strong>\n\n1: {\"R\" \"A\" \"T\" \"P\"}<\/pre>\n<p>Pour avoir la concat\u00e9nation et obtenir \u00ab\u00a0RATP\u00a0\u00bb, sachez que le \u2211LIST fonctionne aussi avec les listes de chaines de caract\u00e8res&#8230;<\/p>\n<pre>2: {\"RENTRE\" \"AVEC\" \"TES\" \"PIEDS\"}\n1: \u00ab 1 \u00ab HEAD \u00bb DOLIST \u2211LIST \u00bb\n<strong>EVAL<\/strong>\n\n1: \"RATP\"<\/pre>\n<h2>Exemple 5 &#8211; Brin d&rsquo;ADN ?<\/h2>\n<p>Toujours tir\u00e9 d&rsquo;une de mes vid\u00e9os sur APL, on se demande si une chaine de caract\u00e8res est un brin d&rsquo;ADN, c&rsquo;est-\u00e0-dire qu&rsquo;il n&rsquo;y a que les lettres A, C, T ou G. Le ET logique se note \u2227 en APL.<\/p>\n<pre>ADN \u2190 {\u2227\/ \u2375 \u220a 'ACTG'}  \u235d R\u00e9duction + appartenance\nADN 'ACCTTGCCA'\nOutput : 1          \u235d C'est bien un brin ADN\nADN 'ACCTTXCCA'\nOutput : 0          \u235d Ce n'est pas un brin ADN<\/pre>\n<p>Commen\u00e7ons par voir comment s\u00e9parer les lettres d&rsquo;une chaine de caract\u00e8res en RPL. Une des solutions propos\u00e9es par\u00a0\u00a0<a title=\"Site Norman Brenner\" href=\"https:\/\/home.gwu.edu\/~nbrenner\/\" target=\"_blank\" rel=\"noopener\">Norman Brenner<\/a>\u00a0est celle-ci :<\/p>\n<pre>\u00ab \u2192 s \u00ab \u00ab s j j SUB \u00bb 'j' 1 s SIZE 1 SEQ \u00bb \u00bb\n'SP. <strong>STO<\/strong><\/pre>\n<p>Ce qui signifie : on cr\u00e9e la suite (SEQ) pour j allant de 1 jusqu&rsquo;\u00e0 la taille de la chaine o\u00f9 chaque terme est \u00e9gal \u00e0 la portion de la chaine comprise entre j et j, donc le j<sup>i\u00e8me<\/sup> caract\u00e8re.<\/p>\n<pre>1: \"ACCTA\"\n<strong>VAR<\/strong> SP.\n\n1: {\"A\" \"C\" \"C\" \"T\" \"A\"}<\/pre>\n<p>On doit maintenant parcourir chacun des caract\u00e8res de la liste et regarder s&rsquo;ils sont tous dans \u00ab\u00a0ACTG\u00a0\u00bb. Pour cela on va utiliser POS qui renvoie soit la position de la lettre dans la chaine soit z\u00e9ro.<\/p>\n<p>Dans un second temps on effectue une r\u00e9duction par un ET sur l&rsquo;ensemble des r\u00e9sultats, c&rsquo;est-\u00e0-dire que l&rsquo;on aura 0 si une des lettres n&rsquo;\u00e9tait pas dans \u00ab\u00a0ACTG\u00a0\u00bb. Cela revient \u00e0 faire le produit des \u00e9l\u00e9ments. Pour \u00e9viter d&rsquo;avoir un nombre (produit des positions des lettres), on va regarder le signe du r\u00e9sultat. Ce qui donne :<\/p>\n<pre>\u00ab SP. 1 \u00ab \"ACTG\" SWAP POS \u00bb DOLIST \u03a0LIST SIGN \u00bb\n'ADN <strong>STO<\/strong>\n\n\"ACCTTGCCA\"\n<strong>VAR<\/strong> ADN\n\n1.           # C'est bien un brin ADN \n\n\"ACCTTXCCA\"\nADN\n\n0.           # Ce n'est pas un brin ADN<\/pre>\n<h2>Exemple 6 &#8211; Prix des sushis<\/h2>\n<p>Nouvel exemple de mes vid\u00e9os, sachant qu&rsquo;un sushi co\u00fbte 2 EUR, combien co\u00fbte cette chaine : \u00a0\u00bb\u00a0 \u00a0S SS SSS S\u00a0 \u00a0S\u00a0\u00bb ?<\/p>\n<p>Il faut compter le nombre de \u00ab\u00a0S\u00a0\u00bb et multiplier le r\u00e9sultat par 2.<\/p>\n<pre>SU \u2190 {2 \u00d7 +\/ \u2375='S'}\nSU '   S SS SSS S   S'\nOutput: 16<\/pre>\n<p>Vous ne devriez avoir aucun mal \u00e0 lire cette version en RPL :<\/p>\n<pre>\u00ab SP. 1 \u00ab \"S\" == \u00bb DOSUBS \u2211LIST 2 \u00d7 \u00bb \u00bb\n'SU <strong>STO<\/strong>\n\"   S SS SSS S   S\"\n<strong>VAR<\/strong> SU\n\n16.<\/pre>\n<p>ou encore avec MAP :<\/p>\n<pre>\u00ab SP. \u00ab \"S\" == \u00bb MAP \u2211LIST 2 \u00d7 \u00bb \u00bb\n'SU STO\n\"   S SS SSS S   S\"\n<strong>VAR<\/strong> SU\n\n16.<\/pre>\n<p><a title=\"APL et RPL : Produit interne\" href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/apl-et-rpl-produit-interne\/\">Lire la suite&#8230;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cette vid\u00e9o sur APL, j&rsquo;explique comment travailler sur chacun des \u00e9l\u00e9ments d&rsquo;une liste. Nous avons vu de DOSUBS ou DOLIST permettent d&rsquo;arriver au m\u00eame r\u00e9sultat. Voyons sur cet exemple que cela fonctionne \u00e9galement avec des chaines de caract\u00e8res. Exemple &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/apl-et-rpl-caracteres\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4913,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-108","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages\/108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/types\/page"}],"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=108"}],"version-history":[{"count":1,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages\/108\/revisions"}],"predecessor-version":[{"id":174,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages\/108\/revisions\/174"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/media?parent=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}