Feat(NSI): fin du notebook sur la complexité
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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>
|
@@ -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>
|
@@ -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');
|
||||
});
|
Reference in New Issue
Block a user