INSERT INTO Utilisateur VALUES('admin@gmail.com','Admin','$2y$10$0uRkVGPIop.lWuF.QYXwJe8dTXPULbOadgZ49JgdFlq2Ywi3QHZHO',1);;
INSERT INTO Utilisateur VALUES('no@gmail.com','Noé','$2y$10$mZoWHkT./GEqnXnKUXrO8e8NTl7gE5QybjU/9mwty1M7KZDTAFYPi',0);
INSERT INTO Utilisateur VALUES('na@gmail.com','Nathan','$2y$10$G9eR4c36K9Sev5MYWsBfOOU24KsE2MgH.DvA7yghYC1wXo/gxxug2',0);
INSERT INTO Utilisateur VALUES('jo@gmail.com','Johan','$2y$10$hFlnpJeVVHwiwA2M6RZlJO15R6fbnYr85lvzgCcbk25KTXi/jBta6',0);
INSERT INTO Utilisateur VALUES('pascal.lafourcade@uca.fr','Pascal','$2y$10$dtyXN7Lwv0GFhP6TaMHYq.n2M02RZXpnKtpCd72HdxhE93YGxrvB6',0);
INSERT INTO Enigme VALUES(3,'CesarEncrypt','É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é.)','Alors, 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'') retourne ''97'' et ord(''b'')) retourne ''98''.','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',replace(replace('def EncryptVerif(text, key):\r\n result = ""\r\n for i in range(len(text)):\r\n char = text[i]\r\n if(char==" "):\r\n result+=" "\r\n elif (char.isupper()):\r\n result += chr((ord(char) + key-65) % 26 + 65)\r\n else:\r\n result += chr((ord(char) + key - 97) % 26 + 97)\r\n return result','\r',char(13)),'\n',char(10)),replace(replace('Import random as r\r\ndef testEncrypte(x):\r\n Encrypt("",1)\r\n if(Encrypt("Hello world",2)!="Jgnnq yqtnf"):\r\n return False\r\n if(Encrypt("Scripted",9)!="Blarycnm"):\r\n return False\r\n for i in range(x):\r\n l=""\r\n cle=r.randint(1,26)\r\n for i in range(r.randint(1,10)):\r\n l+=chr(r.randint(97,122))\r\n if(Encrypt(l,cle)!=EncryptVerif(l,cle)):\r\n return False\r\n return True\r\n \r\nprint(testEncrypte(5))','\r',char(13)),'\n',char(10)),2,0,0,'def Encrypt(text, key):');
INSERT INTO Enigme VALUES(4,'Chouette','Écrire une fonction chouette qui, pour une valeur donnée, renvoie une liste contenant toutes les combinaisons possible avec 3 dés pouvant donner cette valeur. La valeur peut aller de 3 à 18. Les solutions doivent être uniques.(1,2,3) et (3,2,1) sont la même solution.',replace(replace('On cherche à savoir si la somme de 3 dés (trois variables allant de 1 à 6) est égale à une valeur donnée.\r\n
On peut donc faire une boucle imbriquée pour tester toutes les combinaisons possibles. Si la somme est égale à la valeur donnée, on l''ajoute à la liste.\r\n
Pour éviter les doublons, on peut trier les valeurs avant de l''ajouter à la liste.\r\n\r\n for d1 in range(1, 7):
','\r',char(13)),'\n',char(10)),'Il n''y a pas de rappel pour cette énigme.','Entrée : 7
for d2 in range (1, 7):
#Faire...
Sortie : [[1,1,5],[1,2,4],[1,3,3],[2,2,3]]',replace(replace('def chouetteVerif(valeur): \r\n res=list() \r\n for i in range(1, 7): \r\n for j in range(i, 7): \r\n for k in range(j, 7): \r\n if (i+j+k) == valeur: \r\n
res.append([i, j, k]) \r\n return res','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef test_chouette(n):\r\n chouette(1)\r\n listTest=[]\r\n for i in range(0,n):\r\n listTest.append(r.randint(3,18))\r\n for i in listTest:\r\n listVerif=chouette(i)\r\n listUser=chouetteVerif(i)\r\n for i in listUser:\r\n if(i not in listVerif):\r\n return False\r\n for i in listVerif:\r\n if(i not in listUser):\r\n
return False\r\n return True\r\n\r\nprint(test_chouette(5))','\r',char(13)),'\n',char(10)),6,0,0,'def chouette(valeur):');
INSERT INTO Enigme VALUES(5,'Palindrome','Écrire une fonction estPalindrome(var) qui prend en argument une chaine de caractère et qui renvoie True si c’est un palindrome et False sinon.','En python l’instruction [::-1] permet d’inverse une chaine de caractère.
print("ae"[::-1]) -> ea.','Un palindrome est une chaine de caractère dont l''ordre des lettres reste le même, qu''on les lise de gauche à droite ou de droite à gauche.','estPalindrome(''12321'') renvoie True',replace(replace('def estPalindromeVerif(var):\r\n if(var == var[::-1]):\r\n return True\r\n else:\r\n return False','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef testPalindrome(x):\r\n l=[1,2,3,2,1]\r\n if(estPalindrome(l)==False):\r\n return False\r\n l=[9,5,7,7,9]\r\n if(estPalindrome(l)==True):\r\n return False\r\n l=[]\r\n for i in range(x):\r\n for j in range(r.randint(1,10)):\r\n l.append(r.randint(0,9))\r\n if(estPalindromeVerif(l)!=estPalindrome(l)):\r\n return False\r\n l=[]\r\n return True\r\n\r\nprint(testPalindrome(5))','\r',char(13)),'\n',char(10)),1,0,0,'def estPalindromge(var):');
INSERT INTO Enigme VALUES(10,'CesarDecrypt','Écrire une fonction Decrypt qui prend en argument un message et une clé et qui retourne le message décrypté avec le code César.(les espace ne seront pas encodé.)','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'') retourne ''97'' et ord(''b'')) retourne ''98''.','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',replace(replace('def DecryptVerif(text, key):\r\n result = ""\r\n for i in range(len(text)):\r\n char = text[i]\r\n if(char==" "):\r\n result+=" "\r\n elif (char.isupper()):\r\n result += chr((ord(char) - key-65) % 26 + 65)\r\n else:\r\n result += chr((ord(char) - key - 97) % 26 + 97)\r\n return result','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef testDecrypte(x):\r\n Decrypt("",1)\r\n if(Decrypt("Jgnnq yqtnf",2)!="Hello world"):\r\n return False\r\n if(Decrypt("Blarycnm",9)!="Scripted"):\r\n return False\r\n for i in range(x):\r\n l=""\r\n cle=r.randint(1,26)\r\n for i in range(r.randint(1,10)):\r\n l+=chr(r.randint(97,122))\r\n if(Decrypt(l,cle)!=DecryptVerif(l,cle)):\r\n return False\r\n return True\r\n \r\nprint(testDecrypte(5))','\r',char(13)),'\n',char(10)),4,0,0,'def Decrypt(text, key):');
INSERT INTO Enigme VALUES(12,'ChuckNorris','Coder un fonction binaire2unaire qui prend en argument un nombre binaire et qui le retourne le nombre codé via le codage Chuck Norris.','En python les chaines de carractère peuvent être utilisé comme une liste.','Dans le codage Chuck Norris, le ''0'' est codé ''00'' et le ''1'' est codé ''0''. Puis un espace, puis ensuite autant de ''0'' que le message contient de ''0'' ou ''1'' successifs.
Par exemple, la suite "10000111" sera traduite de la façon suivante : "0 0 00 0000 0 000','Entrée : Sortie :
10000111 0 0 00 0000 0 000',replace(replace('def binaire2unitaireVerif(x):\r\n rep=0\r\n pre=x[0]\r\n unitaire=""\r\n for i in x:\r\n if(pre==i):\r\n rep+=1\r\n else:\r\n
if(pre=="1"):\r\n unitaire=unitaire+"0 "\r\n else:\r\n unitaire=unitaire+"00 "\r\n for j in range(rep):\r\n unitaire=unitaire+"0"\r\n unitaire=unitaire+" "\r\n rep=1\r\n pre=i\r\n if(pre=="1"):\r\n unitaire=unitaire+"0 "\r\n else:\r\n unitaire=unitaire+"00 " \r\n for i in range(rep):\r\n unitaire=unitaire+"0"\r\n return unitaire','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef testChuckNorris(x):\r\n l="0000000"\r\n binaire2unitaire(l)\r\n if(binaire2unitaire(l)!="00 0000000"):\r\n return False\r\n l="1111111"\r\n if(binaire2unitaire(l)!="0 0000000"):\r\n return False\r\n l="1101001"\r\n if(binaire2unitaire(l)!="0 00 00 0 0 0 00 00 0 0"):\r\n return False\r\n l=""\r\n for i in range(x):\r\n for j in range(r.randint(1,10)):\r\n
l=l+str(r.randint(0,1))\r\n if(binaire2unitaire(l)!=binaire2unitaireVerif(l)):\r\n return False\r\n l=""\r\n return True\r\n\r\nprint(testChuckNorris(5))','\r',char(13)),'\n',char(10)),3,0,0,'def binaire2unitaire(x):');
INSERT INTO Enigme VALUES(13,'Hanoi',' Écrire une fonction hanoi permettant de résoudre le problème des tours d’hanoi peu importe le nombre d''entrées dans la fonction.
Cette fonction devra prend en paramètre le nombre de disques, le nom de la tour de départ, le nom la tour d''arrivée et le nom la tour intermédiaire.
Elle devra retoure une liste contenant les déplacements à effectuer (cf exemple ci-dessous).','Pense à utiliser une fonction récursive pour résoudre ce problème. Pour rappel une fonction récursive est une fonction qui s''appelle elle même. ','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'']]',replace(replace('def hanoi_rec(l,nb_disks, start, middle, end):\r\n if(nb_disks == 1):\r\n return l.append([start,end])\r\n else:\r\n hanoi_rec(l,nb_disks - 1, start, end, middle)\r\n l.append([start,end])\r\n hanoi_rec(l,nb_disks - 1, middle, start, end)\r\n\r\ndef hanoiVerif(nb_disks,start, middle, end):\r\n l=[]\r\n hanoi_rec(l,nb_disks,start, middle, end)\r\n return l','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef testhanoi(x):\r\n hanoi(1,"A","B","C")\r\n if(hanoi(3,"A","B","C")!=[[''A'',''C''],[''A'',''B''],[''C'',''B''],[''A'',''C''],[''B'',''A''],[''B'',''C''],[''A'',''C'']]):\r\n return False\r\n for i in range(x):\r\n j=r.randint(1,4)\r\n if(hanoi(j,"Z","E","R")!=hanoiVerif(j,"Z","E","R")):\r\n return False\r\n return True\r\n\r\nprint(testhanoi(5))','\r',char(13)),'\n',char(10)),7,0,0,'def hanoi(nb_disks,start, middle, end):');
INSERT INTO Enigme VALUES(14,'TrianglePascal','Écrire 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. La fonction devra renvoyer une liste contenant les lignes du triangle de Pascal. (cf l''exemple pour plus de détails).','Il n''y a pas d''aide pour cette énigme','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.
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 )','Entrée : 4
Sortie : [[1],[1,1],[1,2,1],[1,3,3,1]]',replace(replace('def estTriangleDePascal(n):\r\n if(n==0):\r\n return []\r\n if(n==1):\r\n return [[1]]\r\n triangle=[[1],[1, 1]]\r\n columns=n\r\n for line in range(2,n):\r\n triangle.append([1])\r\n for column in range(1, line):\r\n triangle[line].append(triangle[line - 1][column - 1] + triangle[line - 1][column])\r\n triangle[line].append(1)\r\n return triangle','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef testTriangleDePascal(n):\r\n triangle_pascal(0)\r\n listTest=[0,1]\r\n for i in range(0,n):\r\n listTest.append(r.randint(5,140))\r\n for i in listTest:\r\n if(triangle_pascal(i)!=estTriangleDePascal(i)):\r\n return False\r\n return True\r\n \r\nprint(testTriangleDePascal(5))','\r',char(13)),'\n',char(10)),8,0,0,'def triangle_pascal(n):');
INSERT INTO Enigme VALUES(19,'Palindrome','Écrire une fonction estPalindrome(var) qui prend en argument un entier et qui renvoie True si c’est un palindrome et False sinon.','En python l’instruction [::-1] permet d’inverse une chaine de caractère.
print("ae"[::-1]) -> ea.','Il n''y a pas de rappel pour cette enigme.','estPalindrome(12321) renvoie True',replace('def estPalindromeVerif(var):\n if(var == var[::-1]):\n return True\n else:\n return False','\n',char(10)),replace('import random as r\ndef testPalindrome(x):\n l=[1,2,3,2,1]\n if(estPalindrome(l)==False):\n return False\n l=[9,5,7,7,9]\n if(estPalindrome(l)==True):\n return False\n l=[]\n for i in range(x):\n for j in range(r.randint(1,10)):\n l.append(r.randint(0,9))\n if(estPalindromeVerif(l)!=estPalindrome(l)):\n return False\n l=[]\n return True\n\nprint(testPalindrome(5))','\n',char(10)),0,600,100,'def estPalindrome(var):');
-- INSERT INTO Enigme VALUES(20,'CesarDecrypt','Écrire une fonction Decrypt qui prend en argument un message et une clé et qui retourne le message décrypté avec le code César.(les espace ne seront pas encodé.)','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'') retourne ''97'' et ord(''b'')) retourne ''98''.','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',replace('def DecryptVerif(text, key):\n result = ""\n for i in range(len(text)):\n char = text[i]\n if(char==" "):\n result+=" "\n elif (char.isupper()):\n result += chr((ord(char) - key-65) % 26 + 65)\n else:\n result += chr((ord(char) - key - 97) % 26 + 97)\n return result','\n',char(10)),replace('import random as r\ndef testDecrypte(x):\n Decrypt("",1)\n if(Decrypt("Jgnnq yqtnf",2)!="Hello world"):\n return False\n if(Decrypt("Blarycnm",9)!="Scripted"):\n return False\n for i in range(x):\n l=""\n cle=r.randint(1,26)\n for i in range(r.randint(1,10)):\n l+=chr(r.randint(97,122))\n if(Decrypt(l,cle)!=DecryptVerif(l,cle)):\n return False\n return True\n \nprint(testDecrypte(5))','\n',char(10)),0,600,100,'def Decrypt(text, key):');
-- INSERT INTO Enigme VALUES(27,'Alternance','Coder la fonction tri. Cette fonction prend en paramètre deux chaine de caractère, prend tour à tour les caractères des deux chaines et retourne la chaine de caractère trié. (cf l''exemple)','Il n''y a pas d''aide pour cette énigme','Il n''y a pas de rappel pour cette énigme','Entrée : "Hlowrd", "el ol"
Sortie : "Hello world" ',replace(replace('def triVerif(a,b):\r\n s = ""\r\n i = 0\r\n while len(s)