Jumblers vs Rebuilders: Coder avec des briques Tetris


34

Dans le Tetris traditionnel , il y a 7 briques de Tetromino distinctes , chacune désignée par une lettre semblable à sa forme.

#          
#      #    #
#  ##  #    #  ###  ##    ##
#  ##  ##  ##   #    ##  ##
I  O   L   J    T    Z    S

Considérez les arrangements de ces briques qui peuvent former un rectangle plein W × H, pour certains entiers positifs W et H. Par exemple, en utilisant 2 I, 1 L, 1 J, 2 T et 1 S, un rectangle 7 × 4 peut être fait:

IIIITTT
LIIIITJ
LTTTSSJ
LLTSSJJ

Les mêmes briques peuvent être réarrangées (en les déplaçant et en les tournant sans les retourner ) en un motif 7 × 4 différent:

IJJTLLI
IJTTTLI
IJSSTLI
ISSTTTI

Pensez maintenant à utiliser un bloc de code rectangulaire à la place du premier arrangement. Par exemple, ce 7 × 4 bits de Python 3, qui affiche Tetrissur la sortie standard:

p=print
x='Tet'
y='ris'
p(x+y)#

Selon le premier arrangement de Tetris, ses 7 "briques" sont ...

           x          '
      int  y          '  ='r   is
p=pr   t   p(  ='Te  )#   x   +y

Dans l'autre arrangement (l'un des nombreux possibles), ils sont incompréhensibles en tant que code:

r#)x(x=
p'r'=y'
='istpT
p+ytnie

Mais, étant donné les briques séparément, il pourrait être possible de les reconstituer correctement. C'est la base du défi.

Défi

C'est un défi des . Il y a deux rôles en compétition, les Jumblers et les Rebuilders .

Les Jumblers soumettent des réponses avec des blocs de code décomposés en briques Tetris.

Les reconstructeurs tentent de reconstruire ces blocs dans la question distincte qui leur est dédiée: Jumblers vs Rebuilders: coder avec des briques Tetris - Zone de réponses de reconstructeur .

Jumblers

