Utilisateur:Insane0
Infos
Qui
Nom réel : Recherchez moi sur Polytechnique.org ou sur Frankiz (promo 2006).
Pseudos :
- insane0
- ia0
- tout ce qui matche i[a-z]{2}a[a-z]{2}0
Quoi
Mes postes :
- root
- news
- TV
- WiFi
- support@linux
- BLL
Quand
Promo 2006.
Comment
8173.
Explication des citations
Apparemment tout le monde n'a pas eu droit à l'explication de mes citations. Sachant qu'en plus il y a plein de manières de les expliquer. Je vais juste en donner quelques unes ici au fur et à mesure.
Les citations
Mes deux citations de polos 2006 étaient :
- (-[z]rtyg--p) (aen)
- (dv-[ra]e-jn-c) (oki)
Les solutions
Il y a plusieurs manières de résoudre ces citations. J'en rajouterai quand je trouverai le temps.
Algorithme en Haskell
Voici une première présentation de solution. Il s'agit d'un algorithme en Haskell (pourtant pas compliqué à deviner quand on voit les citations).
f ('-':i) (c:a) = c:g i a f (b:i) a = b:f i a g ('[':i) a = h i a g i a@(c:_) = c:f i a h (']':i) a = g i a h (b:i) a = b:h i a p y (*) i a = y i*y a y a = a++y a m = p y f i = m "dv-[ra]e-jn-c" "oki" a = m "-[z]rtyg--p" "aen"
Le résultat pour la citation de mon polo est dans la variable i. Le résultat pour mon anti-polo est dans la variable a. Les deux variables sont de type [Char]. Normalement ça devrait pas être trop dur de deviner les mots et de voir la relation entre polo et anti-polo.
Graphe de contrôle
On peut aussi représenter l'algorithme comme un graphe de contrôle sur deux chaînes de caractères cycliques et produisant une autre chaîne de caractères cyclique (c'est ce que symbolisent les parenthèses dans les citations).
Il y a trois opérations :
- le branchement conditionnel sur 'a' qui :
- mange un 'a' sur son flux et sort par la pointe si c'est possible
- ne mange rien et sort par le côté sinon
- le déplacement qui mange un caractère de son flux et le recopie
- la copie qui copie le caractère de son flux sans le manger
La couleur de l'opération désigne le flux utilisé pour la lecture.
Comme on travaille sur des flux infinis, il faut un point de synchronisation dans le graphe et dans les flux. Celui-ci est symbolisé pour un flou vert.
Les chaînes de caractères cycliques solutions (représentables de manière finie sont) :
- (azertygennap) pour l'anti-polo
- (dvorakekijnioc) pour le polo
On voit bien les six termes qui s'opposent deux à deux :
- azerty -> dvorak
- gen -> ekij
- nap -> nioc