Browse Source

Reformat markdown (with prettier)

content-update
xpetit 3 years ago
parent
commit
def316d0f3
No known key found for this signature in database
GPG Key ID: 97C60669182C17A5
  1. 10
      docs/audits-at-home/README_ru.md
  2. 86
      docs/metrics.md
  3. 14
      docs/piscine-rust-curriculum.md
  4. 3
      docs/server-requirements.md
  5. 2
      subjects/abs/README.md
  6. 1
      subjects/action-reaction/README.md
  7. 2
      subjects/all/README.md
  8. 80
      subjects/armyofone/README.md
  9. 66
      subjects/armyofone/audit/README.md
  10. 4
      subjects/ascii-art-web/README.md
  11. 4
      subjects/atm-management-system/README.md
  12. 2
      subjects/atm-management-system/audit/README.md
  13. 2
      subjects/biggie-smalls/README.md
  14. 7
      subjects/block-chain/README.md
  15. 2
      subjects/blood_types_s/README.md
  16. 2
      subjects/bloody-sunday/README.md
  17. 1
      subjects/borrow/README.md
  18. 18
      subjects/borrow_me_the_reference/README.md
  19. 1
      subjects/bring-it-to-life/README.md
  20. 54
      subjects/carbon-copy/audit/README.md
  21. 3
      subjects/change/README.md
  22. 2
      subjects/changes/README.md
  23. 2
      subjects/chunky/README.md
  24. 1
      subjects/circular/README.md
  25. 1
      subjects/class-that/README.md
  26. 1
      subjects/clonernews/README.md
  27. 4
      subjects/collections/README.md
  28. 1
      subjects/concat-str/README.md
  29. 14
      subjects/copy/README.md
  30. 2
      subjects/count-leap-years/README.md
  31. 5
      subjects/currify/README.md
  32. 4
      subjects/cut-corners/README.md
  33. 2
      subjects/day-of-the-year/README.md
  34. 2
      subjects/declarations/README.md
  35. 1
      subjects/dr-strange/README.md
  36. 1
      subjects/elementary/README.md
  37. 28
      subjects/ephemeris/README.md
  38. 2
      subjects/fibonacci2/README.md
  39. 8
      subjects/filter/README.md
  40. 8
      subjects/find-expression/README.md
  41. 50
      subjects/firingrange/audit/README.md
  42. 1
      subjects/first-words/README.md
  43. 8
      subjects/flagger/README.md
  44. 2
      subjects/flat/README.md
  45. 8
      subjects/flow/README.md
  46. 2
      subjects/for-each/README.md
  47. 374
      subjects/forum/audit/README.md
  48. 102
      subjects/forum/moderation/audit.md
  49. 6
      subjects/fusion/README.md
  50. 5
      subjects/get-json/README.md
  51. 7
      subjects/get/README.md
  52. 4
      subjects/good-practices/README.md
  53. 10
      subjects/gougle-search/README.md
  54. 1
      subjects/greedy-url/README.md
  55. 6
      subjects/group-price/README.md
  56. 206
      subjects/groupie-tracker/audit/README.md
  57. 2
      subjects/has-city/README.md
  58. 7
      subjects/hello_rust/README.md
  59. 5
      subjects/index-of/README.md
  60. 1
      subjects/ion-out/README.md
  61. 5
      subjects/is-winner/README.md
  62. 3
      subjects/is/README.md
  63. 1
      subjects/its-a-match/README.md
  64. 1
      subjects/keep-cut/README.md
  65. 12
      subjects/keep-trying-or-giveup/README.md
  66. 1
      subjects/last-first-kiss/README.md
  67. 1
      subjects/letter-space-number/README.md
  68. 6
      subjects/long-words/README.md
  69. 6
      subjects/make-your-game/different-maps/README.md
  70. 2
      subjects/manipulate-entries/README.md
  71. 3
      subjects/manipulate-keys/README.md
  72. 2
      subjects/manipulate-values/README.md
  73. 4
      subjects/mapper/README.md
  74. 1
      subjects/match-cron/README.md
  75. 2
      subjects/matrix_transposition/README.md
  76. 2
      subjects/min-max/README.md
  77. 2
      subjects/more-or-less/README.md
  78. 110
      subjects/mousevr/README.md
  79. 62
      subjects/mousevr/audit/README.md
  80. 3
      subjects/multiplayer_fps/README.md
  81. 2
      subjects/mutability/README.md
  82. 4
      subjects/nasa/README.md
  83. 138
      subjects/nascaronlinealpha/README.md
  84. 2
      subjects/neuron/README.md
  85. 2
      subjects/ownership/README.md
  86. 2
      subjects/primitives/README.md
  87. 6
      subjects/pronoun/README.md
  88. 1
      subjects/pyramid/README.md
  89. 8
      subjects/quad/README.md
  90. 8
      subjects/quantifiers/README.md
  91. 3
      subjects/race/README.md
  92. 2
      subjects/rebecca-black/README.md
  93. 23
      subjects/reduce/README.md
  94. 2
      subjects/repeat/README.md
  95. 1
      subjects/returns/README.md
  96. 2
      subjects/reverser/README.md
  97. 7
      subjects/road_intersection/README.md
  98. 3
      subjects/same-amount/README.md
  99. 11
      subjects/scalar/README.md
  100. 1
      subjects/select-and-style/README.md
  101. Some files were not shown because too many files changed in this diff diff.show_more

10
docs/audits-at-home/README_ru.md

@ -26,7 +26,7 @@
Также, можете прочесть:
### Необходимые вещи для коммуникации аудитора и капитана команды
### Необходимые вещи для коммуникации аудитора и капитана команды
- Программы для коммуникации и стрима (Discord подойдет)
- teamViewer или что-то похожее чтобы дать аудитору доступ к вашему компьютеру
@ -54,11 +54,11 @@
4. Капитан, зайдя на платформу, разрешает аудитору взять под контроль свой компьютер (TeamViewer)
5. Теперь аудитор может запустить проверку на компьютере капитана.
   Организация окон со стороны аудитора может быть сложной частью. Мы предлагаем
   посмотреть видео, и узнать как мы это сделали.
   Организация окон со стороны аудитора может быть сложной частью. Мы предлагаем
   посмотреть видео, и узнать как мы это сделали.
6. Аудитор проводит проверку, если аудитор не может в прямом эфире транслировать свою проверку, он или она
   затем объяснит голосом (или в чате), что он или она делает и как проверяет.
   затем объяснит голосом (или в чате), что он или она делает и как проверяет.
7. Аудит проводится до тех пор, пока все вопросы не верны или пока не будет допущена ошибка.
@ -67,7 +67,7 @@
9. Группа обсуждает потенциальное место ошибки столько, сколько необходимо, до завершения аудита.
10. После завершения аудита все программы могут быть закрыты. Скажите пока и спасибо за ваше время и сделайте
    необходимые выводы среди членов группы.
    необходимые выводы среди членов группы.
### Conclusion

86
docs/metrics.md

@ -1,63 +1,65 @@
## Metrics card - Export of students' results
### Where to find the data
Metrics for students from a given campus can be found in the Metrics card in the Admin dashboard.
### Important information
* Data can be exported in csv and json formats
* Data is filtered by campus, exports include all historical data for that campus.
* We will later develop a feature that enables filtering information before downloading it
* Data is updated every hour
* The download link is valid for 24 hours
* We recommend sharing the downloaded document itself instead of the download link as the link contains the admin’s authorisation token
- Data can be exported in csv and json formats
- Data is filtered by campus, exports include all historical data for that campus.
- We will later develop a feature that enables filtering information before downloading it
- Data is updated every hour
- The download link is valid for 24 hours
- We recommend sharing the downloaded document itself instead of the download link as the link contains the admin’s authorisation token
### Description of the data included in the exports
Field | Example | Description
----- | ----- | -----
**user** | MarieMalarme | Student’s github username
**first_name** | Marie | Student’s first name
**last_name** | Malarme | Student’s last name
**object** | who-are-you | Name of the object for which a result is given
**type** | exercise | There are 3 object types: <br/> - exercise (for quests and exams) <br/> - raid <br/> - project
**parent** | Quest 01 | The object’s hierarchical parent: <br/> - If the object is an exercise, the parent will be either a quest or an exam. <br/> - If the object is a raid or a project, the parent will be the module (piscine or div)
**module** | piscine-go | The part of the curriculum in which the object is included, either a piscine (piscine Go, piscine JS, piscine Rust) or the main curriculum (Div01)
**path** | /madere/piscine-go/quest-01/who-are-you | The url to that object, which outlines the path and hence the hierarchical structure to that object
**attempts** | 2 | Number of submission attempts made by the student
**status** | succeeded | Current status of the student's work on the object: <br/> - "available" indicates that the student has started working on the object but either hasn't submitted it yet to be corrected, or is waiting for the auditing process to be completed <br/> - "succeeded" and "failed" are attributed once the object has been corrected
**xp** | 325 | Number of XPs gained by the student for succeeding
**base_xp** | 325 | Maximum number of XPs the student can get for succeeding for that object
**grade** | 1 | The student’s score for that object is a number between 0 (failed) and 1 (succeeded). If the object is a project, the grade can be superior to 1 when the student successfully passes bonus questions
**last_update** | 2020-07-27T15:39:46.368Z | Date and time of the student’s latest activity for that object
| Field | Example | Description |
| --------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **user** | MarieMalarme | Student’s github username |
| **first_name** | Marie | Student’s first name |
| **last_name** | Malarme | Student’s last name |
| **object** | who-are-you | Name of the object for which a result is given |
| **type** | exercise | There are 3 object types: <br/> - exercise (for quests and exams) <br/> - raid <br/> - project |
| **parent** | Quest 01 | The object’s hierarchical parent: <br/> - If the object is an exercise, the parent will be either a quest or an exam. <br/> - If the object is a raid or a project, the parent will be the module (piscine or div) |
| **module** | piscine-go | The part of the curriculum in which the object is included, either a piscine (piscine Go, piscine JS, piscine Rust) or the main curriculum (Div01) |
| **path** | /madere/piscine-go/quest-01/who-are-you | The url to that object, which outlines the path and hence the hierarchical structure to that object |
| **attempts** | 2 | Number of submission attempts made by the student |
| **status** | succeeded | Current status of the student's work on the object: <br/> - "available" indicates that the student has started working on the object but either hasn't submitted it yet to be corrected, or is waiting for the auditing process to be completed <br/> - "succeeded" and "failed" are attributed once the object has been corrected |
| **xp** | 325 | Number of XPs gained by the student for succeeding |
| **base_xp** | 325 | Maximum number of XPs the student can get for succeeding for that object |
| **grade** | 1 | The student’s score for that object is a number between 0 (failed) and 1 (succeeded). If the object is a project, the grade can be superior to 1 when the student successfully passes bonus questions |
| **last_update** | 2020-07-27T15:39:46.368Z | Date and time of the student’s latest activity for that object |
### Explanation of the XP and Grade calculation
#### Exercises within quests
* _Test mode_: automatic tester
* _XPs_: fixed value. Students get all the points when succeeding at the exercise, no matter how many attempts they made.
* _Grade_: 0 (failure) or 1 (success)
- _Test mode_: automatic tester
- _XPs_: fixed value. Students get all the points when succeeding at the exercise, no matter how many attempts they made.
- _Grade_: 0 (failure) or 1 (success)
#### Exercises within exams
* _Contextual information_:
* Exams consist of many exercises which are grouped by difficulty levels. The student is randomly assigned an exercise from each level and has to succeed in order to move on to the next exercise level.
* Each exercise level has a maximum amount of XPs which grows according to the level’s difficulty.
* Exams are limited in time so students have to successfully complete as many exams as they can as fast as they can with the least amount of errors.
* _Test mode_: automatic tester
* _XPs_: variable value. Students get the maximum amount of points when they succeed at the first attempt. Each failed submission reduces the amount of XPs the student can get for that level.
* _Grade_: 0 (failure) or 1 (success)
#### Raids
* _Test mode_: projects are evaluated by a jury panel in 2 steps:
* First the jury evaluates the code through an audit, a series of pass / fail questions to be answered by the auditor. Succeeding the audit gives students a certain amount of XPs.
* The jury then interviews students and can decide to give them bonus / malus XPs based on their evaluation of the code and the students’ answers to their questions.
* _XPs_: variable value calculated as a fixed value for succeeding the project plus / minus XPs attributed by the jury at their discretion
* _Grade_: 0 (failure) or 1 (success)
- _Contextual information_:
- Exams consist of many exercises which are grouped by difficulty levels. The student is randomly assigned an exercise from each level and has to succeed in order to move on to the next exercise level.
- Each exercise level has a maximum amount of XPs which grows according to the level’s difficulty.
- Exams are limited in time so students have to successfully complete as many exams as they can as fast as they can with the least amount of errors.
- _Test mode_: automatic tester
- _XPs_: variable value. Students get the maximum amount of points when they succeed at the first attempt. Each failed submission reduces the amount of XPs the student can get for that level.
- _Grade_: 0 (failure) or 1 (success)
#### Projects
* _Test mode_: audits, which are peer-to-peer evaluations based on a series of pass/fail questions to be answered by the auditor
* _XPs_: variable value. Students can get more than the maximum value of XPs if they complete bonus exercises. They get no XPs at all if they fail at least one of the questions in the audit
* _Grade_: number between 0 and 1, proportionate to the number of questions successfully passed in the audit. The grade can be higher than 1 if the student completed bonus exercises.
#### Raids
- _Test mode_: projects are evaluated by a jury panel in 2 steps:
- First the jury evaluates the code through an audit, a series of pass / fail questions to be answered by the auditor. Succeeding the audit gives students a certain amount of XPs.
- The jury then interviews students and can decide to give them bonus / malus XPs based on their evaluation of the code and the students’ answers to their questions.
- _XPs_: variable value calculated as a fixed value for succeeding the project plus / minus XPs attributed by the jury at their discretion
- _Grade_: 0 (failure) or 1 (success)
#### Projects
- _Test mode_: audits, which are peer-to-peer evaluations based on a series of pass/fail questions to be answered by the auditor
- _XPs_: variable value. Students can get more than the maximum value of XPs if they complete bonus exercises. They get no XPs at all if they fail at least one of the questions in the audit
- _Grade_: number between 0 and 1, proportionate to the number of questions successfully passed in the audit. The grade can be higher than 1 if the student completed bonus exercises.