En utilisant uniquement des fichiers ASCII imprimables (codes hexadécimaux 20 à 7E), écrivez un programme rectangulaire W × H. Lorsqu'il est exécuté, il doit sortir le mot uniqueTetris sur stdout (ou la solution la plus proche). Ne postez pas ce code dans votre réponse. ne donnez pas W ou H non plus. Divisez-le en un arrangement de briques Tetris comme dans l'exemple ci-dessus et affichez-les dans votre réponse. (Votre code peut contenir des espaces, mais comme ils sont difficiles à distinguer, il est préférable d'utiliser un autre caractère à la place d'espaces et d'indiquer aux gens ce que vous avez utilisé.)

Plus il est difficile de reconstruire votre programme, mieux c'est. Il peut exister de nombreuses façons de réorganiser vos blocs de code en un rectangle, éventuellement avec des dimensions différentes. Ce que le code fait lorsqu'il est exécuté dans ces différents arrangements importe peu tant qu'au moins un arrangement est imprimé Tetrissur la sortie standard.

La seule autre restriction est que W * H soit inférieur à 1025.

Les Jumblers doivent spécifier leur langage de programmation (et leur version).

Reconstructeurs

Votre objectif est de prendre les codes-briques d'un Jumbler et de les replacer dans leur ordre d'origine, afin qu'ils Tetrissoient imprimés lorsque le code est exécuté. Si le mode de travail que vous avez trouvé n'est pas celui que Jumbler avait en tête, c'est tant pis pour eux.

N'oubliez pas que seules les transformations et les rotations sont autorisées dans les réarrangements, et non en miroir.

Notation

Chaque fois qu'une soumission est reconstruite, elle est considérée comme "fissurée" et n'est plus dans la course. Le premier reconstructeur à reconstruire une soumission en reçoit le crédit. Si une réponse n'a pas été fissurée pendant 72 heures, Jumbler devrait révéler la solution et sera désormais à l'abri de la fissuration. Un Jumbler doit le faire pour gagner, sinon il ne sera pas clair s'il y avait même une solution.

Le Jumbler gagnant est la réponse non fissurée avec la plus petite surface (W * H = 4 * nombres de briques). En cas d'égalité, la réponse la plus votée l'emporte. La réponse acceptée à cette question sera le Jumbler gagnant.

Le reconstructeur gagnant est l'utilisateur qui obtient le plus grand nombre de soumissions. En cas d'égalité, cela s'adresse à quiconque a craqué la zone la plus cumulative.

Remarques

  • Vous ne pouvez pas reconstruire vos propres soumissions. (Mais sinon, vous pouvez assumer les deux rôles.)
  • Les reconstructeurs ne peuvent pas tenter de déchiffrer la même réponse plus d'une fois.

Tableau de bord

Trié de la plus ancienne soumission à la plus récente.

+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+
|   Jumbler    |  Language   |       Area       | Immune? | Rebuilt? |   Rebuilder    |                      Link                 |                  Solution Link            |
+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+
| xnor         | Python 3    | 212              | no      | yes      | foobar         | https://codegolf.stackexchange.com/a/40142 | https://codegolf.stackexchange.com/a/40203 |
| xnor         | Python 3    | 340              | no      | yes      | feersum        | https://codegolf.stackexchange.com/a/40146 | https://codegolf.stackexchange.com/a/40189 |
| es1024       | C           | 80               | no      | yes      | user23013      | https://codegolf.stackexchange.com/a/40155 | https://codegolf.stackexchange.com/a/40210 |
| Ethiraric    | Brainfuck   | 108              | yes     |          |                | https://codegolf.stackexchange.com/a/40156 |                                           |
| Qwertiy      | JavaScript  | 420              | yes     |          |                | https://codegolf.stackexchange.com/a/40161 |                                           |
| user23013    | Befunge     | 360              | yes     |          |                | https://codegolf.stackexchange.com/a/40163 |                                           |
| user23013    | CJam        | 80               | yes     |          |                | https://codegolf.stackexchange.com/a/40171 |                                           |
| Geobits      | Java        | 360              | yes     |          |                | https://codegolf.stackexchange.com/a/40180 |                                           |
| Dennis       | CJam        | 60               | yes     |          |                | https://codegolf.stackexchange.com/a/40184 |                                           |
| xnor         | Python 3    | 160              | yes     |          |                | https://codegolf.stackexchange.com/a/40192 |                                           |
| COTO         | C           | 72               | yes     |          |                | https://codegolf.stackexchange.com/a/40198 |                                           |
| es1024       | C           | 780              | yes     |          |                | https://codegolf.stackexchange.com/a/40202 |                                           |
| Gerli        | Mathematica | 72               | no      | yes      | Martin Büttner | https://codegolf.stackexchange.com/a/40230 | https://codegolf.stackexchange.com/a/40242 |
| Hydrothermal | JavaScript  | 80               | yes     |          |                | https://codegolf.stackexchange.com/a/40235 |                                           |
| Sam Yonnou   | GolfScript  | 48 (frontrunner) | yes     |          |                | https://codegolf.stackexchange.com/a/40239 |                                           |
| feersum      | Matlab      | 48               |         |          |                | https://codegolf.stackexchange.com/a/40310 |                                           |
| Beta Decay   | Python 3    | 484              |         |          |                | https://codegolf.stackexchange.com/a/40312 |                                           |
| potato       | Python 3    | 176              |         |          |                | https://codegolf.stackexchange.com/a/40341 |                                           |
+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+

(Merci à http://www.sensefulsolutions.com/2010/10/format-text-as-table.html pour la mise en forme du tableau.)

L'utilisateur COTO est un excellent outil pour jouer avec des briques codées. Je l'ai transformé en un extrait pratique:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function parseSpec(s){function first(){var e,t;t=S.findIndex(function(t){return(e=t.findIndex(function(e){return/\S/.test(e)}))!=-1});return t==-1?null:[e,t]}function at(e){var t=e[0],n=e[1];return n>=0&&n<S.length&&t>=0&&t<S[n].length?S[n][t]:" "}function wipe(e){var t=e[0],n=e[1];if(n>=0&&n<S.length&&t>=0&&t<S[n].length)S[n][t]=" "}var P,S=s.split("\n").map(function(e){return e.split("")});var oPats=$(".proto-tet [pat]").get().map(function(e){return{sPat:eval("["+$(e).attr("pat")+"]"),e:e,block:function(e){return[at(e)].concat(this.sPat.map(function(t){return at([e[0]+t[0],e[1]+t[1]])}))},wipe:function(e){this.sPat.forEach(function(e){return wipe([P[0]+e[0],P[1]+e[1]])})},match:function(e){return!/\s/.test(this.block(e).join(""))}}});window.oPats=oPats;while(P=first()){var oPat=oPats.find(function(e){return e.match(P)});if(!oPat){orphan(at(P));wipe(P);continue}createPiece(oPat.e,oPat.block(P));wipe(P);oPat.wipe(P)}}function createPiece(e,t){function r(e){var t=$(this).position();G.isIgnoreClick=false;G.eDrag=this;G.iOffsets=[e.clientX-t.left,e.clientY-t.top]}function i(){if(G.isIgnoreClick)return;var e=$(this);s($(".proto-tet ."+e.attr("rr")),function(e,t){return n[t-1]},e.css("left"),e.css("top"));e.remove()}function s(e,t,n,s){e.clone().html(e.html().replace(/@(\d)(\d)/g,t)).appendTo("body").on("mousedown",r).click(i).css({left:n,top:s})}var n=[];s($(e),function(e,r,i){return n[r-1]=t[i-1]},18+G.iSpawn%8*18*4+"px",18+~~(G.iSpawn/8)*18*4+"px");G.iSpawn++}function init(){$(document).on("mouseup",function(){return G.eDrag=null}).on("mousemove",function(e){if(G.eDrag){var t=$(G.eDrag),n=Math.round((e.clientX-G.iOffsets[0])/18)*18,r=Math.round((e.clientY-G.iOffsets[1])/18)*18,i=t.position();if(n!=i.left||r!=i.top)G.isIgnoreClick=true;t.css({left:n+"px",top:r+"px"})}})}function orphan(e){error("Spec character not a part of any block: '"+e+"'")}function error(e){$(".error").css("display","block").append("<div>"+e+"</div>")}function go(){$(init);$(function(){parseSpec($("#spec").val())});$("#spec").remove();$("#info").remove();$("#go").remove()}var G={eDrag:null,isIgnoreClick:true,iSpawn:0};Array.prototype.findIndex=function(e){for(var t=0;t<this.length;t++){if(e(this[t]))return t}return-1};Array.prototype.find=function(e){var t=this.findIndex(e);if(t==-1)return;else return this[t]}</script><style>.proto-tet, .spec{display: none;}.tet-I{color: darkgreen;}.tet-J{color: orangered;}.tet-L{color: navy;}.tet-T{color: darkred;}.tet-O{color: darkcyan;}.tet-S{color: darkviolet;}.tet-Z{color: darkorange;}body > .tet{position: absolute;cursor: move;-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;border-collapse: collapse;}.tet td{width: 18px;height: 18px;font: bold 14px "Courier New",monospace;text-align: center;vertical-align: middle;padding: 0;}.error{z-index: 1024;position: absolute;display: none;color: red;font-weight: bold;background-color: white;}textarea{font-family: "Courier New", Courier, monospace;}</style><div id='info'>Put code-bricks here and hit OK. Re-run the snippet to restart.<br>(You may need to replace spaces in code-bricks with some other character first.)</div><textarea id='spec' rows='16' cols='80'>ABCD&nbsp;&nbsp;a&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;Oo&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;&nbsp;&nbsp;oo&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&#13;&#10;&#13;&#10;&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;h&#13;&#10;&nbsp;F&nbsp;&nbsp;efg&nbsp;&nbsp;&nbsp;hg&nbsp;&nbsp;&nbsp;GFE&#13;&#10;&nbsp;GH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;&nbsp;&nbsp;H&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e&#13;&#10;&#13;&#10;&nbsp;I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IJK&#13;&#10;&nbsp;J&nbsp;&nbsp;&nbsp;l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L&#13;&#10;LK&nbsp;&nbsp;&nbsp;kji&nbsp;&nbsp;kl&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&#13;&#10;&nbsp;OP&nbsp;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QR&nbsp;&nbsp;&nbsp;&nbsp;rs&#13;&#10;MN&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST&nbsp;&nbsp;&nbsp;q&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&#13;&#10;&nbsp;W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&#13;&#10;&nbsp;XY&nbsp;&nbsp;&nbsp;&nbsp;zxw&nbsp;&nbsp;&nbsp;&nbsp;yx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y&#13;&#10;&nbsp;Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;&nbsp;&nbsp;&nbsp;WXZ</textarea><br><button id='go' type='button' onclick='go()'>OK</button><div class="proto-tet"><table class="tet tet-I tet-I0" rr="tet-I1" pat="[1,0],[2,0],[3,0]"><tr><td>@11</td><td>@22</td><td>@33</td><td>@44</td></tr></table><table class="tet tet-I tet-I1" rr="tet-I2" pat="[0,1],[0,2],[0,3]"><tr><td>@11</td></tr><tr><td>@22</td></tr><tr><td>@33</td></tr><tr><td>@44</td></tr></table><table class="tet tet-I tet-I2" rr="tet-I3" ><tr><td>@40</td><td>@30</td><td>@20</td><td>@10</td></tr></table><table class="tet tet-I tet-I3" rr="tet-I0"><tr><td>@40</td></tr><tr><td>@30</td></tr><tr><td>@20</td></tr><tr><td>@10</td></tr></table><table class="tet tet-J tet-J0" rr="tet-J1" pat="[0,1],[-1,2],[0,2]"><tr><td></td><td>@11</td></tr><tr><td></td><td>@22</td></tr><tr><td>@33</td><td>@44</td></tr></table><table class="tet tet-J tet-J1" rr="tet-J2" pat="[0,1],[1,1],[2,1]"><tr><td>@31</td><td></td><td></td></tr><tr><td>@42</td><td>@23</td><td>@14</td></tr></table><table class="tet tet-J tet-J2" rr="tet-J3" pat="[1,0],[0,1],[0,2]"><tr><td>@41</td><td>@32</td></tr><tr><td>@23</td><td></td></tr><tr><td>@14</td><td></td></tr></table><table class="tet tet-J tet-J3" rr="tet-J0" pat="[1,0],[2,0],[2,1]"><tr><td>@11</td><td>@22</td><td>@43</td></tr><tr><td></td><td></td><td>@34</td></tr></table><table class="tet tet-O tet-O0" rr="tet-O1" pat="[1,0],[0,1],[1,1]"><tr><td>@11</td><td>@22</td></tr><tr><td>@33</td><td>@44</td></tr></table><table class="tet tet-O tet-O1" rr="tet-O2"><tr><td>@30</td><td>@10</td></tr><tr><td>@40</td><td>@20</td></tr></table><table class="tet tet-O tet-O2" rr="tet-O3"><tr><td>@40</td><td>@30</td></tr><tr><td>@20</td><td>@10</td></tr></table><table class="tet tet-O tet-O3" rr="tet-O0"><tr><td>@20</td><td>@40</td></tr><tr><td>@10</td><td>@30</td></tr></table><table class="tet tet-L tet-L0" rr="tet-L1" pat="[0,1],[0,2],[1,2]"><tr><td>@11</td><td></td></tr><tr><td>@22</td><td></td></tr><tr><td>@33</td><td>@44</td></tr></table><table class="tet tet-L tet-L1" rr="tet-L2" pat="[1,0],[2,0],[0,1]"><tr><td>@31</td><td>@22</td><td>@13</td></tr><tr><td>@44</td><td></td><td></td></tr></table><table class="tet tet-L tet-L2" rr="tet-L3" pat="[1,0],[1,1],[1,2]"><tr><td>@41</td><td>@32</td></tr><tr><td></td><td>@23</td></tr><tr><td></td><td>@14</td></tr></table><table class="tet tet-L tet-L3" rr="tet-L0" pat="[-2,1],[-1,1],[0,1]"><tr><td></td><td></td><td>@41</td></tr><tr><td>@12</td><td>@23</td><td>@34</td></tr></table><table class="tet tet-S tet-S0" rr="tet-S1" pat="[1,0],[-1,1],[0,1]"><tr><td></td><td>@21</td><td>@12</td></tr><tr><td>@43</td><td>@34</td><td></td></tr></table><table class="tet tet-S tet-S1" rr="tet-S2" pat="[0,1],[1,1],[1,2]"><tr><td>@41</td><td></td></tr><tr><td>@32</td><td>@23</td></tr><tr><td></td><td>@14</td></tr></table><table class="tet tet-S tet-S2" rr="tet-S3"><tr><td></td><td>@30</td><td>@40</td></tr><tr><td>@10</td><td>@20</td><td></td></tr></table><table class="tet tet-S tet-S3" rr="tet-S0"><tr><td>@10</td><td></td></tr><tr><td>@20</td><td>@30</td></tr><tr><td></td><td>@40</td></tr></table><table class="tet tet-Z tet-Z0" rr="tet-Z1" pat="[1,0],[1,1],[2,1]"><tr><td>@11</td><td>@22</td><td></td></tr><tr><td></td><td>@33</td><td>@44</td></tr></table><table class="tet tet-Z tet-Z1" rr="tet-Z2" pat="[-1,1],[0,1],[-1,2]"><tr><td></td><td>@11</td></tr><tr><td>@32</td><td>@23</td></tr><tr><td>@44</td><td></td></tr></table><table class="tet tet-Z tet-Z2" rr="tet-Z3"><tr><td>@40</td><td>@30</td><td></td></tr><tr><td></td><td>@20</td><td>@10</td></tr></table><table class="tet tet-Z tet-Z3" rr="tet-Z0"><tr><td></td><td>@40</td></tr><tr><td>@20</td><td>@30</td></tr><tr><td>@10</td><td></td></tr></table><table class="tet tet-T tet-T0" rr="tet-T1" pat="[1,0],[2,0],[1,1]"><tr><td>@11</td><td>@22</td><td>@33</td></tr><tr><td></td><td>@44</td><td></td></tr></table><table class="tet tet-T tet-T1" rr="tet-T2" pat="[-1,1],[0,1],[0,2]"><tr><td></td><td>@11</td></tr><tr><td>@42</td><td>@23</td></tr><tr><td></td><td>@34</td></tr></table><table class="tet tet-T tet-T2" rr="tet-T3" pat="[-1,1],[0,1],[1,1]"><tr><td></td><td>@41</td><td></td></tr><tr><td>@32</td><td>@23</td><td>@14</td></tr></table><table class="tet tet-T tet-T3" rr="tet-T0" pat="[0,1],[1,1],[0,2]"><tr><td>@31</td><td></td></tr><tr><td>@22</td><td>@43</td></tr><tr><td>@14</td><td></td></tr></table></div><div class="error"></div>


10
Cela ressemble à un travail pour Befunge.
Martin Ender

8
OP voudrait-il nous dire comment il parvient à proposer de telles choses?
Soham Chowdhury

5
@ SohamChowdhury Je ne peux pas en dire plus que ce que j'ai déjà dit . Mes principes fondamentaux sont la simplicité et l' originalité .
Les passe-temps de Calvin

Puis-je quand même soumettre un problème, ou ce défi est-il fermé aux Jumblers?
ASCIIThenANSI

@ASCIIThenANSI Allez-y. Cependant, peu de reconstructeurs sont encore présents.
Les passe-temps de Calvin

Réponses:


3

GolfScript 48

I pièces:

!;..  )+?;

O pièces:

.[  ;*  .(
):  ++  -\

T pièces:

+]\  +++  ;).  );.
 .    *    ,    )

