diff --git a/import.sql b/import.sql index 42f9ff1f..2cbb7d4d 100644 --- a/import.sql +++ b/import.sql @@ -1,72 +1,9 @@ -PRAGMA foreign_keys=OFF; -BEGIN TRANSACTION; -CREATE TABLE Utilisateur( -email varchar(50) PRIMARY KEY, -pseudo varchar(50), -mdp varchar(50), -estAdmin boolean -); -INSERT INTO Utilisateur VALUES('admin@gmail.com','Admin','$2y$10$0uRkVGPIop.lWuF.QYXwJe8dTXPULbOadgZ49JgdFlq2Ywi3QHZHO',1); -INSERT INTO Utilisateur VALUES('antoine.gouttebelle@gmail.com','TATMACHINE','$2y$10$RjftwlaNOee3t3zsb7xMlOI7for84tX15ZdLa.4ADRX5D.3kY/302',0); -INSERT INTO Utilisateur VALUES('johan@mail.fr','p','$2y$10$/jgfHaDQwt6pJvtdQ3.llu83EQrBO8iD8WzQcWcVtA2OMn64RzI9q',0); -INSERT INTO Utilisateur VALUES('johan2@mail.fr','p','$2y$10$oK5WxkAkQ6hIW0FsZYYMce1kPM/8wY8FTCnm90azKLMOXY8H0umGK',0); -INSERT INTO Utilisateur VALUES('p@gmail.com','Pierre','$2y$10$CZ8zna7adH0o5kVm0eNXB.hFQr4gD9Oo7ZhQaYx4AjG6xJx0sTF.2',0); -INSERT INTO Utilisateur VALUES('johan3@mail.fr','p','$2y$10$DlorSj6.Ykbtus9ymv4nB..j/VIjoAZoHD1xF7oOwbV3RT.dPOrQO',0); -INSERT INTO Utilisateur VALUES('b@gmail.com','azertyuiop','$2y$10$7NqvKBySmpei0tntyNfG.uM.X6Fpqw00TPz1/Qw/RTlJ5hRelHO0.',0); -INSERT INTO Utilisateur VALUES('mateocenteno63@gmail.com','macenteno','$2y$10$8.xeY5c4GtX9YEt1v5chx.TgF2hL7rarPiVgGeqXMnd8564IITG06',0); -INSERT INTO Utilisateur VALUES('su@gmail.com','su','$2y$10$ztuprpgZZfrtJIdYrl2OMubDqFKt2S767qJGfvPn3FoQWwzqwhynm',0); -INSERT INTO Utilisateur VALUES('dupont@gmail.com','dupont','$2y$10$jx4l4vKys2.fs0D1xrEZ1eUFEf0WpzrPp8WsMWWr1HxrrtV7dGtR2',0); -INSERT INTO Utilisateur VALUES('paul@gmail.com','paul','$2y$10$zKDR9Wp5jeqmr11qY6rX7uVuyO/JZy6Q2reqU9nkM05JVIKq/osSW',0); -INSERT INTO Utilisateur VALUES('boileaunathan42@gmail.com','naboileau','$2y$10$sNjl634ae8Oe7Ah2GdaJMubeu3KBspi5GD0wn8E5fdpishuHLjVg6',0); -INSERT INTO Utilisateur VALUES('test@test.fr','test@test.fr','$2y$10$rq1Rb5a05HhZ693QBQp2LO9P6udkwk7OoqulCDuItGlKEwuMNl5zu',0); -INSERT INTO Utilisateur VALUES('test@gmail.com','aaaaa','$2y$10$gyOdCGAUDhzyFxBIkpqwgulkbPujsuz1/weJbb1Nk8HWw4kJ8IWq6',0); -INSERT INTO Utilisateur VALUES('gg@hotmail.fr','Vision','$2y$10$babBqjYBRIYRr2f0LVyGQ.Lt9vdr33lZ6YRcixDjekdoy5Qfwkg.G',0); -INSERT INTO Utilisateur VALUES('d@gmail.com','nathan.boileau','$2y$10$6AlFbRo2bOXI7zaMeBQMYOUBjnAii9OTFPaIVQe409Q/GfS6.oKvW',0); -INSERT INTO Utilisateur VALUES('player1@gmail.com','IamPlayer1','$2y$10$yaIIpY0VPVB74MMBc2PZxeI.eQEQgj59YMk3cL2LmW61JfIL5rE0K',0); -INSERT INTO Utilisateur VALUES('player2@gmail.com','IamPlayer2','$2y$10$.LCdIv5LAOjPkOXGHAlQuuY2umZUBi3lsmbI.ADD41RVsNCNqoAeS',0); -INSERT INTO Utilisateur VALUES('p1@gmail.com','p1','$2y$10$YaMRukboTSswD1OTdI.oLu2fRK2uDmE48OjqRod1/rgFyMKBzJaWu',0); +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 Utilisateur VALUES('mephou@hotmail.fr','MrR','$2y$10$N2pM2AZkJcWZmEaTQmGYrODmFL1Xbr6b6tF0DEWOpYD1IXD6Prv0G',0); -CREATE TABLE Partie( -id integer PRIMARY KEY AUTOINCREMENT, -dateDebut date NOT NULL -); -INSERT INTO Partie VALUES(491,'2023-01-18 18:06:16'); -INSERT INTO Partie VALUES(493,'2023-01-19 14:59:38'); -INSERT INTO Partie VALUES(494,'2023-01-19 15:00:57'); -INSERT INTO Partie VALUES(495,'2023-01-19 15:02:45'); -INSERT INTO Partie VALUES(496,'2023-01-19 18:06:16'); -CREATE TABLE Participer( - partie int REFERENCES Partie(id), - utilisateur varchar(50) REFERENCES Utilisateur(email), - etat int CHECK (etat IN (0,1,2)), -- etat 0 = enAttente etat 1 = enCours etat 2 = fini - PRIMARY KEY(partie, utilisateur) -); -INSERT INTO Participer VALUES(491,'na@gmail.com',2); -INSERT INTO Participer VALUES(491,'pascal.lafourcade@uca.fr',2); -INSERT INTO Participer VALUES(493,'p@gmail.com',NULL); -INSERT INTO Participer VALUES(494,'p@gmail.com',NULL); -INSERT INTO Participer VALUES(495,'p@gmail.com',2); -INSERT INTO Participer VALUES(495,'admin@gmail.com',2); -INSERT INTO Participer VALUES(496,'na@gmail.com',2); -INSERT INTO Participer VALUES(496,'admin@gmail.com',2); -CREATE TABLE Enigme( -id integer PRIMARY KEY AUTOINCREMENT, -nom varchar(50), -enonce varchar(250) NOT NULL, -aide varchar(250), -rappel varchar(250), -exemple varchar(250), -solution varchar(250) NOT NULL, -test varchar(250) NOT NULL, -ordre integer CHECK (ordre >=-1), -tempsDeResolution numeric CHECK (tempsDeResolution >=0), -points numeric CHECK (points >=0), -prompt varchar(250) -); + 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):
for d2 in range (1, 7):
#Faire...
','\r',char(13)),'\n',char(10)),'Il n''y a pas de rappel pour cette énigme.','Entrée : 7

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 @@ -80,48 +17,4 @@ INSERT INTO Enigme VALUES(13,'Hanoi',' É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)i):\r\n s += a[i]\r\n if(len(b)>i):\r\n s += b[i]\r\n i += 1\r\n return s','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef triTest(x):\r\n a = "Hlowrd"\r\n b = "el ol"\r\n if(triVerif(a,b)!=tri(a,b)):\r\n return False\r\n return True\r\n\r\nprint(triTest(5)) ','\r',char(13)),'\n',char(10)),5,0,0,'def trie(a,b):'); -CREATE TABLE Resoudre( -utilisateur varchar(50) REFERENCES Utilisateur(email), -enigme int REFERENCES Enigme(id), -partie int REFERENCES Partie(id), -classement int CHECK (classement >0), -indexEnigme int CHECK (indexEnigme >0), -temps numeric CHECK (temps >0), -code varchar(500), -ended boolean, -enMulti boolean, -PRIMARY KEY(utilisateur, enigme, partie) -); -INSERT INTO Resoudre VALUES('na@gmail.com',20,491,1,1,14,'',1,1); -INSERT INTO Resoudre VALUES('pascal.lafourcade@uca.fr',20,491,2,1,NULL,'',1,1); -INSERT INTO Resoudre VALUES('na@gmail.com',19,491,2,2,63,'',1,1); -INSERT INTO Resoudre VALUES('pascal.lafourcade@uca.fr',19,491,1,2,42,'',1,1); -INSERT INTO Resoudre VALUES('p@gmail.com',5,493,NULL,NULL,1,replace('def estPalindromge(var):\n return var == var[::-1]','\n',char(10)),1,0); -INSERT INTO Resoudre VALUES('p@gmail.com',3,494,NULL,NULL,1,'',0,0); -INSERT INTO Resoudre VALUES('p@gmail.com',20,495,2,1,NULL,'',1,1); -INSERT INTO Resoudre VALUES('admin@gmail.com',20,495,2,1,NULL,'',1,1); -INSERT INTO Resoudre VALUES('p@gmail.com',19,495,1,2,142,'',1,1); -INSERT INTO Resoudre VALUES('admin@gmail.com',19,495,2,2,NULL,'',1,1); -INSERT INTO Resoudre VALUES('na@gmail.com',19,496,2,1,NULL,'',1,1); -INSERT INTO Resoudre VALUES('admin@gmail.com',19,496,1,1,18,'',1,1); -INSERT INTO Resoudre VALUES('admin@gmail.com',20,496,2,2,NULL,'',1,1); -INSERT INTO Resoudre VALUES('na@gmail.com',20,496,2,2,NULL,'',1,1); -CREATE TABLE Contenir( -partie int REFERENCES Partie(id), -enigme int REFERENCES Enigme(id), -indexEnigme numeric , -PRIMARY KEY(partie, enigme) -); -INSERT INTO Contenir VALUES(491,20,1); -INSERT INTO Contenir VALUES(491,19,2); -INSERT INTO Contenir VALUES(493,5,NULL); -INSERT INTO Contenir VALUES(494,3,NULL); -INSERT INTO Contenir VALUES(495,20,1); -INSERT INTO Contenir VALUES(495,19,2); -INSERT INTO Contenir VALUES(496,19,1); -INSERT INTO Contenir VALUES(496,20,2); -DELETE FROM sqlite_sequence; -INSERT INTO sqlite_sequence VALUES('Partie',496); -INSERT INTO sqlite_sequence VALUES('Enigme',27); -COMMIT; \ No newline at end of file +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)i):\r\n s += a[i]\r\n if(len(b)>i):\r\n s += b[i]\r\n i += 1\r\n return s','\r',char(13)),'\n',char(10)),replace(replace('import random as r\r\ndef triTest(x):\r\n a = "Hlowrd"\r\n b = "el ol"\r\n if(triVerif(a,b)!=tri(a,b)):\r\n return False\r\n return True\r\n\r\nprint(triTest(5)) ','\r',char(13)),'\n',char(10)),5,0,0,'def trie(a,b):'); \ No newline at end of file