pied gauche

 

Sciences

Forum > Sciences > Petites enigmes

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ... | 21

Elune Jumper

25/09/13 (17:20)

avatar

Membre

Mouton a écrit :
>les racines non-entières sont toujours inutiles

T'as bien vu que non, sinon comment je ferais 1 ? [:]]

Sinon oui c'est inutile car pour revenir a un entier, il faut faire une multiplication que tu aurais pu faire avant.

Compte détruit

25/09/13 (19:23)

avatar

nombre messages : 1

Elune Morningwood[§o]Jumper a écrit :

> T'as bien vu que non, sinon comment je ferais 1 ? [:]]

Heu, comme ça ?
Spoiler


Ou alors j'ai pas compris le jeu.

Charly M.

25/09/13 (20:03)

avatar

nombre messages : 2156

Membre

Alivien Avimoa a écrit :

Ca m'avait tout l'air d'être une réplique... ironique en fait ;)

Compte détruit

28/09/13 (12:28)

avatar

nombre messages : 1

L'énigme de cette semaine est la suivante :
on dispose de 6 tasses (2 rouges, 2 pourpres, 2 écarlates) et 6 soucoupes (2 rouges, 2 pourpres, 2 écarlates). On dispose au hasard les soucoupes sur les tasses. Quelle est la probabilité que chaque tasse soit une soucoupe de couleur différente de la sienne ?

Je donne également la réponse à celle de la précédente :

# proc (8*8*8*8);;
0 = (8-8)
1 = (8/8)
2 = Sqrt(Sqrt((8+8)))
3 = Sqrt(((8/8)+8))
4 = Sqrt((8+8))
5 = ((8/8)+Sqrt((8+8)))
6 = (8-Sqrt(Sqrt((8+8))))
7 = (8-(8/8))
8 = 8
9 = ((8/8)+8)
10 = (Sqrt(Sqrt((8+8)))+8)
11 = (Sqrt(((8/8)+8))+8)
12 = (Sqrt((8+8))+8)
14 = ((8+8)-Sqrt(Sqrt((8+8))))
15 = ((8+8)-(8/8))
16 = (8+8)
17 = ((8/8)+(8+8))
18 = (Sqrt(Sqrt((8+8)))+(8+8))
20 = (Sqrt((8+8))+(8+8))
24 = (8+(8+8))
- : unit = ()


Le code Caml est normalement assez lisible et dispo ici. Il tourne assez vite.

--
Mouton, qui aime bien le rouge.

[ce message a été édité par Compte détruit le 28/09 à 13:30]

Sylvius de Napline

28/09/13 (15:36)

avatar

nombre messages : 4380

Membre

C'est bizarre que tu ne l'aies pas fait en récursif. C'est un cas de programmation dynamique ou la transformation en code itératif est un peu merdique. C'est vraiment plus rapide comme ça ?

[ce message a été édité par Sylvius de Napline le 28/09 à 15:36]

Elune Jumper

28/09/13 (18:46)

avatar

Membre

Mouton a écrit :
# proc (8*8*8*8);;
0 = (8-8)
1 = (8/8)
2 = Sqrt(Sqrt((8+8)))
3 = Sqrt(((8/8)+8))
4 = Sqrt((8+8))
6 = (8-Sqrt(Sqrt((8+8))))
7 = (8-(8/8))
8 = 8
9 = ((8/8)+8)
10 = (Sqrt(Sqrt((8+8)))+8)
12 = (Sqrt((8+8))+8)
16 = (8+8)
24 = (8+(8+8))
- : unit = ()



Tu respectes pas tes règles :
Mouton a écrit :
> On est obligé d'utiliser tous les 8, on peut employer plusieurs fois la même opération.

D'ailleurs c'est ce qui m'avait fait le plus chier dans l'affaire cette règle.
Sinon, je vois que mentalement j'avais presque tout sauf le 11.

[ce message a été édité par Elune Jumper le 28/09 à 18:47]

Compte détruit

28/09/13 (19:53)

avatar

nombre messages : 1

Elune Morningwood[§o]Jumper a écrit :

> Tu respectes pas tes règles

Je m'attendais à cette remarque. 8 = sqrt(8*8), ce qui permet de rajouter des 8 sans problème, et donc je n'ai pas fait le rajout dans les arbres au moment de la présentation.

Sur le code, je l'ai pensé en itératif, donc je l'ai fait en itératif. J'avais fait du récursif très très maladroit (même dossier, autre fichier) avant, donc j'ai changé. Tu vois les choses comment en récursif ?

--
Mouton

Sylvius de Napline

28/09/13 (22:53)

avatar

nombre messages : 4380

Membre

En fait, ça rentre assez mal dans le schéma classique de la programmation dynamique. Il est plus simple d'énumérer les expressions comme tu le fais, tandis que si on appliquait bêtement le schéma classique, on essaierait de dire "je veux les solutions pour 4 huit, donc je vais d'abord chercher celles avec 1, 2 ou 3 huit".

Construire la liste des expressions est un processus récursif, je ne comprend pas bien comment tu es arrivé à en faire une boucle, qui te fera revenir plusieurs fois sur la même expression.

Une première version

Le tableau est assez creux, et itérer dessus est assez inefficace. C'est un argument supplémentaire en faveur de la récursivité. Mais au delà de ça, il reste des boucles dans le programme précédent, qui vont itérer sur beaucoup de vide. J'ai autorisé les valeurs à monter à 256 et il y a beaucoup de valeur inatteignables entre 1 et 256. Du coup, plutôt que d'itérer sur le tableau pour trouver des expressions déjà construites, je vais les stocker dans une liste et itérer la liste. En prime, ça simplifie un poil le programme.

Une seconde version

Sur ma machine, la première version termine en 4ms et la seconde en 2ms. On peut optimiser en utilisant ta remarque, (sqrt(8*8) = 8) ce qui réduirait le nombre d'expressions à stocker, mais requiert un chaînage un peu plus élaboré que les listes ocaml.

[ce message a été édité par Sylvius de Napline le 03/10 à 13:35]

Elune Jumper

02/10/13 (17:43)

avatar

Membre

Mouton a écrit :

> L'énigme de cette semaine est la suivante :
> on dispose de 6 tasses (2 rouges, 2 pourpres, 2 écarlates) et 6 soucoupes (2 rouges, 2 pourpres,
> 2 écarlates). On dispose au hasard les soucoupes sur les tasses. Quelle est la probabilité
> que chaque tasse soit une soucoupe de couleur différente de la sienne ?

Spoiler

Compte détruit

02/10/13 (18:35)

avatar

nombre messages : 1

Elune Morningwood[§o]Jumper a écrit :

Spoiler


Et pourtant tres difficile pour mes eleves, qui ne sont pas au point en probas. Du coup, ca fait une intro sympa.

--
Mouton

Forum > Sciences > Petites enigmes

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ... | 21