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

ub programme 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.



Annonces sponsorisées :
  • |
  • Répondre

#0 Pub

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

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

Un programme pou 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 : 3313

Un programme poour un produit!

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 programe pour un produit!

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,466E+3

un programme pour un prosuit!

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

un programme pour un profuit!

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 : 29
Messages : 3

Un programme pour un prroduit!

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 : 29
Messages : 3

Un programme pour un roduit!

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 : 48
Messages : 440

un programme pour un prodyit!

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


Il vaut mieux mobiliser son intelligence sur des choses betes que de mobiliser sa betise sur des choses intelligentes.
 

Réponse rapide

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

Répondez à la devinette suivante : 

Le père de toto a trois fils : Riri, Fifi et ?

Sujets similaires

Sujet Date Forum
P2T
Niveau de vin par gabrielduflot
03-07-2009 Enigmes Logiques
21-08-2009 Enigmes Logiques
P2T
12-05-2015 Enigmes Logiques
P2T
08-03-2012 Enigmes Logiques
P2T
Un peu de désordre par Clydevil
03-04-2013 Enigmes Logiques
13-01-2014 Enigmes Logiques
19-08-2007 Enigmes Logiques
P2T
7 par SaintPierre
01-04-2011 Enigmes Logiques
31-08-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