J pièces:

.    )    *
(@@  :?,  .,:

Solution

.[!)):,.
):;+:?,*
;*.?;).+
++.;),*+
.(..;).+
-\(@@\]+


Ouais oups je l'utilisais pour créer les morceaux de tetris. Je l'ai édité assez rapidement pour que le lien "édité" ne s'affiche pas et que personne ne puisse consulter l'historique d'édition pour obtenir la réponse.
SamYonnou

Eh bien, je ne veux pas gâcher le jeu, mais espérons que je suis le seul à avoir ouvert la page aussi rapidement. ;)
Martin Ender

Je sais que cela se fait attendre depuis longtemps, mais je suis officiellement en train de mettre fin au concours. À moins que je ne me trompe, cette soumission a été gagnée! Sam, j'accepterai cette réponse si vous postez la solution pour prouver que c'était effectivement possible.
Hobbies de Calvin le

@ Calvin'sHobbies Done
SamYonnou

23

Java: zone 360

Bounty: 500

Reconstruire ces choses est difficile! C'est probablement la raison pour laquelle peu de voleurs participent à ce défi. Cependant, je veux voir le mien fissuré. Ainsi, au lieu de donner la solution après 72 heures, je mets 500 représentants au premier craqueur réussi. Pour clarifier les choses, je vais ajouter une prime de +500 à la réponse et l’attribuer à votre crack si vous réassemblez ces éléments dans n’importe quel programme Java rectangulaire fonctionnel produisant "Tetris". Je n'active pas la prime de manière préventive, car je n'ai pas envie de gaspiller la réputation si personne ne répond.