14
docs/piscine-rust-curriculum.md

@ -20,7 +20,6 @@ Exercices:
- division-and-remainder | https://github.com/01-edu/public/tree/master/subjects/division-and-remainder
- tuples | https://github.com/01-edu/public/tree/master/subjects/tuples
### Quest 02-rust
Exercices:
@ -36,7 +35,6 @@ Exercices:
- arrange-it | https://github.com/01-edu/public/tree/master/subjects/arrange-it
- tic-tac-toe | https://github.com/01-edu/public/tree/master/subjects/tic-tac-toe
### Quest 03-rust
Exercices:
@ -54,13 +52,10 @@ Exercices:
- simple-hash | https://github.com/01-edu/public/tree/master/subjects/simple-hash
- collect | https://github.com/01-edu/public/tree/master/subjects/collect
---
## Week Two
## Quest 04-rust
Exercices:
@ -75,7 +70,6 @@ Exercices:
- error-types | https://github.com/01-edu/public/tree/master/subjects/error-types
- boxing-todo | https://github.com/01-edu/public/tree/master/subjects/boxing-todo
## Quest 05-rust
Exercices:
@ -87,7 +81,6 @@ Exercices:
- expected-variable | https://github.com/01-edu/public/tree/master/subjects/expected-variable
- mobs | https://github.com/01-edu/public/tree/master/subjects/mobs
## Quest 06-rust
Exercices:
@ -109,12 +102,10 @@ Exercices:
- delete-perfix | https://github.com/01-edu/public/tree/master/subjects/mdelete-perfix
- commits-stats | https://github.com/01-edu/public/tree/master/subjects/mcommits-stats
---
## Week Three
## Quest 07-rust
Exercices:
@ -126,13 +117,10 @@ Exercices:
- ref-cell | https://github.com/01-edu/public/tree/master/subjects/ref-cell
- drop-the-thread | https://github.com/01-edu/public/tree/master/subjects/drop-the-thread
## Quest 08-rust
Exercices:
- closures | https://github.com/01-edu/public/tree/master/subjects/closures
- sales | https://github.com/01-edu/public/tree/master/subjects/sales
- adding | https://github.com/01-edu/public/tree/master/subjects/adding
@ -144,12 +132,10 @@ Exercices:
- step-iterator | https://github.com/01-edu/public/tree/master/subjects/step-iterator
- project-motion | https://github.com/01-edu/public/tree/master/subjects/project-motion
## Quest 09-rust
Exercices:
- stars | https://github.com/01-edu/public/tree/master/subjects/stars
- ordinal | https://github.com/01-edu/public/tree/master/subjects/ordinal
- pangram | https://github.com/01-edu/public/tree/master/subjects/pangram

3
docs/server-requirements.md

@ -1,6 +1,7 @@
# Server requirements
Features required :
- Dedicated hardware
- Linux compatibility
- UEFI
@ -11,4 +12,4 @@ Features required :
| --------- | --------------------------- |
| Processor | 12 threads x86-64 (64 bits) |
| Memory | 16 GB DDR4 |
| Disk | 2 * 500 GB SSD |
| Disk | 2 \* 500 GB SSD |

2
subjects/abs/README.md

