Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2034b2f56b | ||
|
|
e37c3d2f7b | ||
|
|
0ee5fc1190 | ||
|
|
ac12d7722c | ||
|
|
fe12673e77 | ||
|
|
924444788e | ||
|
|
4c57e476b1 | ||
|
|
c795317d38 | ||
|
|
8894dbde90 | ||
|
|
f5c0816c94 |
No files matched your search
@@ -0,0 +1,113 @@
|
|||||||
|
function range(n){
|
||||||
|
let ret = [];
|
||||||
|
for(let i = 0; i < n; i ++){
|
||||||
|
ret.push(i)
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
range(10)
|
||||||
|
|
||||||
|
function printEachElement(lst){
|
||||||
|
for(const elm of lst){
|
||||||
|
console.log(elm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getElementAt(lst, index){
|
||||||
|
return lst[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFirstElement(lst){
|
||||||
|
return lst[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSecondElement(lst){
|
||||||
|
return lst[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
function restList(lst){
|
||||||
|
let ret = []
|
||||||
|
let isFirst = true;
|
||||||
|
for(const elm of lst){
|
||||||
|
if(isFirst){
|
||||||
|
isFirst = false;
|
||||||
|
} else {
|
||||||
|
ret.push(elm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function butLast(lst){
|
||||||
|
let ret = []
|
||||||
|
let previousElementSet = false;
|
||||||
|
let previousElement ;
|
||||||
|
for(const elm of lst){
|
||||||
|
if(previousElementSet){
|
||||||
|
ret.push(previousElement);
|
||||||
|
}
|
||||||
|
previousElement = elm;
|
||||||
|
previousElementSet = true;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dropN(lst, n){
|
||||||
|
let ret = [];
|
||||||
|
let i = 0;
|
||||||
|
for(const elm of lst){
|
||||||
|
if(i >= n){
|
||||||
|
ret.push(elm)
|
||||||
|
}
|
||||||
|
i ++;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sumListElements(lst){
|
||||||
|
let ret = 0;
|
||||||
|
for(const elm of lst){
|
||||||
|
ret += elm;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function multiplyListElements(lst){
|
||||||
|
let ret = 1;
|
||||||
|
for(const elm of lst){
|
||||||
|
ret *= elm;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function copy(lst){
|
||||||
|
let ret = [];
|
||||||
|
for(const elm of lst){
|
||||||
|
ret.push(elm)
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isIn(lst, elm){
|
||||||
|
for(const elm_ of lst){
|
||||||
|
if(elm_ === elm){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractPossitiveNumbers(lst){
|
||||||
|
let ret = [];
|
||||||
|
for(const elm of lst){
|
||||||
|
if(elm >= 0){
|
||||||
|
ret.push(elm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>title</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="livre"></div>
|
||||||
|
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
console.log("hello world")
|
||||||
|
|
||||||
|
|
||||||
|
// question 1.b
|
||||||
|
|
||||||
|
let livre = {
|
||||||
|
nom: "JS the good part",
|
||||||
|
year: 2008,
|
||||||
|
price: 19.75,
|
||||||
|
publisher: "O reilly"
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(livre);
|
||||||
|
|
||||||
|
function getAttribute(object, key, defaultValue){
|
||||||
|
if(Object.hasOwn(object, key)){
|
||||||
|
return object[key];
|
||||||
|
}
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let key = "age"
|
||||||
|
let object = {age: 100};
|
||||||
|
let defaultValue = 0;
|
||||||
|
console.log("2.a >> " + getAttribute(object, key, defaultValue)) // 100
|
||||||
|
console.log("2.a >> " + getAttribute({name: "claudette"}, "name", 0)) // claudette
|
||||||
|
|
||||||
|
console.log("2.a >> " + getAttribute({age: 100}, "name", "no name")) // no name
|
||||||
|
console.log("2.a >> " + getAttribute({name: "claudette"}, "age", 0)) // 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function getAttributeWithLoop(object, targetKey, defaultValue){
|
||||||
|
for(let key of Object.keys(object)){
|
||||||
|
let value = object[key];
|
||||||
|
if(key === targetKey){
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
console.log("2'.a >> " + getAttributeWithLoop(object, key, defaultValue)) // 100
|
||||||
|
console.log("2'.a >> " + getAttributeWithLoop({name: "claudette"}, "name", 0)) // claudette
|
||||||
|
|
||||||
|
console.log("2'.a >> " + getAttributeWithLoop({age: 100}, "name", "no name")) // no name
|
||||||
|
console.log("2'.a >> " + getAttributeWithLoop({name: "claudette"}, "age", 0)) // 0
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Petite Trempette</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Petite Trempette</h1>
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
|
||||||
|
function add(a, b){
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(add(103, 198));
|
||||||
|
|
||||||
|
function multiply(a, b){
|
||||||
|
return a * b;
|
||||||
|
}
|
||||||
|
alert(multiply(31, 42));
|
||||||
|
|
||||||
|
|
||||||
|
function convertFahrenheitToCelcius(f){
|
||||||
|
return (f - 32) / 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(convertFahrenheitToCelcius(100));
|
||||||
|
|
||||||
|
|
||||||
|
function convertCelsiusToKelvin(c){
|
||||||
|
return c + 274.15;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(convertCelsiusToKelvin(75));
|
||||||
|
|
||||||
|
|
||||||
|
function convertFahrenheitToKelvin(f){
|
||||||
|
let c = convertFahrenheitToCelcius(f);
|
||||||
|
return convertCelsiusToKelvin(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(convertFahrenheitToKelvin(455));
|
||||||
|
|
||||||
|
|
||||||
|
function absolutValue(val){
|
||||||
|
if(val < 0){
|
||||||
|
return -1 * val;
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(absolutValue(32));
|
||||||
|
alert(absolutValue(-76));
|
||||||
|
|
||||||
|
function isMinor(age){
|
||||||
|
if(age < 18){
|
||||||
|
return "la personne est mineur";
|
||||||
|
}
|
||||||
|
if(age < 21){
|
||||||
|
return "la personne est mineur au états-unis";
|
||||||
|
}
|
||||||
|
return "la personne est majeur";
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(isMinor(16));
|
||||||
|
alert(isMinor(20));
|
||||||
|
alert(isMinor(56));
|
||||||
|
|
||||||
|
|
||||||
|
function canRetire(age, experienceYear){
|
||||||
|
if(age + experienceYear >= 80){
|
||||||
|
return "peut prendre ça retraite";
|
||||||
|
}
|
||||||
|
if(age + experienceYear >= 70){
|
||||||
|
return "presque là";
|
||||||
|
}
|
||||||
|
return "nope";
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(canRetire(60, 25));
|
||||||
|
alert(canRetire(50, 25));
|
||||||
|
alert(canRetire(40, 20));
|
||||||
|
|
||||||
|
|
||||||
|
function trivialFizzBuzz(n){
|
||||||
|
if(n < 0){
|
||||||
|
return "fizz";
|
||||||
|
}
|
||||||
|
if(n > 0){
|
||||||
|
return "buzz";
|
||||||
|
}
|
||||||
|
return "fizzBuzz"
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(trivialFizzBuzz(-13));
|
||||||
|
alert(trivialFizzBuzz(0));
|
||||||
|
alert(trivialFizzBuzz(52));
|
||||||
|
|
||||||
|
|
||||||
|
function miniFizzBuzz(n){
|
||||||
|
if(n % 15 === 0){
|
||||||
|
return "fizzBuzz";
|
||||||
|
}
|
||||||
|
if(n % 3 === 0){
|
||||||
|
return "fizz";
|
||||||
|
}
|
||||||
|
if(n % 5 === 0){
|
||||||
|
return "buzz"
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(miniFizzBuzz(6));
|
||||||
|
alert(miniFizzBuzz(25));
|
||||||
|
alert(miniFizzBuzz(45));
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,224 @@
|
|||||||
|
import mocha from "https://esm.sh/mocha@10.2.0"
|
||||||
|
import {assert} from "https://esm.sh/chai@4.3.10"
|
||||||
|
mocha.setup('bdd');
|
||||||
|
|
||||||
|
function sleep(ms) {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("question 1", function(){
|
||||||
|
it("should have proper title", function(){
|
||||||
|
const expt = "Travail Pratique III";
|
||||||
|
assert.equal(expt, document.getElementById("main-title").innerText)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("question 2", function(){
|
||||||
|
|
||||||
|
async function testQuestion2(userInput, expt){
|
||||||
|
document.getElementById("input-1").value = userInput;
|
||||||
|
document.getElementById("button-1").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-1").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should sum up to 3", async function(){
|
||||||
|
const userInput = (3) + "";
|
||||||
|
const expt = (1 + 2 + 3) + "";
|
||||||
|
await testQuestion2(userInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should sum up to 10", async function(){
|
||||||
|
const userInput = (10) + "";
|
||||||
|
const expt = (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10) + "";
|
||||||
|
await testQuestion2(userInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should work on zero", async function(){
|
||||||
|
const userInput = "0";
|
||||||
|
const expt = "0";
|
||||||
|
await testQuestion2(userInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should not work on random string", async function(){
|
||||||
|
const userInput = "allo";
|
||||||
|
const expt = "Entré invalide";
|
||||||
|
await testQuestion2(userInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should not work on negative values", async function(){
|
||||||
|
const userInput = "-12";
|
||||||
|
const expt = "Entré invalide";
|
||||||
|
await testQuestion2(userInput, expt);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("question 3", function(){
|
||||||
|
|
||||||
|
async function testQuestion3(stepUserInput, limitUserInput, expt){
|
||||||
|
document.getElementById("input-1").value = stepUserInput;
|
||||||
|
document.getElementById("input-2").value = limitUserInput;
|
||||||
|
document.getElementById("button-2").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-2").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should sum up to 3", async function(){
|
||||||
|
const stepUserInput = "1"
|
||||||
|
const limitUserInput = "3";
|
||||||
|
const expt = (1 + 2 + 3) + "";
|
||||||
|
await testQuestion3(stepUserInput, limitUserInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should sum up to 10 by step of 2", async function(){
|
||||||
|
const stepUserInput = "2"
|
||||||
|
const limitUserInput = "10";
|
||||||
|
const expt = (2 + 4 + 6 + 8 + 10) + "";
|
||||||
|
await testQuestion3(stepUserInput, limitUserInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should not work with step as a string", async function(){
|
||||||
|
const stepUserInput = "allo"
|
||||||
|
const limitUserInput = "10";
|
||||||
|
const expt = "Entré invalide";
|
||||||
|
await testQuestion3(stepUserInput, limitUserInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should not work with negative step", async function(){
|
||||||
|
const stepUserInput = "-2"
|
||||||
|
const limitUserInput = "10";
|
||||||
|
const expt = "Entré invalide";
|
||||||
|
await testQuestion3(stepUserInput, limitUserInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should not work with limit as a string", async function(){
|
||||||
|
const stepUserInput = "2"
|
||||||
|
const limitUserInput = "allo";
|
||||||
|
const expt = "Entré invalide";
|
||||||
|
await testQuestion3(stepUserInput, limitUserInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should not work with negative limit", async function(){
|
||||||
|
const stepUserInput = "2"
|
||||||
|
const limitUserInput = "-10";
|
||||||
|
const expt = "Entré invalide";
|
||||||
|
await testQuestion3(stepUserInput, limitUserInput, expt);
|
||||||
|
})
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe("question 4", function(){
|
||||||
|
async function testQuestion4(userInput, expt){
|
||||||
|
document.getElementById("input-3").value = userInput;
|
||||||
|
document.getElementById("button-3").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-3").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should find the proper country of an existing city", async function(){
|
||||||
|
await testQuestion4("Oran", "Algerie");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("should show error message when city not found in data", async function(){
|
||||||
|
await testQuestion4("Paris", "ville non trouvée");
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("question 5", function(){
|
||||||
|
async function testQuestion5(userInput, expt){
|
||||||
|
document.getElementById("input-4").value = userInput;
|
||||||
|
document.getElementById("button-4").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-4").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should find the proper number of existing country is input by user", async function(){
|
||||||
|
await testQuestion5("Canada", 3);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should show zero when non existing country is input by user", async function(){
|
||||||
|
await testQuestion5("France", 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
describe("question 6", function(){
|
||||||
|
async function testQuestion7(userInput, expt){
|
||||||
|
document.getElementById("input-1").value = userInput;
|
||||||
|
document.getElementById("button-5").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-1").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should find the proper population of existing country is input by user", async function(){
|
||||||
|
await testQuestion7("Canada", 1762949 + 2794356 + 662248);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should show zero when non existing country is input by user", async function(){
|
||||||
|
await testQuestion7("France", 0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
describe("question 7", function(){
|
||||||
|
async function testQuestion7(userInput, expt){
|
||||||
|
document.getElementById("input-2").value = userInput;
|
||||||
|
document.getElementById("button-6").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-2").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should find the proper city of existing country is input by user", async function(){
|
||||||
|
await testQuestion7("Canada", "Toronto");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should show zero when non existing country is input by user", async function(){
|
||||||
|
await testQuestion7("France", "aucune ville trouvée");
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("question 8", function(){
|
||||||
|
async function testQuestion8(userInput, expt){
|
||||||
|
document.getElementById("input-3").value = userInput;
|
||||||
|
document.getElementById("button-7").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-3").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should find the proper country of existing person entered by input by user", async function(){
|
||||||
|
await testQuestion8("Djaffar Bensetti", "Algerie");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should show error message when person not found", async function(){
|
||||||
|
await testQuestion8("Marie Antoinette", "aucune personne trouvée");
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("question 9", function(){
|
||||||
|
async function testQuestion9(userInput, expt){
|
||||||
|
document.getElementById("input-4").value = userInput;
|
||||||
|
document.getElementById("button-8").click();
|
||||||
|
await sleep(100);
|
||||||
|
assert.equal(expt, document.getElementById("result-box-4").innerText)
|
||||||
|
}
|
||||||
|
|
||||||
|
it("Canada", async function(){
|
||||||
|
await testQuestion9("Canada", 3);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Mexique", async function(){
|
||||||
|
await testQuestion9("Mexique", 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("France", async function(){
|
||||||
|
await testQuestion9("France", 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
mocha.run();
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>title</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/mocha/mocha.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<h1 class="title is-1" id="main-title">#main-title</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<div id="mocha"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<div class="notification is-primary" id="result-box-1">
|
||||||
|
<strong>#result-box-1</strong>
|
||||||
|
<br>
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="notification is-warning" id="result-box-2">
|
||||||
|
<strong>#result-box-2</strong>
|
||||||
|
<br>
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="notification is-primary is-light" id="result-box-3">
|
||||||
|
<strong>#result-box-3</strong>
|
||||||
|
<br>
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="notification is-warning is-light" id="result-box-4">
|
||||||
|
<strong>#result-box-4</strong>
|
||||||
|
<br>
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<label>
|
||||||
|
#input-1
|
||||||
|
<input class="input" placeholder="Text input" type="text" id="input-1">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<label>
|
||||||
|
#input-2
|
||||||
|
<input class="input" placeholder="Text input" type="text" id="input-2">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<label>
|
||||||
|
#input-3
|
||||||
|
<input class="input" placeholder="Text input" type="text" id="input-3">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<label>
|
||||||
|
#input-4
|
||||||
|
<input class="input" placeholder="Text input" type="text" id="input-4">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-primary" id="button-1">#button-1</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-warning" id="button-2">#button-2</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-primary is-light" id="button-3">#button-3</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-warning is-light" id="button-4">#button-4</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-primary" id="button-5">#button-5</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-warning" id="button-6">#button-6</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-primary is-light" id="button-7">#button-7</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<button type="button" class="button is-warning is-light" id="button-8">#button-8</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="script.js" type="module"></script>
|
||||||
|
<script src="evaluation.mjs" type="module"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
document.getElementById("main-title").innerText = "Travail Pratique III";
|
||||||
|
|
||||||
|
|
||||||
|
const cities = [
|
||||||
|
{"name": "Montreal", "population": 1762949, "country": "Canada"},
|
||||||
|
{"name": "Toronto", "population": 2794356, "country": "Canada"},
|
||||||
|
{"name": "Vancouver", "population": 662248, "country": "Canada"},
|
||||||
|
|
||||||
|
|
||||||
|
{"name": "Bogota", "population": 8034649, "country": "Colombie"},
|
||||||
|
{"name": "Medellin", "population": 8034649, "country": "Colombie"},
|
||||||
|
|
||||||
|
|
||||||
|
{"name": "Alger", "population": 3154792, "country": "Algerie"},
|
||||||
|
{"name": "Oran", "population": 803329, "country": "Algerie"},
|
||||||
|
|
||||||
|
{"name": "Mexico", "population": 9209944, "country": "Mexique"}
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
const persons = [
|
||||||
|
{"name": "Maurice Vachon", "city": "Montreal"},
|
||||||
|
{"name": "Jane Munro", "city": "Vancouver"},
|
||||||
|
{"name": "Eckhart Tolle", "city": "Vancouver"},
|
||||||
|
{"name": "Ingrid Betancourt", "city": "Bogota"},
|
||||||
|
{"name": "DJ Pope", "city": "Medellin"},
|
||||||
|
{"name": "Djaffar Bensetti", "city": "Oran"}
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
function isNumber(x) {
|
||||||
|
return x !== "" && !isNaN(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isPositiveInteger(text) {
|
||||||
|
return isNumber(text) && parseInt(text) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStrictlyPositiveInteger(text){
|
||||||
|
return isPositiveInteger(text) && parseInt(text) !== 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sumUpTo(n){
|
||||||
|
let sum = 0;
|
||||||
|
for(let i = 0; i <= n; i ++){
|
||||||
|
sum = sum + i;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sumUpToByStep(step, limit){
|
||||||
|
let sum = 0;
|
||||||
|
for(let i = 0; i <= limit; i = i + step){
|
||||||
|
sum = sum + i;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo2Message(userInput){
|
||||||
|
if(!isPositiveInteger(userInput)){
|
||||||
|
return "Entré invalide";
|
||||||
|
}
|
||||||
|
return sumUpTo(parseInt(userInput));
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo2(){
|
||||||
|
const userInput = document.getElementById("input-1").value;
|
||||||
|
document.getElementById("result-box-1").innerText = exo2Message(userInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-1").onclick = exo2;
|
||||||
|
|
||||||
|
function exo3Message(stepUserInput, limitUserInput){
|
||||||
|
if(!isStrictlyPositiveInteger(stepUserInput)){
|
||||||
|
return "Entré invalide";
|
||||||
|
}
|
||||||
|
if(!isStrictlyPositiveInteger(limitUserInput)){
|
||||||
|
return "Entré invalide";
|
||||||
|
}
|
||||||
|
return sumUpToByStep(parseInt(stepUserInput), parseInt(limitUserInput));
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo3(){
|
||||||
|
const stepUserInput = document.getElementById("input-1").value;
|
||||||
|
const limitUserInput = document.getElementById("input-2").value;
|
||||||
|
document.getElementById("result-box-2").innerText = exo3Message(stepUserInput, limitUserInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-2").onclick = exo3;
|
||||||
|
|
||||||
|
|
||||||
|
function exo4Message(city) {
|
||||||
|
return getCityByName(city)?.country??"ville non trouvée";
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo4(){
|
||||||
|
const userInput = document.getElementById("input-3").value;
|
||||||
|
document.getElementById("result-box-3").innerText = exo4Message(userInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-3").onclick = exo4;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function findNumberOfCitiesInCountry(countryName) {
|
||||||
|
let n = 0;
|
||||||
|
for(let city of cities){
|
||||||
|
if(city.country === countryName){
|
||||||
|
n = n + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo5(){
|
||||||
|
const userInput = document.getElementById("input-4").value;
|
||||||
|
document.getElementById("result-box-4").innerText = findNumberOfCitiesInCountry(userInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-4").onclick = exo5;
|
||||||
|
|
||||||
|
|
||||||
|
function findPopulationOfCitiesInCountry(countryName) {
|
||||||
|
let population = 0;
|
||||||
|
for(let city of cities){
|
||||||
|
if(city.country === countryName){
|
||||||
|
population = population + city.population;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return population;
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo6(){
|
||||||
|
const userInput = document.getElementById("input-1").value;
|
||||||
|
document.getElementById("result-box-1").innerText = findPopulationOfCitiesInCountry(userInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-5").onclick = exo6;
|
||||||
|
|
||||||
|
function getCitiesInCountry(country) {
|
||||||
|
const ret = [];
|
||||||
|
for(const city of cities){
|
||||||
|
if(city.country == country){
|
||||||
|
ret.push(city);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLargestCity(cities){
|
||||||
|
let largestCity;
|
||||||
|
let largestCityPopulation = -1;
|
||||||
|
for(const city of cities){
|
||||||
|
if(city.population > largestCityPopulation){
|
||||||
|
largestCity = city;
|
||||||
|
largestCityPopulation = city.population;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return largestCity;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function findLargestCitiesInCountry(country){
|
||||||
|
const citiesInCountry = getCitiesInCountry(country);
|
||||||
|
if(citiesInCountry.length === 0){
|
||||||
|
return "aucune ville trouvée";
|
||||||
|
}
|
||||||
|
const largestCity = getLargestCity(citiesInCountry);
|
||||||
|
return largestCity.name;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo7(){
|
||||||
|
const userInput = document.getElementById("input-2").value;
|
||||||
|
document.getElementById("result-box-2").innerText = findLargestCitiesInCountry(userInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-6").onclick = exo7;
|
||||||
|
|
||||||
|
|
||||||
|
function getPersonByName(personName) {
|
||||||
|
for(const person of persons){
|
||||||
|
if(personName === person.name){
|
||||||
|
return person;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCityByName(cityName) {
|
||||||
|
for(const city of cities){
|
||||||
|
if(city.name === cityName){
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function findCountryOfOrigin(personName){
|
||||||
|
const person = getPersonByName(personName);
|
||||||
|
if(!person){
|
||||||
|
return "aucune personne trouvée";
|
||||||
|
}
|
||||||
|
return getCityByName(person.city).country
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function exo8(){
|
||||||
|
const userInput = document.getElementById("input-3").value;
|
||||||
|
document.getElementById("result-box-3").innerText = findCountryOfOrigin(userInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-7").onclick = exo8;
|
||||||
|
|
||||||
|
|
||||||
|
function getPersonsByCityName(cityName) {
|
||||||
|
const ret = [];
|
||||||
|
for(const person of persons){
|
||||||
|
if(person.city === cityName){
|
||||||
|
ret.push(person);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findAllPeopleInCountryByName(countryName) {
|
||||||
|
let ret = [];
|
||||||
|
for(const city of cities){
|
||||||
|
if(city.country === countryName){
|
||||||
|
ret = ret.concat(getPersonsByCityName(city.name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function exo9(){
|
||||||
|
const userInput = document.getElementById("input-4").value;
|
||||||
|
document.getElementById("result-box-4").innerText = findAllPeopleInCountryByName(userInput).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.getElementById("button-8").onclick = exo9;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in new issue
Block a user