Merge branch 'master' of https://codefirst.iut.uca.fr/git/nathan.boileau/Scripted
continuous-integration/drone/push Build is failing Details

ServeurDeTest
Pierre BALLANDRAS 2 years ago
commit c43c1c6d74

@ -24,4 +24,3 @@ steps:
secrets: secrets:
- source: DEPLOY_KEY - source: DEPLOY_KEY
rm: false rm: false

@ -0,0 +1,2 @@
php_flag display_errors on
php_value error_reporting E_ALL

@ -0,0 +1,3 @@
display_errors = On
log_errors = Off
error_reporting = E_ALL & E_NOTICE & E_DEPRECATED & E_STRICT & E_WARNING

@ -37,7 +37,7 @@ class Autoload
$dir =array('Model/','./','Config/','Controller/','Metier/', 'Factory/'); $dir =array('Model/','./','Config/','Controller/','Metier/', 'Factory/');
foreach ($dir as $d){ foreach ($dir as $d){
$file=$rep.$d.$filename; $file=$rep.$d.$filename;
//echo $file; // echo $file."\n";
if (file_exists($file)) if (file_exists($file))
{ {
include $file; include $file;

@ -1,20 +1,10 @@
<?php <?php
//préfixe //préfixe
$rep = __DIR__ . '/../'; $rep = '';
// BD // BD
// $dsn = 'mysql:host=londres.uca.local; dbname=dbnogarnier1'; $dsn = './scripted.db';
// $user = 'nogarnier1'; // $dsn = 'C:\\wamp64\\www\\scripted.db';
// $password = 'achanger';
// scripted.db
// $dsn = 'mysql:host=localhost; dbname=scripted';
// $user = 'root';
// $password = 'p';
// SQULITE3
$dsn = './Model/scripted.db';
//Sel de hashage //Sel de hashage
$sel = "JeSuisUnSeldeHashageEtJeSuisUniqueEtTresSecuriseEtJeSuisTresLong"; $sel = "JeSuisUnSeldeHashageEtJeSuisUniqueEtTresSecuriseEtJeSuisTresLong";
@ -23,7 +13,7 @@ $sel = "JeSuisUnSeldeHashageEtJeSuisUniqueEtTresSecuriseEtJeSuisTresLong";
//Page //Page
$vues['main'] = 'View/src/pages/Main.php'; $vues['main'] = 'View/src/pages/Main.php';
$vues['presentation'] = 'View/src/pages/Presentation.html'; $vues['presentation'] = 'View/src/pages/Presentation.html';
$vues['login'] = '/View/src/pages/LogSign/Login.php'; $vues['login'] = 'View/src/pages/LogSign/Login.php';
$vues['signUp'] = 'View/src/pages/LogSign/SignUp.php'; $vues['signUp'] = 'View/src/pages/LogSign/SignUp.php';
$vues['test'] = 'View/src/pages/FirstTests/FirstTest1.html'; $vues['test'] = 'View/src/pages/FirstTests/FirstTest1.html';
$vues['next'] = 'View/src/pages/FirstTests/FirstTest'; $vues['next'] = 'View/src/pages/FirstTests/FirstTest';
@ -31,6 +21,11 @@ $vues['next'] = 'View/src/pages/FirstTests/FirstTest';
$vues['enigme'] = 'View/src/pages/Enigme/Palindrome.html'; $vues['enigme'] = 'View/src/pages/Enigme/Palindrome.html';
$vues['chouette'] = 'View/src/pages/Enigme/Chouette.html'; $vues['chouette'] = 'View/src/pages/Enigme/Chouette.html';
$vues['cesarEncrypt'] = 'View/src/pages/Enigme/CesarEncrypt.html'; $vues['cesarEncrypt'] = 'View/src/pages/Enigme/CesarEncrypt.html';
$vues['cesarDecrypt'] = 'View/src/pages/Enigme/CesarDecrypt.html';
$vues['chuckNorris'] = 'View/src/pages/Enigme/ChuckNorris.html';
$vues['hanoi'] = 'View/src/pages/Enigme/Hanoi.html';
$vues['trianglePascal'] = 'View/src/pages/Enigme/TrianglePascal.html';
$vues['doubleElement'] = 'View/src/pages/Enigme/DoubleElement.html';
//Error //Error
$vues['erreur'] = 'View/src/pages/Erreur.php'; $vues['erreur'] = 'View/src/pages/Erreur.php';

@ -0,0 +1,27 @@
<?php
Class Nettoyage{
public function clean($input)
{
// Supprime les espaces en début et fin de chaîne
$output = trim($input);
// Supprime les balises HTML
$output = strip_tags($output);
// Supprime les caractères spéciaux
// $output = htmlspecialchars($output);
return $output;
}
public function cleanEmail($input){
$output = $this->clean($input);
$output = filter_var($output, FILTER_SANITIZE_EMAIL);
return $output;
}
public function cleanInt($input){
$output = $this->clean($input);
$output = filter_var($output, FILTER_SANITIZE_NUMBER_INT);
return $output;
}
}

@ -5,26 +5,30 @@ class FrontController
{ {
try { try {
global $error, $view, $rep; global $error, $view, $rep;
$nettoyage = new Nettoyage();
session_start(); session_start();
// Check role permissions // Check role permissions
if (isset($_SESSION['role'])) { if (isset($_SESSION['role'])) {
$role = $_SESSION['role']; $role = $nettoyage->clean($_SESSION['role']);
} else { } else {
$role = "visitor"; $role = "visitor";
} }
// Check if action exists // Check if action exists
$action = $_REQUEST['action']; $action = $nettoyage->clean($_REQUEST['action']);
if ($role == "user") { if ($role == "user") {
if ($action == NULL) { if ($action == NULL) {
$_REQUEST['action'] = $action;
new UserController(); new UserController();
} else if (method_exists('UserController', $action) == false) {
$error = "Action non valide " . $action;
require($rep . $view['erreur']);
} }
// else if (method_exists('UserModel', $action) == false) {
// $error = "Action non valide " . $action;
// require($rep . $view['erreur']);
else { else {
$_REQUEST['action'] = $action;
new UserController(); new UserController();
} }
} else { } else {
$_REQUEST['action'] = $action;
new VisitorController(); new VisitorController();
} }
} catch (Exception $e) { } catch (Exception $e) {

@ -2,44 +2,61 @@
class UserController class UserController
{ {
private Connection $con; private UserModel $model;
private Nettoyage $nettoyage;
function __construct() function __construct()
{ {
try { try {
global $dsn, $rep, $vues, $error; global $dsn, $rep, $vues, $error;
$model = new UserModel(); $this->model = new UserModel();
$this->nettoyage = new Nettoyage();
$action = $_REQUEST['action']; $action = $_REQUEST['action'];
//register_event_handler('add_to_queue',array($this,"onAddToQueue"));
switch ($action) { switch ($action) {
case NULL: case NULL:
$model->goToHome(); $this->goToHome();
break;
case "goToPresentation":
$model->goToPresentation();
break; break;
case "goToHome": case "goToHome":
$model->goToHome(); $this->goToHome();
break; break;
case "goToTest": case "goToPresentation":
$model->goToTest(); $this->goToPresentation();
break; break;
case "goToEnigme": case "goToEnigme":
$model->goToEnigme(); $this->goToEnigme();
break;
case "goToTest":
$this->goToTest();
break; break;
case "goToChouette" : case "goToChouette" :
$model->goToChouette(); $this->goToChouette();
break; break;
case "goToCesarEncrypt": case "goToCesarEncrypt":
$model->goToCesarEncrypt(); $this->goToCesarEncrypt();
break; break;
case "goToQueue": case "goToCesarDecrypt":
$model->goToQueue(); $this->goToCesarDecrypt();
break;
case "goToChuckNorris" :
$this->goToChuckNorris();
break;
case "goToHanoi" :
$this->goToHanoi();
break;
case "goToTrianglePascal":
$this->goToTrianglePascal();
break;
case "goToDoubleElement":
$this->goToDoubleElement();
break; break;
case "goToNext": case "goToNext":
$model->goToNext(); $this->goToNext();
break;
case "goToQueue":
$this->goToQueue()();
break; break;
case "logout": case "logout":
$model->logout(); $this->logout();
break; break;
default: default:
$error = "Action non valide"; $error = "Action non valide";
@ -54,4 +71,141 @@ class UserController
require($rep . $vues['erreur']); require($rep . $vues['erreur']);
} }
} }
public function goToHome()
{
try {
global $rep, $vues;
require($rep . $vues['main']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToPresentation()
{
try {
global $rep, $vues;
require($rep . $vues['presentation']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToTest()
{
try {
global $rep, $vues;
require($rep . $vues['test']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToEnigme()
{
try {
global $rep, $vues;
require($rep . $vues['enigme']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToChouette()
{
try {
global $rep, $vues;
require($rep . $vues['chouette']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToCesarEncrypt()
{
try {
global $rep, $vues;
require($rep . $vues['cesarEncrypt']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToCesarDecrypt()
{
try {
global $rep, $vues;
require($rep . $vues['cesarDecrypt']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToChuckNorris()
{
try {
global $rep, $vues;
require($rep . $vues['chuckNorris']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToHanoi()
{
try {
global $rep, $vues;
require($rep . $vues['hanoi']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToTrianglePascal()
{
try {
global $rep, $vues;
require($rep . $vues['trianglePascal']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToDoubleElement()
{
try {
global $rep, $vues;
require($rep . $vues['doubleElement']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToNext()
{
try {
global $rep, $vues, $error;
$num = $this->nettoyage->cleanInt($_REQUEST['num']);
require($rep . $vues['next'].$_REQUEST['num'].".html");
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function goToQueue()
{
try {
global $rep, $vues, $error;
//require($rep . $vues['Queue']);
$this->model->addToQueue();
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
public function logout()
{
$_SESSION['role'] = 'visitor';
header('Location: index.php');
}
} }

@ -2,35 +2,34 @@
class VisitorController class VisitorController
{ {
private Connection $con; private VisitorModel $model;
function __construct() function __construct()
{ {
try { try {
global $dsn, $rep, $vues, $error; global $dsn, $rep, $vues, $error;
$model = new VisitorModel(); $this->model = new VisitorModel();
$action = $_REQUEST['action']; $action = $_REQUEST['action'];
switch ($action) { switch ($action) {
case NULL: case NULL:
$model->goToHome(); $this->goToHome();
break; break;
case "signUp": case "signUp":
$model->signUp(); $this->signUp();
break; break;
case "login": case "login":
$model->login(); $this->login();
break; break;
case "goToHome": case "goToHome":
$model->goToHome(); $this->goToHome();
break; break;
case "goToLogin": case "goToLogin":
$model->goToLogin(); $this->goToLogin();
break; break;
case "goToSignUp": case "goToSignUp":
$model->goToSignUp(); $this->goToSignUp();
break; break;
case "goToQueue": case "goToQueue":
$model->goToLogin(); $this->goToLogin();
break; break;
default: default:
$error = "Action non valide"; $error = "Action non valide";
@ -45,4 +44,62 @@ class VisitorController
require($rep . $vues['erreur']); require($rep . $vues['erreur']);
} }
} }
public function goToHome()
{
try {
global $rep, $vues;
require($rep . $vues['main']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToLogin()
{
try {
global $rep, $vues;
require($rep . $vues['login']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToSignUp()
{
try {
global $rep, $vues;
require($rep . $vues['signUp']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function signUp()
{
try {
global $rep, $vues, $error;
$this->model->signUp();
$this->goToHome();
} catch (PDOException $e) {
$error = "Erreur de connexion à la base de données.";
require($rep . $vues['erreur']);
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
public function login()
{
try {
global $rep, $vues, $error;
$this->model->login();
$this->goToHome();
} catch (PDOException $e) {
$error = "Erreur de connexion à la base de données.";
require($rep . $vues['erreur']);
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
} }

@ -5,6 +5,8 @@ class UserModel
private EnigmeGateway $enigme_gateway; private EnigmeGateway $enigme_gateway;
private PartieGateway $partie_gateway; private PartieGateway $partie_gateway;
private UtilisateurGateway $utilisateur_gateway; private UtilisateurGateway $utilisateur_gateway;
private Nettoyage $nettoyage;
private Validation $validation;
function __construct() function __construct()
{ {
@ -13,109 +15,17 @@ class UserModel
$this->enigme_gateway = new EnigmeGateway(); $this->enigme_gateway = new EnigmeGateway();
$this->partie_gateway = new PartieGateway(); $this->partie_gateway = new PartieGateway();
$this->utilisateur_gateway = new UtilisateurGateway(); $this->utilisateur_gateway = new UtilisateurGateway();
$this->nettoyage = new Nettoyage();
$this->validation = new Validation();
} catch (Exception $e) { } catch (Exception $e) {
$error = $e->getMessage(); $error = $e->getMessage();
require($rep . $view['erreur']); require($rep . $view['erreur']);
} }
} }
public function addToQueue()
public function goToPresentation()
{
global $rep, $vues, $error;
try {
require($rep . $vues['presentation']);
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function goToHome()
{
global $rep, $vues, $error;
try {
require($rep . $vues['main']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToEnigme()
{
global $rep, $vues, $error;
try {
require($rep . $vues['enigme']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToChouette()
{
global $rep, $vues, $error;
try {
require($rep . $vues['chouette']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToCesarEncrypt()
{
global $rep, $vues, $error;
try {
require($rep . $vues['cesarEncrypt']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToTest()
{ {
global $rep, $vues, $error;
try {
require($rep . $vues['test']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToNext()
{
global $rep, $vues, $error;
try {
require($rep . $vues['next'].$_REQUEST['num'].".html");
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function goToQueue()
{
global $rep, $vues, $error;
try {
//require($rep . $vues['Queue']);
$this->addToQueue();
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
public function addToQueue(){
echo '1'; echo '1';
$userGroup=$this->utilisateur_gateway->findUsersInQueue(); if ($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur'])) {
if($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur']))
{
if ($this->utilisateur_gateway->queueFilled())
{
echo "Partie is launched";
$this->utilisateur_gateway->launchGame($_SESSION['utilisateur']);
} else
$this->attente();
return; return;
} }
echo '2'; echo '2';
@ -124,8 +34,7 @@ class UserModel
$tabEnigme = $this->enigme_gateway->findMultiEnigma(); $tabEnigme = $this->enigme_gateway->findMultiEnigma();
$idNewPartie = $this->partie_gateway->findPartieMaxId(); $idNewPartie = $this->partie_gateway->findPartieMaxId();
$partie = $this->partie_gateway->creerPartieMulti($idNewPartie, $tabEnigme); $partie = $this->partie_gateway->creerPartieMulti($idNewPartie, $tabEnigme);
} } else {
else{
echo '4'; echo '4';
$idPartieInQueue = $this->partie_gateway->findPartieInQueue(); $idPartieInQueue = $this->partie_gateway->findPartieInQueue();
echo '5'; echo '5';
@ -136,22 +45,23 @@ class UserModel
} }
echo '8'; echo '8';
$this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'], $partie); $this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'], $partie);
echo '9'; $userGroup = $this->utilisateur_gateway->findUsersInQueue();
if ($this->utilisateur_gateway->queueFilled()) //trigger_event('add_to_queue',$userGroup);
{
echo "Partie is launched";
trigger_event('queue_filled',$user_group,$partie,$user_group);
$this->utilisateur_gateway->launchGame($_SESSION['utilisateur']);
}
$this->attente();
} }
public function onQueueFilled{ public function AddUserToQueueEvent()
{
$userGroup = $this->utilisateur_gateway->findUsersInQueue();
if ($userGroup . count() >= 4) {
$this->utilisateur_gateway->launchGame();
}
} }
public function logout() public function logout()
{ {
session_unset();
session_destroy();
$_SESSION = array();
$_SESSION['role'] = 'visitor'; $_SESSION['role'] = 'visitor';
header('Location: index.php'); header('Location: index.php');
} }

@ -5,6 +5,8 @@ class VisitorModel
private EnigmeGateway $enigme_gateway; private EnigmeGateway $enigme_gateway;
private PartieGateway $partie_gateway; private PartieGateway $partie_gateway;
private UtilisateurGateway $utilisateur_gateway; private UtilisateurGateway $utilisateur_gateway;
private Nettoyage $nettoyage;
private Validation $validation;
function __construct() function __construct()
{ {
@ -13,6 +15,8 @@ class VisitorModel
$this->enigme_gateway = new EnigmeGateway(); $this->enigme_gateway = new EnigmeGateway();
$this->partie_gateway = new PartieGateway(); $this->partie_gateway = new PartieGateway();
$this->utilisateur_gateway = new UtilisateurGateway(); $this->utilisateur_gateway = new UtilisateurGateway();
$this->nettoyage = new Nettoyage();
$this->validation = new Validation();
} catch (Exception $e) { } catch (Exception $e) {
$error = $e->getMessage(); $error = $e->getMessage();
require($rep . $view['erreur']); require($rep . $view['erreur']);
@ -21,55 +25,52 @@ class VisitorModel
public function signUp() public function signUp()
{ {
global $rep, $vues, $sel, $error; global $sel, $error;
try { $email = $this->nettoyage->cleanEmail($_REQUEST['email']);
$validation = new Validation(); if (!$this->validation->ValidateEmail($email)) {
if (!$validation->ValidateEmail($_REQUEST['email'])) {
$error = "Email invalides."; $error = "Email invalides.";
throw (new Exception("Email non valide")); throw (new Exception("Email non valide"));
} }
if (!$validation->ValidateUsername($_REQUEST['username'])) { $username = $this->nettoyage->clean($_REQUEST['username']);
if (!$this->validation->ValidateUsername($username)) {
$error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux."; $error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux.";
throw (new Exception("Pseudo non valide")); throw (new Exception("Pseudo non valide"));
} }
if (!$validation->ValidatePassword($_REQUEST['password'])) { $password = $this->nettoyage->clean($_REQUEST['password']);
if (!$this->validation->ValidatePassword($password)) {
$error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères."; $error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères.";
throw (new Exception("Mot de passe non valide")); throw (new Exception("Mot de passe non valide"));
} }
$j = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']); $j = $this->utilisateur_gateway->getUtilisateurByEmail($email);
if ($j->getEmail() != "null") { if ($j->getEmail() != "null") {
$error = "Email déjà utilisé."; $error = "Email déjà utilisé.";
throw (new Exception("Email déjà utilisé")); throw (new Exception("Email déjà utilisé"));
} }
$password = password_hash($_REQUEST['password'] . $sel, PASSWORD_DEFAULT); $password = password_hash($password . $sel, PASSWORD_DEFAULT);
$utilisateur = new Utilisateur($_REQUEST['email'], $_REQUEST['username'], $password, false); $utilisateur = new Utilisateur($email, $username, $password, false);
$this->utilisateur_gateway->insert($utilisateur); $this->utilisateur_gateway->insert($utilisateur);
$_SESSION['role'] = 'user'; $_SESSION['role'] = 'user';
$_SESSION['utilisateur'] = $utilisateur; $_SESSION['utilisateur'] = $utilisateur;
require($rep . $vues['main']);
} catch (PDOException $e) {
$error = "Erreur de connexion à la base de données.";
require($rep . $vues['erreur']);
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
} }
public function login() public function login()
{ {
global $rep, $vues, $sel, $error; global $vue, $sel, $error;
try { $email = $this->nettoyage->cleanEmail($_REQUEST['email']);
$utilisateur = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']); if (!$this->validation->ValidateEmail($email)) {
$error = "Email invalides.";
throw (new Exception("Email non valide"));
}
$utilisateur = $this->utilisateur_gateway->getUtilisateurByEmail($email);
if ($utilisateur->getEmail() == "null") { if ($utilisateur->getEmail() == "null") {
$error = "Utilisateur non trouvé."; $error = "Utilisateur non trouvé.";
throw new Exception("Utilisateur introuvable"); throw new Exception("Utilisateur introuvable");
} }
$mdp = $this->utilisateur_gateway->getMdpByEmail($_REQUEST['email']); $mdp = $this->utilisateur_gateway->getMdpByEmail($email);
if (password_verify($mdp, $_REQUEST['password'] . $sel)) { if (! password_verify($_REQUEST['password'] . $sel, $mdp)) {
$error = "Mot de passe incorrect."; $error = "Mot de passe incorrect.";
throw new Exception("Mot de passe invalide"); throw new Exception("Mot de passe invalide");
} }
$estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($_REQUEST['email']); $estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($email);
if ($estAdmin == true) { if ($estAdmin == true) {
$_SESSION['role'] = "admin"; $_SESSION['role'] = "admin";
} else { } else {
@ -77,42 +78,5 @@ class VisitorModel
} }
$_SESSION['utilisateur'] = $utilisateur; $_SESSION['utilisateur'] = $utilisateur;
$_SESSION['connected'] = 'true'; $_SESSION['connected'] = 'true';
require($rep . $vues['main']);
} catch (Exception $e) {
require($rep . $vues['erreur']);
}
}
public function goToHome()
{
global $rep, $vues, $error;
try {
require($rep . $vues['main']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToLogin()
{
global $rep, $vues, $error;
try {
require($rep . $vues['login']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToSignUp()
{
global $rep, $vues, $error;
try {
require($rep . $vues['signUp']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
} }
} }

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 MiB

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

@ -13,10 +13,6 @@ body {
color: white; color: white;
scroll-behavior: smooth; scroll-behavior: smooth;
height: 100vh; height: 100vh;
background-position: center center;
background-attachment: fixed;
background-repeat: no-repeat;
background-size: cover;
background-color: #050E15; background-color: #050E15;
} }

@ -4,19 +4,42 @@
color: white; color: white;
scroll-behavior: smooth; scroll-behavior: smooth;
height: 100vh; height: 100vh;
background-image: radial-gradient( background-image: url("../../assets/img/ImgMain.png");
circle, background-position: center center;
#312c42, background-attachment: fixed;
#2e2a3d, background-repeat: no-repeat;
#2a2738, background-size: cover;
#272434, background-color: #000;
#24222f, }
#22202c,
#1f1f29, #imgMain {
#1d1d26, background-image: url("../../assets/img/SecondMainBack.jpg");
#1b1b23, background-position: bottom center;
#191a21, background-attachment: fixed;
#17181e, background-repeat: no-repeat;
#15161c background-size: cover;
); display: block;
margin: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 85%;
height: 70%;
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
-o-border-radius: 10px;
}
#AllBg {
background-color: #511949;
opacity: 0.8;
background-size: 10px 10px;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
} }

@ -0,0 +1,34 @@
//~ Function that test the user code
async function submit(){
var test = editor.getValue()+`\n
import random as r
def double_elementVerif(list):
return [i*2 for i in list]
def testDoubleElement(x):
l=[1,2,3,2,1]
if(double_element(l) != [2,4,6,4,2]):
return False
l=[9,5,7,7,9]
if(double_element(l) != [18,10,14,14,18]):
return False
l=[]
for i in range(x):
for j in range(r.randint(1,10)):
l.append(r.randint(0,9))
if(double_elementVerif(l)!=double_element(l)):
return False
l=[]
return True
print(testDoubleElement(5))
`;
exec("print ('True')", "code");
exec(test, "solution");
result.innerHTML = "Test en cours...";
await new Promise(r => setTimeout(r, 1500));
check();
}

@ -16,7 +16,6 @@ def triVerif(a,b):
return s return s
def triTest(x): def triTest(x):
tri(a,b)
a = "Hlowrd" a = "Hlowrd"
b = "el ol" b = "el ol"
if(triVerif(a,b)!=tri(a,b)): if(triVerif(a,b)!=tri(a,b)):

@ -18,12 +18,12 @@ def estTriangleDePascal(n):
return triangle return triangle
def testTriangleDePascal(n): def testTriangleDePascal(n):
TriangleDePascal(0) triangle_pascal(0)
listTest=[0,1] listTest=[0,1]
for i in range(0,n): for i in range(0,n):
listTest.append(r.randint(5,140)) listTest.append(r.randint(5,140))
for i in listTest: for i in listTest:
if(TriangleDePascal(i)!=estTriangleDePascal(i)): if(triangle_pascal(i)!=estTriangleDePascal(i)):
return False return False
return True return True

@ -112,11 +112,11 @@ function check() {
/** /**
* It gets all the elements with the class name "help" and sets their display property to "flex". * It gets all the elements with the class name "help" and sets their display property to "block".
*/ */
function displayHelp() { function displayHelp() {
var help = document.getElementsByClassName("help"); var help = document.getElementsByClassName("help");
for (var i = 0; i < help.length; i++) { for (var i = 0; i < help.length; i++) {
help[i].style.display = "flex"; help[i].style.display = "block";
} }
} }

@ -1,100 +1,192 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Code Cesar</title>
<title>Code César</title> <link
<link rel="stylesheet" href="../../CSS/Enigme.css"/> rel="stylesheet"
<link rel="stylesheet" href="../../CSS/Home.css"> href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
<style> crossorigin="anonymous"
html{ />
background-image: url(../../../assets/img/Background5.jpg); <script
} src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
</style> integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<link rel="stylesheet" href="View/src/CSS/Enigme.css" />
</head> </head>
<body> <body>
<div class="enigme"> <div class="container-fluid px-5">
<div class="titre_pre"> <!-- First Row -->
<div class="retour"> <div class="row py-4">
<a class="material-icons" id="home" href="../Home.html" style="font-size:36px;color:white;">home</a> <div class="col-9 d-flex align-items-center px-0">
</div> <a
<div class="sign"> class="material-icons pl-0"
<h1> id="home"
<span class="fast-flicker">c</span> href="index.php?action=goToHome"
<span>es</span> style="font-size: 40px; color: white"
<span class="flicker">a</span> >home</a
<span>r</span> >
</h1> </div>
</div><br> <button
</div> style="background-color: transparent; border: none"
<h2>Consigne</h2><br> onclick="displayHelp()"
<p class="enonce"> class="col-3 d-flex align-items-center"
É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é.) >
</p><br> <div class="col-10 text-right px-3">
<h2>Rappel</h2><br> <p style="font-size: 14px; color: white"><b>Besoin d'aide ?</b></p>
<p class="rappel">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. </div>
</p><br> <div class="col-2 text-right">
<h2>Exemple</h2><br> <img
<p>Entrée :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Sortie :</p> src="View/assets/img/Foxy.png"
<p>'fbehu',3&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp; cyber</p><br> alt="Logo"
<h2>Aide</h2><br> class="rounded-circle moving-fox"
style="border: 1px solid #44fff6; width: 60px; height: 60px"
/>
</div>
</button>
</div>
<!-- End First Row -->
<!-- Second Row -->
<div class="row">
<!-- First Column -->
<div
class="col-3 rounded p-3"
style="background-color: #222831; min-height: 80vh; height: auto"
>
<h2 class="text-left py-3" style="color: #44fff6; font-weight: 500">
Code Cesar
</h2>
<p> <p>
La fonction ord(char) de python permet de retourner lUnicode (standard dencodage de caractères) d'un caractère. Par exemple, ord('a') retourné '97' et ord('b) retourne 98. Écrire une fonction <b style="color : violet">Decrypt</b> qui prend en argument
un <b style="color: #44fff6;">message</b> et une <b style="color: #44fff6;">clé</b>
et qui retourne le message décrypté avec le code <b>César</b>.(les espace ne seront pas encodé.)
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p>
Le code <b>César</b> (ou chiffre de César ) est un chiffrement par substitution,
<br>où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet .
<br>Par exemple A avec une clé 2 devient C.
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p><b>Entrée</b> :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<b>Sortie</b> :</p>
<p>'fbehu',3&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;cyber</p>
<h3
class="text-left pb-3 pt-5 help"
style="color: #44fff6; display: none"
>
Aide
</h3>
<p style="display: none" class="help">
La fonction ord(char) de python permet de retourner l'Unicode (standard dencodage de caractères) d'un caractère.<br/>
Par exemple, ord('a') retourne '97' et ord('b')) retourne '98'.
</p>
</div>
<!-- End First Column -->
<!-- Second Column -->
<div class="col-5 pr-0">
<div class="ace rounded" id="editor">def Decrypt(text, key):
</div>
</div> </div>
<div class='ace' id='editor'>def Decrypt(text, key): <!-- End Second Column -->
result = ""
for i in range(len(text)): <!-- Third Column -->
char = text[i] <div class="col-4">
if(char==" "): <textarea
result+=" " id="console"
elif (char.isupper()): readonly
result += chr((ord(char) - key-65) % 26 + 65) style="width: 100%; min-height: 65vh; height: auto"
else: class="p-3 rounded"
result += chr((ord(char) - key - 97) % 26 + 97) ></textarea>
return result</div>
<div class='compiler_class'> <div class="row pt-5 text-center" style="cursor: pointer">
<textarea id='console' readonly rows="30" cols="100"></textarea> <div class="col-6">
<div class="buttons">
<div>
<a onclick="run_init()" class="btn"> <a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span> <span>Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a> </a>
</div> </div>
<div class="col-6">
<button
onclick="submit()"
class="btn"
data-toggle="modal"
data-target="#modal"
>
<span>Submit</span>
</button>
</div>
</div>
</div>
<!-- End Third Column -->
</div> </div>
<!-- End Second Row -->
</div> </div>
<div class="modal-container" id="m1-o" style="--m-background: transparent;"> <!-- Modal -->
<div class="modal"> <div
<div id="containerResult"> class="modal fade"
<h1 id="result"></h1> id="modal"
</div> tabindex="-1"
<div class="buttons"> role="dialog"
<div id="top"> aria-labelledby="exampleModalCenterTitle"
<a href="#" class="btn"> aria-hidden="true"
<span class="noAnimation">x</span> >
</a> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h2
class="modal-title"
id="exampleModalLongTitle"
style="color: black"
>
Results
</h2>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h5 id="result" style="color: black"></h5>
</div> </div>
<div id="bottom"> <div class="modal-footer">
<a href="TrianglePascal.html" class="btn" id="fleche"> <a href="index.php?action=goToChuckNorris" class="btn" style="display: none" id="next">
<span class="noAnimation">Next</span> <span>NEXT</span>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- End Modal -->
<script
src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script> charset="utf-8"
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script> ></script>
<script src="../../JS/base.js"></script> <script
<script src="../../JS/cesarDecrypt.js"></script> src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="View/src/JS/base.js"></script>
<script src="View/src/JS/cesarDecrypt.js"></script>
</body> </body>
</html> </html>

@ -1,102 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Code César</title>
<link rel="stylesheet" href="../../CSS/Enigme.css"/>
<link rel="stylesheet" href="../../CSS/Home.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<style>
html{
background-image: url(../../../assets/img/Background4.jpg);
}
</style>
</head>
<body>
<div class="enigme">
<div class="titre_pre">
<div class="retour">
<a class="material-icons" id="home" href="../Home.html" style="font-size:36px;color:white;">home</a>
</div>
<div class="sign">
<h1>
<span class="fast-flicker">c</span>
<span>es</span>
<span class="flicker">a</span>
<span>r</span>
</h1>
</div><br>
</div>
<h2>Consigne</h2><br>
<p class="enonce">
É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é.)
</p><br><br>
<h2>Rappel</h2><br>
<p class="rappel">Le code César (ou chiffre de César ) est un chiffrement par substitution,
<br>où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet .
<br>Par exemple A avec une clé 2 devient C.
</p><br><br>
<h2>Exemple</h2><br>
<p>Entrée :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Sortie :</p>
<p>'fbehu',3&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;cyber</p><br><br>
<h2>Aide</h2><br>
<p>
La fonction ord(char) de python permet de retourner lUnicode (standard dencodage de caractères) d'un caractère. Par exemple, ord('a') retourné '97' et ord('b) retourne 98.
</p>
</div>
<div class='ace' id='editor'>def Encrypt(text, key):
result = ""
for i in range(len(text)):
char = text[i]
if(char==" "):
result+=" "
elif (char.isupper()):
result += chr((ord(char) + key-65) % 26 + 65)
else:
result += chr((ord(char) + key - 97) % 26 + 97)
return result</div>
<div class='compiler_class'>
<textarea id='console' readonly rows="30" cols="100"></textarea>
<div class="buttons">
<div>
<a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a>
</div>
</div>
</div>
<div class="modal-container" id="m1-o" style="--m-background: transparent;">
<div class="modal">
<div id="containerResult">
<h1 id="result"></h1>
</div>
<div class="buttons">
<div id="top">
<a href="#" class="btn">
<span class="noAnimation">x</span>
</a>
</div>
<div id="bottom">
<a href="CesarDecrypt.html" class="btn" id="fleche">
<span class="noAnimation">Next</span>
</a>
</div>
</div>
</div>
</div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../../JS/base.js"></script>
<script src="../../JS/cesarEncrypt.js"></script>
</body>
</html>

@ -70,18 +70,19 @@
Code Cesar Code Cesar
</h2> </h2>
<p> <p>
Écrire une fonction <b style="color : violet">Encrypt</b> qui prend en argument un message et une clé Écrire une fonction <b style="color : violet">Encrypt</b> qui prend en argument
et qui retourne le message crypté avec le code <b style="color: violet;">César</b>.(les espace ne seront pas encodé.) un <b style="color:#44fff6;">message</b> et une <b style="color:#44fff6;">clé</b>
et qui retourne le <b style="color: yellow;"> message crypté</b> avec le code <b>César</b>.(les espace ne seront pas encodé.)
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3> <h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p> <p>
Le code César (ou chiffre de César ) est un chiffrement par substitution, Le code <b>César</b> (ou chiffre de César ) est un chiffrement par substitution,
<br>où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet . <br>où chaque lettre est remplacée par une autre lettre se situant un peu plus loin dans l'alphabet .
<br>Par exemple A avec une clé 2 devient C. <br>Par exemple A avec une clé 2 devient C.
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3> <h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p>Entrée :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Sortie :</p> <p><b>Entrée</b> :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<b>Sortie</b> :</p>
<p>'fbehu',3&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;cyber</p><br><br> <p>'fbehu',3&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;cyber</p>
<h3 <h3
class="text-left pb-3 pt-5 help" class="text-left pb-3 pt-5 help"
style="color: #44fff6; display: none" style="color: #44fff6; display: none"
@ -89,15 +90,15 @@
Aide Aide
</h3> </h3>
<p style="display: none" class="help"> <p style="display: none" class="help">
La fonction <b style="color: violet;">ord(char)</b> de python permet de retourner l'<b style="color: red">Unicode</b> (standard dencodage de caractères) d'un caractère. La fonction ord(char) de python permet de retourner l'Unicode (standard dencodage de caractères) d'un caractère.<br/>
Par exemple, <b style="color: violet;">or('a')</b> retourné '<b style="color: green;">97</b>' et <b style="color: violet;">ord('b'))</b> retourne '<b style="color: green;">98</b>'. Par exemple, ord('a') retourne '97' et ord('b')) retourne '98'.
</p> </p>
</div> </div>
<!-- End First Column --> <!-- End First Column -->
<!-- Second Column --> <!-- Second Column -->
<div class="col-5 pr-0"> <div class="col-5 pr-0">
<div class="ace rounded" id="editor">def estPalindrome(var): <div class="ace rounded" id="editor">def Encrypt(text, key):
</div> </div>
</div> </div>
<!-- End Second Column --> <!-- End Second Column -->
@ -166,7 +167,7 @@
<h5 id="result" style="color: black"></h5> <h5 id="result" style="color: black"></h5>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="index.php?action=goToChouette" class="btn" style="display: none" id="next"> <a href="index.php?action=goToCesarDecrypt" class="btn" style="display: none" id="next">
<span>NEXT</span> <span>NEXT</span>
</a> </a>
</div> </div>

@ -70,13 +70,15 @@
Chouette Chouette
</h2> </h2>
<p> <p>
Écrire une fonction <b style="color: violet;">chouette</b> qui, pour une valeur donnée, renvoie une <b style="color: violet;">liste</b> contenant toutes les solutions de somme de 3 dés pouvant donner cette valeur. Écrire une fonction <b style="color: violet;">chouette</b> qui, pour une <b style="color: #44fff6;">valeur</b> donnée,
</br>La valeur peut aller de 3 à 18 . renvoie une <b style="color:yellow">liste</b>
contenant toutes les solutions de somme de 3 dés pouvant donner cette <b style="color: #44fff6;">valeur</b>.
</br>La <b style="color:#44fff6;">valeur</b> peut aller de 3 à 18 .
</br>Les solutions doivent être uniques.(1,2,3) et (3,2,1) sont la même solution. </br>Les solutions doivent être uniques.(1,2,3) et (3,2,1) sont la même solution.
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3> <h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p>Entrée : 7</p> <p><b>Entrée</b> : 7</p>
<p>Sortie : [[1,1,5],[1,2,4],[1,3,3],[2,2,3]]</p> <p><b>Sortie</b> : [[1,1,5],[1,2,4],[1,3,3],[2,2,3]]</p>
<h3 <h3
class="text-left pb-3 pt-5 help" class="text-left pb-3 pt-5 help"
style="color: #44fff6; display: none" style="color: #44fff6; display: none"

@ -1,112 +1,189 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chuck Norris</title> <title>Chuck Norris</title>
<link rel="stylesheet" href="../../CSS/Enigme.css"/> <link
<link rel="stylesheet" href="../../CSS/Home.css"> rel="stylesheet"
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
<style> integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
html{ crossorigin="anonymous"
background-image: url(../../../assets/img/Background3.jpg); />
} <script
</style> src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<link rel="stylesheet" href="View/src/CSS/Enigme.css" />
</head> </head>
<body> <body>
<div class="enigme"> <div class="container-fluid px-5">
<div class="titre_pre"> <!-- First Row -->
<div class="retour"> <div class="row py-4">
<a class="material-icons" id="home" href="../Home.html" style="font-size:36px;color:white;">home</a> <div class="col-9 d-flex align-items-center px-0">
</div> <a
<div class="sign"> class="material-icons pl-0"
<h1> id="home"
<span class="fast-flicker">c</span> href="index.php?action=goToHome"
<span>h</span> style="font-size: 40px; color: white"
<span class="flicker">u</span> >home</a
<span>ck</span> >
</h1> </div>
</div><br> <button
</div> style="background-color: transparent; border: none"
<div> onclick="displayHelp()"
<h2>Consigne</h2><br> class="col-3 d-flex align-items-center"
<p class="enonce"> >
Coder un fonction binaire2unaire qui prend en argument un nombre binaire et le code via le codage Chucknorris. <div class="col-10 text-right px-3">
</p><br><br> <p style="font-size: 14px; color: white"><b>Besoin d'aide ?</b></p>
<h2>Rappel</h2><br> </div>
<p class="rappel"> <div class="col-2 text-right">
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. <img
src="View/assets/img/Foxy.png"
alt="Logo"
class="rounded-circle moving-fox"
style="border: 1px solid #44fff6; width: 60px; height: 60px"
/>
</div>
</button>
</div>
<!-- End First Row -->
<!-- Second Row -->
<div class="row">
<!-- First Column -->
<div
class="col-3 rounded p-3"
style="background-color: #222831; min-height: 80vh; height: auto"
>
<h2 class="text-left py-3" style="color: #44fff6; font-weight: 500">
Chuck Norris
</h2>
<p>
Coder un fonction <b style="color: violet;">binaire2unaire</b> qui prend en argument un <b style="color: #44fff6;">nombre binaire</b>
et qui le retourne le <b style="color: yellow;">nombre</b> codé via le codage <b>Chuck Norris</b>.
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p>
Dans le codage <b>Chuck Norris</b>, 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.
<br>Par exemple, la suite "10000111" sera traduite de la façon suivante : "0 0 00 0000 0 000 <br>Par exemple, la suite "10000111" sera traduite de la façon suivante : "0 0 00 0000 0 000
</p><br><br> </p>
<h2>Exemple</h2><br> <h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p>Entrée :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Sortie :</p> <p><b>Entrée</b> :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<b>Sortie</b> :</p>
<p>10000111&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;0 0 00 0000 0 000</p><br><br> <p>10000111&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;0 0 00 0000 0 000</p>
<h2>Aide</h2><br> <h3
<p>En python les chaines de carractère peuvent être utilisé comme une liste</p> class="text-left pb-3 pt-5 help"
</div> style="color: #44fff6; display: none"
</div> >
<div class='ace' id='editor'>def binaire2unitaire(x): Aide
rep=0 </h3>
pre=x[0] <p style="display: none" class="help">
unitaire="" En python les chaines de carractère peuvent être utilisé comme une liste.
for i in x: </p>
if(pre==i): </div>
rep+=1 <!-- End First Column -->
else:
if(pre=="1"): <!-- Second Column -->
unitaire=unitaire+"0 " <div class="col-5 pr-0">
else: <div class="ace rounded" id="editor">def binaire2unitaire(x):
unitaire=unitaire+"00 " </div>
for j in range(rep): </div>
unitaire=unitaire+"0" <!-- End Second Column -->
unitaire=unitaire+" "
rep=1 <!-- Third Column -->
pre=i <div class="col-4">
if(pre=="1"): <textarea
unitaire=unitaire+"0 " id="console"
else: readonly
unitaire=unitaire+"00 " style="width: 100%; min-height: 65vh; height: auto"
for i in range(rep): class="p-3 rounded"
unitaire=unitaire+"0" ></textarea>
return unitaire
</div> <div class="row pt-5 text-center" style="cursor: pointer">
<div class='compiler_class'> <div class="col-6">
<textarea id='console' readonly rows="30" cols="100"></textarea>
<div class="buttons">
<div>
<a onclick="run_init()" class="btn"> <a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span> <span>Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a> </a>
</div> </div>
<div class="col-6">
<button
onclick="submit()"
class="btn"
data-toggle="modal"
data-target="#modal"
>
<span>Submit</span>
</button>
</div>
</div>
</div> </div>
<!-- End Third Column -->
</div>
<!-- End Second Row -->
</div> </div>
<div class="modal-container" id="m1-o" style="--m-background: transparent;"> <!-- Modal -->
<div class="modal"> <div
<div id="containerResult"> class="modal fade"
<h1 id="result"></h1> id="modal"
</div> tabindex="-1"
<div class="buttons"> role="dialog"
<div id="top"> aria-labelledby="exampleModalCenterTitle"
<a href="#" class="btn"> aria-hidden="true"
<span class="noAnimation">x</span> >
</a> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h2
class="modal-title"
id="exampleModalLongTitle"
style="color: black"
>
Results
</h2>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">&times;</span>
</button>
</div> </div>
<div id="bottom"> <div class="modal-body">
<a href="Chouette.html" class="btn" id="fleche"> <h5 id="result" style="color: black"></h5>
<span class="noAnimation">Next</span> </div>
<div class="modal-footer">
<a href="index.php?action=goToHanoi" class="btn" style="display: none" id="next">
<span>NEXT</span>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script> <!-- End Modal -->
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../../JS/base.js"></script> <script
<script src="../../JS/chuckNorris.js"></script> src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="View/src/JS/base.js"></script>
<script src="View/src/JS/chuckNorris.js"></script>
</body> </body>
</html> </html>

@ -0,0 +1,189 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Double Element</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"
/>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<link rel="stylesheet" href="View/src/CSS/Enigme.css" />
</head>
<body>
<div class="container-fluid px-5">
<!-- First Row -->
<div class="row py-4">
<div class="col-9 d-flex align-items-center px-0">
<a
class="material-icons pl-0"
id="home"
href="index.php?action=goToHome"
style="font-size: 40px; color: white"
>home</a
>
</div>
<button
style="background-color: transparent; border: none"
onclick="displayHelp()"
class="col-3 d-flex align-items-center"
>
<div class="col-10 text-right px-3">
<p style="font-size: 14px; color: white"><b>Besoin d'aide ?</b></p>
</div>
<div class="col-2 text-right">
<img
src="View/assets/img/Foxy.png"
alt="Logo"
class="rounded-circle moving-fox"
style="border: 1px solid #44fff6; width: 60px; height: 60px"
/>
</div>
</button>
</div>
<!-- End First Row -->
<!-- Second Row -->
<div class="row">
<!-- First Column -->
<div
class="col-3 rounded p-3"
style="background-color: #222831; min-height: 80vh; height: auto"
>
<h2 class="text-left py-3" style="color: #44fff6; font-weight: 500">
Double element
</h2>
<p>
Écrivez une fonction <b style="color : violet">double_element</b> qui prend en entrée une <b style="color: yellow;">liste de nombres</b>
et renvoie une <b style="color: yellow;">liste</b>
contenant tous les éléments de la liste d'entrée, dans le même ordre, mais en doublant chaque élément.
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p>
AAA
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p><b>Entrée</b> : [1,2,3]</p>
<p><b>Sortie</b> : [2,4,6]</p>
<h3
class="text-left pb-3 pt-5 help"
style="color: #44fff6; display: none"
>
Aide
</h3>
<p style="display: none" class="help">
AAA
</p>
</div>
<!-- End First Column -->
<!-- Second Column -->
<div class="col-5 pr-0">
<div class="ace rounded" id="editor">def double_element(list):
</div>
</div>
<!-- End Second Column -->
<!-- Third Column -->
<div class="col-4">
<textarea
id="console"
readonly
style="width: 100%; min-height: 65vh; height: auto"
class="p-3 rounded"
></textarea>
<div class="row pt-5 text-center" style="cursor: pointer">
<div class="col-6">
<a onclick="run_init()" class="btn">
<span>Run</span>
</a>
</div>
<div class="col-6">
<button
onclick="submit()"
class="btn"
data-toggle="modal"
data-target="#modal"
>
<span>Submit</span>
</button>
</div>
</div>
</div>
<!-- End Third Column -->
</div>
<!-- End Second Row -->
</div>
<!-- Modal -->
<div
class="modal fade"
id="modal"
tabindex="-1"
role="dialog"
aria-labelledby="exampleModalCenterTitle"
aria-hidden="true"
>
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h2
class="modal-title"
id="exampleModalLongTitle"
style="color: black"
>
Results
</h2>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h5 id="result" style="color: black"></h5>
</div>
<div class="modal-footer">
<a href="index.php?action=goToHome" class="btn" style="display: none" id="next">
<span>NEXT</span>
</a>
</div>
</div>
</div>
</div>
<!-- End Modal -->
<script
src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="View/src/JS/base.js"></script>
<script src="View/src/JS/DoubleElement.js"></script>
</body>
</html>

@ -1,94 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Bootstrap Site</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"/>
<link rel="stylesheet" href="../../CSS/Enigmev2.css"/>
<link rel="stylesheet" href="../../CSS/Main.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"></script>
</head>
<body style="background-color: #050e15;background-image: none;">
<div class="container-fluid">
<div class="row">
<div class="col-3" style="height: auto; min-height: 100vh;">
<div class="row">
<div class="col-2 text-center pt-3">
<a id="home" href="../Home.html" >
<svg xmlns="http://www.w3.org/2000/svg" style="color: white;" width="32" height="32" fill="currentColor" class="bi bi-house-fill" viewBox="0 0 16 16">
<path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.707 1.5Z"/>
<path d="m8 3.293 6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293l6-6Z"/>
</svg>
</a>
</div>
<div class="col-10 pt-1">
<h1 class="display-5" style="letter-spacing: 0.1rem;""> <!--Mettre responsive si moins de 1500px-->
Palindrome
</h1><br>
</div>
</div>
<div>
<section class="row mt-3 ">
<h2>Consigne</h2><br>
<p class="enonce">Écrire une fonction estPalindrome qui prend en argument un entier et qui renvoie True si cest un palindrome et False sinon.</p><br><br>
</section>
<section class="row mt-3">
<h2>Rappel</h2><br>
<p class="rappel">Un palindrome est un nombre qui peut se lire dans les deux sens. Par exemple 111.</p><br><br>
</section>
<section class="row mt-3">
<h2>Exemple</h2><br>
<p>Entrée :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Sortie :</p>
<p>[1,0,1]&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&ensp;True</p>
<p>[1,1,9,1]&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;False</p><br><br>
</section>
<section class="row mt-3">
<h2>Aide</h2><br>
<p>En python linstruction [::-1] permet dinverse une chaine de caractère. Par exemple print("ae"[::-1]) affiche : ea.</p>
</section>
</div>
</div>
<div class="col-5 h-auto py-3">
<div class='ace' id='editor'>def estPalindrome(var):
return var == var[::-1]
print(estPalindrome("abba"))
</div>
</div>
<div class="col-4 py-3">
<div class='compiler_class'>
<textarea id='console' readonly cols="100" rows="30"></textarea>
</div>
<div class="buttons">
<div>
<a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../../JS/base.js"></script>
<script src="../../JS/palindrome.js"></script>
</body>
</html>

@ -1,95 +1,197 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Hanoi</title>
<title>Palindrome</title> <link
<link rel="stylesheet" href="../../CSS/Enigme.css"/> rel="stylesheet"
<link rel="stylesheet" href="../../CSS/Home.css"> href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
<style> crossorigin="anonymous"
html{ />
background-image: url(../../../assets/img/Background5.jpg); <script
} src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
</style> integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<link rel="stylesheet" href="View/src/CSS/Enigme.css" />
</head> </head>
<body> <body>
<div class="enigme"> <div class="container-fluid px-5">
<div class="titre_pre"> <!-- First Row -->
<div class="retour"> <div class="row py-4">
<a class="material-icons" id="home" href="../Home.html" style="font-size:36px;color:white;">home</a> <div class="col-9 d-flex align-items-center px-0">
</div> <a
<div class="sign"> class="material-icons pl-0"
<h1> id="home"
<span class="fast-flicker">T</span> href="index.php?action=goToHome"
<span>our </span> style="font-size: 40px; color: white"
<span class="flicker">&nbsp;H</span> >home</a
<span>anoi</span> >
</h1> </div>
</div><br> <button
</div> style="background-color: transparent; border: none"
<h2>Consigne</h2><br> onclick="displayHelp()"
<p class="enonce"> class="col-3 d-flex align-items-center"
Faire une fonction permettant de résoudre le problème des tours dhanoi peu importe le nombre d'entrées dans la fonction. >
</p><br> <div class="col-10 text-right px-3">
<h2>Rappel</h2><br> <p style="font-size: 14px; color: white"><b>Besoin d'aide ?</b></p>
<p class="rappel">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 quaucun disque dune certaine taille n soit placé en dessous dun disque de taille plus grande en sachant quil ny a que 3 piles. </div>
</p><br> <div class="col-2 text-right">
<h2>Exemple</h2><br> <img
<p>Entrée :3,"A","B","C"</p> src="View/assets/img/Foxy.png"
<p>Sortie : [['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]</p> alt="Logo"
<h2>Aide</h2><br> class="rounded-circle moving-fox"
<p>Une fonction récursive est une fonction qui fait appelle à elle même</p> style="border: 1px solid #44fff6; width: 60px; height: 60px"
</div> />
<div class='ace' id='editor'>def hanoi(nb_disks,start, middle, end): </div>
l=[] </button>
hanoi_rec(l,nb_disks,start, middle, end) </div>
return l <!-- End First Row -->
<!-- Second Row -->
<div class="row">
<!-- First Column -->
<div
class="col-3 rounded p-3"
style="background-color: #222831; min-height: 80vh; height: auto"
>
<h2 class="text-left py-3" style="color: #44fff6; font-weight: 500">
Les tours d'Hanoi
</h2>
<p>
Écrire une fonction <b style="color: violet;">hanoi</b> permettant de résoudre le problème des <b>tours dhanoi </b>
peu importe le nombre d'entrées dans la fonction. <br />
Cette fonction devra prend en paramètre le <b style="color: #44fff6;">nombre de disques</b>,
le <b style="color: #44fff6;">nom</b> de la tour de départ,
le <b style="color: #44fff6;">nom</b> la tour d'arrivée et
le <b style="color: #44fff6;">nom</b> la tour intermédiaire. <br />
Elle devra retoure une <b style="color: yellow;">liste</b> contenant les déplacements à effectuer (cf exemple ci-dessous).
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p>
Le problème des tours de <b>hanoi</b> 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
quaucun disque dune certaine taille n soit placé en dessous dun disque de taille plus grande
en sachant quil ny a que 3 piles.
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p><b>Entrée</b> :3,"A","B","C"</p>
<p><b>Sortie</b> : [['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]</p>
<h3
class="text-left pb-3 pt-5 help"
style="color: #44fff6; display: none"
>
Aide
</h3>
<p style="display: none" class="help">
Pensse à 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.
</p>
</div>
<!-- End First Column -->
<!-- Second Column -->
<div class="col-5 pr-0">
<div class="ace rounded" id="editor">def hanoi(nb_disks,start, middle, end):
</div>
</div>
<!-- End Second Column -->
def hanoi_rec(l,nb_disks, start, middle, end): <!-- Third Column -->
if nb_disks == 1: <div class="col-4">
return l.append([start,end]) <textarea
else: id="console"
hanoi_rec(l,nb_disks - 1, start, end, middle) readonly
l.append([start,end]) style="width: 100%; min-height: 65vh; height: auto"
hanoi_rec(l,nb_disks - 1, middle, start, end)</div> class="p-3 rounded"
<div class='compiler_class'> ></textarea>
<textarea id='console' readonly rows="30" cols="100"></textarea>
<div class="buttons"> <div class="row pt-5 text-center" style="cursor: pointer">
<div> <div class="col-6">
<a onclick="run_init()" class="btn"> <a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span> <span>Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a> </a>
</div> </div>
<div class="col-6">
<button
onclick="submit()"
class="btn"
data-toggle="modal"
data-target="#modal"
>
<span>Submit</span>
</button>
</div>
</div>
</div> </div>
<!-- End Third Column -->
</div>
<!-- End Second Row -->
</div> </div>
<div class="modal-container" id="m1-o" style="--m-background: transparent;"> <!-- Modal -->
<div class="modal"> <div
<div id="containerResult"> class="modal fade"
<h1 id="result"></h1> id="modal"
</div> tabindex="-1"
<div class="buttons"> role="dialog"
<div id="top"> aria-labelledby="exampleModalCenterTitle"
<a href="#" class="btn"> aria-hidden="true"
<span class="noAnimation">x</span> >
</a> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h2
class="modal-title"
id="exampleModalLongTitle"
style="color: black"
>
Results
</h2>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">&times;</span>
</button>
</div> </div>
<div id="bottom"> <div class="modal-body">
<a href="../Home.html" class="btn" id="fleche"> <h5 id="result" style="color: black"></h5>
<span class="noAnimation">Next</span> </div>
<div class="modal-footer">
<a href="index.php?action=goToTrianglePascal" class="btn" style="display: none" id="next">
<span>NEXT</span>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script> <!-- End Modal -->
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../../JS/base.js"></script> <script
<script src="../../JS/Hanoi.js"></script> src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="View/src/JS/base.js"></script>
<script src="View/src/JS/Hanoi.js"></script>
</body> </body>
</html> </html>

@ -1,102 +1,197 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Triangle de Pascal</title>
<title>Palindrome</title> <link
<link rel="stylesheet" href="../../CSS/Enigme.css"/> rel="stylesheet"
<link rel="stylesheet" href="../../CSS/Home.css"> href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
<style> crossorigin="anonymous"
html{ />
background-image: url(../../../assets/img/BackgroundPalindrome.jpg); <script
} src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
</style> integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<link rel="stylesheet" href="View/src/CSS/Enigme.css" />
</head> </head>
<body> <body>
<div class="enigme"> <div class="container-fluid px-5">
<div class="titre_pre"> <!-- First Row -->
<div class="retour"> <div class="row py-4">
<a class="material-icons" id="home" href="../Home.html" style="font-size:36px;color:white;">home</a> <div class="col-9 d-flex align-items-center px-0">
</div> <a
<div class="sign"> class="material-icons pl-0"
<h1> id="home"
<span class="fast-flicker">T</span> href="index.php?action=goToHome"
<span>ria</span> style="font-size: 40px; color: white"
<span class="flicker">n</span> >home</a
<span>gle</span> >
</h1> </div>
</div><br> <button
</div> style="background-color: transparent; border: none"
<h2>Consigne</h2><br> onclick="displayHelp()"
<p class="enonce"> class="col-3 d-flex align-items-center"
Faire une fonction triangle_pascal permettant dafficher le triangle de Pascal jusqu'à un certain nombre n de lignes. Bien sùr n sera passé en argument à la fonction. >
</p><br> <div class="col-10 text-right px-3">
<h2>Exemple</h2><br> <p style="font-size: 14px; color: white"><b>Besoin d'aide ?</b></p>
<p>Entrée : 4</p> </div>
<p>Sortie : [[1],[1,1],[1,2,1],[1,3,3,1]]</p><br> <div class="col-2 text-right">
<h2>Aide</h2><br> <img
<p>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. src="View/assets/img/Foxy.png"
(p) alt="Logo"
class="rounded-circle moving-fox"
style="border: 1px solid #44fff6; width: 60px; height: 60px"
/>
</div>
</button>
</div>
<!-- End First Row -->
<!-- Second Row -->
<div class="row">
<!-- First Column -->
<div
class="col-3 rounded p-3"
style="background-color: #222831; min-height: 80vh; height: auto"
>
<h2 class="text-left py-3" style="color: #44fff6; font-weight: 500">
Triangle de Pascal
</h2>
<p>
Écrire une fonction <b style="color: violet;">triangle_pascal</b> permettant dafficher le <b>triangle de Pascal</b>
jusqu'à un certain nombre <b style="color:#44fff6">n</b> de lignes.
Bien sùr <b style="color:#44fff6">n</b> sera passé en argument à la fonction.
La fonction devra renvoyer une <b style="color: yellow;">liste</b> contenant les lignes du triangle de Pascal. (cf l'exemple pour plus de détails).
</p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p>
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.<br/>
La construction de ce triangle de Pascal est simple, 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) 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). Pour avoir un terme de la ligne suivante, on prend le terme juste au-dessus,
Mathématiquement, on applique la formule : et on lui additionne celui qui est juste avant, (0 si il n'y a rien).
Mathématiquement, on applique la formule :<br/>
(n+1) = (n) + ( n ) (n+1) = (n) + ( n )
( p ) (p) (p-1)
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
<p><b>Entrée</b> : 4</p>
<p><b>Sortie</b> : [[1],[1,1],[1,2,1],[1,3,3,1]]</p><br>
<h3
class="text-left pb-3 pt-5 help"
style="color: #44fff6; display: none"
>
Aide
</h3>
<p style="display: none" class="help">
Il n'y a pas d'aide pour cette énigme.
</p>
</div>
<!-- End First Column -->
<!-- Second Column -->
<div class="col-5 pr-0">
<div class="ace rounded" id="editor">def triangle_pascal(n):
</div>
</div> </div>
<div class='ace' id='editor'>def TriangleDePascal(n): <!-- End Second Column -->
if(n==0):
return [] <!-- Third Column -->
if(n==1): <div class="col-4">
return [[1]] <textarea
triangle=[[1],[1, 1]] id="console"
columns=n readonly
for line in range(2,n): style="width: 100%; min-height: 65vh; height: auto"
triangle.append([1]) class="p-3 rounded"
for column in range(1, line): ></textarea>
triangle[line].append(triangle[line - 1][column - 1] + triangle[line - 1][column])
triangle[line].append(1) <div class="row pt-5 text-center" style="cursor: pointer">
return triangle <div class="col-6">
</div>
<div class='compiler_class'>
<textarea id='console' readonly rows="30" cols="100"></textarea>
<div class="buttons">
<div>
<a onclick="run_init()" class="btn"> <a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span> <span>Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a> </a>
</div> </div>
<div class="col-6">
<button
onclick="submit()"
class="btn"
data-toggle="modal"
data-target="#modal"
>
<span>Submit</span>
</button>
</div>
</div>
</div> </div>
<!-- End Third Column -->
</div>
<!-- End Second Row -->
</div> </div>
<div class="modal-container" id="m1-o" style="--m-background: transparent;"> <!-- Modal -->
<div class="modal"> <div
<div id="containerResult"> class="modal fade"
<h1 id="result"></h1> id="modal"
</div> tabindex="-1"
<div class="buttons"> role="dialog"
<div id="top"> aria-labelledby="exampleModalCenterTitle"
<a href="#" class="btn"> aria-hidden="true"
<span class="noAnimation">x</span> >
</a> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h2
class="modal-title"
id="exampleModalLongTitle"
style="color: black"
>
Results
</h2>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">&times;</span>
</button>
</div> </div>
<div id="bottom"> <div class="modal-body">
<a href="Hanoi.html" class="btn" id="fleche"> <h5 id="result" style="color: black"></h5>
<span class="noAnimation">Next</span> </div>
<div class="modal-footer">
<a href="index.php?action=goToHome" class="btn" style="display: none" id="next">
<span>NEXT</span>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script> <!-- End Modal -->
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../../JS/base.js"></script> <script
<script src="../../JS/TrianglePascal.js"></script> src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="View/src/JS/base.js"></script>
<script src="View/src/JS/TrianglePascal.js"></script>
</body> </body>
</html> </html>

@ -71,11 +71,12 @@
</h2> </h2>
<p> <p>
Écrire une fonction <b style="color: violet;">estPalindrome</b> qui prend en argument un Écrire une fonction <b style="color: violet;">estPalindrome</b> qui prend en argument un
entier et qui renvoie True si cest un palindrome et False sinon. <b style="color:#44fff6">entier</b> et
qui renvoie <b style="color: green;">True</b> si cest un palindrome et <b style="color: red;">False</b> sinon.
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3> <h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
<p> <p>
Un <b style="color: violet;">palindrome</b> est un nombre qui reste le même si on le lit de gauche Un <b>palindrome</b> est un nombre qui reste le même si on le lit de gauche
à droite ou de droite à gauche. à droite ou de droite à gauche.
</p> </p>
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3> <h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
1/12 1/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">
@ -84,7 +84,6 @@
<p> <p>
Appuie sur le button <b style="color: red;">Run</b> pour executer ton code. Appuie sur le button <b style="color: red;">Run</b> pour executer ton code.
</p> </p>
<!-- <code>print("Hello World !")</code> -->
</section> </section>
</div> </div>
<div class="col-2 align-self-center"> <div class="col-2 align-self-center">

@ -39,11 +39,11 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
10/12 10/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToEnigme">Next</a> <a class="navbar-brand" href="#" style="color: gray;">Next</a>
</div> </div>
</div> </div>
</nav> </nav>
@ -83,6 +83,25 @@
<p> <p>
Tant que la liste ne contient pas 5 éléments, on ajoute un élément. Tant que la liste ne contient pas 5 éléments, on ajoute un élément.
</p> </p>
<p>
Bien je te propose de passer ton dernier test de qualification.
Tu dois coder la fonction <b style="color: violet;">tri</b>.
Cette fonction prend en paramètre deux <b style="color: yellow;">chaine de caractère</b>,
remet les lettres dans l'orde et
retourne la <b style="color: yellow;">chaine de caractère</b>.
Voici un exemple pour que tu comprennes mieux :
</p>
<code style="font-size: 18px">
def tri(a,b) :<br/>
&nbsp;&nbsp;# ton code ici<br/><br/>
a = "Hlowrd"<br/>
b = "el ol"<br/>
print(trie(a,b)) -> retourne "Hello World"
</code>
<br></br>
<p>
La fonction <b style="color: violet;">tri</b> prend tour a tour les lettres de a et b.
</p>
</section> </section>
</div> </div>
<div class="col-2 align-self-center"> <div class="col-2 align-self-center">
@ -102,7 +121,8 @@
<div class="row mt-5"> <div class="row mt-5">
<!-- Editor --> <!-- Editor -->
<div class="col-8"> <div class="col-8">
<div class="ace rounded ace-1" id="editor" style="min-height: 40vh"></div> <div class="ace rounded ace-1" id="editor" style="min-height: 40vh">def tri(a,b):
</div>
</div> </div>
<!-- End Editor --> <!-- End Editor -->
@ -196,5 +216,6 @@
charset="utf-8" charset="utf-8"
></script> ></script>
<script src="View/src/JS/base.js"></script> <script src="View/src/JS/base.js"></script>
<script src="View/src/JS/String.js"></script>
</body> </body>
</html> </html>

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
2/12 2/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
3/12 3/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
4/12 4/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
5/12 5/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -39,11 +39,11 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
6/12 6/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToNext&num=7">Next</a> <a class="navbar-brand" href="#" style="color: gray;">Next</a>
</div> </div>
</div> </div>
</nav> </nav>
@ -75,7 +75,8 @@
<p> <p>
Comme d'habitue, tu peux tester ton code en cliquant sur le bouton <b style="color: red;">Run</b>. Comme d'habitue, tu peux tester ton code en cliquant sur le bouton <b style="color: red;">Run</b>.
Si tu es sur que ton code est bon, clique sur le bouton <b style="color: green;">Submit</b> Si tu es sur que ton code est bon, clique sur le bouton <b style="color: green;">Submit</b>
pour valider ton test. pour valider ton test. J'ai pris son de désactiver le bouton <b style="color:#44fff6;">Next</b>
afin que tu ne puisses pas passer à la prochaine étape avant d'avoir terminé ce test.
</p> </p>
</section> </section>
</div> </div>

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
7/12 7/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -39,11 +39,11 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
8/12 8/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToNext&num=9">Next</a> <a class="navbar-brand" href="#" style="color: gray;">Next</a>
</div> </div>
</div> </div>
</nav> </nav>

@ -39,7 +39,7 @@
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px" style="color: #44fff6; font-weight: bold; font-size: 22px"
> >
9/12 9/10
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -0,0 +1,196 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>First Test</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"
/>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link rel="stylesheet" href="View/src/CSS/FirstTest.css" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark pb-5">
<div class="container-fluid mx-0">
<div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div>
<div class="mx-auto d-flex">
<h5
class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px"
>
Test de qualification
</h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
9/10
</h5>
</div>
<div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToNext&num=10">Next</a>
</div>
</div>
</nav>
<div class="container">
<!-- First Test -->
<div
class="row rounded p-3 m-3"
style="
background: #16222a; /* fallback for old browsers */
background: -webkit-linear-gradient(
to right,
#3a6073,
#16222a
); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #3a6073, #16222a);
"
>
<div class="row">
<div class="col-10">
<section
style="background-color: #222831; min-height: 0"
class="p-3 rounded m-0">
<p>
Durant le test précédent, tu as découvert l'instruction <b style="color : violet">for</b>.
Nous l'avons aborder que briévement, mais il est temps de l'étudier plus en détail.<br/>
La boucle <b style="color : violet">for</b> est une boucle qui permet de répéter un bloc d'instruction un nombre défini de fois.<br/>
On précise après le mot-clé <b style="color : violet">for</b> le nom dune variable
qui prendra successivement toutes les valeurs qui sont données après le mot-clé <b style="color : violet">in</b>.<br/>
Il est possible dobtenir le même résultat sans donner de liste de valeurs, mais en utilisant la fonction <b style="color : violet">range()</b>.
</p>
<p>
Voici un exemple de code.
</p>
<code style="font-size: 18px">
list = [1, 2, 3, 4, 5]<br/>
for i in list:<br/>
&nbsp;&nbsp;print(i+2)<br/>
<br/>
for j in range(5):<br/>
&nbsp;&nbsp;print(j)<br/>
<br/>
for k in range(1, 5):<br/>
&nbsp;&nbsp;print(k)<br/>
<br/>
for l in range(0, 5, 2):<br/>
&nbsp;&nbsp;print(l)<br/>
<br/>
for m in range(5, 0, -1):<br/>
&nbsp;&nbsp;print(m)<br/>
<br/>
for n in range(len("toto"))):<br/>
&nbsp;&nbsp;print(n)<br/>
</code>
<br></br>
<p>
Je te laisse expérimenter par toi même.
</p>
</section>
</div>
<div class="col-2 align-self-center">
<img
src="View/assets/img/Foxy.png"
alt="Logo"
class="img-fluid rounded-circle"
style="
border: 2px solid #44fff6;
background-image: url('View/src/assets/img/BackgroundMain.jpg');
background-size: cover;
background-position: center;
"
/>
</div>
</div>
<div class="row mt-5">
<!-- Editor -->
<div class="col-8">
<div class="ace rounded ace-1" id="editor" style="min-height: 40vh">list = [1, 2, 3, 4, 5]
print("Boucle for dans une liste : ")
for i in list:
print(i+2)
print("")
print("Boucle for dans avec range (5): ")
for j in range(5):
print(j)
print("")
print("Boucle for dans avec range (1, 5): ")
for k in range(1, 5):
print(k)
print("")
print("Boucle for dans avec range (0, 5, 2): ")
for l in range(1, 5, 2):
print(l)
print("")
print("Boucle for dans avec range (5, 0, -1): ")
for m in range(5, 0, -1):
print(m)
print("")
print("Boucle for sur un len() : ")
for n in range(len("toto")):
print(n)</div>
</div>
<!-- End Editor -->
<!-- Console -->
<div class="col-4" style="min-height: 40vh">
<textarea
id="console"
readonly
style="width: 100%; height: 60%"
class="p-3 rounded"
></textarea>
<!-- End Return Code -->
<!-- Buttons -->
<div
class="row pt-5 text-center"
style="cursor: pointer; height: 20%"
>
<div class="col">
<a onclick="run_init()" class="btn">
<span>Run</span>
</a>
</div>
</div>
<!-- End Buttons -->
</div>
<!-- End Console -->
</div>
</div>
<!-- End First Test -->
</div>
<script
src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="View/src/JS/base.js"></script>
</body>
</html>

@ -20,11 +20,17 @@
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/" integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous" crossorigin="anonymous"
></script> ></script>
<link rel="stylesheet" href="../CSS/Main2.css"> <link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0"
/>
<link rel="stylesheet" href="../CSS/Main2.css" />
</head> </head>
<body> <body>
<div class="container align-middle m-auto d-flex" style="background-image: url('../../assets/img/ImgMain.png')"> <div>
<div id="imgMain">
<span class="material-symbols-outlined p-2" id="AllBg" style="font-size:40px; transform: rotate(90deg)"> clear_all </span>
</div>
</div> </div>
</body> </body>
</html> </html>

@ -76,7 +76,7 @@
<p> <p>
Pour cela je vais te demander de réaliser des missions pour moi. Pour cela je vais te demander de réaliser des missions pour moi.
Mais tout d'abord, tu dois passer un test de qualification. Si Mais tout d'abord, tu dois passer un test de qualification. Si
vous réussissez, vous pourrez m'aider à protéger mon code tu réussis, tu pouras m'aider à protéger mon code
source. source.
</p> </p>
</section> </section>

@ -3,7 +3,36 @@ require_once('./Config/Config.php');
require_once('./Config/Autoload.php'); require_once('./Config/Autoload.php');
Autoload::charger(); Autoload::charger();
// echo "test1\n";
// try {
// $con = new Connection($dsn);
// // $query = "INSERT INTO Utilisateur VALUES (:email,:pseudo,:mdp,:estAdmin)";
// // $con->executeQuery($query, array(
// // ':email' => array("SUPERsuper", SQLITE3_TEXT),
// // ':pseudo' => array("dragon", SQLITE3_TEXT),
// // ':mdp' => array("qsdfgyutfcvbghytrfcvgbtfcvgh", SQLITE3_TEXT),
// // ':estAdmin' => array(0, SQLITE3_INTEGER)
// // ));
// $query = "SELECT * FROM Utilisateur";
// $con->executeQuery($query);
// $results = $con->getResults();
// foreach ($results as $row) {
// echo $row['email'] . '</br>';
// echo $row['pseudo'] . '</br>';
// echo $row['mdp'] . '</br>';
// echo $row['estAdmin'] . '</br>';
// }
// }
// catch (PDOException $e) {
// echo $e->getMessage();
// }
// catch (Exception $e2) {
// echo $e2->getMessage();
// }
$control = new FrontController(); $control = new FrontController();
// echo "test2\n";
//session_regenerate_id(true); //session_regenerate_id(true);
// session_unset(); // session_unset();

16
package-lock.json generated

@ -6,7 +6,8 @@
"": { "": {
"dependencies": { "dependencies": {
"bootstrap": "^5.2.2", "bootstrap": "^5.2.2",
"bootstrap-icons": "^1.10.2" "bootstrap-icons": "^1.10.2",
"events": "^3.3.0"
} }
}, },
"node_modules/@popperjs/core": { "node_modules/@popperjs/core": {
@ -41,6 +42,14 @@
"version": "1.10.2", "version": "1.10.2",
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.2.tgz", "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.2.tgz",
"integrity": "sha512-PTPYadRn1AMGr+QTSxe4ZCc+Wzv9DGZxbi3lNse/dajqV31n2/wl/7NX78ZpkvFgRNmH4ogdIQPQmxAfhEV6nA==" "integrity": "sha512-PTPYadRn1AMGr+QTSxe4ZCc+Wzv9DGZxbi3lNse/dajqV31n2/wl/7NX78ZpkvFgRNmH4ogdIQPQmxAfhEV6nA=="
},
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"engines": {
"node": ">=0.8.x"
}
} }
}, },
"dependencies": { "dependencies": {
@ -60,6 +69,11 @@
"version": "1.10.2", "version": "1.10.2",
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.2.tgz", "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.2.tgz",
"integrity": "sha512-PTPYadRn1AMGr+QTSxe4ZCc+Wzv9DGZxbi3lNse/dajqV31n2/wl/7NX78ZpkvFgRNmH4ogdIQPQmxAfhEV6nA==" "integrity": "sha512-PTPYadRn1AMGr+QTSxe4ZCc+Wzv9DGZxbi3lNse/dajqV31n2/wl/7NX78ZpkvFgRNmH4ogdIQPQmxAfhEV6nA=="
},
"events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
} }
} }
} }

@ -1,6 +1,7 @@
{ {
"dependencies": { "dependencies": {
"bootstrap": "^5.2.2", "bootstrap": "^5.2.2",
"bootstrap-icons": "^1.10.2" "bootstrap-icons": "^1.10.2",
"events": "^3.3.0"
} }
} }

Loading…
Cancel
Save