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 - 18-12-2015 04:48:41

Laidzep
Professionnel de Prise2Tete
Enigmes résolues : 35
Messages : 165

Un prorgamme pour un produit!

Bonjour à tous. smile

J'ai déjà posté sur ces forums précédemment, et bien que je ne participe pas activement à ce dernier, j'aime y venir et fouiner dans les tonnes d'énigmes intéressantes et inédites qui y foisonnent.

Aujourd'hui, je vous propose un concept neuf (je crois, je n'ai rien trouver d'équivalent ici) : programmer ensemble! Tout un programme... wink

Voici donc de quoi il retourne.



Vous avez entre les mains un ordinateur d'un type un peu nouveau : il est un peu du genre rétro... wink En gros, il s'inspire de façon simple du Pascal ou du C++... Mais, il n'aime pas les programmes trop complexe, ni trop lourd.

En outre, il dispose de quelques fonctionnalités de base (que nous appellerons " éléments " ) lui permettant d'effectuer des tâches qu'on lui assignera en exploitant avec justesse le potentiel que ces dernières recèlent.
Il s'agira donc d'agencer de manière chronologique les différents éléments en lignes successives afin d'obtenir un programme cohérent.

Pour comprendre son fonctionnement, imaginons un humain qui attrape des valeurs quelconques sur un tapis roulant, il les manipule à sa guise, puis quand il est satisfait, il les dépose dans un autre tapis roulant.

Je donnerai un exemple un peu plus bas, après la présentation des diverses éléments à votre disposition.

Les voici :

IN : permet d'introduire un objets dans le programme (chiffres, nombres, lettres, mots, ... )

OUT : permet d'extraire un objets du programme (chiffres, nombres, lettres, mots, ... )

SAUT : permet de sauter des lignes du programme pour reprendre le programme quelques lignes plus bas, ou quelques lignes plus haut.

SAUT SI 0 : permet de sauter des lignes du programme pour reprendre le programme quelques lignes plus bas, ou quelques lignes plus haut, si la condition " objets 0 " est remplie

COLLER EN [X] : permet de mettre en mémoire un objet quelconque (chiffres, nombres, lettres, mots, ... ) dans un emplacement quelconque (citée entre crochet)

COPIER [X] : permet de récupérer un objet (chiffres, nombres, lettres, mots, ... ) coller préalablement dans un emplacement quelconque

AJOUTER [X] : permet d'ajouter à une valeur numérique, une autre valeur numérique préalablement coller dans l'emplacement quelconque (cotée entre crochet)

SOUSTRAIRE [X] : permet de soustraire à une valeur numérique, une autre valeur numérique préalablement coller dans un emplacement quelconque (citée entre crochet)

+ 1 [X] : permet d'ajouter 1 à une valeur numérique préalablement coller dans un emplacement quelconque (citée entre crochet). Attention, cas particulier, cette valeur manipulée par le programme, augmente également de 1 la valeur contenu dans l'emplacement concerné * .

- 1 [X] : permet de soustraire 1 à une valeur numérique préalablement coller dans un emplacement quelconque (citée entre crochet). Attention, cas particulier, cette valeur manipulée par le programme, diminue également de 1 la valeur contenu dans l'emplacement concerné * .



* : par exemple l'emplacement [OUTIL] contient la valeur 3, et le programme manipule en ce moment la valeur T . En effectuant la manipulation + 1 [OUTIL], le programme augmente d'une unité la valeur 3. L'emplacement [OUTIL] contient à présent la valeur 4. De plus le programme manipule maintenant la valeur 4, et non plus la valeur.

Ce sont l'ensemble des éléments à votre disposition.

A noter : le programme ne manipule aucune valeur préalable (la valeur est vide). Il faut utiliser la commande IN pour ramasser une valeur et commencer à la manipuler. Et dès que l'on utilise la commande OUT, le programme ne manipule plus de valeur (la valeur redevient vide).

Bien sur le programme peut bogué. Si vous lui demander d'ajouter la valeur T à un emplacement qui contient un 5, le programme s'arrête immédiatement.
De même, dans le cas où vous demanderiez d'effectuer la commande ajouter alors qu'il ne manipule rien (la valeur vide ne veut pas dire 0).

Le programme se termine dès lors qu'un élément IN ne détecte plus aucune valeur à ramasser.




Et maintenant, pour illustrer le tout, voici un exemple simple.

Vous disposez de cette suite de nombre : 2 - 7 - 10 - 5 - 3
Vous voulez créer un programme qui va rendre dans le même ordre chacun des nombres, mais en l'ayant préalablement doublé.

Exemple possible :

#1

- IN (le programme ramasse le 2 et commence à le manipuler)

- COLLER [NOMBRE] (le programme stock le 2 dans un emplacement appelé [NOMBRE], le programme manipule toujours le 2)