Il n'y a pas de date de fin à cette offre. C'est valable tant que je suis membre ici. Pour être sûr de voir votre réponse, envoyez-moi un commentaire avec un ping ci-dessous.

J'ai vérifié trois fois pour m'assurer que les pièces (et le code) sont valides, mais si un utilisateur de confiance veut le confirmer, je peux envoyer un courrier électronique ou quelque chose de la solution. Évidemment, cela les dispenserait de l’afficher et de percevoir la prime.

Fait d'un mélange des sept types de pièces. Pour faciliter les choses (?), Je me suis assuré que toutes les pièces du même type tournent dans le même sens. Puisque Java a des parties qui ne peuvent pas beaucoup changer, j'ai laissé les parties vraiment évidentes sous la forme de simples blocs I pour le démarrer.

Remarque: Comme Java comporte quelques espaces obligatoires, je les ai remplacés par des traits de soulignement ( _) ci-dessous à des fins de présentation. Il y en a 11 au total, et ils devraient tous être convertis en espaces pour exécuter le code. Aucun autre espace n'est présent dans le code, les éléments ci-dessous sont uniquement destinés au positionnement.

Il y a:

  • 41 je
  • 15 O
  • 11 J
  • 8 l
  • 6 T
  • 6 S
  • 3 Z

S'amuser!

------------- I 

clas    s_X{    publ    ic_s

tati    c_vo    id_m    ain(    

Stri    ng[]    2;c*    p(b-    

(b-c    _voi    nt_a    Syst    

em.o    ut.p    rint    1,c=    

d=1,    e=3,    new_    int[    

;b++    for(    1008    ?1:2    

)a);    ccc+    ==++    pf}(    

for(    (b);    p(b+    --b-    

or(d    1?1:    +1;e    for(    

=1);

------------- O

a)
*2

b=
r(

12
<3

36
[c

*1
++

b<
6]

64
64

7]
]-

<1
1;

89
0;

;p
c)

=0
ic

st
ch

at
ar

d/
1;

-------------- T

{in
 ]

+b(
 5

d/2
 ;

d<<
 )

;;;
 1

=1)
 (

------------- L

2=[
+

]b*
8

=1)
]

<<b
<

}_}
d

