# Week 1
# Triangle
Maak een bestand triangle.js aan in de reeds aangemaakt folder week-1.
Genereer een driehoek op basis van de breedte (variable b) en de hoogte (variable h). De waarde van de hoogte is gelijk aan de waarde van de breedte. Specificeer ook het het teken dat gebruikt wordt de rechthoek op te vullen – in dit voorbeeld is het een asterisk (*). Specificeer ook het teken dat gebruikt wordt als separator tussen de kolommen – in dit voorbeeld een spatie ().
**Oplossing 1**:Resultaat
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
./artevelde/pgm-code/pgm-1/week-2/triangle.js
/*
* Triangle
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const b = 11;
const h = 11;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < b; r++) {
for (let c = 0; c < h; c++) {
if (c > 0) {
tempStr += gap;
}
if (c < b - r) {
tempStr += bit;
}
// niet nodig
// } else {
// tempStr += " ";
// }
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
./artevelde/pgm-code/pgm-1/week-2/triangle_shorter.js
/*
* Triangle
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const b = 11;
const h = 11;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < b; r++) {
for (let c = 0; c < h; c++) {
tempStr += (c > 0 ? gap : "") + (c < b - r ? bit : " ");
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
./artevelde/pgm-code/pgm-1/week-2/triangle_alt.js
/*
* Triangle
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Thibault Fouquaert
* Last updated: 30/09/2020
*/
const b = 11;
const h = 11;
const bit = "*";
const gap = " ";
let tempStr = "";
//onderstaande oplossing werkt met een omgekeerde teller, plaats uit uit commentaar om te testen en plaats bovenstaande for-lus in commentaar
for (let r = b; r >= 0; r--) {
//tellen met r van 11 naar 1 ipv O naar 10
for (let c = 0; c < r; c++) {
//merk op: c < r als conditie. We willen de lus evenveel uitvoeren als onze teller in de buitenste lus (r): voor de 1e rij (r=11) 11 keer (c:0,1,...,10), voor de 2e rij (r=10) 10 keer (c:0,1,...,9), voor de 11e rij (r=0) 1 keer (c:0)
tempStr += (c > 0 ? gap : "") + bit; //het eerste deel na += checkt of we de eerste ster/kolom zetten, want die hoeft niet vooraf gegaan worden door een spatie. Na al dan niet de spatie volgt de effectieve ster ( + bit )
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Triangle reverse
Maak een bestand triangle_reverse.js aan in de reeds aangemaakt folder week-1.
Genereer een omgekeerde driehoek op basis van de breedte (variable b) en de hoogte (variable h). De waarde van de hoogte is gelijk aan de waarde van de breedte. Specificeer ook het het teken dat gebruikt wordt de rechthoek op te vullen – in dit voorbeeld is het een asterisk (*). Specificeer ook het teken dat gebruikt wordt als separator tussen de kolommen – in dit voorbeeld een spatie ().
**Oplossing 1**:Resultaat
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
./artevelde/pgm-code/pgm-1/week-2/triangle_reverse.js
/*
* Triangle Reverse
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const b = 11;
const h = 11;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < b; r++) {
for (let c = 0; c < h; c++) {
if (c > 0) {
tempStr += gap;
}
if (c <= r) {
tempStr += bit;
} else {
tempStr += " ";
}
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
./artevelde/pgm-code/pgm-1/week-2/triangle_reverse_shorter.js
/*
* Triangle Reverse
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const b = 11;
const h = 11;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < b; r++) {
for (let c = 0; c < h; c++) {
tempStr += (c > 0 ? gap : "") + (c <= r ? bit : " ");
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
./artevelde/pgm-code/pgm-1/week-2/triangle_reverse_alt.js
/*
* Triangle Reverse
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Thibault Fouquaert
* Last updated: 30/09/2020
*/
const b = 11;
const h = 11;
const bit = "*";
const gap = " ";
let tempStr = "";
//onderstaande oplossing werkt door de binnenste lus niet telkens evenveel (bv 10 keer) uit te voeren per iteratie van de buitsenste lus, maar slechts evenveel iteraties als er bits nodig zijn.
// hoeveel bits(*) zijn er nodig per rij? evenveel als de n-de rij (rij 1 -> *, rij 2 -> **,...)
for (let r = 0; r < b; r++) {
for (let c = 0; c <= r; c++) {
//merk op: c <= r als conditie. We willen de lus evenveel uitvoeren als onze teller in de buitenste lus (r): voor de 1e rij (r=0) 1 keer (c:0), voor de 2e rij (r=1) 2 keer (c:0,1), voor de 11e rij (r=0) 11 keer (c:0,1,...,10))
tempStr += (c > 0 ? gap : "") + bit; //het eerste deel na += checkt of we de eerste ster/kolom zetten, want die hoeft niet vooraf gegaan worden door een spatie. Na al dan niet de spatie volgt de effectieve ster ( + bit )
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Border rectangle
Maak een bestand border_rectangle.js aan in de reeds aangemaakt folder week-1.
Genereer een lege rechthoek met enkel een zichtbare border op basis van het aantal kolommen (variable nCols) en het aantal rijen (variable nRows).
**Oplossing 1**:Resultaat
* * * * * * * * * * * * * * * * * * * *
./artevelde/pgm-code/pgm-1/week-2/border_rectangle.js
/*
* Border rectangle
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const nCols = 8;
const nRows = 4;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < nRows; r++) {
for (let c = 0; c < nCols; c++) {
if (c > 0) {
tempStr += gap;
}
if (r === 0 || r === nRows - 1 || c === 0 || c === nCols - 1) {
tempStr += bit;
} else {
tempStr += " ";
}
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
./artevelde/pgm-code/pgm-1/week-2/border_rectangle_shorter.js
/*
* Border rectangle
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const nCols = 8;
const nRows = 4;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < nRows; r++) {
for (let c = 0; c < nCols; c++) {
tempStr +=
(c > 0 ? gap : "") +
"" +
(r === 0 || r === nRows - 1 || c === 0 || c === nCols - 1
? bit
: " ");
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Switch
Maak een bestand switch.js aan in de reeds aangemaakt folder week-1.
Genereer een lege rechthoek met enkel een zichtbare border op basis van het aantal kolommen (variable nCols) en het aantal rijen (variable nRows). Vul vanaf het midden (Y-as) alle posities met het opgegeven teken.
**Oplossing**:Resultaat
* * * * * * * * * * * * * * * * * * * * * * * * * *
./artevelde/pgm-code/pgm-1/week-2/switch_shorter.js
const nCols = 4;
const nRows = 8;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < nRows; r++) {
for (let c = 0; c < nCols; c++) {
tempStr +=
(c > 0 ? gap : "") +
"" +
(r === 0 || r === nRows - 1 || r >= Math.floor(nRows / 2)
? bit
: c === 0 || c === nCols - 1
? bit
: " ");
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Close square
Maak een bestand close_square.js aan in de reeds aangemaakt folder week-1.
Genereer een leeg vierkant met enkel een zichtbare border op basis van een gelijk aantal kolommen (variable nCols) en rijen (variable nRows). In het vierkant geven we een kruis weer gelijkaardig met een sluitknop. Het aantal rijen en kolommen zijn steeds oneven.
**Oplossing 1**:Resultaat
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
./artevelde/pgm-code/pgm-1/week-2/close_square.js
/*
* Close square
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const nCols = 5;
const nRows = 5;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < nRows; r++) {
for (let c = 0; c < nCols; c++) {
if (c > 0) {
tempStr += gap;
}
if (
r === 0 ||
r === nRows - 1 ||
c === 0 ||
c === nCols - 1 ||
c + r * nCols === r + r * nCols ||
c + r * nCols === (r + 1) * nCols - (r + 1)
) {
tempStr += bit;
} else {
tempStr += " ";
}
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
./artevelde/pgm-code/pgm-1/week-2/close_square_shorter.js
/*
* Close square
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 2
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 21/09/2020
*/
const nCols = 5;
const nRows = 5;
const bit = "*";
const gap = " ";
let tempStr = "";
for (let r = 0; r < nRows; r++) {
for (let c = 0; c < nCols; c++) {
tempStr +=
(c > 0 ? gap : "") +
"" +
(r === 0 || r === nRows - 1
? bit
: c === 0 ||
c === nCols - 1 ||
c + r * nCols === r + r * nCols ||
c + r * nCols === (r + 1) * nCols - (r + 1)
? bit
: " ");
}
tempStr += "\n";
}
console.log(tempStr);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Credit card validator
Valideer een credit card met de volgende restricties
- Nummer moet bestaan uit 16 digits, allemaal getallen.
- Tenminste twee getallen moeten verschillend zijn.
- De laatste digit moet een even getal zijn.
- De som van de digits moet groter zijn dan 16.
Stappenplan:
- Maak een bestand
credit_card_validator.jsaan in de reeds aangemaakt folderweek-1. - Schrijf een functie genaamd
verifyCreditCardNumberdat:- 1 argument bevat: credit card nummer
- functie geeft de waarde
trueoffalseterug
./artevelde/pgm-code/pgm-1/week-4/credit_card_validator.js
/*
* Credit Card Validator
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 3
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 27/09/2020
* ===================================================================
* In this project you'll write a script that validates whether or not a credit card number is valid.
*
* Here are the rules for a valid number:
*
* - Number must be 16 digits, all of them must be numbers.
* - You must have at least two different digits represented (all of the digits cannot be the same).
* - The final digit must be even.
* - The sum of all the digits must be greater than 16.
*/
let creditCardNumber = 9999777788880000;
console.log(
`The credit card number ${creditCardNumber} is ${
verifyCreditCardNumber(creditCardNumber) ? "valid" : "invalid"
}.`
);
creditCardNumber = 6666666666661666;
console.log(
`The credit card number ${creditCardNumber} is ${
verifyCreditCardNumber(creditCardNumber) ? "valid" : "invalid"
}.`
);
creditCardNumber = "a92332119c011112";
console.log(
`The credit card number ${creditCardNumber} is ${
verifyCreditCardNumber(creditCardNumber) ? "valid" : "invalid"
}.`
);
creditCardNumber = 4444444444444444;
console.log(
`The credit card number ${creditCardNumber} is ${
verifyCreditCardNumber(creditCardNumber) ? "valid" : "invalid"
}.`
);
creditCardNumber = 1111111111111110;
console.log(
`The credit card number ${creditCardNumber} is ${
verifyCreditCardNumber(creditCardNumber) ? "valid" : "invalid"
}.`
);
creditCardNumber = 6666666666666661;
console.log(
`The credit card number ${creditCardNumber} is ${
verifyCreditCardNumber(creditCardNumber) ? "valid" : "invalid"
}.`
);
function verifyCreditCardNumber(number) {
const creditCardNumberAsString = number.toString();
if (creditCardNumberAsString.length !== 16) {
return false;
}
if (isNaN(parseInt(creditCardNumberAsString))) {
return false;
}
if (parseInt(creditCardNumberAsString[creditCardNumberAsString.length - 1]) % 2 !== 0) {
return false;
}
const uniqueChars = [];
let sumOfChars = 0;
const chars = creditCardNumberAsString.split("");
chars.forEach(function (c) {
if (uniqueChars.indexOf(c) === -1) {
uniqueChars.push(c);
}
sumOfChars += parseInt(c);
});
if (uniqueChars < 2 || sumOfChars <= 16) {
return false;
}
return true;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Scrambled text
Met deze applicatie veranderen we de positie van tekens in een string, bijv. webmaster wordt sreabewmt.
Stappenplan:
- Maak een bestand
scrambled_text.jsaan in de reeds aangemaakt folderweek-1. - Schrijf een functie genaamd
scrambleTextdat:- 1 argument bevat: de tekst die herschikt zal worden
- geeft herschikte text terug
**Mogelijke oplossing**:Voorbeeld
The word "website" scrambled is "webstie" The word "webdevelopment" scrambled is "eepwmovnbeeltd" The word "programming" scrambled is "mprigagmorn"
./artevelde/pgm-code/pgm-1/week-4/scrambled_text.js
/*
* Scrambled Text
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 3
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 04/10/2020
*/
/**
* Scrambled Text
*/
function scrambleText(txt) {
let scrambled = "";
let c = "";
let i = 0;
while (txt.length > 0) {
i = Math.floor(Math.random() * txt.length); // 5
c = txt.charAt(i); // t
scrambled += c;
txt = txt.substring(0, i) + txt.substring(i + 1);
}
return scrambled;
}
let word = "website";
console.log(`The word "${word}" scrambled is "${scrambleText(word)}"`);
word = "webdevelopment";
console.log(`The word "${word}" scrambled is "${scrambleText(word)}"`);
word = "programming";
console.log(`The word "${word}" scrambled is "${scrambleText(word)}"`);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Globally Unique Identifier (GUID)
Deze applicatie genereert paswoorden, bijv.: A26dY26zQ.
- Maak een bestand
guid.jsaan in de reeds aangemaakt folderweek-1. - Schrijf een functie genaamd
generateGUIDdat:- 1 argument bevat: het aantal tekens dat het paswoord moet bevatten
- geeft het gegenereerd paswoord terug (string)
- Roep deze functie 2 keer aan, steeds met een andere waarde voor het argument
- Log het resultaat van elke aanroep naar de console.
# Sorting array of objects
Schrijf een JavaScript programma waarmee een array van objecten gesorteerd (opens new window) kan worden op een bepaalde eigenschap (property) van het object.
Gegeven volgende array:
const library = [
{
title: "The Road Ahead",
author: "Bill Gates",
libraryID: 1254,
},
{
title: "Gem Squash Tokoloshe",
author: "Zadok Rachel",
libraryID: 3245,
},
{
title: "Walter Isaacson",
author: "Steve Jobs",
libraryID: 4264,
},
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- Sorteer de array
- alfabetisch op de eigenschap
author. Output het resultaat – de gesorteerde array – naar de console. - omgekeerd alfabetisch (Eng. reverse alphabetical) op de eigenschap
author. Output het resultaat (de gesorteerde array) naar de console. - oplopend op
libraryID. Output het resultaat (de gesorteerde array) naar de console. - aflopend op
libraryID. Output het resultaat (de gesorteerde array) naar de console.
- alfabetisch op de eigenschap
Voorbeeld Output
---Alfabetisch sorteren----
[
{ title: 'The Road Ahead', author: 'Bill Gates', libraryID: 1254 },
{ title: 'Walter Isaacson', author: 'Steve Jobs', libraryID: 4264 },
{
title: 'Gem Squash Tokoloshe',
author: 'Zadok Rachel',
libraryID: 3245
}
]
---Omgkeerd alfabetisch sorteren----
[
{
title: 'Gem Squash Tokoloshe',
author: 'Zadok Rachel',
libraryID: 3245
},
{ title: 'Walter Isaacson', author: 'Steve Jobs', libraryID: 4264 },
{ title: 'The Road Ahead', author: 'Bill Gates', libraryID: 1254 }
]
---Sorteren op getallen (libraryID)----
[
{ title: 'The Road Ahead', author: 'Bill Gates', libraryID: 1254 },
{
title: 'Gem Squash Tokoloshe',
author: 'Zadok Rachel',
libraryID: 3245
},
{ title: 'Walter Isaacson', author: 'Steve Jobs', libraryID: 4264 }
]
---Omgkeerd sorteren op getallen (libraryID)----
[
{ title: 'Walter Isaacson', author: 'Steve Jobs', libraryID: 4264 },
{
title: 'Gem Squash Tokoloshe',
author: 'Zadok Rachel',
libraryID: 3245
},
{ title: 'The Road Ahead', author: 'Bill Gates', libraryID: 1254 }
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
./artevelde/pgm-code/pgm-1/week-4/sorting_array_of_objects.js
/*
* Sorting array of objects
* ===================================================================
* Course: Programming 1: Front-End Essentials
* Week: 4
* Developed by: Philippe De Pauw - Waterschoot
* Last updated: 27/09/2020
* ===================================================================
*/
// Define a library variable with a list of objects (books)
const library = [
{
title: "The Road Ahead",
author: "Bill Gates",
libraryID: 1254,
},
{
title: "Walter Isaacson",
author: "Steve Jobs",
libraryID: 4264,
},
{
title: "Mockingjay: The Final Book of The Hunger Games",
author: "Suzanne Collins",
libraryID: 3245,
},
];
// Sort the array, sort order based on the author
library.sort(function(obj1, obj2) {
if (obj1.author > obj2.author) return -1;
// Place after
else if (obj1.author < obj2.author) return 1;
// Place before
else return 0; // Stay on place within the array
});
console.log(library); // Log the object to the console
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Digital clock is ticking
Maak een bestand digital_clock_ticking.js aan in de reeds aangemaakt folder week-1.
In deze applicatie maken we een digitale clock die tikt. Gebruik de ingebouwde setInterval() (opens new window) methode met een delay van 1000 milliseconden.
Stappenplan:
- Beschrijf een functie
generateDigitalClockUTCAsString()met:- 1 parameter
utcwaarin we de tijdszone specifieren - 1 parameter
cityNamewaarin we de naam van de stad specifieren - geeft de string representatie van de tijd terug bijv.
17:53:45
- 1 parameter
- Beschrijf een functie
ticking()waaring we de klok laten tikken. Deze functie wordt aangeroepen in desetInterval()methode.
**Mogelijke oplossing**:Voorbeeld
The time in Ghent is 18:23:21 The time in Ghent is 18:23:22 The time in Ghent is 18:23:24 The time in Ghent is 18:23:25 The time in Ghent is 18:23:26 The time in Ghent is 18:23:27 The time in Ghent is 18:23:28
./artevelde/pgm-code/pgm-1/week-4/digital_clock_ticking.js
/*
Digital Clock ticking
===================================================================
Course: Programming 1: Essentials
Week: 3
Developed by: Philippe De Pauw - Waterschoot
Last updated: 04/10/2020
===================================================================
*/
function generateDigitalClockUTCAsString (utc, cityName) {
const date = new Date();
date.setHours(date.getHours() + utc + date.getTimezoneOffset()/60);
return `The time in ${cityName} is ${toAmountOfDigits(date.getHours(), 2)}:${toAmountOfDigits(date.getMinutes(), 2)}:${toAmountOfDigits(date.getSeconds(), 2)}`;
}
function toAmountOfDigits (number, amount) {
let str = String(number);
while (str.length < amount) {
str = `0${str}`;
}
return str;
}
function ticking () {
console.log(`${generateDigitalClockUTCAsString(2, 'Ghent')}`);
}
setInterval(ticking, 1000); 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26