Browse Source

Merge branch 'master' of github.com:01-edu/public

content-update
Christopher Fremond 5 years ago
parent
commit
d295bc48b5
  1. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 01.59.32.png
  2. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 02.03.11.png
  3. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 02.05.46.png
  4. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 02.20.18.png
  5. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 02.22.30.png
  6. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 02.24.04.png
  7. BIN
      docs/img/reviews/Screenshot 2019-10-17 at 02.43.31.png
  8. 50
      docs/reviews.md
  9. 9
      docs/server-requirements.md
  10. 6
      scripts/bash_tweaks.sh
  11. 6
      scripts/clean.sh
  12. 32
      scripts/exam.sh
  13. 8
      scripts/firewall.sh
  14. 6
      scripts/fx.sh
  15. 6
      scripts/go.sh
  16. 6
      scripts/grub.sh
  17. 9
      scripts/install_client.sh
  18. 6
      scripts/libreoffice.sh
  19. 6
      scripts/nodejs.sh
  20. 2
      scripts/set.sh
  21. 6
      scripts/ssh.sh
  22. 6
      scripts/sublime.sh
  23. 4
      scripts/system/etc/gdm3/PostLogin/Default
  24. 6
      scripts/system/etc/gdm3/PostSession/Default
  25. 2
      scripts/system/usr/local/bin/lock_screen
  26. 2
      scripts/system/usr/local/bin/suspend_session
  27. 6
      scripts/ubuntu_tweaks.sh
  28. 13
      scripts/vscode.sh
  29. 4
      subjects/addprimesum.en.md
  30. 4
      subjects/addprimesum.fr.md
  31. 1
      subjects/advancedsortwordarr.en.md
  32. 1
      subjects/advancedsortwordarr.fr.md
  33. 18
      subjects/alphamirror.en.md
  34. 16
      subjects/alphamirror.fr.md
  35. 5
      subjects/any.en.md
  36. 5
      subjects/any.fr.md
  37. 3
      subjects/appendrange.en.md
  38. 2
      subjects/appendrange.fr.md
  39. 8
      subjects/atoi.en.md
  40. 8
      subjects/atoi.fr.md
  41. 6
      subjects/atoibase.en.md
  42. 6
      subjects/atoibase.fr.md
  43. 38
      subjects/atoibaseprog.en.md
  44. 38
      subjects/atoibaseprog.fr.md
  45. 8
      subjects/basicatoi.en.md
  46. 8
      subjects/basicatoi.fr.md
  47. 10
      subjects/basicatoi2.en.md
  48. 8
      subjects/basicatoi2.fr.md
  49. 14
      subjects/boolean.en.md
  50. 14
      subjects/boolean.fr.md
  51. 24
      subjects/brackets.en.md
  52. 21
      subjects/brackets.fr.md
  53. 30
      subjects/brainfuck.en.md
  54. 32
      subjects/brainfuck.fr.md
  55. 6
      subjects/btreeapplybylevel.en.md
  56. 6
      subjects/btreeapplybylevel.fr.md
  57. 3
      subjects/btreeapplyinorder.en.md
  58. 3
      subjects/btreeapplyinorder.fr.md
  59. 2
      subjects/btreeapplypostorder.fr.md
  60. 2
      subjects/btreeapplypreorder.fr.md
  61. 7
      subjects/btreedeletenode.en.md
  62. 7
      subjects/btreedeletenode.fr.md
  63. 6
      subjects/btreeinsertdata.en.md
  64. 5
      subjects/btreeinsertdata.fr.md
  65. 6
      subjects/btreeisbinary.en.md
  66. 6
      subjects/btreeisbinary.fr.md
  67. 6
      subjects/btreelevelcount.en.md
  68. 6
      subjects/btreelevelcount.fr.md
  69. 6
      subjects/btreemax.en.md
  70. 6
      subjects/btreemax.fr.md
  71. 6
      subjects/btreemin.en.md
  72. 6
      subjects/btreemin.fr.md
  73. 6
      subjects/btreetransplant.en.md
  74. 6
      subjects/btreetransplant.fr.md
  75. 6
      subjects/capitalizeprog.en.md
  76. 6
      subjects/capitalizeprog.fr.md
  77. 23
      subjects/cat.en.md
  78. 23
      subjects/cat.fr.md
  79. 10
      subjects/cl-camp1.en.md
  80. 10
      subjects/cl-camp1.fr.md
  81. 6
      subjects/cl-camp3.en.md
  82. 6
      subjects/cl-camp3.fr.md
  83. 8
      subjects/cl-camp4.en.md
  84. 8
      subjects/cl-camp4.fr.md
  85. 2
      subjects/cl-camp5.en.md
  86. 2
      subjects/cl-camp5.fr.md
  87. 10
      subjects/cl.en.md
  88. 10
      subjects/cl.fr.md
  89. 2
      subjects/collatzcountdown.en.md
  90. 2
      subjects/collatzcountdown.fr.md
  91. 6
      subjects/comcheck.en.md
  92. 6
      subjects/comcheck.fr.md
  93. 84
      subjects/commandments.en.md
  94. 84
      subjects/commandments.fr.md
  95. 4
      subjects/compact.en.md
  96. 6
      subjects/compact.fr.md
  97. 2
      subjects/compareprog.en.md
  98. 2
      subjects/compareprog.fr.md
  99. 2
      subjects/concatparams.en.md
  100. 1
      subjects/concatparams.fr.md
  101. Some files were not shown because too many files changed in this diff diff.show_more

BIN
docs/img/reviews/Screenshot 2019-10-17 at 01.59.32.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 638 KiB

BIN
docs/img/reviews/Screenshot 2019-10-17 at 02.03.11.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/img/reviews/Screenshot 2019-10-17 at 02.05.46.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 707 KiB

BIN
docs/img/reviews/Screenshot 2019-10-17 at 02.20.18.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 707 KiB

BIN
docs/img/reviews/Screenshot 2019-10-17 at 02.22.30.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 725 KiB

BIN
docs/img/reviews/Screenshot 2019-10-17 at 02.24.04.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 734 KiB

BIN
docs/img/reviews/Screenshot 2019-10-17 at 02.43.31.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 643 KiB

50
docs/reviews.md

@ -0,0 +1,50 @@
# Reviews
## Context
Only unblocked bonus exercises can be reviewed, which are usually the last items of a quest.
Bonus exercises are available in quests 02 / 03 / 04 / 05 / 07 / 08 / 09.
<img width="1073" alt="Screenshot 2019-10-17 at 02.43.31" src="img/reviews/Screenshot 2019-10-17 at 02.43.31.png">
Making a review involves 2 students who are goning to review each other's exercise.
Each user has to :
- **check** the code of the other one on Github
- **bet** if it is going to fail or succeed in the Review interface
- **run** his own exercise in the Review interface to give a result to compare with the bet, and state if it was right or wrong
## Usage
To submit an exercise to review and be reviewed, go to the `Review panel` on the right of the quest interface and click on the button to submit it :
<img width="1073" alt="Screenshot 2019-10-17 at 01.59.32" src="img/reviews/Screenshot 2019-10-17 at 01.59.32.png">
Then, when a match with another student who also wants to review is found, you will be notified :
<img width="1073" alt="Screenshot 2019-10-17 at 02.03.11" src="img/reviews/Screenshot 2019-10-17 at 02.03.11.png">
Once you and the other student have confirmed the match, you can go and check the code of the other student on his repository in the component `Your review` :
<img width="1073" alt="Screenshot 2019-10-17 at 02.05.46" src="img/reviews/Screenshot 2019-10-17 at 02.05.46.png">
When you have checked his code, those 4 steps will have to be completed to achieve the review :
- You have to bet if the exercise of the other student will fail or succeed after running the tester
- The other student has to do the same with your exercise and make his own bet, that you will see on the component `Review of your exercise`
<img width="1073" alt="Screenshot 2019-10-17 at 02.20.18" src="img/reviews/Screenshot 2019-10-17 at 02.20.18.png">
- Once the other student's bet is set, the tester button unblocks and you have to run it on your exercise to output the result determining if your exercise has failed or succeeded ; this result is compared to the other student's bet to determine if it was wrong or right
- The other student also has to run the tester on his exercise to determine his result and so if your bet was wrong or right
<img width="1073" alt="Screenshot 2019-10-17 at 02.22.30" src="img/reviews/Screenshot 2019-10-17 at 02.22.30.png">
In fact, a bet is succeeded if it is equal to the tester output :
<img width="1073" alt="Screenshot 2019-10-17 at 02.24.04" src="img/reviews/Screenshot 2019-10-17 at 02.24.04.png">
You can have those 4 cases :
| bet | tester output | bet result |
| ------- | ------------- | ------------- |
| fail | failed | **succeeded** |
| fail | succeeded | **failed** |
| succeed | succeeded | **succeeded** |
| succeed | failed | **failed** |

9
docs/server-requirements.md

@ -0,0 +1,9 @@
# Server requirements
**Linux compatible only**
| Component | Recommended specifications |
| --------- | --------------------------------- |
| Processor | 16 threads x86-64 (64 bits) |
| Memory | 64 GB ECC DDR4 2133 Mhz frequency |
| Disk | 500 GB SSD NVMe |

6
scripts/bash_tweaks.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Configure Terminal
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
# Makes bash case-insensitive

6
scripts/clean.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Clean system
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
# Purge useless packages

32
scripts/exam.sh