3=b
)

+[[
=

=c,
=

-------------- J

o
;b=

,
2;)

f
2;c

*
=][

c
f=d

+
e1+

e
=;;

d
_p(

i
<++

=
){_

[
f+e

---------------- S

 t_
;f

 c+
1)

 +<
;p

 64
<6

 b=
;p

 ))
(;

--------------- Z

4,
 -1

;=
 ff

;f
 0;

Est-il nécessaire de faire pivoter l'un des blocs de code pour créer une solution valide (ou du moins la solution envisagée)?
El'endia Starman

@ El'endiaStarman Oui, vous devrez en faire pivoter certaines pour obtenir la solution souhaitée.
Geobits

12

Brainfuck, région de 108

Ce code était composé de 27 pièces.

-.[>
.<++
.<++
[>++
[>++
-]++
]>.-
-]>[
-]>+
]>++
+.+-
+[>+
+-+-
++[>
++[>
++]-
++++
++++
+++<
+++<
+<-]
--<-
<-]>
<><+
>+.>
>++[
>+<<

Je ne sais pas s'il existe un autre moyen que bruteforce de trouver la réponse. S'il y en a, j'aimerais vraiment savoir comment.


9

Python 3: 212 area [reconstruit]

Mon code est divisé en les 53 éléments suivants I, que j'ai écrits un par ligne par ordre alphabétique.

(358
0048
0396
0796
0824
0981
1013
1314
1330
1438
1502
2285
2317
2479
2585
2955
3116
3738
3818
4169
4356
4360
4632
4800
5016
5153
5256
5394
5598
5631
5758
5840
6312
6425
6539
7045
7156
7163
7329
7624
7674
8164
8250
8903
9%38
9009
94))
9413
9748
etri
prin
s'* 
t('T

S'amuser!


J'ai trouvé une vulnérabilité dans cette méthode, mais je vais la laisser craquer. J'ai posté une autre réponse que j'espère plus sécurisée.
xnor

8
print('Tetris'* (3580048039607960824098110131314133014381502228523172479258529553116373838184169435643604632480050165153525653945598563157585840631264256539704571638903974876749009825073297156762481649%38941394))
Foobar

1
@foobar Félicitations! Avez-vous essayé beaucoup de shuffles mod 38941394 ou quelque chose de plus systématique? Combien de temps at-il fallu? Aussi pourquoi pas %3894?
xnor

1
Je venais juste de construire print('Tetris'* (358UNKNOWN94))et comme j'étais à peu près sûr de ne pas faire pivoter de mosaïque, je ne faisais que construire toutes les permutations possibles des mosaïques restantes, je les assemblais et les évaluais si 358UNKNOWN94égal 1, alors que je remplaçais UNKNOWNpar la permutation . Donc, je n'ai pas utilisé %3894parce qu'une permutation de correspondance différente a été trouvée en premier;) Je ne sais pas combien de temps cela a pris exactement, mais il fallait environ 20 minutes avec un seul noyau. J'ai donc utilisé quelque chose de moins systématique, j'ai juste renforcé la solution;)
foobar


5

JavaScript - Zone 80

On dirait que beaucoup de ces réponses utilisent juste beaucoup de morceaux I et peut-être un morceau O, alors j'ai jeté cela ensemble avec certaines des formes les plus intéressantes.

  • 7 pièces
  • 1 l pièce
  • 1 pièce en J
  • 4 pièces
  • 6 pièces en T
  • 1 pièce S

Chaque pièce est séparée par deux espaces. Les deux signes de hachage sont en réalité des espaces dans le code.

l  n  \  /  ;  +  r
o  -  x  c  v  (  i
g  (  5  o  a  ;  s    )  o    //  #c  ns  ->   )    "    d    l    e    l    wi
(  "  4  n  r  ;  "  x65  log  ;/  ")  ].  "c  "(#  o+\  ave  ow"  t"o  "Te  [" 

S'amuser!


5

Javascript, zone 420

Seulement I-block.

!!!(
!!!+
!!!+
!!![
!!!]
!!!]
!!!]
!!!]
!!!]
!!'!
!![]
!!]]
!(!+
!(![
!+!]
!+!]
!+"+
!++)
!++[
!++[
!++[
!++[
!++]
![+[
!](+
(!!'
(!!+
(!(]
(++!
(['[
)!'!
)[)[
)]]!
+++"
+++)
++++
+++[
+++]
++])
+[+[
+[[[
+]'+
+]']
+]+[
+]+[
+]]!
+]]!
+]]!
+]]!
+]]'
+]][
+]]]
[!!+
[!!+
[!!+
[!!+
[!!+
[!!]
[!+!
[![[
[![[
[((!
[))!
[){!
[+'+
[++)
[++]
[[)+
[[+[
[[[!
[[['
[[[+
[][]
[]]]
[{[[
]!(!
]!]+
]['[
][[!
][[!
][[!
][[!
][[(
][[+
][[+
][[[
][[[
][]]
][}!
]]T]
]][(
]]]!
]]]!
]]]'
]]])
]]]]
]}]]
a['!
e]'(
l++[
v).!
{[[[
{]g]
})')
}]]]

Aucun obfuscateur standard n'a été utilisé. Tous les codes, y compris l’obscurcissement et l’ajout de cette liste triée de blocs, sont constitués de moins de 16 lignes de mon propre code.


Il est temps de montrer comment cela a été fait:

x="+[],+!![],+!![]+!![],+!![]+!![]+!![],+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]".split(/,/g)
res={}
for(q=0; q<x.length; ++q) res[eval(x[q])]=x[q]
function add(str) { for(q=0;q<Math.min(str.length,10);++q) res[eval(x=str+"["+res[q]+"]")]=x }
add("({}+[])")
add("(![]+[])")
add("(!![]+[])")
add("([][[]]+[])")
code = 'eval('+Array.prototype.map.call('console.log("Tetris")',function(x){return res[x]||"'"+x+"'"}).join("+")+')'
res=[]
console.log(code)
code.replace(/(.)(?=.{104}(.).{104}(.).{104}(.))/g,function(m,a,b,c,d){res.push(a+b+c+d)})
eval(res.map(function(x){return x[0]}).join("")+res.map(function(x){return x[1]}).join("")+res.map(function(x){return x[2]}).join("")+res.map(function(x){return x[3]}).join(""))
console.log(res.sort().join("\n"))

Donc, il suffit d'appeler evalavec l' 'console.log("Tetris")'argument obfusqué , qui est de 420 symboles. Il est divisé en 4 lignes de 105 symboles et est lu par colonnes et trié par ordre alphabétique.

L'obscurcissement pour 10 chiffres est codé en dur, pour les autres symboles utilisés, les 10 premiers symboles de 4 combinaisons passées à la addfonction. S'il n'y a pas d'obscurcissement pour un symbole, il est passé tel quel.


Est-il temps de poster comment cela a été fait?
Qwertiy

@Qwerity Oui, si vous voulez.
Hobbies de Calvin le

L'explication est ajoutée.
Qwertiy

4

C, zone 80

Fait de 12 Ipièces et 8 Opièces. La syntaxe C est toujours amusante.

I pièces sans ordre particulier:

 c[] // starts with a space
','n
',;}
(q){
,',  // ends in a space 
u>6/
T2sr
char
main
q/**
t#1'
ts(c

O pièces:

q<
pu

't
i'

Ir
$'

/}
);

'?
re

',
`:

"e
i>

={
,0

2
main(q){char c[] ={'/T','$"e','t' ,0162,'rIi>`:i', '?#>s',q<q/**/}; return puts(c);}
jimmy23013

@ user23013 Félicitations!
es1024

4

CJam, 60 (15 O)

71 05 37 23 36 04 27 69 32 :i 12 93 bi i] 43
69 44 71 71 -# 70 10 25 44 cb 93 20 *G 9B 62

Solution

27
10
96
17
54
04
52
96
71
37
12
93
43
62
29
03
07
40
44
23
72
13
]B
i9
*b
Gi
6#
3-
ib
:c


4

Befunge, zone de 360

90 Opièces.

 "
#6

 "
#^

 #
# 

 #
4 

 +
$ 

 +
0>

 +
v_

 0
> 

 3
# 

 >
\ 

 ^
/1

 _
v8

 v
$,

 ~
*=

!!
00

!<
v>

"!
< 

"<
#^

">
^<

"v
# 

"v
w\

# 
 #

# 
|_

#*
_*

#0
.@

#3
~#

#?
t@

#^
RI

#v
~>

#~
~#

$ 
!4

&v
v#

*#
"#

**
>^

+1
>^

+5
 ,

+^
S"

- 
#"

-#
2\

-~
 #

0 
|>

00
00

0<
v\

2,
+#

2v
^v

3#
< 

3#
>2

3~
^-

47
31

6 
6#

70
"T

8#
:\

:#
 #

:$
$*

:0
3<

< 
#$

<*
<|

<<
>>

<>
<>

<@
 >

<~
2,

> 
7<

>$
^6

>>
<<

>v
|g

\ 
^ 

\_
 !

^ 
<s

_!
>9

_$
ET

kr
 >

m~
#3

q~
~+

r^
c 

t~
, 

v 
 ?

v/
_$

v4
>>

v7
>#

v<
>#

v<
>#

v>
:^

v~
1/

zr
 $

~#
#~

~#
\#

~$
7>

~3
$_

~v
\$

~~
~#

Vous pouvez l' essayer ici .

3#~#~vm~00-~q~\_:$:#r^&v_!!<v<
>2\#\$#300 #~+ !$* #c v#>9v>>#
"v0< 36 v < ~~ ^<~^ <<<@\ -##v
w\v\# 6# ?#$~#/12,<s>> >^ 2\~>
"> +>$ +:0 _ #2,v/$ >>v4v7- 3~
^<0>^6v_3<v84 +#_$!4<<>>>##"^-
<*8#> #0 v ~v~2v#~~#kr"v "zr"<
<|:\7<.@$,*=1/^v~##~ ># #6 $#^
#*+1# 3# 0470 >vv< ## ~$t~ "<>
_*>^|_< > 31|>|g>##  #7>, #^<>
70_$#^+^~3 +** >v>!!+5#3*#"!#?
"TETRIS"$_$ >^\ :^00 ,~#"#< t@

Il y a probablement d'autres solutions. Je n'ai pas tourné les briques.


C’est l’un des programmes Befunge les plus compliqués que j’ai jamais vu et vu courir. Très intelligent!
El'endia Starman

3

Python 3: zone 340 [reconstruit]

Fait de 85 Ipièces, on en donne ici une par ligne, en ordre alphabétique.

    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces        
))  #Two spaces
0290
0398
0866
0887
0892
0992
1108
1268
1297
1339
1555
1722
1817
1848
1930
2328
2521
2611
2747
3179
3192
3245
3284
3334
3613
3862
4086
4629
4639
4674
4695
4781
4968
5723
5742
5791
5938
6011
6069
6180
6231
6265
6269
6444
6564
6776
6884
7116
7253
7348
7440
7527
7743
7873
8064
8291
8808
8843
9305
9324
9458
9460
9586
9869
====
a,b,
abcd
c)-d
etri
pow(
prin
s'*(
t('T

En tant que liste Python:

['    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '))  ', '0290', '0398', '0866', '0887', '0892', '0992', '1108', '1268', '1297', '1339', '1555', '1722', '1817', '1848', '1930', '2328', '2521', '2611', '2747', '3179', '3192', '3245', '3284', '3334', '3613', '3862', '4086', '4629', '4639', '4674', '4695', '4781', '4968', '5723', '5742', '5791', '5938', '6011', '6069', '6180', '6231', '6265', '6269', '6444', '6564', '6776', '6884', '7116', '7253', '7348', '7440', '7527', '7743', '7873', '8064', '8291', '8808', '8843', '9305', '9324', '9458', '9460', '9586', '9869', '====', 'a,b,', 'abcd', 'c)-d', 'etri', 'pow(', 'prin', "s'*(", "t('T"]

J'ai commis une erreur et j'ai trop collé. Je l'ai corrigé maintenant, mais pour les reconstructeurs, ne regardez pas dans l'historique des modifications.
xnor

2
Pour votre information, vous l'avez corrigée pendant la période de grâce, vous n'avez donc pas à vous soucier de l'historique des modifications.
Nathaniel

Il manque deux des 4 blocs d'espace dans la liste principale.
feersum

@feersum Félicitations! Je n'ai absolument pas pensé à utiliser des surplombs comme celui-là. Il est temps de faire un nouveau et meilleur brouillage.
xnor


3

Python 3: zone de 160

Après le crack de Feersum , j'ai essayé de resserrer mon code pour qu'il soit plus difficile d'éviter le charabia cryptographique. Il est composé de 40 Ipièces, répertoriées une par rangée:

')    #Two spaces
)-d)
*'Te
,b,c
0484
0824
2448
2562
3094
3762
3896
4052
4233
4562
5266
5277
5400
5885
5927
5965
6080
6720
6808
6884
7568
7856
7963
8609
8639
8665
8732
8892
9206
9893
====
abcd
ow(a
prin
t((p
tris

En tant que liste Python:

["')  ", ')-d)', "*'Te", ',b,c', '0484', '0824', '2448', '2562', '3094', '3762', '3896', '4052', '4233', '4562', '5266', '5277', '5400', '5885', '5927', '5965', '6080', '6720', '6808', '6884', '7568', '7856', '7963', '8609', '8639', '8665', '8732', '8892', '9206', '9893', '====', 'abcd', 'ow(a', 'prin', 't((p', 'tris']

Modifié:

  • Multiplication de chaîne réordonnée pour essayer de forcer powà être utilisé
  • Moins d'espaces (bien que des nombres plus courts)
  • Pas de 1« s

Je suis inquiet pour les nombreux facteurs de la région.


2

C - Zone 72

Blocs:

I    J     _______ L ______       O      __ Z _     _______ T ______
          /                \   /    \   /      \   /                \
"    e    m   "   T   )   6    };  ii   3"   (.    \nn  {6"  ]"0  i%s
i    t    p   ,   &   m   1    -]  ar    "\   f(    t    8    e    T
s   )"    .[  0x  ,f  ai  0r
"  

 ""   (t   ["
)"   61   4+
\____   ____/
      S

Depuis la seule autre soumission C était fissurée. ;)

Un soigné 72 caractères. Pure obfuscation. Pas de problèmes NP-difficiles à résoudre ni d'énormes nombres entiers à factoriser. Emprunte quelques astuces à l'un des plus grands. Les espaces sont représentés en utilisant .s. Aucun résultat réel .n'apparaît dans la solution.

J'ai vérifié trois fois la solution pour garantir la validité des pièces.


2

CJam, 80 région

20 Opièces.

 I
`7

&d
'X

+5
7m

-2
`-

-6
#b

-O
U[

3Z
Pi

4"
2X

43
P"

?<
5b

D:
.=

FH
uL

K`
~C

QT
:c

[^
+9

aj
^F

hD
dP

tn
6 

uq
KG

x6
CF

-24"hD&d ID:uqx6tn-OajFH43[^+5?<3ZK`-6QT
`-2XdP'X`7.=KGCF6 U[^FuLP"+97m5bPi~C#b:c

Je n'ai pas tourné les briques.


2

C - Secteur 780

Il y a 195 pièces au total. Aucun commentaire n'a été utilisé. Rien de particulièrement compliqué.

Remarque: toutes les barres obliques inverses ( \) doivent être remplacées par des espaces.

95 Ipièces:

____ x12
incl
\edu
\\\\
\\\\
\\\\
dts<
h.oi
*_*>
_,_(
int\
__;\
,_(_
_*_,
=__,
__"*
+|_;
r__+
ahct
)=pu
_\ra
f\ch
edep
#t_,
y___
*_;_
(_;-
){__
,<_\
9"=_
+__*
___;
_+>_
_??<
+__*
*__,
__*_
*=+_
__:-
___-
_+__
,___
,__,
_,*&
*\&*
_,*_
_++,
+,__
++++
+__=
_++,
,,,_
___+
=+__
?++_
___+
=__+
,<_*
__+*
&+;*
+*__
__*_
__+,
++?~
__-9
_?__
__*_
(_+_
[**(
_<&_
};__
_@A:
(nia
@@@@
AAAA
AAAA
~~~~
_++;
_&,)
A__+
~~__
g_""
_;}_
+*__

35 Opièces:

__
__
 (x18)
)_
__

_*
_\

_;
,-

_*
__

~)
"{

+_
+_

*_
,_

__
_)

~~
a~

_,
__

__
,)

_:
__

+*
__

__
+,

*+
_+

AA
AA

__
,+

18 Lpièces:

___
_
 (x2)
_;*
_
_=_
+
__*
_
+__
_
**_
&
+*_
_
&*&
,
++,
_
_*_
_
;;_
"
__+
_
AAA
~
"*)
;
___
(
,_-
_
_~^
_

25 Jpièces:

_+=
  +
+,_
  _
*__
  ;
;;_
  \
_,_
  )
~~~
  _
___
  A
~;(
  _
;__
  i
_;m
  A
=__
  _
a;a
  A
="A
  a
~_\
  o
o_a
  a
~~~
  _
99-
  _
*9_
  _
__)
  _
__*
  <
+_,
  _
_++
  =
_+_
  _
++_
  _
_+:
  _

10 Tpièces:

 _
,__
 +
*?_
 =
**=
 _
__+
 _
:_+
 _
_+_
 _
(_-
 +
++,
 +
___
 *
__:

4 Zpièces:

=*
 ++
*+
 __
t_
 -~
__
 f(

8 Spièces:

 _,
_,
 __
__
 (x2)
 -_
__
 (x2)
 _9
~_
 99
__
 __
],

Solution

#include <stdio.h> typedef char _________; int (* _____)()=putchar;____(_,___,__ ,______) _________*__,* *___,* ______;{__="9>?_|";______=*___ ;--_;--_<*__++?++*______,_+=_+ _:___,__,___;_<*__++?*______+= *______,++______,__,*______+=* ______,__,++______,*&*______+= *______,++______,* &*______+=* ______,++______,*&*&*______+=* ______,++______,_,*______+=*&* ______,_+=_+_:__,_;_<*__++?++* ______++,++*______++,++*______ ++,++*______++,++*&*______++,_ ,++*______,_+=_+_+_+_:______;_ <*__++?~_____(_-_+_-_)^~_____( *______),++*___,_____,_,_+=*&* ______,_+_:_____(_+_-_-_);;_<* __?--*______:___;}_________ _[ 999-99-99],*__=_;main(______){ _________*___="AAA@@@@@~~~~~~" "~~~~~~aAAAAAaAAAAAAAAAAAAA;;" "aa~~~~~~~~~a;a";_____:____((* ___-______),&__);if(__,*++___) goto _____;++______;++______;}


1

Wolfram, zone 72

Partout où vous voyez un tiret (-), remplacez-le par un espace

je

h01-

r*1/

j

6
115

l

  m
+1C

  t
*0e

  e
,,[

o

r4
a+

s

 10
-1

 +1
Pr

z

ro
 8*

ac
 -1

od
 +1

t

--F
 {

,50
 0

/]}  -- fixed bracket directions
 0

1-,
 ,

01C
 0

tni
 4

Voulez-vous dire la langue Wolfram (c.-à-Mathematica)? Tous vos supports et vos accolades vont dans la même direction - les avez-vous retournés par inadvertance lorsque vous avez fait pivoter les blocs?
Martin Ender

1
D'accord, l'attache et le corset du troisième Tbloc devraient être inversés. J'ai réussi à le reconstruire .
Martin Ender

Wolfram langue, oui. Oh non, j'ai commis une erreur! Félicitations pour le résoudre malgré cela!
Gerli

J'ai corrigé le T. J'ai imprimé le code et fait pivoter le papier pour réduire l'exercice mental ... J'ai oublié de prendre en compte le fait que les symboles ont également changé ...
Gerli

0

MATLAB, zone 48

Malheureusement, cela ne semble pas fonctionner dans Octave.

-
^-1

'
'u"

v'+
e

[['
;

'.i
]

lmi
a

 kv
hW

 .x
).

3)
t;

b(
'p

('l; 

.]'e

0

Python 3 176 Zone

Je n'utilise pas de traits de soulignement dans ce programme, j'ai donc décidé de remplacer tous les espaces par des traits de soulignement pour une lisibilité accrue. Assurez-vous de les replacer dans les espaces si vous ne le remettez pas ensemble.

Je bloque:

1456

"jtr

\)\~

tris

],i)

t=""

2697

t(t[

_r+2

_r_i

O Blocs:

i_
s_

_;
32

6#
an

".
+-

t)
in

n(
_[

""
(c

ap
ri

L Blocs:

  =
#14

  .
\n"

  ;
"(t

  i
T%"

  o
:=i

  r
ioj

  6
mp#

J Blocs:

6
2(h

5
574

#
"=t

7
spl

f
o__

s
(s_

n
];#

0    
t=_

*
#)(

T Blocs:

=_1
 _

295
 r

21,
 r

,2)
 .

Z Blocks:

46
 ""

"5
 3"

#t
 )n

1t
 ),

S Blocs:

 ge
34

 nt
68

0

Python 3

Superficie - 484

Espaces remplacés par %. Certains commentaires sont utilisés comme bourrage. Un peu de répétition de code. Peut être assez compliqué.

121 Os

41
)+

%r
1-

:#
1#

%r
1-

01
,+

a1
n+

))
0+

h1
r-

#0
##

--
ge

11
1-

hr
1-

--
-1

ap
0+

+1
+'

h0
r+

:1
##

11
1-

))
0+

