Enigmes

Forum dédié aux énigmes et à toutes formes de jeux de logique.

Déconnexion

Tu n'es pas identifié sur Prise2tete : s'identifier.

accueil Accueil forum Forum
[+]

 #1 - 03-03-2017 10:36:40

scarta
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 1965

non ce n'zst pas un cryptogramme...

... et c'est dans Enigmes logiques, parce que c'est uniquement de la logique théorique pure qui permet de démontrer l'existence (et la construction) de ce dont on va parler.

La question: qu'est-ce que c'est que cela ? La case réponse valide son nom.

Code:

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

 
Réponse :
  • |
  • Répondre

#0 Pub

 #2 - 03-03-2017 12:02:53

caduk
Professionnel de Prise2Tete
Enigmes résolues : 45
Messages : 398

bon ce n'est pas un cryptogramme...

Bonjour,
J'ai trouvé quine, la réponse attendue, mais quand j'exécute le programme sur un interpréteur, il ne s'arrête pas, il doit y avoir une erreur quelque part...

Edit:
En fait, je n'était pas assez patient, il marche parfaitement. Si tu l'as trouvé toi même, félicitation!

 #3 - 03-03-2017 12:32:35

scarta
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 1965

non ce b'est pas un cryptogramme...

Oui, c'est du fait maison. Je donnerais l'URL après l'énigme, mais faire ça n'est vraiment pas compliqué smile

 #4 - 04-03-2017 12:52:20

caduk
Professionnel de Prise2Tete
Enigmes résolues : 45
Messages : 398

Non c en'est pas un cryptogramme...

Juste avant ton premier crochet, tu as un ><, est ce vraiment utile? lol
Edit: J'ai compris pourquoi...
Je suis en train d'essayer d'écrire mon propre quine, et pour l'instant, j'ai fait la fonction qui me permet de recopier les données sous la forme +++>...
Je pense que l'on peut faire gagner pas mal de taille en améliorant la compression de données (même si le code sera alors un peu plus long....)

Edit2:
Il me semble que l'on peut faire une légère amélioration en remplaçant:

Code:

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

par

Code:

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

C'est la même taille, mais comme il y a plus de + et moins de [], ça compresse pas mal dans la partie données...

Edit3:
Dans la plupart des interpréteurs brainfuck, il me semble que la mémoire est cyclique, tu dois donc pouvoir éviter les >>>> du début, et les .... du code...
Sinon, si tu y tient absolument, tu peux supprimer le >< avant le premier crochet, retirer un . du .... et afficher un > avant d'afficher les + (au lieu d'après)

 #5 - 05-03-2017 19:10:06

scarta
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 1965

non ce n'est pas un cryptogtamme...

Oui, c'est vrai que les interpreteurs sont cycliques, même le mien l'est. Mais comme ce n'est pas la spec officielle, autant faire quelque chose qui fonctionne toujours et partout.
J'ai fait un jour un self-interpreter, pour lequel la mémoire atteignable est assez vaste (i.e. supérieure à 256 cellules), mais pas cyclique. Depuis que j'ai vu mes propres programmes planter dessus je fais plus attention smile
Mais sinon c'est vrai qu'on peut faire des >X+ au lieu de X+> et on gagne un peu. Et je me demande si faire un switch/case avec des valeurs de 1 à 8 ne serait pas rentable aussi

 #6 - 05-03-2017 19:46:14

caduk
Professionnel de Prise2Tete
Enigmes résolues : 45
Messages : 398

Non ce n'est pas un cryptogrmame...

Après quelque recherche, le plus compressé que j'ai pu trouvé est celui là (392 caractères):

Code:

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