@ -0,0 +1,32 @@
#!/usr/bin/env bash
# Install Exam app
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
wget https://github.com/01-edu/public/releases/download/exam/exam.1.0.0.AppImage -O /usr/local/bin/exam.1.0.0.AppImage
chmod +x /usr/local/bin/exam.1.0.0.AppImage
cat <<EOF> /home/student/.local/share/applications/appimagekit-exam.desktop
[Desktop Entry]
Name=exam
Comment=the exam client
Exec="/usr/local/bin/exam.1.0.0.AppImage" %U
Terminal=false
Type=Application
Icon=appimagekit-exam
StartupWMClass=exam
X-AppImage-Version=1.0.0
MimeType=x-scheme-handler/exam;
Categories=Utility;
X-AppImage-BuildId=1RHp8aPhkSgD1PXGL1NW5QDsbFF
X-Desktop-File-Install-Version=0.23
X-AppImage-Comment=Generated by /tmp/.mount_exam.1PqfsDP/AppRun
TryExec=/usr/local/bin/exam.1.0.0.AppImage
EOF
chown student:student /home/student/.local/share/applications/appimagekit-exam.desktop
sudo -iu student xdg-mime default appimagekit-exam.desktop x-scheme-handler/exam
sudo -iu student go get github.com/01-edu/z01

8
scripts/firewall.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install firewall
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
SSH_PORT=${1:-521}
@ -12,4 +12,6 @@ apt-get -y install ufw
ufw logging off
ufw allow in "$SSH_PORT"/tcp
ufw allow in 27960:27969/tcp
ufw allow in 27960:27969/udp
ufw --force enable