a0
p+

n0
d+

f%
oz

-1
0+

hr
1-

n0
d+

a0
p+

a1
n+

+0
1+

hf
.=

i1
%-

f%
oa

a1
n+

(c
0+

(0
1+

0,
1+

i1
n+

in
1+

r+
%=

-0
1+

fo
%l

n'
d'

--
=1

p1
%-

-;
-a

-;
-h

a1
n+

pe
0+

pe
0+

-1
0+

n0
d+

11
0-

a0
p+

i1
n+

hz
.=

n0
d+

##
)#

5)
1+

g(
1-

%1
r-

(c
.j

(0
c+

11
0-

(z
n(

g(
1-

41
)+

)s
)'

in
1+

r+
%=

ap
in

g(
1-

01
,+

-a
-n

(l
1+

pt
e(

%1
r-

-#
]#

(1
f+

g1
(-

h.
l=

01
,+

h.
pr

:1
##

:#
1#

(1
z+

r+
%=

+1
0+

p0
e+

r%
+=

(a
0+

hz
.=

+0
1+

(0
c+

))
0+

#0
##

q%
1-

g1
e-

-0
1+

#0
##

pe
0+

-1
h)

61
)+

an
1+

--
ng

fo
%f

)0
)+

f%
oz

-=
-[

11
)+

q1
%-

:#
1#

+0
1+

--
=r

j1
%-

ho
ri

#-
ra

(0
c+

i1
n+

,1
8-

r+
%=

%1
r-

##
0#
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.