diff --git a/EnigmePython/hanoi.py b/EnigmePython/hanoi.py index 455e8dc9..f0476896 100644 --- a/EnigmePython/hanoi.py +++ b/EnigmePython/hanoi.py @@ -1,17 +1,32 @@ +import random as r def hanoi(nb_disks,start, middle, end): l=[] hanoi_rec(l,nb_disks,start, middle, end) return l +def hanoiVerif(nb_disks,start, middle, end): + l=[] + hanoi_rec(l,nb_disks,start, middle, end) + return l + + def hanoi_rec(l,nb_disks, start, middle, end): - if nb_disks == 1: + if(nb_disks == 1): return l.append([start,end]) else: hanoi_rec(l,nb_disks - 1, start, end, middle) l.append([start,end]) hanoi_rec(l,nb_disks - 1, middle, start, end) - -print(hanoi(4,"A","B","C")) +def testhanoi(x): + if(hanoi(3,"A","B","C")!=[['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]): + return False + for i in range(x): + j=r.randint(1,4) + if(hanoi(j,"Z","E","R")!=hanoiVerif(j,"Z","E","R")): + return False + return True + +print(testhanoi(5)) diff --git a/WEB/src/JS/Hanoi.js b/WEB/src/JS/Hanoi.js new file mode 100644 index 00000000..845484c5 --- /dev/null +++ b/WEB/src/JS/Hanoi.js @@ -0,0 +1,37 @@ +//~ Function that test the user code + +async function submit(){ + var test = editor.getValue()+`\n +import random as r +def hanoi_rec(l,nb_disks, start, middle, end): + if(nb_disks == 1): + return l.append([start,end]) + else: + hanoi_rec(l,nb_disks - 1, start, end, middle) + l.append([start,end]) + hanoi_rec(l,nb_disks - 1, middle, start, end) + +def hanoiVerif(nb_disks,start, middle, end): + l=[] + hanoi_rec(l,nb_disks,start, middle, end) + return l + +def testhanoi(x): + if(hanoi(3,"A","B","C")!=[['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]): + return False + for i in range(x): + j=r.randint(1,4) + if(hanoi(j,"Z","E","R")!=hanoiVerif(j,"Z","E","R")): + return False + return True + +print(testhanoi(5)) + `; + exec("print ('True')", "code"); + exec(test, "solution"); + result.innerHTML = "Test en cours..."; + await new Promise(r => setTimeout(r, 1500)); + check(); +} + + \ No newline at end of file diff --git a/WEB/src/JS/TrianglePascal.js b/WEB/src/JS/TrianglePascal.js new file mode 100644 index 00000000..73b9a44c --- /dev/null +++ b/WEB/src/JS/TrianglePascal.js @@ -0,0 +1,38 @@ +//~ Function that test the user code + +async function submit(){ + var test = editor.getValue()+`\n +import random as r +def estTriangleDePascal(n): + if(n==0): + return [] + if(n==1): + return [[1]] + triangle=[[1],[1, 1]] + columns=n + for line in range(2,n): + triangle.append([1]) + for column in range(1, line): + triangle[line].append(triangle[line - 1][column - 1] + triangle[line - 1][column]) + triangle[line].append(1) + return triangle + +def testTriangleDePascal(n): + listTest=[0,1] + for i in range(0,n): + listTest.append(r.randint(5,140)) + for i in listTest: + if(TriangleDePascal(i)!=estTriangleDePascal(i)): + return False + return True + +print(testTriangleDePascal(5)) + `; + exec("print ('True')", "code"); + exec(test, "solution"); + result.innerHTML = "Test en cours..."; + await new Promise(r => setTimeout(r, 1500)); + check(); +} + + \ No newline at end of file diff --git a/WEB/src/JS/cesarDecrypt.js b/WEB/src/JS/cesarDecrypt.js index ec4b11c4..19526772 100644 --- a/WEB/src/JS/cesarDecrypt.js +++ b/WEB/src/JS/cesarDecrypt.js @@ -16,9 +16,9 @@ def DecryptVerif(text, key): return result def testDecrypte(x): - if(Decrypt("Hello world",2)!="Jgnnq yqtnf"): + if(Decrypt("Jgnnq yqtnf",2)!="Hello world"): return False - if(Decrypt("Scripted",9)!="Blarycnm"): + if(Decrypt("Blarycnm",9)!="Scripted"): return False for i in range(x): l="" diff --git a/WEB/src/pages/Enigme/CesarDecrypt.html b/WEB/src/pages/Enigme/CesarDecrypt.html index 97d1618b..6c4b9c8b 100644 --- a/WEB/src/pages/Enigme/CesarDecrypt.html +++ b/WEB/src/pages/Enigme/CesarDecrypt.html @@ -32,19 +32,16 @@
Écrire une fonction Decrypt qui prend en argument un essage crypté et une clé et qui retourne le message decrypté avec le code César.(les espace ne seront pas encodé.) -
Le code César (ou chiffre de César ) est un chiffrement par substitution,
-
où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet .
-
Par exemple A avec une clé 2 devient C.
-
Le code César (ou chiffre de César ) est un chiffrement par substitution, où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet. Par exemple A avec une clé 2 devient C. +
Entrée : Sortie :
-[cyber,3] fbehu
'fbehu',3 cyber
- La fonction ord(char) de python permet de retourner l’Unicode(standard d’encodage de caractères) d'un caractère.
-
Par exemple, ord('a') retourné '97' et ord('b’) retourne 98.
+ La fonction ord(char) de python permet de retourner l’Unicode (standard d’encodage de caractères) d'un caractère. Par exemple, ord('a') retourné '97' et ord('b’) retourne 98.
- Écrire une fonction Encrypt qui prend en argument un message et une clé et qui retourne - le message crypté avec le code César.(les espace ne seront pas encodé.) + Écrire une fonction Encrypt qui prend en argument un message et une clé et qui retourne le message crypté avec le code César.(les espace ne seront pas encodé.)
Le code César (ou chiffre de César ) est un chiffrement par substitution,
où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet .
Par exemple A avec une clé 2 devient C.
Entrée : Sortie :
-[fbehu,3] cyber
Entrée : Sortie :
+[fbehu,3] cyber
- La fonction ord(char) de python permet de retourner l’Unicode(standard d’encodage de caractères) d'un caractère.
-
Par exemple, ord('a') retourné '97' et ord('b’) retourne 98.
+ La fonction ord(char) de python permet de retourner l’Unicode (standard d’encodage de caractères) d'un caractère. Par exemple, ord('a') retourné '97' et ord('b’) retourne 98.
Entrée : 7
+Sortie : [[1,1,5],[1,2,4],[1,3,3],[2,2,3]]
On cherche à savoir si la somme de 3 dés (trois variables allant de 1 à 6) est égale à une valeur donné.
Pour cela on peut utiliser la structure suivante on d1 ( le premier dé) va varier de 1 à 6.
. diff --git a/WEB/src/pages/Enigme/Hanoi.html b/WEB/src/pages/Enigme/Hanoi.html new file mode 100644 index 00000000..c86554bb --- /dev/null +++ b/WEB/src/pages/Enigme/Hanoi.html @@ -0,0 +1,95 @@ + + + + + + ++ Faire une fonction permettant de résoudre le problème des tours d’hanoi peu importe le nombre d'entrées dans la fonction. +
Le problème des tours de hanoi est le suivant, on souhaite déplacer un certain nombre de disque de taille différente et ils sont et doivent restés empilés de telle sorte qu’aucun disque d’une certaine taille n soit placé en dessous d’un disque de taille plus grande en sachant qu’il n’y a que 3 piles. +
Entrée :3,"A","B","C"
+Sortie : [['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]
+Une fonction récursive est une fonction qui fait appelle à elle même
++ Faire une fonction triangle_pascal permettant d’afficher le triangle de Pascal jusqu'à un certain nombre n de lignes. Bien sùr n sera passé en argument à la fonction. +
Entrée : 4
+Sortie : [[1],[1,1],[1,2,1],[1,3,3,1]]
Le triangle arithmétique de Pascal est le triangle dont la ligne d'indice n (n = 0, 1, 2...) donne les coefficients binomiaux (n) pour p = 0, 1, 2..., n. + (p) +La construction de ce triangle de Pascal est simple, +on part de 1 à la première ligne, par convention c'est la ligne zéro (n = 0) +Pour avoir un terme de la ligne suivante, on prend le terme juste au-dessus, et on lui additionne celui qui est juste avant, (0 si il n'y a rien). +Mathématiquement, on applique la formule : +(n+1) = (n) + ( n ) +( p ) (p) (p-1) +
+