Feat(NSI): fin du notebook sur la complexité
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-03-14 09:57:39 +01:00
parent 76b313324e
commit e3ffe1e626
5 changed files with 418 additions and 209 deletions

View File

@@ -0,0 +1,96 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Recherche par dichotomie</title>
</head>
<body>
<h1>Jeu de recherche</h1>
<section id="setup">
<p> Je crée une liste de
<input type="number" name="quantite" value="100", id="quantite">
nombres aléatoires compris entre 1 et
<input type="number" name="max" value="100", id="max">
triés en ordre croissant.
</p>
<p>Vous devez trouver la position d'un nombre de cette liste en le moins de coup possibles.</p>
<button id="start-game" type="button" onclick="startGame()"> Lancer la partie </button>
</section>
<section id="game">
</section>
<script>
// Génère un nombre aléatoire entre 1 et 100
let randomNumber = 0;
let numbers;
let index;
let tries;
function generateNormalDistribution(mean, stdDev) {
let u = 0, v = 0;
while (u === 0) u = Math.random(); // En évitant 0
while (v === 0) v = Math.random();
const z1 = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
return Math.floor(mean + z1 * stdDev);
}
function startGame() {
const maximum = parseInt(document.getElementById("max").value)
const length = parseInt(document.getElementById("quantite").value)
tries = 0;
const mean = Math.floor(Math.random() * maximum);
const stdDev = 10;
numbers = Array.from({length: length}, () => {
let x;
do {
x = generateNormalDistribution(mean, stdDev);
} while (x < 1 || x > maximum);
return x;
});
numbers.sort((a, b) => a - b);
index = Math.floor(Math.random() * length);
const aTrouver = numbers[index]
document.getElementById("game").innerHTML = `<h2> Trouve la position du nombre ${aTrouver} dans une liste de ${length} nombres entre 1 et ${maximum}</h2>`+
"<label for='guess'> Vous pensez qu'il est en quelle position? </label></br>" +
"<input type='text' id='guess'></br>" +
`<button id="subbutton" type='button' onclick='guessNumber()'>Je tente !</button>` +
"<div id='result'></div>"
document.getElementById("start-game").innerHTML = "Réinitialiser la partie"
}
function guessNumber() {
tries++
document.getElementById("subbutton").innerHTML = `Je tente (déja ${tries} essais)!`
// Récupère la valeur saisie par l'utilisateur
const guess = parseInt(document.getElementById("guess").value);
const length = parseInt(document.getElementById("quantite").value)
// Vérifie si la valeur est un nombre
if (isNaN(guess)) {
document.getElementById("result").innerHTML = "<p>Veuillez saisir un nombre valide.</p>";
return;
}
// Vérifie si la valeur est comprise entre 1 et 100
if (guess < 1 || guess > length) {
document.getElementById("result").innerHTML = "<p>Le nombre doit être compris entre 1 et " + length + "</p>";
return;
}
// Compare la valeur saisie avec le nombre aléatoire
if (guess < index) {
document.getElementById("result").innerHTML = "<p>Il est après!</p>";
} else if (guess > index) {
document.getElementById("result").innerHTML = "<p>Il est avant!</p>";
} else {
document.getElementById("result").innerHTML = `<p>Bravo, vous avez trouvé le nombre en ${tries}!</p>`;
}
}
</script>
</body>
</html>

View File

@@ -1,61 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Jeu du plus ou moins</title>
</head>
<body>
<h1>Jeu du plus ou moins</h1>
<section id="setup">
<p>Devinez un nombre entre 0 et
<input type="number" name="max" value="100", id="max">
</p>
<button id="start-game" type="button" onclick="startGame()"> Lancer la partie </button>
</section>
<section id="game">
</section>
<script>
// Génère un nombre aléatoire entre 1 et 100
let randomNumber = 0;
function startGame() {
const maximum = parseInt(document.getElementById("max").value)
randomNumber = Math.floor(Math.random() * maximum) + 1;
document.getElementById("game").innerHTML = "<h2> Trouve un nombre entre 0 et " + maximum + "</h2>"+
"<input type='text' id='guess'>" +
"<button type='button' onclick='guessNumber()'>Guess</button>" +
"<p id='result'></p>"
document.getElementById("start-game").innerHTML = "Réinitialiser la partie"
}
function guessNumber() {
// Récupère la valeur saisie par l'utilisateur
const guess = parseInt(document.getElementById("guess").value);
const maximum = parseInt(document.getElementById("max").value)
// Vérifie si la valeur est un nombre
if (isNaN(guess)) {
document.getElementById("result").innerHTML = "Veuillez saisir un nombre valide.";
return;
}
// Vérifie si la valeur est comprise entre 1 et 100
if (guess < 1 || guess > maximum) {
document.getElementById("result").innerHTML = "Le nombre doit être compris entre 1 et " + maximum;
return;
}
// Compare la valeur saisie avec le nombre aléatoire
if (guess < randomNumber) {
document.getElementById("result").innerHTML = "Plus grand.";
} else if (guess > randomNumber) {
document.getElementById("result").innerHTML = "Plus petit.";
} else {
document.getElementById("result").innerHTML = "Bravo, vous avez trouvé le nombre !";
}
}
</script>
</body>
</html>

View File

@@ -1,46 +0,0 @@
const popup = document.getElementById('popup');
function closeSection1 () {
let section = document.getElementById('section1');
section.style.display = "none";
popup.classList.remove('hidden');
}
document.getElementById("close-section1").addEventListener('click', closeSection1)
function closeSection2 () {
let section = document.getElementById('section2');
popup.classList.remove('hidden');
let p = document.createElement('p')
p.innerHTML = "Je disparais pas!"
section.appendChild(p)
}
document.getElementById("close-section2").addEventListener('click', closeSection2)
let compteur = 0
function closeSection3 () {
let popup = document.getElementById('popup');
let section = document.getElementById('section3');
if (compteur > 2) {
section.style.display = "none";
popup.classList.remove('hidden');
} else {
compteur = compteur + 1;
popup.classList.remove('hidden');
let p = document.createElement('p')
p.innerHTML = "Restez! Je vous fait une promo de 10%!"
section.appendChild(p)
}
}
document.getElementById("close-section3").addEventListener('click', closeSection3)
const closePopupLink = document.getElementById('close-popup');
closePopupLink.addEventListener('click', (event) => {
event.preventDefault();
popup.classList.add('hidden');
});