Le code est assez malin: chaque signe est codé par 2 valeurs. Il met un - au début pour permettre d'avoir des valeurs 0 dans le code. (Il détecte ce signe avec une instruction du genre: +[-code>+]. il fait d'abord une première étape où il met d'un côté des ++++>, en créant pour chaque + enlevé deux colonnes de + (qui encode le +) et rajoute à la fin des valeurs pour coder le >. D'autre part, il recopie la colonne en ajoutant 2 +. Ensuite, il parcours tout ce qu'il à créé en une seule fois (car le codage est le même pour tout les affichages et qu'il a rentré ses valeurs à l'envers) et affiche tout. Le codage est du type 16x + y, ou x et y sont les deux valeurs qui encodent (qui sont rentrées dans la partie donnée sous la forme x-2 y-11 pour qu'elles prennent le moins de place possible)
Ca me parait assez dur à améliorer, peut être avec un codage similaire à 3 données...)
La flèche à la fin est nécessaire. Elle est comptée comme un commentaire, et est affichée à cause de du -> au début (qui décodé tout à la fin donne quelque chose un peu aléatoire...) C'est pas exactement cette flèche, c'est celle qui correspond parfois au code ascii 18 (Mais elle ne veut pas s'afficher sur p2t)

 #7 - 06-03-2017 00:57:11

scarta
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 1965

Non c en'est pas un cryptogramme...

Quand un intron aide à optimiser... c'est beau

 #8 - 06-03-2017 21:01:29

dhrm77
L'exilé
Enigmes résolues : 49
Messages : 3004
Lieu: Fanning Island-?-Lac Tele,Mali

non ce n'est pas un ctyptogramme...

est-ce volontaire d'avoir ecrit "cyrptogramme" au lieu de "cryptogramme..." ?


Great minds discuss ideas; Average minds discuss events; Small minds discuss people. -Eleanor Roosevelt

 #9 - 06-03-2017 23:34:35

scarta
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 1965

non ce n'est pas yn cryptogramme...

Non pas du tout. C'est une vraie coquille (corrigée)

 #10 - 08-03-2017 17:33:14

scarta
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 1965

Non c en'est pas un cryptogramme...

Bonne réponse de caduk donc, la réponse était bien "quine" puisque c'est le nom d'un programme qui, une fois exécuté, renvoie son propre code source.
C'était donc un quine, en Brainfuck.

Voilà pour la réponse courte.
La version mi-longue est détaillée sur mon blog ici : http://brainfuckhowto.blogspot.fr/2017/ … ion-5.html

La version longue : tout langage Turing complet (TC) admet un quine.
Démonstration :
- on appelle un programme une "fonction calculable"
- universality theorem: pour tout langage TC, il existe une fonction calculable "universelle" qui, prenant en entrée une fonction calculable, retourne le résultat de celle-ci. En bon français c'est un interpreteur.
Le but n'étant pas de se farcir les dizaines de pages de cette demo là, on va considérer ce résultat pour acquis.
- théorème smn : idem la demo est longue mais le principe simple. Pour toute fonction calculable, avec des entrées, il existe une fonction calculable qui fait pareil, avec une des entrées étant fixée. En français : si je code une fonction avec des paramètres, je peux coder une fonction avec des paramètres fixés à l'avance. Dit comme ça, ça ne casse pas des briques.

Théorème du point fixe : pour toute fonction T calculable prenant en entrée une fonction calculable (un bout de code qui transforme un algorithme en un autre) il existe un point fixe, c'est à dire une entrée E telle que T(E) fait pareil que E.
Soit une fonction calculable F, prenant une fonction calculable en entrée ;  soit S(F,F) le programme qui exécute F avec pour entrée la fonction F elle-même (théorème smn). Enfin, soit T une transformation. T(S(F,F)) est donc le résultat de la transformation de S(F,F).
D'après le premier théorème il existe un programme M qui, prenant en entrée F, retourne T(S(F,F))
Considérons S(M,M). T(S(M,M)) vaut M(M), qui est par définition S(M,M). Cette fonction est donc un point fixe de T.

Partant de là, soit T un programme qui affiche le code source de son paramètre F, il existe un programme Q tel que T(Q) et Q font pareil (point fixe). Donc Q affiche son propre code source: c'est un quine

Une vision simplifiée. En langue naturelle, si je dis à quelqu'un : dis deux fois dis deux fois, il va me répéter "dis deux fois" 2 fois, c'est donc un quine en français.

De la même manière, on peut construire un quine en informatique, y compris en BF. Les détails de la construction du quine proprement dit sont expliqués dans le lien ci dessus.

On pourra aussi lire Quel est le titre de ce livre? et Ça y est je suis fou, de Raymond Smullyan; ainsi que cette excellente page http://www.madore.org/~david/computers/quine.html

 

Réponse rapide

Rédige ton message
| | | | Upload | Aide
:) :| :( :D :o ;) :/ :P :lol: :mad: :rolleyes: :cool:
Sécurité

Répondez (numériquement) à la petite énigme suivante : 

Dans une course, vous doublez le 19ème, en quelle position êtes-vous ?

Sujets similaires

Sujet Date Forum
03-05-2014 Enigmes Logiques
P2T
Carré non magique.... par gabrielduflot
26-10-2009 Enigmes Logiques
P2T
Bizzare non? par DonutJack
29-03-2009 Enigmes Logiques
04-10-2015 Enigmes Logiques
P2T
Oui non ... par w9Lyl6n
05-11-2011 Enigmes Logiques
10-08-2009 Enigmes Logiques
07-07-2017 Enigmes Logiques
09-05-2011 Enigmes Logiques
P2T
Le saviez-vous ? par papiauche
29-04-2008 Enigmes Logiques

Pied de page des forums

P2T basé sur PunBB
Screenshots par Robothumb

© Copyright 2002–2005 Rickard Andersson

Prise2Tete Forum Statistiques Liste des membres Hall of Fame Contact
© Prise2tete - Site d'énigmes et de réflexion.
Un jeu où seules la réflexion, la logique et la déduction permettent de trouver la solution.

Flux RSS de Prise2Tete Forum Jeux & Prise2Tete Test & Prise2Tete Partenariat et Publicité sur Prise2Tete