6
scripts/fx.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install FX: command-line JSON processing tool (https://github.com/antonmedv/fx)
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
npm install -g fx

6
scripts/go.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install Go
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
apt-get -y install golang

6
scripts/grub.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install Grub
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
DISK=$1

9
scripts/install_client.sh

@ -1,12 +1,12 @@
#!/bin/bash
#!/usr/bin/env bash
# Configure Z01 client
# Log stdout & stderr
exec > >(tee -i /tmp/install_client.log) 2>&1
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
SSH_PORT=521
@ -48,6 +48,7 @@ apt-get -yf install
. sublime.sh
. vscode.sh
. libreoffice.sh
. exam.sh
# Install additional packages
PKGS="
@ -99,7 +100,7 @@ cd /tmp/system
cp --preserve=mode -RT . /
cd $SCRIPT_DIR
cd $script_dir
rm -rf /tmp/system
apt-get -y install overlayroot

6
scripts/libreoffice.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install VSCode
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
apt-get -y install libreoffice

6
scripts/nodejs.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install Node.js
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
curl -sL https://deb.nodesource.com/setup_12.x | bash -

2
scripts/set.sh

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Set scripting variables

6
scripts/ssh.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install OpenSSH
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
SSH_PORT=${1:-521}

6
scripts/sublime.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Install Sublime Text & Sublime Merge
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | apt-key add -

4
scripts/system/etc/gdm3/PostLogin/Default

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Mount home as an overlay filesystem
@ -46,3 +46,5 @@ temp_path=/mnt/.01/tmp
mkdir -p "$user_path" "$temp_path"
chown -R "$USER":"$USER" "$user_path" "$temp_path"
mount -t overlay -o lowerdir="$HOME",upperdir="$user_path",workdir="$temp_path" overlay "$HOME"
mkdir -p "$HOME"/.cache
mount -t tmpfs -o size=2G tmpfs "$HOME"/.cache

6
scripts/system/etc/gdm3/PostSession/Default

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Log stdout & stderr
exec > >(tee -i /tmp/gdm3_postsession.log) 2>&1
@ -21,6 +21,6 @@ systemctl stop user@1000.service
# Make sure the mountpoints are free
kill $(lsof -t "$HOME" /mnt) $(ps --no-headers -u "$USER" -o pid)
umount "$HOME" /mnt
umount "$HOME"/.cache "$HOME" /mnt
umount /dev/disk/by-partlabel/01-home ||:
wipefs -a /dev/disk/by-partlabel/01-tmp-home
/usr/sbin/wipefs -a /dev/disk/by-partlabel/01-tmp-home

2
scripts/system/usr/local/bin/lock_screen

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Exits if a command fails
set -e

2
scripts/system/usr/local/bin/suspend_session

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Exits if a command fails
set -e

6
scripts/ubuntu_tweaks.sh

@ -1,9 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# Configure ubuntu desktop systems
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd "$SCRIPT_DIR"
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd "$script_dir"
. set.sh
# Install dependencies

13
scripts/vscode.sh

@ -1,21 +1,16 @@
#!/bin/bash
#!/usr/bin/env bash
# Install VSCode
SCRIPT_DIR="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $SCRIPT_DIR
script_dir="$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)"
cd $script_dir
. set.sh
wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | apt-key add -
echo 'deb https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/repos/debs/ vscodium main' > /etc/apt/sources.list.d/vscodium.list
apt-get update && apt-get -y install codium
cat <<EOF> /usr/local/bin/code
#!/usr/bin/env bash
/usr/share/codium/codium &>/dev/null &
EOF
chmod +x /usr/local/bin/code
ln -s /usr/bin/codium /usr/local/bin/code
# Set-up all users
for DIR in $(ls -1d /home/* 2>/dev/null || true)

4
subjects/addprimesum.en.md

@ -2,9 +2,9 @@
### Instructions
Write a program that takes a positive integer as argument and displays the sum of all prime numbers inferior or equal to it followed by a newline(`'\n`').
Write a program that takes a positive integer as argument and displays the sum of all prime numbers inferior or equal to it followed by a newline (`'\n'`).
- If the number of arguments is different from 1, or if the argument is not a positive number, the program displays `0` followed by a newline.
- If the number of arguments is different from 1, or if the argument is not a positive number, the program displays `0` followed by a newline.
### Usage

4
subjects/addprimesum.fr.md

@ -2,9 +2,9 @@
### Instructions
Écrire un programme qui prend un entier positif comme argument et qui affiche la somme de tous les nombres premiers inférieurs ou égaux à celui-ci, suivie d'un newline(`'\n`').
Écrire un programme qui prend un entier positif comme argument et qui affiche la somme de tous les nombres premiers inférieurs ou égaux à celui-ci, suivie d'un retour à la ligne (`'\n'`).
- Si le nombre d'arguments est différent de 1, ou si l'argument n'est pas un nombre positif, le programme affiche `0` suivi d'un newline.
- Si le nombre d'arguments est différent de 1, ou si l'argument n'est pas un nombre positif, le programme affiche `0` suivi d'un retour à la ligne.
### Utilisation

1
subjects/advancedsortwordarr.en.md

@ -8,6 +8,7 @@ Write a function `AdvancedSortWordArr` that sorts a `string` array, based on the
```go
func AdvancedSortWordArr(array []string, f func(a, b string) int) {
}
```

1
subjects/advancedsortwordarr.fr.md

@ -8,6 +8,7 @@
```go
func AdvancedSortWordArr(array []string, f func(a, b string) int) {
}
```

18
subjects/alphamirror.en.md

@ -2,28 +2,26 @@
### Instructions
Write a program called `alphamirror` that takes a `string` as argument and displays this `string`
after replacing each alphabetical character with the opposite alphabetical
character.
Write a program called `alphamirror` that takes a `string` as argument and displays this `string` after replacing each alphabetical character with the opposite alphabetical character.
The case of the letter stays the same, for example :
'a' becomes 'z', 'Z' becomes 'A'
'd' becomes 'w', 'M' becomes 'N'
The final result will be followed by a newline(`'\n'`).
The final result will be followed by a newline (`'\n'`).
If the number of arguments is different from 1, the program displays only a newline(`'\n'`).
If the number of arguments is different from 1, the program displays only a newline (`'\n'`).
### Usage
```console
student@ubuntu:~/student/alphamirror$ go build
student@ubuntu:~/student/alphamirror$ ./alphamirror "abc"
student@ubuntu:~/piscine-go/alphamirror$ go build
student@ubuntu:~/piscine-go/alphamirror$ ./alphamirror "abc"
zyx
student@ubuntu:~/student/alphamirror$ ./alphamirror "My horse is Amazing." | cat -e
student@ubuntu:~/piscine-go/alphamirror$ ./alphamirror "My horse is Amazing." | cat -e
Nb slihv rh Znzarmt.$
student@ubuntu:~/student/alphamirror$ ./alphamirror | cat -e
student@ubuntu:~/piscine-go/alphamirror$ ./alphamirror | cat -e
$
student@ubuntu:~/student/alphamirror$
student@ubuntu:~/piscine-go/alphamirror$
```

16
subjects/alphamirror.fr.md

@ -2,26 +2,26 @@
### Instructions
Écrire un programme nommé `alphamirror` qui prend une `string` come argument et qui affiche cette `string` après remplacement de chaque caractère alphabétique avec son opposé.
Écrire un programme nommé `alphamirror` qui prend une `string` comme argument et qui affiche cette `string` après remplacement de chaque caractère alphabétique avec son opposé.
Les majuscules restent des majuscules, de même pour le minuscules, par exemple :
'a' devient 'z', 'Z' devient 'A'
'd' devient 'w', 'M' devient 'N'
Le résultat final sera suivi d'un newline(`'\n'`).
Le résultat final sera suivi d'un retour à la ligne (`'\n'`).
Si le nombre d'arguments est différent de 1, le programme affiche seulement un newline(`'\n'`).
Si le nombre d'arguments est différent de 1, le programme affiche seulement un retour à la ligne (`'\n'`).
### Utilisation
```console
student@ubuntu:~/student/alphamirror$ go build
student@ubuntu:~/student/alphamirror$ ./alphamirror "abc"
student@ubuntu:~/piscine-go/alphamirror$ go build
student@ubuntu:~/piscine-go/alphamirror$ ./alphamirror "abc"
zyx
student@ubuntu:~/student/alphamirror$ ./alphamirror "My horse is Amazing." | cat -e
student@ubuntu:~/piscine-go/alphamirror$ ./alphamirror "My horse is Amazing." | cat -e
Nb slihv rh Znzarmt.$
student@ubuntu:~/student/alphamirror$ ./alphamirror | cat -e
student@ubuntu:~/piscine-go/alphamirror$ ./alphamirror | cat -e
$
student@ubuntu:~/student/alphamirror$
student@ubuntu:~/piscine-go/alphamirror$
```

5
subjects/any.en.md

@ -2,14 +2,15 @@
### Instructions
Write a function `Any` that returns `true`, for a `string` array:
Write a function `Any` that returns `true`, for a `string` array :
- if, when that `string` array is passed through an `f` function, at least one element returns `true`.
- if, when that `string` array is passed through an `f` function, at least one element returns `true`.
### Expected function
```go
func Any(f func(string) bool, arr []string) bool {
}
```

5
subjects/any.fr.md

@ -2,14 +2,15 @@
### Instructions
Écrire une fonction `Any` qui retournes `true`, pour un tableau de `string`:
Écrire une fonction `Any` qui retourne `true`, pour un tableau de `string` :
- si, lorsque ce tableau de `string` est passé à travers une fonction `f`, au moins un element retournes `true`.
- si, lorsque ce tableau de `string` est passé à travers une fonction `f`, au moins un element retourne `true`.
### Fonction attendue
```go
func Any(f func(string) bool, arr []string) bool {
}
```

3
subjects/appendrange.en.md

@ -2,8 +2,7 @@
### Instructions
Write a function that takes an `int` min and an `int` max as parameters.
That function returns a slice of `int` with all the values between min and max.
Write a function that takes an `int` min and an `int` max as parameters. That function returns a slice of `int` with all the values between min and max.
Min is included, and max is excluded.

2
subjects/appendrange.fr.md

@ -2,7 +2,7 @@
### Instructions
Écrire une fonction qui prend un `int` minimum et un `int` maximum comme paramètres. Cette fonction retournes une slice d'`int` avec toutes les valeurs comprises entre le minimum et le maximum.
Écrire une fonction qui prend un `int` minimum et un `int` maximum comme paramètres. Cette fonction retourne une slice d'`int` avec toutes les valeurs comprises entre le minimum et le maximum.
Le minimum est inclus, le maximum est exclu.

8
subjects/atoi.en.md

@ -2,13 +2,13 @@
### Instructions
- Write a [function](TODO-LINK) that simulates the behaviour of the `Atoi` function in Go. `Atoi` transforms a number represented as a `string` in a number represented as an `int`.
- Write a [function](TODO-LINK) that simulates the behaviour of the `Atoi` function in Go. `Atoi` transforms a number represented as a `string` in a number represented as an `int`.
- `Atoi` returns `0` if the `string` is not considered as a valid number. For this exercise **non-valid `string` chains will be tested**. Some will contain non-digits characters.
- `Atoi` returns `0` if the `string` is not considered as a valid number. For this exercise **non-valid `string` chains will be tested**. Some will contain non-digits characters.
- For this exercise the handling of the signs + or - **does have** to be taken into account.
- For this exercise the handling of the signs + or - **does have** to be taken into account.
- This function will **only** have to return the `int` `nbr`. For this exercise the `error` return of atoi is not required.
- This function will **only** have to return the `int`. For this exercise the `error` result of atoi is not required.
### Expected function

8
subjects/atoi.fr.md

@ -2,13 +2,13 @@
### Instructions
- Écrire une fonction qui reproduit le comportement de la fonction `Atoi` en Go. `Atoi` transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier).
- Écrire une fonction qui reproduit le comportement de la fonction `Atoi` en Go. `Atoi` transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier).
- `Atoi` retourne `0` si la `string` n'est pas considéré un nombre valide. Pour cet exercice des **`string` non valides seront testées!**. Certaines contiendront d'autres caractères que des chiffres.
- `Atoi` retourne `0` si la `string` n'est pas considéré un nombre valide. Pour cet exercice des **`string` non valides seront testées!**. Certaines contiendront d'autres caractères que des chiffres.
- Pour cet exercice la gestion des signes + ou - **doit être** prise en compte.
- Pour cet exercice la gestion des signes + ou - **doit être** prise en compte.
- Cette fonction aura **seulement** à retourner l'`int` (entier) `nbr`. Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé.
- Cette fonction aura **seulement** à retourner l'`int` (entier). Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé.
### Fonction attendue

6
subjects/atoibase.en.md

@ -8,9 +8,9 @@ If the base or the `string` number is not valid it returns `0`:
Validity rules for a base :
- A base must contain at least 2 characters.
- Each character of a base must be unique.
- A base should not contain `+` or `-` characters.
- A base must contain at least 2 characters.
- Each character of a base must be unique.
- A base should not contain `+` or `-` characters.
Only valid `string` numbers will be tested.

6
subjects/atoibase.fr.md

@ -8,9 +8,9 @@ Si la base n'est pas valide elle retourne `0`:
Règles de validité d'une base :
- Une base doit contenir au moins 2 caractères.
- Chaque caractère d'une base doit être unique.
- Une base ne doit pas contenir les caractères `+` ou `-`.
- Une base doit contenir au moins 2 caractères.
- Chaque caractère d'une base doit être unique.
- Une base ne doit pas contenir les caractères `+` ou `-`.
Seuls des nombres en `string` valides seront testés.

38
subjects/atoibaseprog.en.md

@ -0,0 +1,38 @@
## atoibaseprog
### Instructions
Write a program that takes a `string` number and its `string` base as arguments and prints its conversion as an `int`.
- If the base or the `string` number is not valid it returns `0`.
- If the number of arguments is bigger or lower that two it should print a newline ("`\n`").
Validity rules for a base :
- A base must contain at least 2 characters.
- Each character of a base must be unique.
- A base should not contain `+` or `-` characters.
Only valid `string` numbers will be tested.
The program **does not have** to manage negative numbers.
### Expected output :
```console
student@ubuntu:~/atoibaseprog$ go build
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 125 0123456789
125
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 1111101 01
125
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 7D 0123456789ABCDEF
125
student@ubuntu:~/atoibaseprog$ ./atoibaseprog uoi choumi | cat -e
125$
student@ubuntu:~/atoibaseprog$ ./atoibaseprog bbbbbab -ab | cat -e
0$
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 1111101
student@ubuntu:~/atoibaseprog$
```

38
subjects/atoibaseprog.fr.md

@ -0,0 +1,38 @@
## atoibaseprog
### Instructions
Écrire un programme qui prend un nombre `string` et sa base `string` en paramètres et retourne sa conversion en `int`.
- Si la base ou le nombre `string` n'est pas valide le programme retourne `0`:
- Si le nombre d'argument est différent de deux alors le programme affiche un newline ("`\n`").
Règles de validité d'une base :
- Une base doit contenir au moins 2 caractères.
- Chaque caractère d'une base doit être unique.
- Une base ne doit pas contenir les caractères `+` ou `-`.
Seuls des nombres en `string` valides seront testés.
La fonction **ne doit pas** gérer les nombres négatifs.
### Expected output :
```console
student@ubuntu:~/atoibaseprog$ go build
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 125 0123456789
125
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 1111101 01
125
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 7D 0123456789ABCDEF
125
student@ubuntu:~/atoibaseprog$ ./atoibaseprog uoi choumi | cat -e
125$
student@ubuntu:~/atoibaseprog$ ./atoibaseprog bbbbbab -ab | cat -e
0$
student@ubuntu:~/atoibaseprog$ ./atoibaseprog 1111101
student@ubuntu:~/atoibaseprog$
```

8
subjects/basicatoi.en.md

@ -2,13 +2,13 @@
### Instructions
- Write a function that simulates the behaviour of the atoi function in Go. Atoi transforms a number defined as a `string` in a number defined as an `int`.
- Write a function that simulates the behaviour of the atoi function in Go. Atoi transforms a number defined as a `string` in a number defined as an `int`.
- Atoi returns `0` if the `string` is not considered as a valid number. For this exercise **only valid** `string` chains will be tested. They will only contain one or several digits as characters.
- Atoi returns `0` if the `string` is not considered as a valid number. For this exercise **only valid** `string` chains will be tested. They will only contain one or several digits as characters.
- For this exercise the handling of the signs + or - does not have to be taken into account.
- For this exercise the handling of the signs `+` or `-` does not have to be taken into account.
- This function will **only** have to return the `int` `nbr`. For this exercise the `error` return of atoi is not required.
- This function will **only** have to return the `int`. For this exercise the `error` return of atoi is not required.
### Expected function

8
subjects/basicatoi.fr.md

@ -2,13 +2,13 @@
### Instructions
- Écrire une fonction qui reproduit le comportement de la fonction atoi en Go. Atoi transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier).
- Écrire une fonction qui reproduit le comportement de la fonction atoi en Go. Atoi transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier).
- Atoi retourne `0` si la `string` n'est pas considéré un nombre valide. Pour cet exercice **seulement des** `string` **valides** seront testé. Elles ne contiendront que un ou plusieurs chiffres comme charact.
- Atoi retourne `0` si la `string` n'est pas considéré un nombre valide. Pour cet exercice **seulement des** `string` **valides** seront testé. Elles ne contiendront que un ou plusieurs chiffres comme charact.
- Pour cet exercice la gestion des signes + ou - ne doit pas être prise en compte.
- Pour cet exercice la gestion des signes `+` ou `-` ne doit pas être prise en compte.
- Cette fonction aura **seulement** à retourner l'`int` (entier) `nbr`. Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé.
- Cette fonction aura **seulement** à retourner l'`int` (entier). Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé.
### Fonction attendue

10
subjects/basicatoi2.en.md

@ -2,15 +2,15 @@
### Instructions
- Write a function that simulates the behaviour of the atoi function in Go. Atoi transforms a number defined as a `string` in a number defined as an `int`.
- Write a function that simulates the behaviour of the atoi function in Go. Atoi transforms a number defined as a `string` in a number defined as an `int`.
- Atoi returns `0` if the `string` is not considered as a valid number. For this exercise **non-valid `string` chains will be tested**. Some will contain non-digits characters.
- Atoi returns `0` if the `string` is not considered as a valid number. For this exercise **non-valid `string` chains will be tested**. Some will contain non-digits characters.
- For this exercise the handling of the signs + or - does not have to be taken into account.
- For this exercise the handling of the signs `+` or `-` does not have to be taken into account.
- This function will **only** have to return the `int` `nbr`. For this exercise the `error` return of atoi is not required.
- This function will **only** have to return the `int`. For this exercise the `error` return of atoi is not required.
### Expected Function
### Expected function
```go
func BasicAtoi2(s string) int {

8
subjects/basicatoi2.fr.md

@ -2,13 +2,13 @@
### Instructions
- Écrire une fonction qui reproduit le comportement de la fonction atoi en Go. Atoi transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier).
- Écrire une fonction qui reproduit le comportement de la fonction atoi en Go. Atoi transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier).
- Atoi retourne `0` si la `string` n'est pas considérée comme un nombre valide. Pour cet exercice des **`string` non valides seront testées!**. Certaines contiendront d'autres caractères que des chiffres.
- Atoi retourne `0` si la `string` n'est pas considérée comme un nombre valide. Pour cet exercice des **`string` non valides seront testées!**. Certaines contiendront d'autres caractères que des chiffres.
- Pour cet exercice la gestion des signes + ou - ne doit pas être prise en compte.
- Pour cet exercice la gestion des signes `+` ou `-` ne doit pas être prise en compte.
- Cette fonction aura **seulement** à retourner l'`int` (entier) `nbr`. Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé.
- Cette fonction aura **seulement** à retourner l'`int` (entier). Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé.
### Fonction attendue

14
subjects/boolean.en.md

@ -4,11 +4,11 @@
Create a `.go` file.
- The code below has to be copied in that file.
- The code below has to be copied in that file.
- The necessary changes have to be applied so that the program works.
- The necessary changes have to be applied so that the program works.
- The program must be submitted inside a folder with the name `boolean`.
- The program must be submitted inside a folder with the name `boolean`.
### Code to be copied
@ -39,12 +39,12 @@ func main() {
}
```
### Expected output
### Usage
```console
student@ubuntu:~/student/boolean$ go build
student@ubuntu:~/student/boolean$ ./boolean "not" "odd"
student@ubuntu:~/piscine-go/boolean$ go build
student@ubuntu:~/piscine-go/boolean$ ./boolean "not" "odd"
I have an even number of arguments
student@ubuntu:~/student/boolean$ ./boolean "not even"
student@ubuntu:~/piscine-go/boolean$ ./boolean "not even"
I have an odd number of arguments
```

14
subjects/boolean.fr.md

@ -4,11 +4,11 @@
Créer un fichier `.go`.
- Le code ci-dessous doit être copié dans ce fichier.
- Le code ci-dessous doit être copié dans ce fichier.
- Les changements nécéssaires doivent être appliquer pour que le programme fonctionne.
- Les changements nécéssaires doivent être appliqués pour que le programme fonctionne.
- Le programme doit être rendu dans un dossier nommé `boolean`.
- Le programme doit être rendu dans un dossier nommé `boolean`.
### Code à copier
@ -39,12 +39,12 @@ func main() {
}
```
### Usage
### Utilisation
```console
student@ubuntu:~/student/boolean$ go build
student@ubuntu:~/student/boolean$ ./boolean "not" "odd"
student@ubuntu:~/piscine-go/boolean$ go build
student@ubuntu:~/piscine-go/boolean$ ./boolean "not" "odd"
I have an even number of arguments
student@ubuntu:~/student/boolean$ ./boolean "not even"
student@ubuntu:~/piscine-go/boolean$ ./boolean "not even"
I have an odd number of arguments
```

24
subjects/brackets.en.md

@ -2,32 +2,26 @@
### Instructions
Write a program that takes an undefined number of `strings` in arguments. For each
argument, if the expression is correctly bracketed, the program prints on the standard output `OK` followed by a newline(`'\n'`), otherwise it prints "Error" followed by
a newline.
Write a program that takes an undefined number of `string` in arguments. For each argument, if the expression is correctly bracketed, the program prints on the standard output `OK` followed by a newline (`'\n'`), otherwise it prints `Error` followed by a newline.
Symbols considered as `brackets` are parentheses `(` and `)`, square brackets `[`
and `]` and curly braces `{` and `}`. Every other symbols are simply ignored.
Symbols considered as brackets are parentheses `(` and `)`, square brackets `[` and `]` and curly braces `{` and `}`. Every other symbols are simply ignored.
An opening bracket must always be closed by the good closing bracket in the
correct order. A `string` which does not contain any bracket is considered as a
correctly bracketed `string`.
An opening bracket must always be closed by the good closing bracket in the correct order. A `string` which does not contain any bracket is considered as a correctly bracketed `string`.
If there is no argument, the program must print only a newline.
### Usage
```console
student@ubuntu:~/student/brackets$ go build
student@ubuntu:~/student/brackets$ ./brackets '(johndoe)' | cat -e
student@ubuntu:~/piscine-go/brackets$ go build
student@ubuntu:~/piscine-go/brackets$ ./brackets '(johndoe)' | cat -e
OK$
student@ubuntu:~/student/brackets$ ./brackets '([)]' | cat -e
student@ubuntu:~/piscine-go/brackets$ ./brackets '([)]' | cat -e
Error$
student@ubuntu:~/student/brackets$ ./brackets '' '{[(0 + 0)(1 + 1)](3*(-1)){()}}' | cat -e
student@ubuntu:~/piscine-go/brackets$ ./brackets '' '{[(0 + 0)(1 + 1)](3*(-1)){()}}' | cat -e
OK$
OK$
student@ubuntu:~/student/brackets$ ./brackets | cat -e
student@ubuntu:~/piscine-go/brackets$ ./brackets | cat -e
$
student@ubuntu:~/student/brackets$
student@ubuntu:~/piscine-go/brackets$
```

21
subjects/brackets.fr.md

@ -2,29 +2,26 @@
### Instructions
Écrire un programme qui prend un nombre indéfini de `strings` en arguments. Pour chaque
argument, si l'expression est correctement "entre parenthèses" (bracketed), le programme affiche sur la sortie standard `OK` suivi d'un newline(`'\n'`), autrement il affiche `Error` suivi d'un newline.
Écrire un programme qui prend un nombre indéfini de `string` en arguments. Pour chaque argument, si l'expression est correctement "entre parenthèses" (bracketed), le programme affiche sur la sortie standard `OK` suivi d'un retour à la ligne (`'\n'`), autrement il affiche `Error` suivi d'un retour à la ligne.
Les symboles considérés comme des `parenthèses` sont les parenthèses `(` et `)`, les crochets `[`
et `]` et les accolades `{` et `}`. Tout autre symbole est simplement ignoré.
Les symboles considérés comme des parenthèses sont `(` et `)`, les crochets `[` et `]` et les accolades `{` et `}`. Tout autre symbole est simplement ignoré.
Une parenthèse ouvrante doit toujours être fermée par la parenthèse correspondante dans l'ordre correct. Une `string` qui ne contient aucune parenthèse est considérée comme une `string` correctement "entre parenthèses".
Si il n'y a pas d'argument, le programme affiche seulement un newline.
Si il n'y a pas d'argument, le programme affiche seulement un retour à la ligne.
### Utilisation
```console
student@ubuntu:~/student/brackets$ go build
student@ubuntu:~/student/brackets$ ./brackets '(johndoe)' | cat -e
student@ubuntu:~/piscine-go/brackets$ go build
student@ubuntu:~/piscine-go/brackets$ ./brackets '(johndoe)' | cat -e
OK$
student@ubuntu:~/student/brackets$ ./brackets '([)]' | cat -e
student@ubuntu:~/piscine-go/brackets$ ./brackets '([)]' | cat -e
Error$
student@ubuntu:~/student/brackets$ ./brackets '' '{[(0 + 0)(1 + 1)](3*(-1)){()}}' | cat -e
student@ubuntu:~/piscine-go/brackets$ ./brackets '' '{[(0 + 0)(1 + 1)](3*(-1)){()}}' | cat -e
OK$
OK$
student@ubuntu:~/student/brackets$ ./brackets | cat -e
student@ubuntu:~/piscine-go/brackets$ ./brackets | cat -e
$
student@ubuntu:~/student/brackets$
student@ubuntu:~/piscine-go/brackets$
```

30
subjects/brainfuck.en.md

@ -5,33 +5,31 @@
Write a `Brainfuck` interpreter program.
The source code will be given as first parameter.
The code will always be valid, with less than 4096 operations.
`Brainfuck` is a minimalist language. It consists of an array of bytes
(in this exercice 2048 bytes) all initialized with zero,
and with a pointer to its first byte.
`Brainfuck` is a minimalist language. It consists of an array of bytes (in this exercice 2048 bytes) all initialized with zero, and with a pointer to its first byte.
Every operator consists of a single character :
- '>' increment the pointer ;
- '<' decrement the pointer ;
- '+' increment the pointed byte ;
- '-' decrement the pointed byte ;
- '.' print the pointed byte on standard output ;
- '[' go to the matching ']' if the pointed byte is 0 (loop start) ;
- ']' go to the matching '[' if the pointed byte is not 0 (loop end).
- '>' increment the pointer
- '<' decrement the pointer
- '+' increment the pointed byte
- '-' decrement the pointed byte
- '.' print the pointed byte on standard output
- '[' go to the matching ']' if the pointed byte is 0 (loop start)
- ']' go to the matching '[' if the pointed byte is not 0 (loop end)
Any other character is a comment.
### Usage
```console
student@ubuntu:~/student/brainfuck$ go build
student@ubuntu:~/student/brainfuck$ ./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e
student@ubuntu:~/piscine-go/brainfuck$ go build
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e
Hello World!$
student@ubuntu:~/student/brainfuck$ ./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e
Hi$
student@ubuntu:~/student/brainfuck$ ./brainfuck "++++++++++[>++++++++++>++++++++++>++++++++++<<<-]>---.>--.>-.>++++++++++." | cat -e
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck "++++++++++[>++++++++++>++++++++++>++++++++++<<<-]>---.>--.>-.>++++++++++." | cat -e
abc$
student@ubuntu:~/student/brainfuck$ ./brainfuck | cat -e
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck | cat -e
$
student@ubuntu:~/student/brainfuck$
student@ubuntu:~/piscine-go/brainfuck$
```

32
subjects/brainfuck.fr.md

@ -4,34 +4,32 @@
Écrire un program interpréteur du `Brainfuck`.
Le code source sera donné en premier paramètre.
Le code sera toujours valide, avec moins de 4096 operations.
Le `Brainfuck` est un langage minimaliste. Il consiste en un slice de bytes (octet)
(dans cet exercise 2048 bytes) tous initialisés à zéro,
et avec un pointeur sur le premier byte.
Le code sera toujours valide, avec moins de 4096 opérations.
Le `Brainfuck` est un langage minimaliste. Il consiste en un slice de `byte` (octets) (dans cet exercise 2048 octets) tous initialisés à zéro, et avec un pointeur sur le premier octet.
Chaque opérateur consiste en un seul caractère :
- '>' incrémente le pointeur ;
- '<' décrémente le pointeur ;
- '+' incrémente le byte pointé ;
- '-' décrémente le byte pointé ;
- '.' affiche le byte pointé sur la sortie standard ;
- '[' se rend à son ']' correspondant si le byte pointé est 0 (début de la boucle) ;
- ']' se rend à son '[' correspondant si le byte pointé n'est pas 0 (fin de la boucle).
- '>' incrémente le pointeur
- '<' décrémente le pointeur
- '+' incrémente le byte pointé
- '-' décrémente le byte pointé
- '.' affiche le byte pointé sur la sortie standard
- '[' se rend à son ']' correspondant si le byte pointé est 0 (début de la boucle)
- ']' se rend à son '[' correspondant si le byte pointé n'est pas 0 (fin de la boucle)
Tout autre caractère est un commentaire.
### Utilisation
```console
student@ubuntu:~/student/brainfuck$ go build
student@ubuntu:~/student/brainfuck$ ./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e
student@ubuntu:~/piscine-go/brainfuck$ go build
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e
Hello World!$
student@ubuntu:~/student/brainfuck$ ./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e
Hi$
student@ubuntu:~/student/brainfuck$ ./brainfuck "++++++++++[>++++++++++>++++++++++>++++++++++<<<-]>---.>--.>-.>++++++++++." | cat -e
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck "++++++++++[>++++++++++>++++++++++>++++++++++<<<-]>---.>--.>-.>++++++++++." | cat -e
abc$
student@ubuntu:~/student/brainfuck$ ./brainfuck | cat -e
student@ubuntu:~/piscine-go/brainfuck$ ./brainfuck | cat -e
$
student@ubuntu:~/student/brainfuck$
student@ubuntu:~/piscine-go/brainfuck$
```

6
subjects/btreeapplybylevel.en.md

@ -36,11 +36,11 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
4
1
7
5
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreeapplybylevel.fr.md

@ -36,11 +36,11 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
4
1
7
5
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

3
subjects/btreeapplyinorder.en.md

@ -2,8 +2,7 @@
### Instructions
Write a function that applies a function in order to each element in the tree.
(see `in order tree walks`)
Write a function that applies a function in order to each element in the tree (see "in order tree walks").
### Expected function

3
subjects/btreeapplyinorder.fr.md

@ -2,8 +2,7 @@
### Instructions
Écrire une fonction qui applique une fonction en ordre (in order) a chaque élément de l'arbre.
(voir les `in order tree walks`)
Écrire une fonction qui applique une fonction en ordre (in order) à chaque élément de l'arbre (voir les "in order tree walks").
### Fonction attendue

2
subjects/btreeapplypostorder.fr.md

@ -2,7 +2,7 @@
### Instructions
Écrire une fonction qui applique une fonction en post-ordre (`postorder walk`) à chaque élément de l'arbre.
Écrire une fonction qui applique une fonction en post-ordre ("postorder walk") à chaque élément de l'arbre.
### Fonction attendue

2
subjects/btreeapplypreorder.fr.md

@ -2,7 +2,7 @@
### Instructions
Écrire une fonction qui applique une fonction en pré-ordre (`preorder walk`) a chaque élément de l'arbre.
Écrire une fonction qui applique une fonction en pré-ordre ("preorder walk") à chaque élément de l'arbre.
### Fonction attendue

7
subjects/btreedeletenode.en.md

@ -12,7 +12,6 @@ The resulting tree should still follow the binary search tree rules.
func BTreeDeleteNode(root, node *TreeNode) *TreeNode {
}
```
### Usage
@ -44,8 +43,8 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
Before delete:
1
4
@ -55,5 +54,5 @@ After delete:
1
5
7
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

7
subjects/btreedeletenode.fr.md

@ -12,7 +12,6 @@ L'arbre en résultant devra toujours suivre les règles des arbres de recherche
func BTreeDeleteNode(root, node *TreeNode) *TreeNode {
}
```
### Utilisation
@ -44,8 +43,8 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
Before delete:
1
4
@ -55,5 +54,5 @@ After delete:
1
5
7
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreeinsertdata.en.md

@ -2,9 +2,9 @@
### Instructions
Write a function that inserts new data in a binary search tree
following the properties of binary search trees.
The nodes must be defined as follows:
Write a function that inserts new data in a binary search tree following the properties of binary search trees.
The nodes must be defined as follows :
### Expected function

5
subjects/btreeinsertdata.fr.md

@ -2,8 +2,9 @@
### Instructions
Écrire une fonction qui insère de la nouvelle data dans un arbre binaire en suivant les propriétés des arbres de recherche binaires.
Les nodes doivent être définies comme ci-dessous:
Écrire une fonction qui insère de la nouvelle donnée dans un arbre binaire en suivant les propriétés des arbres de recherche binaires.
Les nodes doivent être définies comme ci-dessous :
### Fonction attendue

6
subjects/btreeisbinary.en.md

@ -36,8 +36,8 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
true
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreeisbinary.fr.md

@ -36,8 +36,8 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
true
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreelevelcount.en.md

@ -37,8 +37,8 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
3
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreelevelcount.fr.md

@ -37,8 +37,8 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
3
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreemax.en.md

@ -38,8 +38,8 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
7
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreemax.fr.md

@ -38,8 +38,8 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
7
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreemin.en.md

@ -38,8 +38,8 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
1
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreemin.fr.md

@ -38,8 +38,8 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
1
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreetransplant.en.md

@ -39,11 +39,11 @@ func main() {
And its output :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
3
4
5
7
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/btreetransplant.fr.md

@ -39,11 +39,11 @@ func main() {
Et son résultat :
```console
student@ubuntu:~/student/test$ go build
student@ubuntu:~/student/test$ ./test
student@ubuntu:~/piscine-go/test$ go build
student@ubuntu:~/piscine-go/test$ ./test
3
4
5
7
student@ubuntu:~/student/test$
student@ubuntu:~/piscine-go/test$
```

6
subjects/capitalizeprog.en.md

@ -4,11 +4,11 @@
Write a program that capitalizes the first letter of each word **and** lowercases the rest of each word of a `string`.
- A word is a sequence of **alphanumerical** characters.
- A word is a sequence of **alphanumerical** characters.
- If there is more than one argument the program should print `Too many arguments`.
- If there is more than one argument the program should print `Too many arguments`.
- If there is no arguments given the program should print a newline ("`\n`").
- If there is no arguments given the program should print a newline ("`\n`").
### Usage :

6
subjects/capitalizeprog.fr.md

@ -4,11 +4,11 @@
Écrire un programme qui met en majuscule la première lettre de chaque mot et en minuscule les autres lettres du reste du mot d'une `string`.
- Un mot est une suite de caractères **alphanumériques**.
- Un mot est une suite de caractères **alphanumériques**.
- Si il y a plus d'un argument le programme doit afficher `Too many arguments`.
- Si il y a plus d'un argument le programme doit afficher `Too many arguments`.
- Si il n'y a pas d'arguments le programme doit afficher un newline ("`\n`").
- Si il n'y a pas d'arguments le programme doit afficher un retour à la ligne (`'\n'`).
### Utilisation :

23
subjects/cat.en.md

@ -4,34 +4,33 @@
Write a program that has the same behaviour as the system's `cat` command-line.
- The `options` do not have to be handled.
- The `options` do not have to be handled.
- If the program is called without arguments it should take the `input` and print it back.
- If the program is called without arguments it should take the `input` and print it back.
- In the program folder create two files named `quest8.txt` and `quest8T.txt`.
- In the program folder create two files named `quest8.txt` and `quest8T.txt`.
- Copy to the `quest8.txt` file the following sentence :
- Copy to the `quest8.txt` file the following sentence :
`"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing`
- Copy to the `quest8T.txt` file the following sentence :
- Copy to the `quest8T.txt` file the following sentence :
`"Alan Mathison Turing was an English mathematician, computer scientist, logician, cryptanalyst. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer. Turing is widely considered to be the father of theoretical computer science and artificial intelligence."`
- In case of error the program should print the error.
- In case of error the program should print the error.
- The program must be submitted inside a folder named `cat`.
- The program must be submitted inside a folder named `cat`.
```console
student@ubuntu:~/student/cat$ go build
student@ubuntu:~/student/cat$ ./cat
student@ubuntu:~/piscine-go/cat$ go build
student@ubuntu:~/piscine-go/cat$ ./cat
Hello
Hello
student@ubuntu:~/student/cat$ ./cat quest8.txt
student@ubuntu:~/piscine-go/cat$ ./cat quest8.txt
"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing
student@ubuntu:~/student/cat$ ./cat quest8.txt quest8T.txt
student@ubuntu:~/piscine-go/cat$ ./cat quest8.txt quest8T.txt
"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing
"Alan Mathison Turing was an English mathematician, computer scientist, logician, cryptanalyst. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer. Turing is widely considered to be the father of theoretical computer science and artificial intelligence."
```

23
subjects/cat.fr.md

@ -4,36 +4,35 @@
Écrire un programme qui a le même comportement que la ligne de commande `cat`.
- Les `options` ne doivent pas être gérés.
- Les `options` ne doivent pas être gérés.
- Si le programme est éxécuté sans arguments il doit prendre l'`input` et l'afficher.
- Si le programme est éxécuté sans arguments il doit prendre l'`input` et l'afficher.
- Dans le dossier du programme créer deux fichiers nommés `quest8.txt` et `quest8T.txt`.
- Dans le dossier du programme créer deux fichiers nommés `quest8.txt` et `quest8T.txt`.
- Copier dans le fichier `quest8.txt` la phrase suivante :
- Copier dans le fichier `quest8.txt` la phrase suivante :
`"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing`
- Copier dans le fichier `quest8T.txt` la phrase suivante :
- Copier dans le fichier `quest8T.txt` la phrase suivante :
`"Alan Mathison Turing was an English mathematician, computer scientist, logician, cryptanalyst. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer. Turing is widely considered to be the father of theoretical computer science and artificial intelligence."`
- En cas d'erreur le programme doit imprimer l'erreur.
- En cas d'erreur le programme doit imprimer l'erreur.
- L eprogramme doit être rendu dans un dossier nommé `cat`.
- L eprogramme doit être rendu dans un dossier nommé `cat`.
### Utilisation:
```console
student@ubuntu:~/student/cat$ go build
student@ubuntu:~/student/cat$ ./cat
student@ubuntu:~/piscine-go/cat$ go build
student@ubuntu:~/piscine-go/cat$ ./cat
Hello
Hello
student@ubuntu:~/student/cat$ ./cat quest8.txt
student@ubuntu:~/piscine-go/cat$ ./cat quest8.txt
"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing
student@ubuntu:~/student/cat$ ./cat quest8.txt quest8T.txt
student@ubuntu:~/piscine-go/cat$ ./cat quest8.txt quest8T.txt
"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing
"Alan Mathison Turing was an English mathematician, computer scientist, logician, cryptanalyst. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer. Turing is widely considered to be the father of theoretical computer science and artificial intelligence."
```

10
subjects/cl-camp1.en.md

@ -10,11 +10,11 @@ The instincts are coming back...
Put in a file `mastertheLS` the command line that will:
- list the files and folders of the current folder.
- Ignore the hidden files, the "." and the "..".
- Separates the resuls with commas.
- Order them by ascending order of creation date.
- Have the folders have a `/` in front of them.
- list the files and folders of the current folder.
- Ignore the hidden files, the "." and the "..".
- Separates the resuls with commas.
- Order them by ascending order of creation date.
- Have the folders have a `/` in front of them.
### Hint

10
subjects/cl-camp1.fr.md

@ -10,11 +10,11 @@ Les instincts resurgissent...
Mettez dans un fichier `mastertheLS` la ligne de commande qui:
- listera les fichiers et dossiers dans le dossier courant.
- Ignorera les fichiers cachés, le "." et le "..".
- Separarera le resultat avec des virgules.
- Les triera pas ordre croissant de date de création.
- Placera un `/` en face des dossiers.
- listera les fichiers et dossiers dans le dossier courant.
- Ignorera les fichiers cachés, le "." et le "..".
- Separarera le resultat avec des virgules.
- Les triera pas ordre croissant de date de création.
- Placera un `/` en face des dossiers.
### Indice

6
subjects/cl-camp3.en.md

@ -6,9 +6,9 @@
Create a file `look`, which will look for and show, in the current directory and its sub-folders all the files :
- starting with an `a` and,
- all the files ending with a `z` and,
- all files starting with `z` and ending with `a!`.
- starting with an `a` and,
- all the files ending with a `z` and,
- all files starting with `z` and ending with `a!`.
### Hint

6
subjects/cl-camp3.fr.md

@ -6,9 +6,9 @@
Créer un fichier `look`, qui cherchera et montrera, dans le répertoire courant et ses sous-répertoires, tous les fichiers qui:
- commence avec `a` et,
- tous les fichiers qui se terminent avec `z` et,
- tous les fichiers qui commencent avec `z` et qui se finissent avec `a!`.
- commence avec `a` et,
- tous les fichiers qui se terminent avec `z` et,
- tous les fichiers qui commencent avec `z` et qui se finissent avec `a!`.
### Indice

8
subjects/cl-camp4.en.md

@ -6,13 +6,13 @@
Create a file `myfamily.sh`, which will show a subject's family (key: relatives).
- The quotes have to be removed.
- The quotes have to be removed.
- The subject will be decided depending on his ID which will be contained in the environment variable HERO_ID.
- The subject will be decided depending on his ID which will be contained in the environment variable HERO_ID.
* Where to look : https://raw.githubusercontent.com/kigiri/superhero-api/master/api/all.json
* Where to look : https://raw.githubusercontent.com/kigiri/superhero-api/master/api/all.json
* What to use : curl, jq and others...
* What to use : curl, jq and others...
### Usage

8
subjects/cl-camp4.fr.md

@ -6,13 +6,13 @@
Créer un fichier `myfamily.sh`, qui affichera la famille d'un individu (clef: relatives).
- Les guillemets doivent être enlevés.
- Les guillemets doivent être enlevés.
- L'individu sera choisi en fonction de son ID qui sera contenu dans la variable d'environment HERO_ID.
- L'individu sera choisi en fonction de son ID qui sera contenu dans la variable d'environment HERO_ID.
* Où chercher : https://raw.githubusercontent.com/kigiri/superhero-api/master/api/all.json
* Où chercher : https://raw.githubusercontent.com/kigiri/superhero-api/master/api/all.json
* Quoi utiliser : `curl`, `jq` et d'autres...
* Quoi utiliser : `curl`, `jq` et d'autres...
### Utilisation

2
subjects/cl-camp5.en.md

@ -6,7 +6,7 @@
Create a file `lookagain.sh`, which will look for, from the current directory and its sub-folders all the files:
- all the files ending with `.sh`.
- all the files ending with `.sh`.
That command will only show the name of the files without the `.sh`.

2
subjects/cl-camp5.fr.md

@ -6,7 +6,7 @@
Créer un fichier `lookagain.sh`, qui cherchera et montrera, dans le répertoire courant et ses sous-répertoires, tous les fichiers qui:
- qui finissent avec `.sh`.
- qui finissent avec `.sh`.
Cette commande montrera le nom des fichiers sans le`.sh`.

10
subjects/cl.en.md

@ -10,11 +10,11 @@ The instincts are coming back...
Put in a file `mastertheLS` the command line that will:
- list the files and folders of the current folder.
- Ignore the hidden files, the "." and the "..".
- Separates the resuls with commas.
- Order them by ascending order of creation date.
- Have the folders have a `/` in front of them.
- list the files and folders of the current folder.
- Ignore the hidden files, the "." and the "..".
- Separates the resuls with commas.
- Order them by ascending order of creation date.
- Have the folders have a `/` in front of them.
### Hint

10
subjects/cl.fr.md

@ -10,11 +10,11 @@ The instincts are coming back...
Put in a file `mastertheLS` the command line that will:
- list the files and folders of the current folder.
- Ignore the hidden files, the "." and the "..".
- Separates the resuls with commas.
- Order them by ascending order of creation date.
- Have the folders have a `/` in front of them.
- list the files and folders of the current folder.
- Ignore the hidden files, the "." and the "..".
- Separates the resuls with commas.
- Order them by ascending order of creation date.
- Have the folders have a `/` in front of them.
### Hint

2
subjects/collatzcountdown.en.md

@ -4,7 +4,7 @@
Write a function, `CollatzCountdown`, that returns the number of steps necessary to reach 1 using the collatz countdown.
- It must return `-1` if `start` is equal to `0` or negative.
- It must return `-1` if `start` is equal to `0` or negative.
### Expected function

2
subjects/collatzcountdown.fr.md

@ -4,7 +4,7 @@
Écrire une fonction, `CollatzCountdown`, qui retournes le nombre d'étapes nécéssaires pour atteindre 1 en utilisant le comptage de collatz.
- Elle doit renvoyer `-1` si `start` est égal à 0 ou négatif.
- Elle doit renvoyer `-1` si `start` est égal à 0 ou négatif.
### Fonction attendue

6
subjects/comcheck.en.md

@ -2,11 +2,11 @@
### Instructions
Write a program `comcheck` that displays on the standard output `Alert!!!` followed by newline(`'\n'`) if at least one of the arguments passed in parameter matches the `strings`:
Write a program `comcheck` that displays on the standard output `Alert!!!` followed by newline (`'\n'`) if at least one of the arguments passed in parameter matches the `string`:
- `01`, `galaxy` or `galaxy 01`.
- `01`, `galaxy` or `galaxy 01`.
- If none of the parameters match, the program displays a newline(`'\n'`).
- If none of the parameters match, the program displays a newline (`'\n'`).
### Usage

6
subjects/comcheck.fr.md

@ -2,11 +2,11 @@
### Instructions
écrire un programme `comcheck` qui affiche sur la sortie standard `Alert!!!` suivi d'un newline(`'\n'`) si au moins un des arguments passé ne paramètre correspond aux `strings`:
écrire un programme `comcheck` qui affiche sur la sortie standard `Alert!!!` suivi d'un retour à la ligne (`'\n'`) si au moins un des arguments passé ne paramètre correspond aux `string`:
- `01`, `galaxy` ou `galaxy 01`.
- `01`, `galaxy` ou `galaxy 01`.
- si aucun des paramètres correspond, le programme affiche un newline(`'\n'`).
- si aucun des paramètres correspond, le programme affiche un retour à la ligne (`'\n'`).
### Usage

84
subjects/commandments.en.md

@ -16,89 +16,89 @@ A few basic principles to follow
### The Commandements _(read them)_
- Le numérique est ta passion.
- Le numérique est ta passion.
- Ton objectif à 42 : développer ton talent et tes compétences pour le marché du numérique.
- Ton objectif à 42 : développer ton talent et tes compétences pour le marché du numérique.
- L’objectif de 42 pour toi : te faire accéder au marché de l’emploi, à une longue et pérenne carrière dans le numérique, et te faire progresser socialement.
- L’objectif de 42 pour toi : te faire accéder au marché de l’emploi, à une longue et pérenne carrière dans le numérique, et te faire progresser socialement.
- L’ambition de 42 pour toi : être un pionnier du numérique de demain.
- L’ambition de 42 pour toi : être un pionnier du numérique de demain.
- Il est de ta responsabilité de gérer ta progression : 42 te propose un parcours individualisé adapté à ton rythme.
- Il est de ta responsabilité de gérer ta progression : 42 te propose un parcours individualisé adapté à ton rythme.
- Des challenges jalonnent ton parcours. 42 ne fournira aucun élément de solution. C’est ton rôle de chercher et trouver par toi-même ces solutions pour atteindre l’objectif.
- Des challenges jalonnent ton parcours. 42 ne fournira aucun élément de solution. C’est ton rôle de chercher et trouver par toi-même ces solutions pour atteindre l’objectif.
- Sois actif. N’attend pas que les choses se fassent pour toi. 42 est un parcours 100% pratique.
- Sois actif. N’attend pas que les choses se fassent pour toi. 42 est un parcours 100% pratique.
- Sois autonome dans ton cursus. N’attend pas que l’on te dise quoi faire.
- Sois autonome dans ton cursus. N’attend pas que l’on te dise quoi faire.
- Sois collaboratif, autant sur les projets solos que les projets de groupe. Face aux challenges à resoudre, l’échange et le debat sont tes meilleures armes.
- Sois collaboratif, autant sur les projets solos que les projets de groupe. Face aux challenges à resoudre, l’échange et le debat sont tes meilleures armes.
- Ne "crois" pas. Sois sûr. Techniquement, relationnelement, organisationellement, administrativement.
- Ne "crois" pas. Sois sûr. Techniquement, relationnelement, organisationellement, administrativement.
- Pour être sûr, teste, contrôle.
- Pour être sûr, teste, contrôle.
- N’ai pas peur de te tromper, d’échouer. L’échec est une étape normale vers le succès.
- N’ai pas peur de te tromper, d’échouer. L’échec est une étape normale vers le succès.
- Teste à nouveau. Collabore davantage pour tester davantage.
- Teste à nouveau. Collabore davantage pour tester davantage.
- Ose. Le risque est de se tromper. Voir le commandement 12.
- Ose. Le risque est de se tromper. Voir le commandement 12.
- Sois rigoureux dans ton travail.
- Sois rigoureux dans ton travail.
- Sois investi dans ton cursus : 50 heures par semaine est un minimum. Ta capacité de travail est une valeur. L’école est ouverte 24h/24 et 7j/7.
- Sois investi dans ton cursus : 50 heures par semaine est un minimum. Ta capacité de travail est une valeur. L’école est ouverte 24h/24 et 7j/7.
- Sois régulier dans ton travail. Un jour oui, un jour non, un coup nocturne, un coup diurne... le chaos t’empêche d’avancer.
- Sois régulier dans ton travail. Un jour oui, un jour non, un coup nocturne, un coup diurne... le chaos t’empêche d’avancer.
- Prévois un groupe de travail large et hétérogène pour y trouver facilement des idées neuves et des groupes de projet.
- Prévois un groupe de travail large et hétérogène pour y trouver facilement des idées neuves et des groupes de projet.
- Pour tes collaborations et ton travail en groupe, privilégie des étudiants qui n’ont pas déjà la solution au problème.
- Pour tes collaborations et ton travail en groupe, privilégie des étudiants qui n’ont pas déjà la solution au problème.
- Sois investi dans ton groupe de projet, et ne le laisse pas faire ton travail à ta place.
- Sois investi dans ton groupe de projet, et ne le laisse pas faire ton travail à ta place.
- Ton groupe de projet est solidaire, son succès comme son échec est de la responsabilité de tous, et les conflits se règlent en interne.
- Ton groupe de projet est solidaire, son succès comme son échec est de la responsabilité de tous, et les conflits se règlent en interne.
- Travaille à l’école. Faire du peer-learning, collaborer, cela demande d’être physiquement avec les autres. A distance cela ne fonctionne pas.
- Travaille à l’école. Faire du peer-learning, collaborer, cela demande d’être physiquement avec les autres. A distance cela ne fonctionne pas.
- Implique toi dans les évaluations de tes projets. Elles te permettent de prendre du recul.
- Implique toi dans les évaluations de tes projets. Elles te permettent de prendre du recul.
- Implique toi dans tes évaluations des projets des autres. La qualité de la communauté en dépend.
- Implique toi dans tes évaluations des projets des autres. La qualité de la communauté en dépend.
- Sois juste et teste rigoureusement tes projets comme ceux des autres en évaluation avec tes propres jeux de tests.
- Sois juste et teste rigoureusement tes projets comme ceux des autres en évaluation avec tes propres jeux de tests.
- Joue pleinement le jeu de ta scolarité dans l’état d’esprit demandé, fait tous les exercices et projets demandés.
- Joue pleinement le jeu de ta scolarité dans l’état d’esprit demandé, fait tous les exercices et projets demandés.
- Ne cherche pas des biais et des failles dans le système. Tu vas fausser ta propre formation et ta valeur sur le marché.
- Ne cherche pas des biais et des failles dans le système. Tu vas fausser ta propre formation et ta valeur sur le marché.
- Ne triche pas intentionellement. C’est amoral, cela contredit le commandement 12, et c’est du temps inutilement passé à ne pas développer tes compétences pour faire croire aux autres que tu sais coder alors que ce n’est pas le cas.
- Ne triche pas intentionellement. C’est amoral, cela contredit le commandement 12, et c’est du temps inutilement passé à ne pas développer tes compétences pour faire croire aux autres que tu sais coder alors que ce n’est pas le cas.
- Ne rends pas un projet que tu ne serais pas capable de reproduire seul à huis clos. Même si c’est parfois involontaire, c’est aussi de la triche.
- Ne rends pas un projet que tu ne serais pas capable de reproduire seul à huis clos. Même si c’est parfois involontaire, c’est aussi de la triche.
- C’est pas pour tes parents que tu travailles, ni pour le staff. C’est pour toi.
- C’est pas pour tes parents que tu travailles, ni pour le staff. C’est pour toi.
- Participe à la vie de la communauté, à son épanouissement, et sa qualité en sortie de formation.
- Participe à la vie de la communauté, à son épanouissement, et sa qualité en sortie de formation.
- Aide au respect de ces commandements par la communauté.
- Aide au respect de ces commandements par la communauté.
- Sois bienveillant et empathique vis à vis de tes camarades comme des personnes avec qui tu interagis, échanges, débats.
- Sois bienveillant et empathique vis à vis de tes camarades comme des personnes avec qui tu interagis, échanges, débats.
- N’ai pas peur du monde professionnel.
- N’ai pas peur du monde professionnel.
- Respecte le matériel. Des consignes spécifiques sont données en ce sens.
- Respecte le matériel. Des consignes spécifiques sont données en ce sens.
- Respecte les locaux. Des consignes spécifiques sont données en ce sens.
- Respecte les locaux. Des consignes spécifiques sont données en ce sens.
- Respecte les gens, étudiants, staffs, partenaires, visiteurs.
- Respecte les gens, étudiants, staffs, partenaires, visiteurs.
- Respecte la loi en vigueur dans le pays.
- Respecte la loi en vigueur dans le pays.
- Respecte les lois et consignes en vigueur liées à la consommation d’alcool.
- Respecte les lois et consignes en vigueur liées à la consommation d’alcool.
- Respecte les lois et consignes en vigueur liées à la consommation de tabac, stupéfiants, ou produits assimilés.
- Respecte les lois et consignes en vigueur liées à la consommation de tabac, stupéfiants, ou produits assimilés.
- N’hésite pas à interagir avec le staff, pour parler de tes problèmes, pour remonter des problèmes dans le cursus, pour contribuer au cursus.
- N’hésite pas à interagir avec le staff, pour parler de tes problèmes, pour remonter des problèmes dans le cursus, pour contribuer au cursus.
- Si tu t’interroges ou ne comprends pas nos choix pédagogiques, demande nous. On ne fait généralement rien au hasard.
- Si tu t’interroges ou ne comprends pas nos choix pédagogiques, demande nous. On ne fait généralement rien au hasard.
### Required

84
subjects/commandments.fr.md

@ -16,89 +16,89 @@ A few basic principles to follow
### The Commandements _(read them)_
- Le numérique est ta passion.
- Le numérique est ta passion.
- Ton objectif à 42 : développer ton talent et tes compétences pour le marché du numérique.
- Ton objectif à 42 : développer ton talent et tes compétences pour le marché du numérique.
- L’objectif de 42 pour toi : te faire accéder au marché de l’emploi, à une longue et pérenne carrière dans le numérique, et te faire progresser socialement.
- L’objectif de 42 pour toi : te faire accéder au marché de l’emploi, à une longue et pérenne carrière dans le numérique, et te faire progresser socialement.
- L’ambition de 42 pour toi : être un pionnier du numérique de demain.
- L’ambition de 42 pour toi : être un pionnier du numérique de demain.
- Il est de ta responsabilité de gérer ta progression : 42 te propose un parcours individualisé adapté à ton rythme.
- Il est de ta responsabilité de gérer ta progression : 42 te propose un parcours individualisé adapté à ton rythme.
- Des challenges jalonnent ton parcours. 42 ne fournira aucun élément de solution. C’est ton rôle de chercher et trouver par toi-même ces solutions pour atteindre l’objectif.
- Des challenges jalonnent ton parcours. 42 ne fournira aucun élément de solution. C’est ton rôle de chercher et trouver par toi-même ces solutions pour atteindre l’objectif.
- Sois actif. N’attend pas que les choses se fassent pour toi. 42 est un parcours 100% pratique.
- Sois actif. N’attend pas que les choses se fassent pour toi. 42 est un parcours 100% pratique.
- Sois autonome dans ton cursus. N’attend pas que l’on te dise quoi faire.
- Sois autonome dans ton cursus. N’attend pas que l’on te dise quoi faire.
- Sois collaboratif, autant sur les projets solos que les projets de groupe. Face aux challenges à resoudre, l’échange et le debat sont tes meilleures armes.
- Sois collaboratif, autant sur les projets solos que les projets de groupe. Face aux challenges à resoudre, l’échange et le debat sont tes meilleures armes.
- Ne "crois" pas. Sois sûr. Techniquement, relationnelement, organisationellement, administrativement.
- Ne "crois" pas. Sois sûr. Techniquement, relationnelement, organisationellement, administrativement.
- Pour être sûr, teste, contrôle.
- Pour être sûr, teste, contrôle.
- N’ai pas peur de te tromper, d’échouer. L’échec est une étape normale vers le succès.
- N’ai pas peur de te tromper, d’échouer. L’échec est une étape normale vers le succès.
- Teste à nouveau. Collabore davantage pour tester davantage.
- Teste à nouveau. Collabore davantage pour tester davantage.
- Ose. Le risque est de se tromper. Voir le commandement 12.
- Ose. Le risque est de se tromper. Voir le commandement 12.
- Sois rigoureux dans ton travail.
- Sois rigoureux dans ton travail.
- Sois investi dans ton cursus : 50 heures par semaine est un minimum. Ta capacité de travail est une valeur. L’école est ouverte 24h/24 et 7j/7.
- Sois investi dans ton cursus : 50 heures par semaine est un minimum. Ta capacité de travail est une valeur. L’école est ouverte 24h/24 et 7j/7.
- Sois régulier dans ton travail. Un jour oui, un jour non, un coup nocturne, un coup diurne... le chaos t’empêche d’avancer.
- Sois régulier dans ton travail. Un jour oui, un jour non, un coup nocturne, un coup diurne... le chaos t’empêche d’avancer.
- Prévois un groupe de travail large et hétérogène pour y trouver facilement des idées neuves et des groupes de projet.
- Prévois un groupe de travail large et hétérogène pour y trouver facilement des idées neuves et des groupes de projet.
- Pour tes collaborations et ton travail en groupe, privilégie des étudiants qui n’ont pas déjà la solution au problème.
- Pour tes collaborations et ton travail en groupe, privilégie des étudiants qui n’ont pas déjà la solution au problème.
- Sois investi dans ton groupe de projet, et ne le laisse pas faire ton travail à ta place.
- Sois investi dans ton groupe de projet, et ne le laisse pas faire ton travail à ta place.
- Ton groupe de projet est solidaire, son succès comme son échec est de la responsabilité de tous, et les conflits se règlent en interne.
- Ton groupe de projet est solidaire, son succès comme son échec est de la responsabilité de tous, et les conflits se règlent en interne.
- Travaille à l’école. Faire du peer-learning, collaborer, cela demande d’être physiquement avec les autres. A distance cela ne fonctionne pas.
- Travaille à l’école. Faire du peer-learning, collaborer, cela demande d’être physiquement avec les autres. A distance cela ne fonctionne pas.
- Implique toi dans les évaluations de tes projets. Elles te permettent de prendre du recul.
- Implique toi dans les évaluations de tes projets. Elles te permettent de prendre du recul.
- Implique toi dans tes évaluations des projets des autres. La qualité de la communauté en dépend.
- Implique toi dans tes évaluations des projets des autres. La qualité de la communauté en dépend.
- Sois juste et teste rigoureusement tes projets comme ceux des autres en évaluation avec tes propres jeux de tests.
- Sois juste et teste rigoureusement tes projets comme ceux des autres en évaluation avec tes propres jeux de tests.
- Joue pleinement le jeu de ta scolarité dans l’état d’esprit demandé, fait tous les exercices et projets demandés.
- Joue pleinement le jeu de ta scolarité dans l’état d’esprit demandé, fait tous les exercices et projets demandés.
- Ne cherche pas des biais et des failles dans le système. Tu vas fausser ta propre formation et ta valeur sur le marché.
- Ne cherche pas des biais et des failles dans le système. Tu vas fausser ta propre formation et ta valeur sur le marché.
- Ne triche pas intentionellement. C’est amoral, cela contredit le commandement 12, et c’est du temps inutilement passé à ne pas développer tes compétences pour faire croire aux autres que tu sais coder alors que ce n’est pas le cas.
- Ne triche pas intentionellement. C’est amoral, cela contredit le commandement 12, et c’est du temps inutilement passé à ne pas développer tes compétences pour faire croire aux autres que tu sais coder alors que ce n’est pas le cas.
- Ne rends pas un projet que tu ne serais pas capable de reproduire seul à huis clos. Même si c’est parfois involontaire, c’est aussi de la triche.
- Ne rends pas un projet que tu ne serais pas capable de reproduire seul à huis clos. Même si c’est parfois involontaire, c’est aussi de la triche.
- C’est pas pour tes parents que tu travailles, ni pour le staff. C’est pour toi.
- C’est pas pour tes parents que tu travailles, ni pour le staff. C’est pour toi.
- Participe à la vie de la communauté, à son épanouissement, et sa qualité en sortie de formation.
- Participe à la vie de la communauté, à son épanouissement, et sa qualité en sortie de formation.
- Aide au respect de ces commandements par la communauté.
- Aide au respect de ces commandements par la communauté.
- Sois bienveillant et empathique vis à vis de tes camarades comme des personnes avec qui tu interagis, échanges, débats.
- Sois bienveillant et empathique vis à vis de tes camarades comme des personnes avec qui tu interagis, échanges, débats.
- N’ai pas peur du monde professionnel.
- N’ai pas peur du monde professionnel.
- Respecte le matériel. Des consignes spécifiques sont données en ce sens.
- Respecte le matériel. Des consignes spécifiques sont données en ce sens.
- Respecte les locaux. Des consignes spécifiques sont données en ce sens.
- Respecte les locaux. Des consignes spécifiques sont données en ce sens.
- Respecte les gens, étudiants, staffs, partenaires, visiteurs.
- Respecte les gens, étudiants, staffs, partenaires, visiteurs.
- Respecte la loi en vigueur dans le pays.
- Respecte la loi en vigueur dans le pays.
- Respecte les lois et consignes en vigueur liées à la consommation d’alcool.
- Respecte les lois et consignes en vigueur liées à la consommation d’alcool.
- Respecte les lois et consignes en vigueur liées à la consommation de tabac, stupéfiants, ou produits assimilés.
- Respecte les lois et consignes en vigueur liées à la consommation de tabac, stupéfiants, ou produits assimilés.
- N’hésite pas à interagir avec le staff, pour parler de tes problèmes, pour remonter des problèmes dans le cursus, pour contribuer au cursus.
- N’hésite pas à interagir avec le staff, pour parler de tes problèmes, pour remonter des problèmes dans le cursus, pour contribuer au cursus.
- Si tu t’interroges ou ne comprends pas nos choix pédagogiques, demande nous. On ne fait généralement rien au hasard.
- Si tu t’interroges ou ne comprends pas nos choix pédagogiques, demande nous. On ne fait généralement rien au hasard.
### Required

4
subjects/compact.en.md

@ -5,9 +5,9 @@
Write a function `Compact` that takes a pointer to a slice of strings as the argument.
This function must:
- Return the number of elements with non-`nil`.
- Return the number of elements with non-`nil`.
- Compact, i.e., delete the elements with `nil` in the slice.
- Compact, i.e., delete the elements with `nil` in the slice.
### Expected functions

6
subjects/compact.fr.md

@ -2,12 +2,12 @@
### Instructions
Écrire une fonction `Compact` qui prend un pointeur sur slice de `strings` comme paramètre.
Écrire une fonction `Compact` qui prend un pointeur sur slice de `string` comme paramètre.
Cette fonction doit:
- Retourner le nombre d'éléments avec des valeurs non-`nil`
- Retourner le nombre d'éléments avec des valeurs non-`nil`
- Comprimer, c.à.d., effacer les éléments qui ont une valeur `nil` dans la slice.
- Comprimer, c.à.d., effacer les éléments qui ont une valeur `nil` dans la slice.
### Fonction attendue

2
subjects/compareprog.en.md

@ -4,7 +4,7 @@
Write a program that behaves like the `Compare` function.
This program prints a number after comparing two `strings` lexicographically.
This program prints a number after comparing two `string` lexicographically.
### Usage :

2
subjects/compareprog.fr.md

@ -4,7 +4,7 @@
Écrire un programme qui se comporte comme la fonction `Compare`.
Ce programme affiche un nombre après avoir comparé deux `strings` lexicalement.
Ce programme affiche un nombre après avoir comparé deux `string` lexicalement.
### Utilisation :

2
subjects/concatparams.en.md

@ -10,7 +10,7 @@ The arguments must be **separated** by a `\n`.
```go
func ConcatParams(args []string) string {
}
```

1
subjects/concatparams.fr.md

@ -10,6 +10,7 @@ Les arguments doivent être **séparés** par un `\n`.
```go
func ConcatParams(args []string) string {
}
```

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

Loading…
Cancel
Save