- AJOUTER [NOMBRE] (le programme ajoute le 2 qu'il manipule, au 2 qui est stocké dans l'emplacement [NOMBRE], le programme manipule maintenant la valeur 4)

- OUT (le programme rend la valeur 4 à l'arrivée, et la valeur manipuler par celui-ci est de nouveau vide)

- SAUT #1 (le programme revient en arrière vers #1 et recommence le processus : on crée ainsi une boucle. Elle s'arrêtera lorsque le programme ne trouvera plus de valeur à ramasser lorsqu'il effectuera la commande associée à l'élément IN)

Avec 5 éléments, on a donc créer le programme attendu.



Et maintenant, passons donc au problème que je vous soumets.

Soit une suite contenant un nombre pair de nombre. Essayez de créer un programme qui effectue le produit de deux éléments successifs de cette suite.

Par exemple, si la suite de nombre est : 4 - 1 - 5 - 6 - 0 - 8 - 3 - 0, le programme doit rendre à l'arrivée : 4 - 30 - 0 - 0 .

Il conviendra d'optimiser le programme en utilisant un minimum d'éléments.

Amusez-vous bien. smile
Ce n'est pas très dur.

  • |
  • Répondre

#0 Pub

 #2 - 18-12-2015 20:19:35

Laidzep
Professionnel de Prise2Tete
Enigmes résolues : 35
Messages : 165

U programme pour un produit!

Ca n'a pas l'air d'inspirer grand monde... sad
Avez-vous besoin que je clarifie davantage les choses ou que je donne quelques indices?

 #3 - 20-12-2015 20:01:16

shadock
Elite de Prise2Tete
Enigmes résolues : 39
Messages : 3334

Un programme pour un produti!

Vous disposez de cette suite de nombre : 2 - 7 - 10 - 5 - 3
Vous voulez créer un programme qui va rendre dans le même ordre chacun des nombres, mais en l'ayant préalablement doublé.

Exemple possible :

#1

- IN (le programme ramasse le 2 et commence à le manipuler)

- COLLER [NOMBRE] (le programme stock le 2 dans un emplacement appelé [NOMBRE], le programme manipule toujours le 2)

- AJOUTER [NOMBRE] (le programme ajoute le 2 qu'il manipule, au 2 qui est stocké dans l'emplacement [NOMBRE], le programme manipule maintenant la valeur 4)

- OUT (le programme rend la valeur 4 à l'arrivée, et la valeur manipuler par celui-ci est de nouveau vide)

- SAUT #1 (le programme revient en arrière vers #1 et recommence le processus : on crée ainsi une boucle. Elle s'arrêtera lorsque le programme ne trouvera plus de valeur à ramasser lorsqu'il effectuera la commande associée à l'élément IN)

J'ai rien compris big_smile


"L'expérience est une lanterne qui n'éclaire que celui qui la porte." L-F. Céline

 #4 - 21-12-2015 06:53:19

Laidzep
Professionnel de Prise2Tete
Enigmes résolues : 35
Messages : 165

un programme pour un priduit!

Ah, enfin une réponse. Je commençais à désespéré... Et la réponse à l'avantage d'être clair. big_smile
Je vais reformuler et illustrer les choses de façon plus didactiques. Le concept n'est pas simple à expliquer par les mots, mais il n'est pas très difficile à appréhender une fois que l'on comprend bien de quoi il retourne.
Deuxième tentative bientôt.

 #5 - 21-12-2015 09:28:47

gwen27
Elite de Prise2Tete
Enigmes résolues : 49
Messages : 5,896E+3

un prpgramme pour un produit!

Tu attends un truc du genre ?

#1
IN
COLLER[valeur]
COLLER[produit]
IN
SAUT SI 0 [#2]
COLLER[itération]

#4
-1[itération]
SAUT SI 0 [#3]
COPIER[produit]
AJOUTER [valeur]
COLLER[produit]
SAUT [#4]

#3
COPIER[produit]
OUT
SAUT [#1]

#2

OUT
SAUT [#1]

 #6 - 21-12-2015 16:35:56

Laidzep
Professionnel de Prise2Tete
Enigmes résolues : 35
Messages : 165

UUn programme pour un produit!

Oui, ce genre de chose. Tu as compris le principe, l'idée directrice est là, mais il y a une erreur dans ta proposition (traiter les cas particuliers des 0 est plus délicat qu'il n'y parait), de plus le nombre d'élément n'est pas optimal.
En l'état, je laisse en suspend cette énigme, et vais la rédiger de nouveau de façon qu'elle soit davantage compréhensible, de sorte que je puisse poser une base solide et abordable afin de proposer d'autres problèmes sur ce thème si le genre plait.
Merci de ta réponse en tout cas.

 #7 - 23-12-2015 06:09:00

noctambule44
Amateur de Prise2Tete
Enigmes résolues : 44
Messages : 3

Un programme pou un produit!

Salut ,
Alors pour commencer super idée d'énigme !!

Voila j'éspère que tu vas pouvoir m'aider. En tout cas ça me plait bien .

Alors j'ai plusieurs points à éclaircir je vais le faire sous forme d'exemple:

1) J'ai un emplacement [outils] avec une valeur 2 et Mon programme manipule un 5
Si je fais :

"COPIER [outils]"

Je manipule désormais un 2, ou je fait un gros Bug





2) J'ai un emplacement [outils] avec une valeur 2 et Mon programme manipule un 5
Si je fais :

"AJOUTER [outils]"

Je manipule désormais un 7 (ça j'ai compris) , mais est ce que ma valeur [outils] à elle aussi changé ou est elle restée à 2 ?






3) Et enfin : j'ai un petit soucis avec cette exlication

"Attention, cas particulier, cette valeur manipulée par le programme, diminue également de 1 la valeur contenu dans l'emplacement concerné  . "

et l'exemple que tu donnes

": par exemple l'emplacement [OUTIL] contient la valeur 3, et le programme manipule en ce moment la valeur T . En effectuant la manipulation + 1 [OUTIL], le programme augmente d'une unité la valeur 3. L'emplacement [OUTIL] contient à présent la valeur 4. De plus le programme manipule maintenant la valeur 4, et non plus la valeur. "

Du coup si : 1) J'ai un emplacement [outils] avec une valeur 2 et Mon programme manipule un 5
Si je fais :

"-1 [outils]"
La valeur d'outils devient 1, mais est ce que le programme manipule désormais un 1 ou un 4.


Dernière remarque tu pourrais livrer le debugger avec sa faciliterais la tache big_smile

Par contre j'ai un doute sur le fait que se soit accessible à tous. j'ai des toutes petites notions de programmations mais je suis pas sur que sans ces 2-3 bases j'aurais compris ton enoncé.

En tout cas merci j'ai passé un bon moment à me creuser les méninges.

 #8 - 23-12-2015 06:34:47

noctambule44
Amateur de Prise2Tete
Enigmes résolues : 44
Messages : 3

Un programmee pour un produit!

J'avais tenté ça mais pas sur que sa marche.


#1
IN
COLLER [valeur]
COLLER [produit]       
IN            
COLLER [coef]
         
#2         
-1 [coef]        
SAUT SI 0 #3
SOUSTRAIRE [coef]
AJOUTER [produit]     '(la j'ai un doute, si je mets COPIER a la place d'AJOUTER
AJOUTER [valeur]                              ça efface le 0 du programme ou ça Bug ?)
COLLER [produit]       '(et par consequent cette ligne j'ai un doute aussi ! Bug ??)
SAUT #2       

#3
AJOUTER [produit]
OUT
SAUT #1

 #9 - 07-01-2016 18:02:09

Spirou
Professionnel de Prise2Tete
Enigmes résolues : 49
Messages : 458

Un progrmme pour un produit!

Je ne suis pas sur de ma réponse:

#1
IN
COLLER[nb1]
COLLER[Resultat]
IN
COLLER[nb2]
SAUT SI 0 [#3]

#2
COPIER[nb1]
AJOUTER[Resultat]
COPIER[nb2]
-1[nb2]
SAUT SI 0[#4]
SAUT[#2]

#3
OUT
SAUT[#1]

#4
COPIER[Resultat]
SOUSTRAIRE[nb1]
OUT
SAUT[#1]

Un test Avec deux nombres:
5 et 2,
nb1 prend 5, Resultat prend 5.
nb2 prend 2,
On saute à la partie 2:
on ajoute à Resultat (5) nb1 (5) se qui donne 10,
On enlève 1 à nb2, ce qui donne 1.
On retourne à la partie 2:
On ajoute encore une fois 5 à 10, ca donne 15.
On enlève 1 à nb2, ca donne 0.
On passe à la partie 4:
On enlève nb1 au Resultat, ca donne 10
On renvoie 10.

Donc je pense que ca marche, mais il existe surement des Solutions plus simples.

spirou

 

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 : 

Si il y a 63 pommes et que vous en prenez 23, combien en avez-vous ?

Sujets similaires

Sujet Date Forum
P2T
Programme intrigant par nobodydy
17-12-2016 Enigmes Logiques
P2T
Qui-suis je ? par emijuc
21-10-2008 Enigmes Logiques
P2T
Analyse et déduction par Chil1977
28-04-2017 Enigmes Logiques
22-02-2012 Enigmes Logiques
25-01-2008 Enigmes Logiques
P2T
Achat mystère par lawende
18-10-2009 Enigmes Logiques
P2T
Couleurs par aunryz
08-05-2023 Enigmes Logiques
30-01-2017 Enigmes Logiques
P2T
Trois primates par titoufred
28-10-2012 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