Elune Jumper 25/09/13 (17:20) 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) : 1 | Elune MorningwoodJumper a écrit :> T'as bien vu que non, sinon comment je ferais 1 ? Heu, comme ça ? Ou alors j'ai pas compris le jeu. |
Charly M. 25/09/13 (20:03) : 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) : 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) : 4609 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) 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) : 1 | Elune MorningwoodJumper 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) : 4609 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 versionLe 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 versionSur 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) 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 ? |
Compte détruit 02/10/13 (18:35) : 1 | Elune MorningwoodJumper a écrit :Et pourtant tres difficile pour mes eleves, qui ne sont pas au point en probas. Du coup, ca fait une intro sympa. -- Mouton |