@ -10,14 +10,12 @@ Create the `abs` function that takes one number argument
and returns its absolute value.
You are not allowed to use `Math.abs`, make your own.
### Notions
- [nan-academy.github.io/js-training/examples/functions.js](https://nan-academy.github.io/js-training/examples/functions.js)
- [nan-academy.github.io/js-training/examples/ternary.js](https://nan-academy.github.io/js-training/examples/ternary.js)
- [devdocs.io/javascript/global_objects/math/abs](https://devdocs.io/javascript/global_objects/math/abs)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

1
subjects/action-reaction/README.md

@ -3,6 +3,7 @@
### Resources
We provide you with some content to get started smoothly, check it out!
- Video [querySelector](https://www.youtube.com/watch?v=m34qd7aGMBo&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=12)
- Video [DOM JS - Add an event listener to an element](https://www.youtube.com/watch?v=ydRv338Fl8Y)
- Video [DOM JS - Set an element's properties](https://www.youtube.com/watch?v=4O6zSVR0ufw&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=14)

2
subjects/all/README.md

@ -5,13 +5,11 @@
Create a function `all` that works like `Promise.all` but with objects.
(instead of arrays)
### Notions
- [nan-academy.github.io/js-training/examples/promise.js](https://nan-academy.github.io/js-training/examples/promise.js)
- [devdocs.io/javascript/global_objects/promise/all](https://devdocs.io/javascript/global_objects/promise/all)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

80
subjects/armyofone/README.md

@ -1,40 +1,40 @@
## ArmyOfOne
In this exercise, you will learn to create a complex player movement from scratch. The character you will use is Countess from the game Paragon. She's nice after you know her, just give her a chance.
### Objectives
For this project you will implement a fully playable character using what we call Animation Blueprint, Aim Offset and PlayerCharacter Blueprint.
### Instructions
Starting from an empty project, after creating a level with a floor (nothing else is really required), you should:
- create a Third Player Character Blueprint and apply the Countess mesh to it.
- give the character the ability to:
- move forward, backward, left and right using the WASD keys.
- look around and change direction using the mouse.
- jump using Space.
- attack using the left mouse click.
- create an animation blueprint file to animate the character so she can be animated while running, jumping, attacking, etc...
- implement the Aim Offset, so that when the player moves the mouse, the head of Countess follow the direction we’re looking at, in a 180-degree angle.
- separate the upper and lower body part, so that the character is able to walk and attack at the same time without any animation problems.
- make Countess lean according to the mouse direction, while running forward.
- use Animation Blendspace to organize your movements.
- use Animation Blueprint variables to handle different animation states.
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/ArmyOfOne.zip), you can copy its content to your project Content folder.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/sebi5icA1MM).
> Do not forget to zip up the project compile and save everything for peer correction.
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine.
## ArmyOfOne
In this exercise, you will learn to create a complex player movement from scratch. The character you will use is Countess from the game Paragon. She's nice after you know her, just give her a chance.
### Objectives
For this project you will implement a fully playable character using what we call Animation Blueprint, Aim Offset and PlayerCharacter Blueprint.
### Instructions
Starting from an empty project, after creating a level with a floor (nothing else is really required), you should:
- create a Third Player Character Blueprint and apply the Countess mesh to it.
- give the character the ability to:
- move forward, backward, left and right using the WASD keys.
- look around and change direction using the mouse.
- jump using Space.
- attack using the left mouse click.
- create an animation blueprint file to animate the character so she can be animated while running, jumping, attacking, etc...
- implement the Aim Offset, so that when the player moves the mouse, the head of Countess follow the direction we’re looking at, in a 180-degree angle.
- separate the upper and lower body part, so that the character is able to walk and attack at the same time without any animation problems.
- make Countess lean according to the mouse direction, while running forward.
- use Animation Blendspace to organize your movements.
- use Animation Blueprint variables to handle different animation states.
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/ArmyOfOne.zip), you can copy its content to your project Content folder.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/sebi5icA1MM).
> Do not forget to zip up the project compile and save everything for peer correction.
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine.

66
subjects/armyofone/audit/README.md

@ -1,33 +1,33 @@
#### Functional
###### Can the Countess character move in the four directions (forward, backward, left and right) using the WASD keys?
###### Can the Countess character jump using the Space key?
###### Can the Countess character attack using the left mouse click?
###### While running, does moving the mouse left and right change the player's leaning angle and direction?
###### Is the animation used for the countess in the animation blueprint stored in a BlendSpace file?
###### Does the Countess head follow the mouse orientation?
###### Is an Aim Offset being used to move the Countess head according to the mouse movement?
###### Can the Countess character attack using the blades when clicking on the left mouse button?
###### Are the body transitions smooth when starting an attack or jumping, etc…?
###### Can you attack and move around at the same time without damaging the animations performance?
###### Does the Countess body blends between two animations (are blend nodes being used)?
###### Is the upper body and lower body being controlled as "two separate modules"?
###### Does the Animation Blueprint have at least three variables in order to handle the character speed if she is in the air and attacking?
#### Bonus
###### Can the Countess character execute more than 3 attacks?
###### Are they at least two different Countess skins being used?
#### Functional
###### Can the Countess character move in the four directions (forward, backward, left and right) using the WASD keys?
###### Can the Countess character jump using the Space key?
###### Can the Countess character attack using the left mouse click?
###### While running, does moving the mouse left and right change the player's leaning angle and direction?
###### Is the animation used for the countess in the animation blueprint stored in a BlendSpace file?
###### Does the Countess head follow the mouse orientation?
###### Is an Aim Offset being used to move the Countess head according to the mouse movement?
###### Can the Countess character attack using the blades when clicking on the left mouse button?
###### Are the body transitions smooth when starting an attack or jumping, etc…?
###### Can you attack and move around at the same time without damaging the animations performance?
###### Does the Countess body blends between two animations (are blend nodes being used)?
###### Is the upper body and lower body being controlled as "two separate modules"?
###### Does the Animation Blueprint have at least three variables in order to handle the character speed if she is in the air and attacking?
#### Bonus
###### Can the Countess character execute more than 3 attacks?
###### Are they at least two different Countess skins being used?

4
subjects/ascii-art-web/README.md

@ -9,10 +9,10 @@ Your web-page should provide usage of different [banners](https://github.com/01-
Implement following HTTP endpoints:
1. GET `/`: Sends HTML response - the main page.\
1.1. GET Tip: [go templates](https://golang.org/pkg/html/template/) to receive and display data from the server
1.1. GET Tip: [go templates](https://golang.org/pkg/html/template/) to receive and display data from the server
2. POST `/ascii-art`: that sends data to Go server (text and a banner)\
2.1. POST Tip: use form and other types of [tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element) to make the post request.\
2.1. POST Tip: use form and other types of [tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element) to make the post request.\
Main page must have:

4
subjects/atm-management-system/README.md

@ -20,7 +20,7 @@ You will be provided with an ATM management system where users can do the follow
- Make transactions
> The application provided will just handle the **login**, the **creation of new accounts** and **checking the list of owned accounts**. The rest of the features must
be implemented by yourself.
> be implemented by yourself.
### File System
@ -112,7 +112,7 @@ One of the ways of doing this is by using pipes and child processes (communicati
You can also do more bonus features or update the terminal interface:
- Better terminal interface (TUI)
- Encryption of passwords
- Encryption of passwords
- Adding your own Makefile
### Example

2
subjects/atm-management-system/audit/README.md

@ -32,7 +32,7 @@
###### Was the country of that account updated in the application and the file `"records.txt"`?
##### Resorting to the user Alice, try to create a new account with: date `"10/10/2012"` account number `"834213"`, country `"UK"`, phone number `"291231392"`, deposit amount $`"1001.20"`, type of account `"saving"`. Then select `"Check accounts"` choose the account you just created.
##### Resorting to the user Alice, try to create a new account with: date `"10/10/2012"` account number `"834213"`, country `"UK"`, phone number `"291231392"`, deposit amount $`"1001.20"`, type of account `"saving"`. Then select `"Check accounts"` choose the account you just created.
###### Did the application displayed the account information and the gain of $5.84 of interest on day 10 of every month?

2
subjects/biggie-smalls/README.md

@ -3,10 +3,10 @@
### Instructions
Create 2 variables
- `smalls` with the smallest possible `number` value
- `biggie` with the greatest possible `number` value
### Notions
- [devdocs.io/javascript-number](https://devdocs.io/javascript-number/)

7
subjects/block-chain/README.md

@ -5,11 +5,13 @@
Create a `blockChain` that create a block in your very own block chain.
the function takes 2 arguments:
- `data` any valid JSON data
- `prev` the previous block, if no block are given it should use the
- `prev` the previous block, if no block are given it should use the
genesis block: `{ index: 0, hash: '0' }`
A block must have the following properties:
- `index`
- `hash` a computed hash using the concatenation of the `index`, `hash`
and stringified `data` and hashing all of it using the provided `hashCode`.
@ -17,7 +19,6 @@ A block must have the following properties:
- `prev` the previous block
- `chain` a function that takes a new `data` and create the next block with it.
### Examples
```js
@ -48,12 +49,10 @@ console.log(chain.index) // -> 5
console.log(fork.index) // -> 5
```
### Notions
- [devdocs.io/javascript/global_objects/json/stringify](https://devdocs.io/javascript/global_objects/json/stringify)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/blood_types_s/README.md

@ -5,7 +5,7 @@
Use the following table to define the methods asked:
| Blood Types | Donate Blood to | Receive Blood From |
|-------------|------------------|--------------------|
| ----------- | ---------------- | ------------------ |
| A+ | A+, AB+ | A+, A-, O+, O- |
| O+ | O+, A+, B+, AB+ | O+, O- |
| B+ | O+, O- | B+, B-, O+, O- |

2
subjects/bloody-sunday/README.md

@ -11,4 +11,4 @@ So now, a week is 6 days from monday to saturday.
To prove your point, create a `bloodySunday` function
that return what week day the given date is.
> note that the 01/01/0001 is still a monday.
> note that the 01/01/0001 is still a monday.

1
subjects/borrow/README.md

@ -10,6 +10,7 @@ Complete the signature and the body of the `str_len` **function** that receives
pub fn str_len(s: ) -> usize {
}
```
### Notions
[Primitive Type str](https://doc.rust-lang.org/std/primitive.str.html)

18
subjects/borrow_me_the_reference/README.md

@ -7,15 +7,16 @@ needing garbage collector. Therefore you must understand ownership in rust.
Create the following functions :
- `delete_and_backspace`, imagine that the `-` represents the `backspace key` and the `+` represents the `delete key`, this function must receive a borrowed string and turn this string into the string that applies the `backspaces` and the `deletes`.
- For example:
- "helll-o" turns into "hello"
- "he+lllo" turns into "hello"
- `delete_and_backspace`, imagine that the `-` represents the `backspace key` and the `+` represents the `delete key`, this function must receive a borrowed string and turn this string into the string that applies the `backspaces` and the `deletes`.
- For example:
- `is_correct` that borrows a Vector of string literals with some correct and incorrect math equations and replaces the correct equations with `✔` and the wrong with `✘` and returns a `usize` with the percentage of correct equations.
### Expected Functions
- "helll-o" turns into "hello"
- "he+lllo" turns into "hello"
- `is_correct` that borrows a Vector of string literals with some correct and incorrect math equations and replaces the correct equations with `✔` and the wrong with `✘` and returns a `usize` with the percentage of correct equations.
### Expected Functions
```rust
pub fn delete_and_backspace(s: &mut String) {
@ -30,7 +31,6 @@ pub fn is_correct(v: &mut Vec<&str>) -> usize {
- https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html
- https://docs.rs/meval/0.2.0/meval/
### Usage
Here is a program to test your function

1
subjects/bring-it-to-life/README.md

@ -3,6 +3,7 @@
### Resources
We provide you with some content to get started smoothly, check it out!
- Video [Link a JS script to your HTML file](https://www.youtube.com/watch?v=jMvsQm-p1gM&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=7)
- Video [DOM JS - getElementById](https://www.youtube.com/watch?v=34kAR8yBtDM&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=8)
- Video [DOM JS - Set an element's inline style](https://www.youtube.com/watch?v=pxlYKvju1z8&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=15)

54
subjects/carbon-copy/audit/README.md

@ -1,27 +1,27 @@
#### HTML structure
###### Does the webpage look the same as the template, and includes all the elements?
###### When clicking on an item of the navbar menu, does it scroll to the corresponding section in the page?
#### Custom CSS
###### Have the colors been modified from the template version?
###### Does the Dashboard section display the 3 cards, looking similar to the template?
#### JS interactions
###### When clicking on the images' section, does it toggle the order of the pics?
###### +In the Contact section, when writing something in the input and clicking the button, the following sentence should appear in the place of the input, and display the text filled in the input: "Nice to meet you _[input data displayed here]_ 👋! Thanks for introducing yourself.". Is this working?
###### +When clicking on a card of the dashboard, does it open a modal displaying the card content?
###### +Does the modal close when clicking on the closing button & when pressing the "Escape" key?
###### +Does the modal include a widget allowing to change the alignment of the text?
###### +Does the header display a different Chuck Norris' joke every time the page is reloaded?
###### +Does the header display a different Chuck Norris' joke every 10 seconds?
#### HTML structure
###### Does the webpage look the same as the template, and includes all the elements?
###### When clicking on an item of the navbar menu, does it scroll to the corresponding section in the page?
#### Custom CSS
###### Have the colors been modified from the template version?
###### Does the Dashboard section display the 3 cards, looking similar to the template?
#### JS interactions
###### When clicking on the images' section, does it toggle the order of the pics?
###### +In the Contact section, when writing something in the input and clicking the button, the following sentence should appear in the place of the input, and display the text filled in the input: "Nice to meet you _[input data displayed here]_ 👋! Thanks for introducing yourself.". Is this working?
###### +When clicking on a card of the dashboard, does it open a modal displaying the card content?
###### +Does the modal close when clicking on the closing button & when pressing the "Escape" key?
###### +Does the modal include a widget allowing to change the alignment of the text?
###### +Does the header display a different Chuck Norris' joke every time the page is reloaded?
###### +Does the header display a different Chuck Norris' joke every 10 seconds?

3
subjects/change/README.md

@ -3,6 +3,7 @@
### Instructions
Create 2 functions:
- `get`: a function that takes a key and return the corresponding
value from the sourceObject
@ -10,7 +11,6 @@ Create 2 functions:
value for the corresponding property of the sourceObject
and return the set value
### Notions
- [nan-academy.github.io/js-training/examples/functions.js](https://nan-academy.github.io/js-training/examples/functions.js)
@ -18,7 +18,6 @@ Create 2 functions:
- [nan-academy.github.io/js-training/examples/get.js](https://nan-academy.github.io/js-training/examples/get.js)
- [nan-academy.github.io/js-training/examples/set.js](https://nan-academy.github.io/js-training/examples/set.js)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/changes/README.md

@ -6,7 +6,7 @@ Imagine you are working on a software to control smart lights in a house. You ha
Define the associated **function** `new` to the data structure `Light` which creates a new light with the alias passed in the arguments and a brightness of 0.
Define the **function** `change_brightness` that receives a `Vec` of lights, an `alias` and a `u8`value. The **function** then sets the `u8` value as the new brightness of the light identified by the alias in the Vec of lights.
Define the **function** `change_brightness` that receives a `Vec` of lights, an `alias` and a `u8`value. The **function** then sets the `u8` value as the new brightness of the light identified by the alias in the Vec of lights.
### Notions

2
subjects/chunky/README.md

@ -6,4 +6,4 @@ Create the `chunk` function that returns an array of elements
split into groups the length of the given size.
If array can't be split evenly,
the final chunk will be the remaining elements.
the final chunk will be the remaining elements.

1
subjects/circular/README.md

@ -5,7 +5,6 @@
Create an object named `circular` that has a property named `circular` with
itself as the value
### Notions
- [nan-academy.github.io/js-training/examples/data-structures.js](https://nan-academy.github.io/js-training/examples/data-structures.js)

1
subjects/class-that/README.md

@ -3,6 +3,7 @@
### Resources
We provide you with some content to get started smoothly, check it out!
- Video [CSS - Set & style with CSS class](https://www.youtube.com/watch?v=-U397k4VloU&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=6)
### Instructions

1
subjects/clonernews/README.md

@ -19,7 +19,6 @@ You must handle at least:
Post and comments must be ordered by newest post to oldest.
You must not load all posts at once. You must be able to load posts when ever the users need to see more posts. This can be done with the help of [event](https://developer.mozilla.org/en-US/docs/Web/Events).
[Live Data](https://github.com/HackerNews/API#live-data) : is one of the features from this Hacker News API, you can handle requests so that the news you provide are updated.
- You must have a section that present the newest information. You will have to notify the user at least every 5 seconds, whenever the live data is updated. In other words, after every 5 seconds if a change was made in the live data, you have to notify the user.

4
subjects/collections/README.md

@ -19,12 +19,11 @@ Write a bunch of function to move from one type to another
and finally write a function `superTypeOf` that unlike `typeof` return
a different value for advanced types like `Map` and `Set`
### Examples
```js
const str = 'hello'
const arr = [ 1, 2, 1, 3 ]
const arr = [1, 2, 1, 3]
const obj = { x: 45, y: 75, radius: 24 }
const set = new Set()
const map = new Map()
@ -61,7 +60,6 @@ superTypeOf(undefined) // -> 'undefined'
superTypeOf(superTypeOf) // -> 'Function'
```
### Notions
- [devdocs.io/javascript/operators/typeof](https://devdocs.io/javascript/operators/typeof)

1
subjects/concat-str/README.md

@ -4,7 +4,6 @@
Create a `concatStr` function that takes 2 arguments and concatenate them
### Notions
- [nan-academy.github.io/js-training/examples/functions.js](https://nan-academy.github.io/js-training/examples/functions.js)

14
subjects/copy/README.md

@ -5,15 +5,15 @@
Your objective is to fix the **functions** work so that the program works.
- `nbr_function` returns a tuple:
- with the `original` value
- the `exponential function` of the value
- and the `natural logarithm` of this `absolute` value
- with the `original` value
- the `exponential function` of the value
- and the `natural logarithm` of this `absolute` value
- `str_function` returns a tuple:
- with the `original` value
- and the `exponential function` each value as a string (see the example)
- with the `original` value
- and the `exponential function` each value as a string (see the example)
- `vec_function` returns a tuple:
- with the `original` value
- and the `natural logarithm` of each `absolute` value
- with the `original` value
- and the `natural logarithm` of each `absolute` value
The objective is to know how ownership works with different types.

2
subjects/count-leap-years/README.md

@ -3,4 +3,4 @@
### Instructions
Make a `countLeapYears` functions that takes a date
and returns the number of leap years since year 1
and returns the number of leap years since year 1

5
subjects/currify/README.md

@ -7,9 +7,8 @@ Create the function `currify` that will curry any functions put as argument.
example:
```js
const mult2 = (el1,el2) => el1 * el2
console.log(mult2(2,2)) // result expected 4
const mult2 = (el1, el2) => el1 * el2
console.log(mult2(2, 2)) // result expected 4
const mult2Curried = currify(mult2)

4
subjects/cut-corners/README.md

@ -3,21 +3,21 @@
### Instructions
Create a function for each rounding math functions:
- round (like `Math.round`)
- ceil (like `Math.ceil`)
- floor (like `Math.floor`)
- trunc (like `Math.trunc`)
Some restrictions apply:
- You may not use strings conversion to do it
- No bitwise operator
### Notions
- [devdocs.io/javascript/global_objects/math](https://devdocs.io/javascript/global_objects/math)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/day-of-the-year/README.md

@ -3,4 +3,4 @@
### Instructions
Make a `dayOfTheYear` functions that takes a date
and returns the number of days since the first day of that year
and returns the number of days since the first day of that year

2
subjects/declarations/README.md

@ -4,7 +4,7 @@
Create the following constant variables:
- `escapeStr`, that contains the following specials characters: `` ` ``, `\`, `/`, `"`, `'`
- `escapeStr`, that contains the following specials characters: `` ` ``, `\`, `/`, `"`, `'`
- `arr` that is an array containing the values 4 and '2'
- `obj` that is an object containing a property for each primitives:
- `str` for `String`

1
subjects/dr-strange/README.md

@ -15,7 +15,6 @@ it can go backwards or forwards in time.
You will have a function that takes a date and you will pass 3 more parameters to change
the hour, minute and seconds.
### Example
```js

1
subjects/elementary/README.md

@ -3,6 +3,7 @@
### Instructions
Create 3 functions:
- `multiply` that act like the `*` operator without using it
- `divide` that do an integer division without using `/`
- `modulo` that act like the `%` operator without using it

28
subjects/ephemeris/README.md

@ -41,48 +41,48 @@ student@ubuntu:~/ephemeris$ npm install puppeteer
Then, create a new file `ephemeris.mjs` in which you will use the puppeteer module:
```js
import puppeteer from "puppeteer";
import puppeteer from 'puppeteer'
const browser = await puppeteer.launch({
headless: false, // to be commented or removed when project is submitted
devtools: true, // to be commented or removed when project is submitted
});
const [page] = await browser.pages();
})
const [page] = await browser.pages()
// actions...
await browser.close(); // you can comment this during you tests
process.exit(0); // terminate the process as succeeded (you can comment this during you tests)
await browser.close() // you can comment this during you tests
process.exit(0) // terminate the process as succeeded (you can comment this during you tests)
```
**Puppeteer helper - script model**
```javascript
// navigate to a specific url
await page.goto("https://www.google.com/");
await page.goto('https://www.google.com/')
// wait an element in the page
await page.waitForSelector("input#myId");
await page.waitForSelector('input#myId')
// find an element in the page:
const button = await page.$("button#myId");
const button = await page.$('button#myId')
// check the element was found
if (button) {
// use the element
await button.click();
await button.click()
} else {
// do something else: for example treat the exception as an error
console.error("Button not found !");
console.error('Button not found !')
// and terminate the process as failed (code 1)
process.exit(1);
process.exit(1)
}
// navigate in a website
await Promise.all([page.waitForNavigation(), page.click("div#myId")]);
await Promise.all([page.waitForNavigation(), page.click('div#myId')])
// get the textContent of an element
const myText = await page.$eval("div#myId", (elem) => elem.textContent);
const myText = await page.$eval('div#myId', (elem) => elem.textContent)
// type something in an input
await page.type(`input#myId`, "some text");
await page.type(`input#myId`, 'some text')
```
### Optional

2
subjects/fibonacci2/README.md

@ -6,7 +6,7 @@ Complete the body of the **function** `fibonacci`.
This functions receives a number `n` and returns the nth number in the fibonacci series.
The Fibonacci Series starts like this: 0, 1, 1, 2, 3, 5, 8, 13 etc...
The Fibonacci Series starts like this: 0, 1, 1, 2, 3, 5, 8, 13 etc...
### Notions

8
subjects/filter/README.md

@ -3,14 +3,13 @@
### Instructions
- Create a `filter` function that takes an array as first argument, a function as second,
and that works like the method [].filter
and that works like the method [].filter
- Create a `reject` function that takes an array as first argument, a function as second,
and that works like the reject function from lodash.
and that works like the reject function from lodash.
- Create a `partition` function that takes an array as first argument, a function as second,
and that works like the partition function from lodash.
and that works like the partition function from lodash.
### Notions
@ -18,7 +17,6 @@ and that works like the partition function from lodash.
- [lodash.com/docs/4.17.15#reject](https://lodash.com/docs/4.17.15#reject)
- [lodash.com/docs/4.17.15#partition](https://lodash.com/docs/4.17.15#partition)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

8
subjects/find-expression/README.md

@ -7,19 +7,17 @@ Create a function called `findExpression` that takes a number as parameter and r
- It will be given two constant variable `add4` and `mul2`
- Your goal is to try to find a sequence, starting from the number 1, and repeatedly either adding 4 or multiplying 2
that produces the number given has parameter.
For example, the number 8 you must first multiplying by 2 twice and then add 4.
It will look something like this `1 *2 *2 +4`
that produces the number given has parameter.
For example, the number 8 you must first multiplying by 2 twice and then add 4.
It will look something like this `1 *2 *2 +4`
- If the number can not be reached you should return `undefined`
### Notions
- [nan-academy.github.io/js-training/examples/loops.js](https://nan-academy.github.io/js-training/examples/loops.js)
- [nan-academy.github.io/js-training/examples/recursion.js](https://nan-academy.github.io/js-training/examples/recursion.js)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

50
subjects/firingrange/audit/README.md

@ -1,25 +1,25 @@
#### Functional
###### Are the map size (X = 35, Y = 40, Z = 1) and composition (using cubes) being respected?
###### Are the projectile size (X = Y = Z = 0,5) and speed (10000) being respected?
###### If you try to move the target to the target zone, is the player forbidden from trespassing to that zone by an invisible wall?
###### When you shoot a target, does the bullet go through the invisible wall?
###### Did the targets correctly lay on the floor when hit by the projectile?
###### Did the target rotate from the bottom and not from the center?
###### Is there only one class “BP_Target” present on the project?
###### Do all the public variables have a tooltip? (Mouse over it to check if a description is set or check if the variable have a little green eye on the right)
#### Bonus
###### Do different targets have different speeds?
###### Do the walls and floor have texture?
###### Are there obstacles in front of targets?
#### Functional
###### Are the map size (X = 35, Y = 40, Z = 1) and composition (using cubes) being respected?
###### Are the projectile size (X = Y = Z = 0,5) and speed (10000) being respected?
###### If you try to move the target to the target zone, is the player forbidden from trespassing to that zone by an invisible wall?
###### When you shoot a target, does the bullet go through the invisible wall?
###### Did the targets correctly lay on the floor when hit by the projectile?
###### Did the target rotate from the bottom and not from the center?
###### Is there only one class “BP_Target” present on the project?
###### Do all the public variables have a tooltip? (Mouse over it to check if a description is set or check if the variable have a little green eye on the right)
#### Bonus
###### Do different targets have different speeds?
###### Do the walls and floor have texture?
###### Are there obstacles in front of targets?

1
subjects/first-words/README.md

@ -3,6 +3,7 @@
### Resources
We provide you with some content to get started smoothly, check it out!
- Video [DOM JS - createElement & append](https://www.youtube.com/watch?v=J-A_pqTqGBU&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=13)
- Video [Set an element's className](https://www.youtube.com/watch?v=h3b7H1ZKvFE&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=16)
- Video [DOM JS - Set an element's properties](https://www.youtube.com/watch?v=4O6zSVR0ufw&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=14)

8
subjects/flagger/README.md

@ -6,9 +6,10 @@ Create a function called `flags` that receives an object and returns
the specific aliases and descriptions from the properties of that object.
The `help` flag:
- Should be present in the output by default.
- When not present in the input, it should return the description of all flags.
But when present it specifies the descriptions of the flags that are passed to help. (ex: `help: ['divide']`)
- Should be present in the output by default.
- When not present in the input, it should return the description of all flags.
But when present it specifies the descriptions of the flags that are passed to help. (ex: `help: ['divide']`)
#### Example:
@ -19,6 +20,7 @@ The `help` flag:
help: ['divide']
}
```
and outputs :
```js

2
subjects/flat/README.md

@ -4,12 +4,10 @@
Create the `flat` functions that works like the `.flat` array method
### Notions
- [devdocs.io/javascript/global_objects/array/flat](https://devdocs.io/javascript/global_objects/array/flat)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

8
subjects/flow/README.md

@ -5,20 +5,16 @@
Create the function `flow` that will works as the \_.flow([funcs])
from lodash.
### Example
``` js
const square = nbr => nbr * nbr
```js
const square = (nbr) => nbr * nbr
const add2Numbers = (nbr1, nbr2) => nbr1 + nbr2
const flowedFunctions = flow([add2Numbers, square])
flowedFunctions(2, 3) // -> 25
```
### Notions
- [lodash.com/docs/4.17.15#flow](https://lodash.com/docs/4.17.15#flow)

2
subjects/for-each/README.md

@ -5,12 +5,10 @@
Create a `forEach` function that takes an array as first argument, a function as second,
and that works like the method .forEach
### Notions
- [devdocs.io/javascript/global_objects/array/foreach](https://devdocs.io/javascript/global_objects/array/foreach)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

374
subjects/forum/audit/README.md

@ -1,187 +1,187 @@
#### Authentication
###### Are an email and a password asked for in the resgistration?
###### Does the project detect if the email or password are wrong?
###### Does the project detect if the email or user name is already taken in the registration?
##### Try to register as a new user in the forum.
###### Is it possible to register?
##### Try to login with the user you created.
###### Can you login and have all the rights of a registered user?
##### Try to login without any credentials.
###### Does it show a warning message?
###### Are sessions present in the project?
##### Try opening two different browsers and login into one of them. Refresh the other browser.
###### Can you confirm that the browser non logged remains unregistered?
##### Try opening two different browsers and login into both of them. Refresh both browsers.
###### Can you confirm that only one of those browsers has an active session?
##### Try opening two different browsers and login into one of them. Then create a new post or just add a comment. Refresh both browsers.
###### Does it present the comment/post on both browsers?
#### SQLite
###### Does the code contain at least one CREATE query?
###### Does the code contain at least one INSERT query?
###### Does the code contain at least one SELECT query?
##### Try registering in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM users;).
###### Does it present the user you created?
##### Try creating a post in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM post;).
###### Does it present the post you created?
##### Try creating a comment in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM comment;).
###### Does it present the comment you created?
#### Docker
###### Does the project have Dockerfiles?
##### Try to run the command `"docker image build [OPTINS] PATH | URL | -"` to build the image using using the project Dockerfiles and run the command `"docker images"` to see images.
```
student$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<name of the image> latest 85a65d66ca39 7 seconds ago 795MB
```
###### Does all images build as above?
##### Try running the command `"docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]"` to start the containers using the images just created and run the command `"docker ps -a"` to see containers.
```
student$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc8f5dcf760f <name of the image> "./server" 6 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp ascii-art-web
```
###### Is the docker containers running as above?
###### Does the project present no [unused object](https://docs.docker.com/config/pruning/)?
#### Functional
##### Enter the forum as a non-registered user.
###### Are you prohibited to create a post?
##### Enter the forum as a non-registered user.
###### Are you prohibited to create a comment?
##### Enter the forum as a non-registered user and try to like a comment.
###### Are you prohibited to like a post?
##### Enter the forum as a non-registered user and try to dislike a comment.
###### Are you prohibited to dislike a comment?
##### Enter the forum as a registered user, go to a post and try to create a comment for it.
###### Were you able to create the comment?
##### Enter the forum as a registered user, go to a post and try to create an empty comment for it.
###### Were you prohibited to create the comment?
##### Enter the forum as a registered user and try to create a post.
###### Were you able to create a post?
##### Enter the forum as a registered user and try to create an empty post.
###### Were you prohibited to create the post?
##### Try creating a post as a registered user and try to choose several categories for that post.
###### Were you able to choose several categories for that post?
##### Try creating a post as a registered user and try to choose a category for that post.
###### Were you able to choose a category for that post?
##### Enter the forum as a registered user and try to like or dislike a post.
###### Can you like or dislike the post?
##### Enter the forum as a registered user and try to like or dislike a comment.
###### Can you like or dislike the comment?
##### Enter the forum as a registered user, try liking and disliking a post and then refresh the page.
###### Does the number of likes/dislikes change?
##### Enter the forum as a registered user and try to like and then dislike the same post.
###### Can you confirm that it is not possible that the post is liked and disliked at the same time?
##### Enter the forum as a registered user and try seeing all of your created posts.
###### Does it present the expected posts?
##### Enter the forum as a registered user and try seeing all of your liked posts.
###### Does it present the expected posts?
##### Navigate to a post of your choice and see its comments.
###### Are all users (registered or not) able to see the number of likes and dislikes that comment has?
##### Try seeing all posts from one category using the filter.
###### Are all posts displayed from that category?
###### Did the server behaved as expected?(did not crashed)
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)?
###### Are all the pages working? (Absence of 404 page?)
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)?
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)?
###### Are only the allowed packages being used?
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks)
#### General
###### +Does the project present a script to build the images and containers? (using a script to simplify the build)
#### Basic
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc)
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)?
###### +Is there a test file for this code?
#### Social
###### +Did you learn anything from this project?
###### +Can it be open-sourced / be used for other sources?
###### +Would you recommend/nominate this program as an example for the rest of the school?
#### Authentication
###### Are an email and a password asked for in the resgistration?
###### Does the project detect if the email or password are wrong?
###### Does the project detect if the email or user name is already taken in the registration?
##### Try to register as a new user in the forum.
###### Is it possible to register?
##### Try to login with the user you created.
###### Can you login and have all the rights of a registered user?
##### Try to login without any credentials.
###### Does it show a warning message?
###### Are sessions present in the project?
##### Try opening two different browsers and login into one of them. Refresh the other browser.
###### Can you confirm that the browser non logged remains unregistered?
##### Try opening two different browsers and login into both of them. Refresh both browsers.
###### Can you confirm that only one of those browsers has an active session?
##### Try opening two different browsers and login into one of them. Then create a new post or just add a comment. Refresh both browsers.
###### Does it present the comment/post on both browsers?
#### SQLite
###### Does the code contain at least one CREATE query?
###### Does the code contain at least one INSERT query?
###### Does the code contain at least one SELECT query?
##### Try registering in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM users;).
###### Does it present the user you created?
##### Try creating a post in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM post;).
###### Does it present the post you created?
##### Try creating a comment in the forum, open the database with `sqlite3 <database_name.db>` and perform a query to select all the users (Example: SELECT \* FROM comment;).
###### Does it present the comment you created?
#### Docker
###### Does the project have Dockerfiles?
##### Try to run the command `"docker image build [OPTINS] PATH | URL | -"` to build the image using using the project Dockerfiles and run the command `"docker images"` to see images.
```
student$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<name of the image> latest 85a65d66ca39 7 seconds ago 795MB
```
###### Does all images build as above?
##### Try running the command `"docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]"` to start the containers using the images just created and run the command `"docker ps -a"` to see containers.
```
student$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc8f5dcf760f <name of the image> "./server" 6 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp ascii-art-web
```
###### Is the docker containers running as above?
###### Does the project present no [unused object](https://docs.docker.com/config/pruning/)?
#### Functional
##### Enter the forum as a non-registered user.
###### Are you prohibited to create a post?
##### Enter the forum as a non-registered user.
###### Are you prohibited to create a comment?
##### Enter the forum as a non-registered user and try to like a comment.
###### Are you prohibited to like a post?
##### Enter the forum as a non-registered user and try to dislike a comment.
###### Are you prohibited to dislike a comment?
##### Enter the forum as a registered user, go to a post and try to create a comment for it.
###### Were you able to create the comment?
##### Enter the forum as a registered user, go to a post and try to create an empty comment for it.
###### Were you prohibited to create the comment?
##### Enter the forum as a registered user and try to create a post.
###### Were you able to create a post?
##### Enter the forum as a registered user and try to create an empty post.
###### Were you prohibited to create the post?
##### Try creating a post as a registered user and try to choose several categories for that post.
###### Were you able to choose several categories for that post?
##### Try creating a post as a registered user and try to choose a category for that post.
###### Were you able to choose a category for that post?
##### Enter the forum as a registered user and try to like or dislike a post.
###### Can you like or dislike the post?
##### Enter the forum as a registered user and try to like or dislike a comment.
###### Can you like or dislike the comment?
##### Enter the forum as a registered user, try liking and disliking a post and then refresh the page.
###### Does the number of likes/dislikes change?
##### Enter the forum as a registered user and try to like and then dislike the same post.
###### Can you confirm that it is not possible that the post is liked and disliked at the same time?
##### Enter the forum as a registered user and try seeing all of your created posts.
###### Does it present the expected posts?
##### Enter the forum as a registered user and try seeing all of your liked posts.
###### Does it present the expected posts?
##### Navigate to a post of your choice and see its comments.
###### Are all users (registered or not) able to see the number of likes and dislikes that comment has?
##### Try seeing all posts from one category using the filter.
###### Are all posts displayed from that category?
###### Did the server behaved as expected?(did not crashed)
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)?
###### Are all the pages working? (Absence of 404 page?)
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)?
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)?
###### Are only the allowed packages being used?
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks)
#### General
###### +Does the project present a script to build the images and containers? (using a script to simplify the build)
#### Basic
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc)
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)?
###### +Is there a test file for this code?
#### Social
###### +Did you learn anything from this project?
###### +Can it be open-sourced / be used for other sources?
###### +Would you recommend/nominate this program as an example for the rest of the school?

102
subjects/forum/moderation/audit.md

@ -1,51 +1,51 @@
#### Functional
###### Does the forum present the 4 types of users?
##### Try to enter the forum as a Guest
###### Can you confirm that the content is only viewable?
##### Try registering as a normal user.
###### Can you create posts and comments?
##### Try registering as a normal user.
###### Can you like or dislike a post?
##### Try registering as a moderator. Then login to an admin account and see if the admin user has received the request.
###### Can you confirm that the admin received the request?
##### Try accepting a moderator using the admin user.
###### Has the moderator been promoted?
##### Try using the moderator to delete a obscene post
###### Can you confirm that it is possible?
##### Try using the moderator to report a illegal post
###### Did the admin user receive the report?
##### Try using the admin user to answer the moderator request.
###### Did the moderator receive the answer from the admin?
##### Try using an admin user to demote a moderator.
###### Can you confirm that it is possible?
##### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks)
#### General
###### +Does the project present more then 4 types of users?
#### Social
###### +Did you learn anything from this project?
###### +Would you recommend/nominate this program as an example for the rest of the school?
#### Functional
###### Does the forum present the 4 types of users?
##### Try to enter the forum as a Guest
###### Can you confirm that the content is only viewable?
##### Try registering as a normal user.
###### Can you create posts and comments?
##### Try registering as a normal user.
###### Can you like or dislike a post?
##### Try registering as a moderator. Then login to an admin account and see if the admin user has received the request.
###### Can you confirm that the admin received the request?
##### Try accepting a moderator using the admin user.
###### Has the moderator been promoted?
##### Try using the moderator to delete a obscene post
###### Can you confirm that it is possible?
##### Try using the moderator to report a illegal post
###### Did the admin user receive the report?
##### Try using the admin user to answer the moderator request.
###### Did the moderator receive the answer from the admin?
##### Try using an admin user to demote a moderator.
###### Can you confirm that it is possible?
##### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks)
#### General
###### +Does the project present more then 4 types of users?
#### Social
###### +Did you learn anything from this project?
###### +Would you recommend/nominate this program as an example for the rest of the school?

6
subjects/fusion/README.md

@ -9,14 +9,14 @@ With this create a function called `fusion` that:
- If the type is an array you must concat it
```js
fusion([1,2], [3,4]) // -> [1,2,3,4]
```
fusion([1, 2], [3, 4]) // -> [1,2,3,4]
```
- If it is a string you must concatenate with a space
```js
fusion('Salem', 'alem') // -> 'Salem alem'
```
```
- If it is numbers you must added them

5
subjects/get-json/README.md

@ -5,8 +5,9 @@
In this exercise, we will focus on building complex async flows with promises.
Create a `getJSON` function that takes 2 parameters:
- `path`, that will be the url called by your function
- `params` *optional*, that will be the search parameters appended to your url
- `params` _optional_, that will be the search parameters appended to your url
`getJSON` must construct a valid url with the `path` and stringified `params`
and call `fetch` with it.
@ -16,10 +17,10 @@ the response status message.
The response body must then be read and parsed from json.
The parsed object contains one of those 2 properties:
- `"data"` the actual data to return
- `"error"` the error message to throw
### Notions
- [nan-academy.github.io/js-training/examples/promise.js](https://nan-academy.github.io/js-training/examples/promise.js)

7
subjects/get/README.md

@ -4,13 +4,14 @@
Create the `get` function.
It takes 2 arguments:
- `src` an object
- `path` a string
And returns the value at the given string path.
- `src` an object
- `path` a string
And returns the value at the given string path.
### Example:
```js
const src = { nested: { key: 'peekaboo' } }
const path = 'nested.key'

4
subjects/good-practices/README.md

@ -65,11 +65,11 @@ Removing layout can be done using transform:
```js
// bad
// this will trigger the layout to recalculate everything and repaint it again
box.style.left = `${x * 100}px`;
box.style.left = `${x * 100}px`
// good
// this way its possible to lose the layout
box.style.transform = `translateX(${x * 100}px)`;
box.style.transform = `translateX(${x * 100}px)`
```
It is possible to remove painting by adding a layer:

10
subjects/gougle-search/README.md

@ -3,6 +3,7 @@
### Instructions
Create the `queryServers` function, that takes 2 arguments:
- `serverName` a string of the name of the server
- `q` a string of the query given by the user
@ -13,12 +14,11 @@ Then return the first value of those 2 calls
```js
queryServers('pouet', 'hello+world')
// return the fastest of those 2 calls:
// -> getJSON('/pouet?q=hello+world')
// -> getJSON('/pouet_backup?q=hello+world')
// return the fastest of those 2 calls:
// -> getJSON('/pouet?q=hello+world')
// -> getJSON('/pouet_backup?q=hello+world')
```
Create a `gougleSearch` function that takes a single query argument.
It must call `queryServers` in concurrently on 3 servers:
`'web'`, `'image'` and `'video'`.
@ -28,13 +28,11 @@ A timeout of 80milliseconds must be set for the whole operation.
You must return the value from each servers in an object
using a the server name as key.
### Notions
- [devdocs.io/javascript/global_objects/promise/race](https://devdocs.io/javascript/global_objects/promise/race)
- [devdocs.io/javascript/global_objects/promise/all](https://devdocs.io/javascript/global_objects/promise/all)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

1
subjects/greedy-url/README.md

@ -10,7 +10,6 @@ Write 3 functions :
You can search for greedy quantifiers for help
### Notions
- [github.com/ziishaned/learn-regex](https://github.com/ziishaned/learn-regex)

6
subjects/group-price/README.md

@ -3,10 +3,10 @@
### Instructions
Create a `groupPrice` function, that can find a price in a given string.
The function has to return an array of arrays with the full match of the price ($43.99)
The function has to return an array of arrays with the full match of the price ($43.99)
and the groups of that price, the first group(43) and the second group (99).
If there is no match the function returns an empty array.
Example:
"The price is USD12.31"
"The price is USD12.31"
Expected output:
[["USD12.31","12","31"]]
[["USD12.31","12","31"]]

206
subjects/groupie-tracker/audit/README.md

@ -1,103 +1,103 @@
#### Functional
###### Has the requirement for the allowed packages been respected? (Reminder for this project: (only [standard packages](https://golang.org/pkg/)
###### Is the data from the artists being used?
###### Is data from the relations being used?
##### Try to see the "members" for the artist/band `"Queen"`
```
"Freddie Mercury",
"Brian May",
"John Daecon",
"Roger Meddows-Taylor",
"Mike Grose",
"Barry Mitchell",
"Doug Fogie"
```
###### Does it present the right "member", as above?
##### Try to see the "firstAlbum" for the artist/band `"Gorillaz"`
```
"26-03-2001"
```
###### Does it present the right date for the "firstAlbum", as above?
##### Try to see the "locations" for the artist/band `"Travis Scott"`
```
"santiago-chile"
"sao_paulo-brasil"
"los_angeles-usa"
"houston-usa"
"atlanta-usa"
"new_orleans-usa"
"philadelphia-usa"
"london-uk"
"frauenfeld-switzerland"
"turku-finland"
```
###### Does it present the right "locations" as above?
##### Try to see the ""members"" for the artist/band `"Foo Fighters"`.
```
"Dave Grohl"
"Nate Mendel"
"Taylor Hawkins"
"Chris Shiflett"
"Pat Smear"
"Rami Jaffee"
```
###### Does it present the right members as above?
##### Try to trigger an event using some kind of action (ex: Clicking the mouse over a certain element, pressing a key on the keyboard, resizing or closing the browser window, a form being submitted, an error occurring, etc).
###### Does the event responds as expected?
###### Did the server behaved as expected?(did not crashed)
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)?
###### Has the website runned without crashing at anytime?
###### Are all the pages working? (Absence of 404 page?)
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)?
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)?
###### Is the communication between server and client well established?
###### Does the server present all the needed handlers and patterns for the http requests?
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks)
#### General
###### +Does the event system run as asynchronous? (usage of go routines and channels)
###### +Is the site hosted or deployed? Can you access the website through a DNS (Domain Name System)?
#### Basic
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc)
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)?
###### +Is there a test file for this code?
#### Social
###### +Did you learn anything from this project?
###### +Can it be open-sourced / be used for other sources?
###### +Would you recommend/nominate this program as an example for the rest of the school?
#### Functional
###### Has the requirement for the allowed packages been respected? (Reminder for this project: (only [standard packages](https://golang.org/pkg/)
###### Is the data from the artists being used?
###### Is data from the relations being used?
##### Try to see the "members" for the artist/band `"Queen"`
```
"Freddie Mercury",
"Brian May",
"John Daecon",
"Roger Meddows-Taylor",
"Mike Grose",
"Barry Mitchell",
"Doug Fogie"
```
###### Does it present the right "member", as above?
##### Try to see the "firstAlbum" for the artist/band `"Gorillaz"`
```
"26-03-2001"
```
###### Does it present the right date for the "firstAlbum", as above?
##### Try to see the "locations" for the artist/band `"Travis Scott"`
```
"santiago-chile"
"sao_paulo-brasil"
"los_angeles-usa"
"houston-usa"
"atlanta-usa"
"new_orleans-usa"
"philadelphia-usa"
"london-uk"
"frauenfeld-switzerland"
"turku-finland"
```
###### Does it present the right "locations" as above?
##### Try to see the ""members"" for the artist/band `"Foo Fighters"`.
```
"Dave Grohl"
"Nate Mendel"
"Taylor Hawkins"
"Chris Shiflett"
"Pat Smear"
"Rami Jaffee"
```
###### Does it present the right members as above?
##### Try to trigger an event using some kind of action (ex: Clicking the mouse over a certain element, pressing a key on the keyboard, resizing or closing the browser window, a form being submitted, an error occurring, etc).
###### Does the event responds as expected?
###### Did the server behaved as expected?(did not crashed)
###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)?
###### Has the website runned without crashing at anytime?
###### Are all the pages working? (Absence of 404 page?)
###### Does the project handle [HTTP status 400 - Bad Requests](https://kinsta.com/knowledgebase/400-bad-request/#causes)?
###### Does the project handle [HTTP status 500 - Internal Server Errors](https://www.restapitutorial.com/httpstatuscodes.html)?
###### Is the communication between server and client well established?
###### Does the server present all the needed handlers and patterns for the http requests?
###### As an auditor, is this project up to every standard? If not, why are you failing the project?(Empty Work, Incomplete Work, Invalid compilation, Cheating, Crashing, Leaks)
#### General
###### +Does the event system run as asynchronous? (usage of go routines and channels)
###### +Is the site hosted or deployed? Can you access the website through a DNS (Domain Name System)?
#### Basic
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc)
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/)?
###### +Is there a test file for this code?
#### Social
###### +Did you learn anything from this project?
###### +Can it be open-sourced / be used for other sources?
###### +Would you recommend/nominate this program as an example for the rest of the school?

2
subjects/has-city/README.md

@ -4,7 +4,7 @@
Create a function `hasCity` that takes a country and an array of cities
of that country and it returns a new function. \
The new function takes a city parameter which returns
The new function takes a city parameter which returns
whether a city is part of that country or not.
If it is, it should be returned `<city> is a city from <country>`, otherwise

7
subjects/hello_rust/README.md

@ -47,10 +47,12 @@ Once this is done the git clone command should work now.
Once you repository is cloned,
create and edit the .gitignore file in your repository and add this line:
```console
**/target/*
```
The goal of this setup is to avoid any binary files to be pushed in your gitea accidentaly.
The goal of this setup is to avoid any binary files to be pushed in your gitea accidentaly.
Do not forget to push it to your repository.
@ -89,7 +91,8 @@ You can test it with the below command inside the folder of your exercise.
```console
cargo run
```
This command will compile, and run the binary.
This command will compile, and run the binary.
#### 4- return your solution

5
subjects/index-of/README.md

@ -3,24 +3,23 @@
### Instructions
Create 3 functions:
- `indexOf` that returns the index of the first occurence of a value
- `lastIndexOf` that returns the index of the last occurence of a value
- `includes` that returns true if the value was found in the array
> If a value is not found, the returned index is -1
> functions should have an array element as first argument,
> functions should have an array element as first argument,
> both `indexOf` and `lastIndexOf` take an additional `fromIndex` argument
> that allows you to begin searching from a specific index.
### Notions
- [devdocs.io/javascript/global_objects/array/indexof](https://devdocs.io/javascript/global_objects/array/indexof)
- [devdocs.io/javascript/global_objects/array/lastindexof](https://devdocs.io/javascript/global_objects/array/lastindexof)
- [devdocs.io/javascript/global_objects/array/includes](https://devdocs.io/javascript/global_objects/array/includes)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

1
subjects/ion-out/README.md

@ -5,7 +5,6 @@
Make a function `ionOut` that receives a string and returns an array with every
word containing 'ion' following a t, without the 'ion'.
### Notions
- [github.com/ziishaned/learn-regex#4-lookarounds](https://github.com/ziishaned/learn-regex#4-lookarounds)

5
subjects/is-winner/README.md

@ -9,17 +9,16 @@ return a resolved Promise with the string:
- `<country> + ' is not what we are looking for because of the continent'`,
if the country passed in `isWinner` is not from the european
continent
continent
- `<country> + ' is not what we are looking for because of the number of times it was champion'`, if the country passed in `isWinner` was champion
less than 3 times
less than 3 times
- `<country> + ' won the FIFA World Cup in ' + <year(s)> + 'winning by ' + <results>`, otherwise.
If the country was champion in more than one year, the years should be
displayed like : '1000, 1004, 1008'. The same goes for the results
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

3
subjects/is/README.md

@ -3,6 +3,7 @@
### Instructions
Add new function properties to the object `is` to check a value type
- `is.num` value is a number
- `is.nan` value is NaN
- `is.str` value is a string
@ -15,7 +16,6 @@ Add new function properties to the object `is` to check a value type
- `is.truthy` value is truthy
- `is.falsy` value is falsy
### Notions
- [nan-academy.github.io/js-training/examples/primitive-and-operators](https://nan-academy.github.io/js-training/examples/primitive-and-operators.js)
@ -23,7 +23,6 @@ Add new function properties to the object `is` to check a value type
- [developer.mozilla.org/en-US/docs/Glossary/Truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)
- [developer.mozilla.org/en-US/docs/Glossary/Falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

1
subjects/its-a-match/README.md

@ -15,7 +15,6 @@ Create 4 regular expression in variables:
- `beginEnd` matches with the expression 'hi',
only when it is in the beginning and the end.
### Notions
- [github.com/ziishaned/learn-regex#28-anchors](https://github.com/ziishaned/learn-regex#28-anchors)

1
subjects/keep-cut/README.md

@ -20,7 +20,6 @@ and return the string only keeping the 2 last characters.
Create a `keepFirstLast` function that takes a string as parameter
and only keep 2 first characters and 2 last characters.
### Notions
- [devdocs.io/javascript/global_objects/array/slice](https://devdocs.io/javascript/global_objects/array/slice)

12
subjects/keep-trying-or-giveup/README.md

@ -3,23 +3,25 @@
### Instructions
Create a `retry` function, that takes 2 arguments
- a `count` indicates maximum amount of retries
- an async `callback`, that will be called on every try
`retry` returns a function that calls and returns value from `callback`
function passing its arguments and catches errors. If error is caught it
should return the `callback` function with catch. If number of errors
`retry` returns a function that calls and returns value from `callback`
function passing its arguments and catches errors. If error is caught it
should return the `callback` function with catch. If number of errors
exceeds `count` then throw an `Error`.
> for count of 3, the function will be called at most 4 times:
> the initial call + 3 retries.
Create a `timeout` function, that takes 2 arguments
- a `delay` indicates maximum wait time
- an async `callback`, that will be called
`timeout` returns a function either that calls and returns value from `callback`
function passing its arguments or returns `Error('timeout')` if `callback` didn't
`timeout` returns a function either that calls and returns value from `callback`
function passing its arguments or returns `Error('timeout')` if `callback` didn't
resolve before `delay` time has reached.
### Notions

1
subjects/last-first-kiss/README.md

@ -13,7 +13,6 @@ Create 3 functions:
- a `kiss` function that returns an array of 2 elements
the last and the first element, in that order
### Notions
- [nan-academy.github.io/js-training/examples/data-structures.js](https://nan-academy.github.io/js-training/examples/data-structures.js)

1
subjects/letter-space-number/README.md

@ -6,7 +6,6 @@ Make a function called `letterSpaceNumber` that receives a string and returns an
array with every instance of a letter, followed by a space, followed by a number
only if that number has only one digit and is not followed by any letter.
### Notions
- [github.com/ziishaned/learn-regex#3-shorthand-character-sets](https://github.com/ziishaned/learn-regex#3-shorthand-character-sets)

6
subjects/long-words/README.md

@ -5,13 +5,13 @@
Create three functions that take as argument an array each:
- `longWords` that returns true if every element of the array is a string of at
least 5 characters.
least 5 characters.
- `oneLongWord` that returns true if at least one element of the array is a
string of at least 10 characters.
string of at least 10 characters.
- `noLongWords` that returns true if there are no elements in the array that are
a string with at least 7 characters.
a string with at least 7 characters.
### Notions

6
subjects/make-your-game/different-maps/README.md

@ -16,17 +16,17 @@ To store efficiently the **tile images**, you should group them all in a single
To generate a specific tile image, you must select a section of this big image and render it into the game.
This will help with performance and memory usage.
----
---
If you plan to use scrolling tile maps it can be pretty costly on [rendering performance](https://developer.mozilla.org/en-US/docs/Games/Techniques/Tilemaps#Performance). So you must take special caution if you do so. One of the best ways is to render only the tiles that will be visible to the player using opacity or other methods. Sometime this is not enough.
----
---
A tile map can be mapped to a logical grid, helping with the map display and the game logic. Here is an example of a tile map data structure:
```js
let map = {
columns: 5,
columns: 5,
rows: 5,
size: 25,
tiles: [

2
subjects/manipulate-entries/README.md

@ -20,7 +20,6 @@ Create 3 other functions that use your previously create functions:
What the functions will take as argument is an object cart which contains the food rations. All the nutrition in the nutritionDB object are measured per 100 grams.
### Notions
- [devdocs.io/javascript/global_objects/array/filter](https://devdocs.io/javascript/global_objects/array/filter)
@ -29,7 +28,6 @@ What the functions will take as argument is an object cart which contains the fo
- [devdocs.io/javascript/global_objects/object/entries](https://devdocs.io/javascript/global_objects/object/entries)
- [devdocs.io/javascript/global_objects/object/fromentries](https://devdocs.io/javascript/global_objects/object/fromentries)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

3
subjects/manipulate-keys/README.md

@ -5,11 +5,11 @@
I do not want onions. I want oranges!!!
Create 3 functions that works like the `.filter`, `.map` and `.reduce` array method but for the keys of your grocery cart.
- `filterKeys` filters the name of the items you have.
- `mapKeys` changes the name of the items you have.
- `reduceKeys` reducing you grocery cart.
### Notions
- [devdocs.io/javascript/global_objects/array/filter](https://devdocs.io/javascript/global_objects/array/filter)
@ -18,7 +18,6 @@ Create 3 functions that works like the `.filter`, `.map` and `.reduce` array met
- [devdocs.io/javascript/global_objects/object/entries](https://devdocs.io/javascript/global_objects/object/entries)
- [devdocs.io/javascript/global_objects/object/fromentries](https://devdocs.io/javascript/global_objects/object/fromentries)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/manipulate-values/README.md

@ -8,6 +8,7 @@ You have a grocery cart with some items you need.
The items will have a `key` being the name and a `value` that is the amount in grams.
Create 3 functions that works like the `.filter`, `.map` and `.reduce` array method but for the values of your grocery cart.
- `filterValues` filters the values of your grocery cart.
- `mapValues` changes the values of your grocery cart.
- `reduceValues` that will reduce your grocery cart.
@ -22,7 +23,6 @@ You will have a small database to help you with the groceries.
- [devdocs.io/javascript/global_objects/object/entries](https://devdocs.io/javascript/global_objects/object/entries)
- [devdocs.io/javascript/global_objects/object/fromentries](https://devdocs.io/javascript/global_objects/object/fromentries)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

4
subjects/mapper/README.md

@ -3,10 +3,10 @@
### Instructions
- Create a `map` function that takes an array as first argument, a function as second,
and that works like the method .map
and that works like the method .map
- Create a `flatMap` function that takes an array as first argument, a function as second,
and that works like the method .flatMap
and that works like the method .flatMap
### Notions

1
subjects/match-cron/README.md

@ -25,7 +25,6 @@ matchCron('9 * * * *', new Date('2020-05-30 19:21:00')) // -> false
// +--------- Minute (range: 0-59)
```
### Notions
- [crontab.guru](https://crontab.guru/)

2
subjects/matrix_transposition/README.md

@ -8,7 +8,7 @@
- Note:
- The transpose of a matrix `A` is the matrix `A'` where `A'`'s columns are `A`'s row and the rows are the columns:
- The transpose of a matrix `A` is the matrix `A'` where `A'`'s columns are `A`'s row and the rows are the columns:
Example:

2
subjects/min-max/README.md

@ -12,7 +12,6 @@ and returns the lowest
> You must not just use `Math.min`, make your own.
### Notions
- [nan-academy.github.io/js-training/examples/functions](https://nan-academy.github.io/js-training/examples/functions.js)
@ -20,7 +19,6 @@ and returns the lowest
- [devdocs.io/javascript/global_objects/math/min](https://devdocs.io/javascript/global_objects/math/min)
- [devdocs.io/javascript/global_objects/math/max](https://devdocs.io/javascript/global_objects/math/max)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/more-or-less/README.md

@ -3,12 +3,12 @@
### Instructions
Create 4 functions
- `more` that takes 1 argument and add 1 to it
- `less` that takes 1 argument and substract 1 to it
- `add` that takes 2 arguments and add them
- `sub` that takes 2 arguments and substract them
### Notions
- [nan-academy.github.io/js-training/examples/functions](https://nan-academy.github.io/js-training/examples/functions.js)

110
subjects/mousevr/README.md

@ -1,55 +1,55 @@
## MouseVR
On this one you will learn the basics of interaction using objects, learn the use of blueprint interface and learn stereoscopic sphere texturing. How, you ask? By creating a game in which you will be in a city and will be looking for interaction points in order to travel through the map. And do not to look straight at the end of the subject.
### Objectives
You will have to create a game that uses the mouse as if it were the player head in a VR game. You will navigate through the map using the mouse, focusing in certain points in order to "teleport" to that location.
### Instructions
After creating a blank project and importing the content from the provided folder, you should focus on the following points to accomplish the previous explained features:
- Use Scene Capture to take a 360 degrees screenshot, that you will need later on every targeted location on the map.
- With this, you can create a new material and apply it to a sphere.
- Find a way to display the material inside and outside the sphere to create a VR world illusion.
- Create a pawn that can move his head using the mouse inside the spheres.
- In order to play the game, the player only needs to use the mouse and never the keyboard.
- Create your own interaction point to indicate where the player is heading.
- The design of the interaction point is up to you, but it should display a text underneath it, indicating where this interaction point is going to lead the player to (burger store, metro, park, etc...).
- There should always be an interaction point visible to the player, somewhere in the world that lets the player quit, no matter where the player is in the map.
- There should be no brutal transitions in the teleportation phase.
- Use an Interface Blueprint to handle interactions: a Blur, a Focus and an Active interaction.
- Use a SphereTraceByChannel node to be able to look at objects.
- Use casting with your interaction point to know which object you are looking at.
- Use an interaction timer to set how many times should the player look at an interaction point in order to travel to the next space (like on the video example). In other words, the player should look for a while at the interaction point before getting teleported to the next scene.
- Except for the interaction point and the spheres containing the panoramic images, no 3D objects are allowed on the map.
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/MouseVR.zip), you can copy its content to your project Content folder.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/Tor1Q10NG_Q).
> Do not forget to zip up the project compile and save everything for peer correction.
### Bonus
The following are the bonuses for this project:
- Create a circle, around the interaction points, that indicates when the interaction point will be triggered.
- Animate the interaction points.
- Add looping background music during the experience.
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine.
Ah! I made you look.
## MouseVR
On this one you will learn the basics of interaction using objects, learn the use of blueprint interface and learn stereoscopic sphere texturing. How, you ask? By creating a game in which you will be in a city and will be looking for interaction points in order to travel through the map. And do not to look straight at the end of the subject.
### Objectives
You will have to create a game that uses the mouse as if it were the player head in a VR game. You will navigate through the map using the mouse, focusing in certain points in order to "teleport" to that location.
### Instructions
After creating a blank project and importing the content from the provided folder, you should focus on the following points to accomplish the previous explained features:
- Use Scene Capture to take a 360 degrees screenshot, that you will need later on every targeted location on the map.
- With this, you can create a new material and apply it to a sphere.
- Find a way to display the material inside and outside the sphere to create a VR world illusion.
- Create a pawn that can move his head using the mouse inside the spheres.
- In order to play the game, the player only needs to use the mouse and never the keyboard.
- Create your own interaction point to indicate where the player is heading.
- The design of the interaction point is up to you, but it should display a text underneath it, indicating where this interaction point is going to lead the player to (burger store, metro, park, etc...).
- There should always be an interaction point visible to the player, somewhere in the world that lets the player quit, no matter where the player is in the map.
- There should be no brutal transitions in the teleportation phase.
- Use an Interface Blueprint to handle interactions: a Blur, a Focus and an Active interaction.
- Use a SphereTraceByChannel node to be able to look at objects.
- Use casting with your interaction point to know which object you are looking at.
- Use an interaction timer to set how many times should the player look at an interaction point in order to travel to the next space (like on the video example). In other words, the player should look for a while at the interaction point before getting teleported to the next scene.
- Except for the interaction point and the spheres containing the panoramic images, no 3D objects are allowed on the map.
After downloading and unzipping this [file](https://assets.01-edu.org/Unreal-Engine-Piscine/MouseVR.zip), you can copy its content to your project Content folder.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/Tor1Q10NG_Q).
> Do not forget to zip up the project compile and save everything for peer correction.
### Bonus
The following are the bonuses for this project:
- Create a circle, around the interaction points, that indicates when the interaction point will be triggered.
- Animate the interaction points.
- Add looping background music during the experience.
[Here](https://www.youtube.com/playlist?list=PLHyAJ_GrRtf9sxZqgfPVM06PrLk8_CWA-) you can find an instructional playlist on Unreal Engine.
Ah! I made you look.

62
subjects/mousevr/audit/README.md

@ -1,31 +1,31 @@
#### Functional
###### When you move the mouse does the "head" of the player move accordingly?
###### Can we navigate throughout the map using interaction points?
###### Does every interaction point contain a text underneath it indicating where that interaction point is going to lead you?
###### Do all interaction points led you to the location they tell you?
###### Can we play the whole game without pressing any key on the keyboard?
###### Is a "Quit Game" interaction point always available, so that it is possible to quit the game at any point of the game?
###### Are all teleportation visible to the player smooth and non brutal?
###### Is a sphere being used to cast instead of a single ray, in other words, did the student used a SphereTraceByChannel node?
###### Is an Interface Blueprint being used to handle the different actions on the interaction point (Blur,Focus and Active)?
###### Do you need to stare for a little at an interaction point to be able to teleport to a different scene?
###### Except for the interaction point and the spheres containing the panoramic images, are there any 3D objects on the map?
#### Bonus
###### Is a circle that indicates when the interaction point will be triggered present?
###### Is the interaction point animated?
###### Is there looping background music during the game?
#### Functional
###### When you move the mouse does the "head" of the player move accordingly?
###### Can we navigate throughout the map using interaction points?
###### Does every interaction point contain a text underneath it indicating where that interaction point is going to lead you?
###### Do all interaction points led you to the location they tell you?
###### Can we play the whole game without pressing any key on the keyboard?
###### Is a "Quit Game" interaction point always available, so that it is possible to quit the game at any point of the game?
###### Are all teleportation visible to the player smooth and non brutal?
###### Is a sphere being used to cast instead of a single ray, in other words, did the student used a SphereTraceByChannel node?
###### Is an Interface Blueprint being used to handle the different actions on the interaction point (Blur,Focus and Active)?
###### Do you need to stare for a little at an interaction point to be able to teleport to a different scene?
###### Except for the interaction point and the spheres containing the panoramic images, are there any 3D objects on the map?
#### Bonus
###### Is a circle that indicates when the interaction point will be triggered present?
###### Is the interaction point animated?
###### Is there looping background music during the game?

3
subjects/multiplayer_fps/README.md

@ -22,7 +22,6 @@ Write your own version of the game [maze wars](https://www.youtube.com/watch?v=5
- Use the UDP protocol to enable the communication between the clients and the server.
#### You have to develop the game server and also a client application:
- The server must accept as much connections as possible (the minimum should be 10).
@ -34,7 +33,7 @@ Write your own version of the game [maze wars](https://www.youtube.com/watch?v=5
- After this, it should ask also for a name.
- Example:
Assuming that you can to connect to a server in your same computer.
Assuming that you can to connect to a server in your same computer.
```console
path/to/client $ cargo run

2
subjects/mutability/README.md

@ -10,14 +10,12 @@ Create a new variable `samePerson` with the same value as `person`.
Increase by one the property age of `person`
and set his country to `'FR'`.
### Notions
- [nan-academy.github.io/js-training/examples/set](https://nan-academy.github.io/js-training/examples/set.js)
- [nan-academy.github.io/js-training/examples/get](https://nan-academy.github.io/js-training/examples/get.js)
- [nan-academy.github.io/js-training/examples/data-structures](https://nan-academy.github.io/js-training/examples/data-structures.js)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

4
subjects/nasa/README.md

@ -2,13 +2,13 @@
### Instructions
Create a `nasa` function that takes a number `N` as a parameter and returns
Create a `nasa` function that takes a number `N` as a parameter and returns
a string with all numbers from 1 to the `N` separated by whitespace, with three exceptions:
- For numbers divisible by 3, add 'NA'.
- For numbers divisible by 5, add 'SA'.
- For the number that are divisible by 3 and 5 add 'NASA'.
### Notions
- [nan-academy.github.io/js-training/examples/loops](https://nan-academy.github.io/js-training/examples/loops.js)

138
subjects/nascaronlinealpha/README.md

@ -1,69 +1,69 @@
## NascarOnlineAlpha
In this exercise, you will create an online racing game. The player will be able to race with another player to see who is faster. When you feel stuck remember that once, a man could not work out how to fasten his seatbelt. But then it suddenly clicked!
### Objectives
You will have to create a car game using an already existing project that you will have to download.
You will learn to analyze the code and understand what the developer did before you, and adapt it to extend the gameplay to continue the development of the game.
### Instructions
In order to start the project, you will have to open the Epic Games Launcher, switch to the Learn tab and search for the Vehicle Game project. Once you find it and download it, you can create a new Vehicle Game project and that will be the base of your project.
As the game is done, you only will need to make the multiplayer part of it. Basically, these are the requirements:
- As soon as the game starts it should ask for a name to assign to the player.
- Create a main menu map where the player can choose either to Host/Join a session.
- If the player chooses to Host, the game should ask you for a server name, number of players allowed on the server, whether the player wants to host via LAN or ONLINE, and a host button that launches the player into a multiplayer Lobby.
- The maximum number of players should be 4 and the minimum should be 2.
- If the server name is not provided, the player can not yet host the server and a warning message should appear requesting to insert a name for the server.
- If you press the Join button, the game should display, a list of available sessions which the player can join. Also a refresh button should be available to search for sessions again.
- A button with the server name in it should appear for each session found. By clicking on it, the player is directly transferred to the host lobby.
- The option to do the search for LAN sessions or ONLINE sessions must be presented to the player.
- In the start menu, there should also be a button that enables the player to quit the game.
- In every other menu, there should be a button that allows the player to go back.
- On the host lobby, before the creator of the session starts the game, the player should be able to drive around the map.
- If you are not the host, a widget should pop on the screen saying “Waiting for the host to start” and if you are the host it should be a “Click START to start” widget. Therefore the host of the server should have a Start button available.
- Once the game started, all players spawn on the map and the race starts after a countdown (A little delay may occur for the client but it quickly goes back to normal so do not worry about this possible issue).
- The first to finish the race gets a message on the screen displaying “YOU WIN”. The rest of the players get a “YOU LOSE” instead.
- Once the player crosses the finish line, the player input is disabled (the player can no longer move).
- Use the provided loading screen to hide all screen/player switching between maps and screens.
As for the multiplayer aspect, here are some hints that you will have to follow:
- Use the Advanced Session plugin to have more host options when creating and searching for a session.
- Use replicated Custom Events to share information.
- Use Game Instance to handle all widgets navigation.
- Use Game State and replicated variables to know who is the winner of the game. If you have more info to share for all players on the game, do it through Game State using server replication.
- Use "Has Authority" checks to know if it is the server or the client that is trying to execute an action.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/s56rio0bw0U).
> Do not forget to zip up the project compile and save everything for peer correction.
### Bonus
As bonus for this exercise you can:
- create a restart race button when all players crossed the finish line.
- display the winner on every player screen when crossing the finish line.
- make players join a server by IP address, from another LAN network (two players connected to different networks for example).
## NascarOnlineAlpha
In this exercise, you will create an online racing game. The player will be able to race with another player to see who is faster. When you feel stuck remember that once, a man could not work out how to fasten his seatbelt. But then it suddenly clicked!
### Objectives
You will have to create a car game using an already existing project that you will have to download.
You will learn to analyze the code and understand what the developer did before you, and adapt it to extend the gameplay to continue the development of the game.
### Instructions
In order to start the project, you will have to open the Epic Games Launcher, switch to the Learn tab and search for the Vehicle Game project. Once you find it and download it, you can create a new Vehicle Game project and that will be the base of your project.
As the game is done, you only will need to make the multiplayer part of it. Basically, these are the requirements:
- As soon as the game starts it should ask for a name to assign to the player.
- Create a main menu map where the player can choose either to Host/Join a session.
- If the player chooses to Host, the game should ask you for a server name, number of players allowed on the server, whether the player wants to host via LAN or ONLINE, and a host button that launches the player into a multiplayer Lobby.
- The maximum number of players should be 4 and the minimum should be 2.
- If the server name is not provided, the player can not yet host the server and a warning message should appear requesting to insert a name for the server.
- If you press the Join button, the game should display, a list of available sessions which the player can join. Also a refresh button should be available to search for sessions again.
- A button with the server name in it should appear for each session found. By clicking on it, the player is directly transferred to the host lobby.
- The option to do the search for LAN sessions or ONLINE sessions must be presented to the player.
- In the start menu, there should also be a button that enables the player to quit the game.
- In every other menu, there should be a button that allows the player to go back.
- On the host lobby, before the creator of the session starts the game, the player should be able to drive around the map.
- If you are not the host, a widget should pop on the screen saying “Waiting for the host to start” and if you are the host it should be a “Click START to start” widget. Therefore the host of the server should have a Start button available.
- Once the game started, all players spawn on the map and the race starts after a countdown (A little delay may occur for the client but it quickly goes back to normal so do not worry about this possible issue).
- The first to finish the race gets a message on the screen displaying “YOU WIN”. The rest of the players get a “YOU LOSE” instead.
- Once the player crosses the finish line, the player input is disabled (the player can no longer move).
- Use the provided loading screen to hide all screen/player switching between maps and screens.
As for the multiplayer aspect, here are some hints that you will have to follow:
- Use the Advanced Session plugin to have more host options when creating and searching for a session.
- Use replicated Custom Events to share information.
- Use Game Instance to handle all widgets navigation.
- Use Game State and replicated variables to know who is the winner of the game. If you have more info to share for all players on the game, do it through Game State using server replication.
- Use "Has Authority" checks to know if it is the server or the client that is trying to execute an action.
When finished, your project should look like the [“Expected Result” video](https://youtu.be/s56rio0bw0U).
> Do not forget to zip up the project compile and save everything for peer correction.
### Bonus
As bonus for this exercise you can:
- create a restart race button when all players crossed the finish line.
- display the winner on every player screen when crossing the finish line.
- make players join a server by IP address, from another LAN network (two players connected to different networks for example).

2
subjects/neuron/README.md

@ -2,7 +2,7 @@
### Instructions
Create a function called `neuron` that allows your AI/bot to learn how to data shape a given
Create a function called `neuron` that allows your AI/bot to learn how to data shape a given
dataset into an object so that it can better navigate the data.
### Example

2
subjects/ownership/README.md

@ -30,7 +30,7 @@ fn main() {
let s3 = String::from("CamelCase");
let s4 = String::from("just");
println!("first_subword({}) = {}", s1.clone(), first_subword(s1));
println!("first_subword({}) = {}", s1.clone(), first_subword(s1));
println!("first_subword({}) = {}", s2.clone(), first_subword(s2));
println!("first_subword({}) = {}", s3.clone(), first_subword(s3));
println!("first_subword({}) = {}", s4.clone(), first_subword(s4));

2
subjects/primitives/README.md

@ -3,12 +3,12 @@
### Instructions
Create a constant variable for each primitives:
- `str` for `String`
- `num` for `Number`
- `bool` for `Boolean`
- `undef` for `undefined`
### Notions
- [nan-academy.github.io/js-training/examples/primitive-and-operators](https://nan-academy.github.io/js-training/examples/primitive-and-operators.js)

6
subjects/pronoun/README.md

@ -2,8 +2,8 @@
### Instructions
Create a function called `pronoun` that has a string as parameter. This function returns an object
that will have all the pronouns, present in the string, as keys. Each key will have a sub object with the
Create a function called `pronoun` that has a string as parameter. This function returns an object
that will have all the pronouns, present in the string, as keys. Each key will have a sub object with the
first word after each of the pronouns found in the string.
Also, a property `count` must be added, to the sub object, with the amount of occurrences of the pronoun.
@ -21,4 +21,4 @@ const ex = 'If he you want to buy something you have to pay.'
you: { word: [ 'want', 'have' ], count: 2 }
}
```
```

1
subjects/pyramid/README.md

@ -19,6 +19,7 @@ Just like triangle
*******
*********
```
> No new line in last line
### Notions

8
subjects/quad/README.md

@ -112,7 +112,7 @@ o
student@ubuntu:~/quad/test$
```
----
---
## quadB
@ -226,7 +226,7 @@ student@ubuntu:~/quad/test$ ./test
student@ubuntu:~/quad/test$
```
----
---
## quadC
@ -340,7 +340,7 @@ C
student@ubuntu:~/quad/test$
```
----
---
## quadD
@ -454,7 +454,7 @@ A
student@ubuntu:~/quad/test$
```
----
---
## quadE

8
subjects/quantifiers/README.md

@ -5,21 +5,19 @@
Create three functions that receive an array and a function each:
- `every` that returns true if every element of the array respects the
condition of the received function and false otherwise.
condition of the received function and false otherwise.
- `some` that returns true if at least one element of the array respects the
condition of the received function and false otherwise.
condition of the received function and false otherwise.
- `none` that returns true if none of the elements of the array respects the
condition of the received function and false otherwise.
condition of the received function and false otherwise.
The use of `[].every` and `[].some` is forbidden for this exercise.
### Notions
- [devdocs.io/javascript/global_objects/array/some](https://devdocs.io/javascript/global_objects/array/some)
- [devdocs.io/javascript/global_objects/array/every](https://devdocs.io/javascript/global_objects/array/every)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

3
subjects/race/README.md

@ -6,15 +6,14 @@ Create a function `race` that works like `Promise.race`
Create a function `some` that takes an `array` of promises or values
and `N` number. It should return the first `N` resolved values.
> Empty array or a count of 0 return a promise resolving to `undefined`
> Empty array or a count of 0 return a promise resolving to `undefined`
### Notions
- [nan-academy.github.io/js-training/examples/promise](https://nan-academy.github.io/js-training/examples/promise.js)
- [devdocs.io/javascript/global_objects/promise/race](https://devdocs.io/javascript/global_objects/promise/race)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/rebecca-black/README.md

@ -3,12 +3,12 @@
### Instructions
Create the following functions:
- `isFriday` returns true if the date is a friday
- `isWeekend` returns true if the date is a day of the weekend
- `isLeapYear` returns true if the year is a leap year
- `isLastDayOfMonth` returns true if the date is the last day of the month
### Notions
- [date-fns.org/v2.14.0/docs/isWeekend](https://date-fns.org/v2.14.0/docs/isWeekend)

23
subjects/reduce/README.md

@ -5,35 +5,34 @@
Create three functions:
- `fold` that receives an array, a function and an accumulator, in this order,
and applies the function in the elements of the array starting on the left.
and applies the function in the elements of the array starting on the left.
- `foldRight` that receives an array, a function and an accumulator, in this order,
and applies the function in the elements of the array starting on the right.
and applies the function in the elements of the array starting on the right.
- `reduce` that works just like the method `[].reduce` when you don't
specify an accumulator.
The arguments should be an array and a function.
The starting value of your accumulator must be the first value of the array.
If your array is less than 1 argument you should throw an error.
specify an accumulator.
The arguments should be an array and a function.
The starting value of your accumulator must be the first value of the array.
If your array is less than 1 argument you should throw an error.
- `reduceRight` like reduce, from the last value to the first
Example:
```js
const adder = (a,b) => a + b
fold([1,2,3], adder, 2) // returns 8 (2 + 1 + 2 + 3)
foldRight([1,2,3], adder, 2) // returns 8 (2 + 3 + 2 + 1)
reduce([1,2,3], adder) // returns 6 (1 + 2 + 3)
const adder = (a, b) => a + b
fold([1, 2, 3], adder, 2) // returns 8 (2 + 1 + 2 + 3)
foldRight([1, 2, 3], adder, 2) // returns 8 (2 + 3 + 2 + 1)
reduce([1, 2, 3], adder) // returns 6 (1 + 2 + 3)
```
The use of `[].reduce` and `[].reduceRight` is forbidden for this exercise.
### Notions
- [devdocs.io/javascript/global_objects/array/reduce](https://devdocs.io/javascript/global_objects/array/reduce)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

2
subjects/repeat/README.md

@ -7,14 +7,12 @@ and return the repeated string by the given number
Like the method [developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat)
Of course you may not use the method directly
### Notions
- [nan-academy.github.io/js-training/examples/loops](https://nan-academy.github.io/js-training/examples/loops.js)
- [nan-academy.github.io/js-training/examples/recursion](https://nan-academy.github.io/js-training/examples/recursion.js)
- [devdocs.io/javascript/global_objects/string/repeat](https://devdocs.io/javascript/global_objects/string/repeat)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

1
subjects/returns/README.md

@ -7,7 +7,6 @@ Create the following functions:
- `id` that takes one argument and return it
- `getLength` that takes an array or a string and return its length
### Notions
- [nan-academy.github.io/js-training/examples/functions](https://nan-academy.github.io/js-training/examples/functions.js)

2
subjects/reverser/README.md

@ -6,12 +6,10 @@ Create a `reverse` function that works on both arrays and strings.
Like `[].reverse()` but working also for strings (without using the actual method)
### Notions
- [devdocs.io/javascript/global_objects/array/reverse](https://devdocs.io/javascript/global_objects/array/reverse)
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.

7
subjects/road_intersection/README.md

@ -28,7 +28,7 @@ _______________| ← ↓ → | ↑ |_____________
| ↓ l
_________________________|_______________________
l ↑ |
→ → → → → s → | → → → → → →
→ → → → → s → | → → → → → →
r ↓ |
_______________ | _____________
| | ← ↑ → |
@ -68,12 +68,12 @@ Vehicles must obey this rules:
- Vehicles must have a color depending on their route the colors are up to you to decide(ex:`r`- purple, `s`- Blue and `l`- Yellow). This must then be given during the audit
- Autonomous, vehicles driving on a lane with a **given route** must follow the direction of
that route, its not possible for the driver to change lanes or route.
that route, its not possible for the driver to change lanes or route.
- Each vehicle must have a fixed velocity.
- It must be kept a safety distance from other vehicles, if one vehicle stops the other vehicle thats
behind him must stop and keep its distance.
behind him must stop and keep its distance.
- Vehicles must stop if the traffic light is red and proceed otherwise.
@ -91,6 +91,7 @@ vehicles in different lanes and with different routes.
For this it must be possible to do the following:
- The `Arrow` keys must generate one vehicle in a specific direction and with a random route ( `r`, `s` and `l`):
- `Up` south to north.
- `Down` north to south.
- `Right` west to east.

3
subjects/same-amount/README.md

@ -6,8 +6,7 @@ Create a `sameAmount` function that takes three parameter,
a data string and 2 regexes.
The objective is to confirm that the second and the third parameter matched
the same amount of times in the first parameter.
the same amount of times in the first parameter.
### Notions

11
subjects/scalar/README.md

@ -1,24 +1,26 @@
## Scalar
### Instructions
Create the following **functions**, which each receives two parameters:
- `sum`, which returns the sum between two values from 0 to 255
- `diff`, which returns the difference between two values from -32768 to 32767
- `pro`, which returns the product of the multiplication between two values from -128 to 127
- `quo`, which returns the quotient of the division between two values (32bit and you have to figure out the second part)
- `rem`, which returns the remainder of the division between two values (32bit and you have to figure out the second part)
You **must** complete the Expected functions parameters data type accordingly (Replace the Xs)!
You **must** complete the Expected functions parameters data type accordingly (Replace the Xs)!
### Notions
- [Data Types](https://doc.rust-lang.org/book/ch03-02-data-types.html)
- [Data Types](https://doc.rust-lang.org/book/ch03-02-data-types.html)
### Expected functions (Incomplete, you must precise the Data Types)
```rust
pub fn sum(a: X , b: X) -> X {
}
pub fn diff(a: X, b: X) -> X {
@ -39,6 +41,7 @@ pub fn rem(a: X, b: X) -> X {
```
### Usage :
#### Note that There is no output for this test for you to train to comment accordingly.
```rust
@ -55,7 +58,7 @@ fn main() {
println!("pro : {}", pro(23, 2)); // 'pro : 46'
println!("pro : {}", pro(-128, 2)); // 'ERROR: attempt to multiply with overflow'
// quotient
println!("quo : {}", quo(22.0, 2.0));// 'quo : 11'
println!("quo : {}", quo(22.0, 2.0));// 'quo : 11'
println!("quo : {}", quo(-128.23, 2.0));// 'quo : -64.115'
// remainder
println!("rem : {}", rem(22.0, 2.0));// 'rem : 0'

1
subjects/select-and-style/README.md

@ -3,6 +3,7 @@
### Resources
We provide you with some content to get started smoothly, check it out!
- Video [Link a CSS stylesheet to your HTML file](https://www.youtube.com/watch?v=e7G-KhaqTjs&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=3)
- Video [CSS - Style with type selectors](https://www.youtube.com/watch?v=q0ur7YWBzhs&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=4)
- Video [HTML/CSS - Set & style with ID selector](https://www.youtube.com/watch?v=3b3MiY-MR-Y&list=PLHyAJ_GrRtf979iZZ1N3qYMfsPj9PCCrF&index=5)

Some files were not shown because too many files changed in this diff diff.show_more

Loading…
Cancel
Save