diff --git a/curriculum/challenges/espanol/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md b/curriculum/challenges/espanol/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
index 0695bfaf5fd..88555ef0606 100644
--- a/curriculum/challenges/espanol/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
+++ b/curriculum/challenges/espanol/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
@@ -69,7 +69,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- edad
+ age
@@ -87,7 +87,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- altura
+ height
@@ -105,7 +105,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- peso
+ weight
@@ -123,7 +123,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- género
+ gender
@@ -141,7 +141,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- ap_hi
+ ap_hi
@@ -159,7 +159,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- ap_lo
+ ap_lo
@@ -177,7 +177,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- colesterol
+ cholesterol
@@ -195,7 +195,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- glúcido
+ gluc
@@ -213,7 +213,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- humo
+ smoke
@@ -231,7 +231,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- alco
+ alco
@@ -249,7 +249,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- activo
+ active
@@ -267,7 +267,7 @@ Todavía estamos desarrollando la parte interactiva del currículo de Python. Po
- cardiaco
+ cardio
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-19-counting-sundays.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-19-counting-sundays.md
index c12d6d1c6b8..12409626592 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-19-counting-sundays.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-19-counting-sundays.md
@@ -1,44 +1,44 @@
---
id: 5900f37f1000cf542c50fe92
-title: 'Problem 19: Counting Sundays'
-challengeType: 5
+title: 'Problema 19: Contando domingos'
+challengeType: 1
forumTopicId: 301827
dashedName: problem-19-counting-sundays
---
# --description--
-You are given the following information, but you may prefer to do some research for yourself.
+Se te proporciona la siguiente información, aunque quizá prefieras investigar por tu cuenta.
-
1 Jan 1900 was a Monday.
-
Thirty days has September, April, June and November. All the rest have thirty-one, Saving February alone, Which has twenty-eight, rain or shine. And on leap years, twenty-nine.
-
A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.
+
El 1 de enero de 1900 fue lunes.
+
Treinta días tienen septiembre, abril, junio y noviembre. El resto tienen treinta y uno, salvo febrero, que tiene veintiocho, luzca el sol o diluvie. Y en años bisiestos, veintinueve.
+
Un año es bisiesto si es divisible por 4, pero si es año secular (acabado en 00), también ha de ser divisible por 400.
-How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?
+¿Cuántos domingos fueron primer día del mes en el siglo XX (del 1 de enero de 1901 al 31 de diciembre de 2000)?
# --hints--
-`countingSundays(1943, 1946)` should return a number.
+`countingSundays(1943, 1946)` debe devolver un número.
```js
assert(typeof countingSundays(1943, 1946) === 'number');
```
-`countingSundays(1943, 1946)` should return 6.
+`countingSundays(1943, 1946)` debe devolver 6.
```js
assert.strictEqual(countingSundays(1943, 1946), 6);
```
-`countingSundays(1995, 2000)` should return 10.
+`countingSundays(1995, 2000)` debe devolver 10.
```js
assert.strictEqual(countingSundays(1995, 2000), 10);
```
-`countingSundays(1901, 2000)` should return 171.
+`countingSundays(1901, 2000)` debe devolver 171.
```js
assert.strictEqual(countingSundays(1901, 2000), 171);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-20-factorial-digit-sum.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-20-factorial-digit-sum.md
index 579ac97f6f9..6bd7278c303 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-20-factorial-digit-sum.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-20-factorial-digit-sum.md
@@ -1,53 +1,53 @@
---
id: 5900f3801000cf542c50fe93
-title: 'Problem 20: Factorial digit sum'
-challengeType: 5
+title: 'Problema 20: Suma de los dígitos de un factorial'
+challengeType: 1
forumTopicId: 301839
dashedName: problem-20-factorial-digit-sum
---
# --description--
-`n`! means `n` × (`n` − 1) × ... × 3 × 2 × 1
+`n`! se define como `n` × (`n` − 1) × ... × 3 × 2 × 1
-For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
-and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
+Por ejemplo, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
+y la suma de los dígitos del número 10! es 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
-Find the sum of the digits `n`!
+Encuentra la suma de los dígitos de `n`!
# --hints--
-`sumFactorialDigits(10)` should return a number.
+`sumFactorialDigits(10)` debe devolver un número.
```js
assert(typeof sumFactorialDigits(10) === 'number');
```
-`sumFactorialDigits(10)` should return 27.
+`sumFactorialDigits(10)` debe devolver 27.
```js
assert.strictEqual(sumFactorialDigits(10), 27);
```
-`sumFactorialDigits(25)` should return 72.
+`sumFactorialDigits(25)` debe devolver 72.
```js
assert.strictEqual(sumFactorialDigits(25), 72);
```
-`sumFactorialDigits(50)` should return 216.
+`sumFactorialDigits(50)` debe devolver 216.
```js
assert.strictEqual(sumFactorialDigits(50), 216);
```
-`sumFactorialDigits(75)` should return 432.
+`sumFactorialDigits(75)` debe devolver 432.
```js
assert.strictEqual(sumFactorialDigits(75), 432);
```
-`sumFactorialDigits(100)` should return 648.
+`sumFactorialDigits(100)` debe devolver 648.
```js
assert.strictEqual(sumFactorialDigits(100), 648);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-21-amicable-numbers.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-21-amicable-numbers.md
index 58acfba70e1..5a34f1363b7 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-21-amicable-numbers.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-21-amicable-numbers.md
@@ -1,48 +1,48 @@
---
id: 5900f3811000cf542c50fe94
-title: 'Problem 21: Amicable numbers'
-challengeType: 5
+title: 'Problema 21: Número amigos'
+challengeType: 1
forumTopicId: 301851
dashedName: problem-21-amicable-numbers
---
# --description--
-Let d(`n`) be defined as the sum of proper divisors of `n` (numbers less than `n` which divide evenly into `n`).
+Se define d(`n`) como la suma de los divisores propios de `n` (números menores que `n` los cuales dividen de forma exacta a `n`).
-If d(`a`) = `b` and d(`b`) = `a`, where `a` ≠ `b`, then `a` and `b` are an amicable pair and each of `a` and `b` are called amicable numbers.
+Si d(`a`) = `b` y d(`b`) = `a`, donde `a` ≠ `b`, entonces `a` y `b` forman un par de números amigos, siendo `a` y `b` números amigos.
-For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.
+Por ejemplo, los divisores propios de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110; por tanto d(220) = 284. Los divisores propios de 284 son 1, 2, 4, 71 y 142; así pues d(284) = 220.
-Evaluate the sum of all the amicable numbers under `n`.
+Evalúa la suma de todos los números amigos por debajo de `n`.
# --hints--
-`sumAmicableNum(1000)` should return a number.
+`sumAmicableNum(1000)` debe devolver un número.
```js
assert(typeof sumAmicableNum(1000) === 'number');
```
-`sumAmicableNum(1000)` should return 504.
+`sumAmicableNum(1000)` debe devolver 504.
```js
assert.strictEqual(sumAmicableNum(1000), 504);
```
-`sumAmicableNum(2000)` should return 2898.
+`sumAmicableNum(2000)` debe devolver 2898.
```js
assert.strictEqual(sumAmicableNum(2000), 2898);
```
-`sumAmicableNum(5000)` should return 8442.
+`sumAmicableNum(5000)` debe devolver 8442.
```js
assert.strictEqual(sumAmicableNum(5000), 8442);
```
-`sumAmicableNum(10000)` should return 31626.
+`sumAmicableNum(10000)` debe devolver 31626.
```js
assert.strictEqual(sumAmicableNum(10000), 31626);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-22-names-scores.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-22-names-scores.md
index e93e40d6ef4..3112e27d224 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-22-names-scores.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-22-names-scores.md
@@ -1,40 +1,40 @@
---
id: 5a51eabcad78bf416f316e2a
-title: 'Problem 22: Names scores'
-challengeType: 5
+title: 'Problema 22: Puntuaciones de nombres'
+challengeType: 1
forumTopicId: 301862
dashedName: problem-22-names-scores
---
# --description--
-Using `names`, an array defined in the background containing over five-thousand first names, begin by sorting it into alphabetical order. Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.
+El array `names` está definido en segundo plano y contiene aproximadamente cinco mil nombres de pila. La primera tarea es ordenarlo alfabéticamente. Después halla la suma, para cada nombre, del orden alfabético de sus letras (valor alfabético) y multiplica ese valor por la posición que ocupa en la lista ordenada alfabéticamente.
-For example, when the list is sorted into alphabetical order, COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would obtain a score of 938 × 53 = 49714.
+Po ejemplo, una vez que la lista está ordenada alfabéticamente, COLIN, cuyo valor alfabético es 3 + 15 + 12 + 9 + 14 = 53, ocupa la posición 938 en la lista. Por tanto, COLIN obtiendrá una puntuación de 938 × 53 = 49714.
-What is the total of all the name scores in the array?
+¿Cuánto vale la suma de todas las puntuaciones de los nombres en el array?
# --hints--
-`namesScores(test1)` should return a number.
+`namesScores(test1)` debe devolver un número.
```js
assert(typeof namesScores(test1) === 'number');
```
-`namesScores(test1)` should return 791.
+`namesScores(test1)` debe devolver 791.
```js
assert.strictEqual(namesScores(test1), 791);
```
-`namesScores(test2)` should return 1468.
+`namesScores(test2)` debe devolver 1468.
```js
assert.strictEqual(namesScores(test2), 1468);
```
-`namesScores(names)` should return 871198282.
+`namesScores(names)` debe devolver 871198282.
```js
assert.strictEqual(namesScores(names), 871198282);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-23-non-abundant-sums.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-23-non-abundant-sums.md
index ce8b2262e4a..a2b17ef4723 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-23-non-abundant-sums.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-23-non-abundant-sums.md
@@ -1,48 +1,48 @@
---
id: 5900f3831000cf542c50fe96
-title: 'Problem 23: Non-abundant sums'
-challengeType: 5
+title: 'Problema 23: Sumas no abundantes'
+challengeType: 1
forumTopicId: 301873
dashedName: problem-23-non-abundant-sums
---
# --description--
-A perfect number is a number for which the sum of its proper divisors is exactly equal to the number. For example, the sum of the proper divisors of 28 would be 1 + 2 + 4 + 7 + 14 = 28, which means that 28 is a perfect number.
+Un número perfecto es aquel que es igual a la suma de sus divisores propios. Por ejemplo, la suma de los divisores propios de 28 es 1 + 2 + 4 + 7 + 14 = 28, con lo cual 28 es un número perfecto.
-A number `n` is called deficient if the sum of its proper divisors is less than `n` and it is called abundant if this sum exceeds `n`.
+Un número `n` es deficiente si la suma de sus divisores propios es menor que `n`, y es abundante si dicha suma es mayor que `n`.
-As 12 is the smallest abundant number, 1 + 2 + 3 + 4 + 6 = 16, the smallest number that can be written as the sum of two abundant numbers is 24. By mathematical analysis, it can be shown that all integers greater than 28123 can be written as the sum of two abundant numbers. However, this upper limit cannot be reduced any further by analysis even though it is known that the greatest number that cannot be expressed as the sum of two abundant numbers is less than this limit.
+Como 12 es el número abundante más pequeño, 1 + 2 + 3 + 4 + 6 = 16, el número más pequeño que puede ser expresado como suma de dos números abundantes es 24. Mediante análisis matemático, puede demostrarse que todo entero mayor que 28123 puede expresarse como la suma de dos números abundantes. Sin embargo, se sabe que el mayor número que no se puede expresar como la suma de dos números abundantes es menor que ese límite, aunque esto no ha podido ser demostrado rigurosamente.
-Find the sum of all positive integers <= `n` which cannot be written as the sum of two abundant numbers.
+Encuentra la suma de todos los enteros positivos <= `n` que no se pueden expresar como la suma de dos números abundantes.
# --hints--
-`sumOfNonAbundantNumbers(10000)` should return a number.
+`sumOfNonAbundantNumbers(10000)` debe devolver un número.
```js
assert(typeof sumOfNonAbundantNumbers(10000) === 'number');
```
-`sumOfNonAbundantNumbers(10000)` should return 3731004.
+`sumOfNonAbundantNumbers(10000)` debe devolver 3731004.
```js
assert(sumOfNonAbundantNumbers(10000) === 3731004);
```
-`sumOfNonAbundantNumbers(15000)` should return 4039939.
+`sumOfNonAbundantNumbers(15000)` debe devolver 4039939.
```js
assert(sumOfNonAbundantNumbers(15000) === 4039939);
```
-`sumOfNonAbundantNumbers(20000)` should return 4159710.
+`sumOfNonAbundantNumbers(20000)` debe devolver 4159710.
```js
assert(sumOfNonAbundantNumbers(20000) === 4159710);
```
-`sumOfNonAbundantNumbers(28123)` should return 4179871.
+`sumOfNonAbundantNumbers(28123)` debe devolver 4179871.
```js
assert(sumOfNonAbundantNumbers(28123) === 4179871);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-24-lexicographic-permutations.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-24-lexicographic-permutations.md
index 49998335d2e..e0d4dc5301b 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-24-lexicographic-permutations.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-24-lexicographic-permutations.md
@@ -1,46 +1,46 @@
---
id: 5900f3841000cf542c50fe97
-title: 'Problem 24: Lexicographic permutations'
-challengeType: 5
+title: 'Problema 24: Permutaciones lexicográficas'
+challengeType: 1
forumTopicId: 301885
dashedName: problem-24-lexicographic-permutations
---
# --description--
-A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:
+Una permutación es una disposición ordenada de objetos. Por ejemplo, 3124 es una posible permutación de los dígitos 1, 2, 3 y 4. Llamamos orden lexicográfico a todas las permutaciones listadas numérica o alfabéticamante. Las permutaciones lexicográficas de 0, 1 y 2 son:
012 021 102 120 201 210
-What is the `n`th lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
+¿Cuál es la permutación que ocupa el lugar `n` en el orden lexicográfico de los dígitos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9?
# --hints--
-`lexicographicPermutations(699999)` should return a number.
+`lexicographicPermutations(699999)` debe devolver un número.
```js
assert(typeof lexicographicPermutations(699999) === 'number');
```
-`lexicographicPermutations(699999)` should return 1938246570.
+`lexicographicPermutations(699999)` debe devolver 1938246570.
```js
assert(lexicographicPermutations(699999) == 1938246570);
```
-`lexicographicPermutations(899999)` should return 2536987410.
+`lexicographicPermutations(899999)` debe devolver 2536987410.
```js
assert(lexicographicPermutations(899999) == 2536987410);
```
-`lexicographicPermutations(900000)` should return 2537014689.
+`lexicographicPermutations(900000)` debe devolver 2537014689.
```js
assert(lexicographicPermutations(900000) == 2537014689);
```
-`lexicographicPermutations(999999)` should return 2783915460.
+`lexicographicPermutations(999999)` debe devolver 2783915460.
```js
assert(lexicographicPermutations(999999) == 2783915460);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number.md
index ca7d277f447..301b03f3b4f 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-25-1000-digit-fibonacci-number.md
@@ -1,52 +1,52 @@
---
id: 5900f3851000cf542c50fe98
-title: 'Problem 25: 1000-digit Fibonacci number'
-challengeType: 5
+title: 'Problema 25: Número de Fibonacci de 1000 dígitos'
+challengeType: 1
forumTopicId: 301897
dashedName: problem-25-1000-digit-fibonacci-number
---
# --description--
-The Fibonacci sequence is defined by the recurrence relation:
+La sucesión de Fibonacci se define mediante la siguiente relación recursiva:
-
Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
+
Fn = Fn−1 + Fn−2, donde F1 = 1 and F2 = 1.
-Hence the first 12 terms will be:
+Por tanto, los primeros 12 términos serán:
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
-The 12th term, F12, is the first term to contain three digits.
+El 12º término, F12, es el primero que tiene tres dígitos.
-What is the index of the first term in the Fibonacci sequence to contain `n` digits?
+¿Cuál es el índice del primer término de la sucesión de Fibonacci que tiene `n` dígitos?
# --hints--
-`digitFibonacci(5)` should return a number.
+`digitFibonacci(5)` debe devolver un número.
```js
assert(typeof digitFibonacci(5) === 'number');
```
-`digitFibonacci(5)` should return 21.
+`digitFibonacci(5)` debe devolver 21.
```js
assert.strictEqual(digitFibonacci(5), 21);
```
-`digitFibonacci(10)` should return 45.
+`digitFibonacci(10)` debe devolver 45.
```js
assert.strictEqual(digitFibonacci(10), 45);
```
-`digitFibonacci(15)` should return 69.
+`digitFibonacci(15)` debe devolver 69.
```js
assert.strictEqual(digitFibonacci(15), 69);
```
-`digitFibonacci(20)` should return 93.
+`digitFibonacci(20)` debe devolver 93.
```js
assert.strictEqual(digitFibonacci(20), 93);
diff --git a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-26-reciprocal-cycles.md b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-26-reciprocal-cycles.md
index d6ee972f907..b3b2585be3c 100644
--- a/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-26-reciprocal-cycles.md
+++ b/curriculum/challenges/espanol/10-coding-interview-prep/project-euler/problem-26-reciprocal-cycles.md
@@ -1,48 +1,48 @@
---
id: 5900f3861000cf542c50fe99
-title: 'Problem 26: Reciprocal cycles'
-challengeType: 5
+title: 'Problema 26: Períodos en fracciones unitarias'
+challengeType: 1
forumTopicId: 301908
dashedName: problem-26-reciprocal-cycles
---
# --description--
-A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with denominators 2 to 10 are given:
+Fracción unitaria es aquella cuyo numerador es 1. Se muestra la representación decimal de las fracciones unitarias con denominadores de 2 a 10:
1/2 = 0.5
1/3 = 0.(3)
1/4 = 0.25
1/5 = 0.2
1/6 = 0.1(6)
1/7 = 0.(142857)
1/8 = 0.125
1/9 = 0.(1)
1/10 = 0.1
-Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle. It can be seen that 1/7 has a 6-digit recurring cycle.
+Donde 0.1(6) representa 0.166666..., teniendo un período de 1 dígito. Así mismo, 1/7 tiene un período de 6 dígitos.
-Find the value of `d` < `n` for which 1/d contains the longest recurring cycle in its decimal fraction part.
+Encuentra el valor de `d` < `n` para el cual 1/d posee el período más largo en su parte decimal.
# --hints--
-`reciprocalCycles(700)` should return a number.
+`reciprocalCycles(700)` debe devolver un número.
```js
assert(typeof reciprocalCycles(700) === 'number');
```
-`reciprocalCycles(700)` should return 659.
+`reciprocalCycles(700)` debe devolver 659.
```js
assert(reciprocalCycles(700) == 659);
```
-`reciprocalCycles(800)` should return 743.
+`reciprocalCycles(800)` debe devolver 743.
```js
assert(reciprocalCycles(800) == 743);
```
-`reciprocalCycles(900)` should return 887.
+`reciprocalCycles(900)` debe devolver 887.
```js
assert(reciprocalCycles(900) == 887);
```
-`reciprocalCycles(1000)` should return 983.
+`reciprocalCycles(1000)` debe devolver 983.
```js
assert(reciprocalCycles(1000) == 983);
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
index c33a96201dc..fc202607fe9 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
@@ -26,20 +26,20 @@ Le righe nel set di dati rappresentano i pazienti e le colonne rappresentano inf
Nome del file: medical_examination.csv
-| Caratteristica | Tipo Di Variabile | Variabile | Tipo Di Valore |
-|:----------------------------------------------:|:-----------------:|:-----------:|:------------------------------------------------------------------------:|
-| Età | Dato oggettivo | age | int (giorni) |
-| Altezza | Dato oggettivo | height | int (cm) |
-| Peso | Dato oggettivo | weight | float (kg) |
-| Genere | Dato oggettivo | gender | codice di categoria |
-| Pressione sistolica | Dato da esami | ap_hi | int |
-| Pressione sanguigna diastolica | Dato da esami | ap_lo | int |
-| Colesterolo | Dato da esami | cholesterol | 1: normale, 2: al di sopra del normale, 3: molto al di sopra del normale |
-| Glucosio | Dato da esami | gluc | 1: normale, 2: al di sopra del normale, 3: molto al di sopra del normale |
-| Fumatore | Dato soggettivo | smoke | binario |
-| Assunzione di alcol | Dato soggettivo | alco | binario |
-| Attività fisica | Dato soggettivo | active | binario |
-| Presenza o assenza di malattie cardiovascolari | Variabile target | cardio | binario |
+| Caratteristica | Tipo Di Variabile | Variabile | Tipo Di Valore |
+|:----------------------------------------------:|:-----------------:|:-------------:|:------------------------------------------------------------------------:|
+| Età | Dato oggettivo | `age` | int (giorni) |
+| Altezza | Dato oggettivo | `height` | int (cm) |
+| Peso | Dato oggettivo | `weight` | float (kg) |
+| Genere | Dato oggettivo | `gender` | codice di categoria |
+| Pressione sistolica | Dato da esami | `ap_hi` | int |
+| Pressione sanguigna diastolica | Dato da esami | `ap_lo` | int |
+| Colesterolo | Dato da esami | `cholesterol` | 1: normale, 2: al di sopra del normale, 3: molto al di sopra del normale |
+| Glucosio | Dato da esami | `gluc` | 1: normale, 2: al di sopra del normale, 3: molto al di sopra del normale |
+| Fumatore | Dato soggettivo | `smoke` | binario |
+| Assunzione di alcol | Dato soggettivo | `alco` | binario |
+| Attività fisica | Dato soggettivo | `active` | binario |
+| Presenza o assenza di malattie cardiovascolari | Variabile target | `cardio` | binario |
## Compiti
diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3c668afc43b4a134cca81.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3c668afc43b4a134cca81.md
new file mode 100644
index 00000000000..f92afb820ee
--- /dev/null
+++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3c668afc43b4a134cca81.md
@@ -0,0 +1,150 @@
+---
+id: 62a3c668afc43b4a134cca81
+title: Step 38
+challengeType: 0
+dashedName: step-38
+---
+
+# --description--
+
+Le funzioni sono degli strumenti speciali che ti permettono di eseguire sezioni di codice in momenti specifici. Puoi dichiarare funzioni con la parola chiave `function`. Ecco un esempio di una funzione chiamata `functionName` - nota le parentesi graffe di apertura e chiusura. Indicano la porzione di codice all'interno della funzione.
+
+```js
+function functionName() {
+
+}
+```
+
+Crea una funzione vuota chiamata `goStore`. Corrisponderà alla variabile `goStore` usata precedentemente.
+
+# --hints--
+
+Dovresti dichiarare `goStore` con la parola chiave `function`.
+
+```js
+assert.match(code, /function\s*goStore()/);
+```
+
+`goStore` dovrebbe essere definita.
+
+```js
+assert.isDefined(goStore);
+```
+
+`goStore` dovrebbe essere una funzione.
+
+```js
+assert.isFunction(goStore);
+```
+
+`goStore` dovrebbe essere una funzione vuota.
+
+```js
+assert.equal(goStore.toString(), "function goStore() {}");
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+let xp = 0;
+let health = 100;
+let gold = 50;
+let currentWeapon = 0;
+let fighting;
+let monsterHealth;
+let inventory = ["stick"];
+
+const button1 = document.querySelector('#button1');
+const button2 = document.querySelector("#button2");
+const button3 = document.querySelector("#button3");
+const text = document.querySelector("#text");
+const xpText = document.querySelector("#xpText");
+const healthText = document.querySelector("#healthText");
+const goldText = document.querySelector("#goldText");
+const monsterStats = document.querySelector("#monsterStats");
+const monsterName = document.querySelector("#monsterName");
+const monsterHealthText =document.querySelector("#monsterHealth");
+
+// initialize buttons
+button1.onclick = goStore;
+button2.onclick = goCave;
+button3.onclick = fightDragon;
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3c8bf3980c14c438d2aed.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3c8bf3980c14c438d2aed.md
new file mode 100644
index 00000000000..cb3940f6ac8
--- /dev/null
+++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3c8bf3980c14c438d2aed.md
@@ -0,0 +1,138 @@
+---
+id: 62a3c8bf3980c14c438d2aed
+title: Step 39
+challengeType: 0
+dashedName: step-39
+---
+
+# --description--
+
+Per ora, fai in modo che l'output della funzione `goStore` sia il messaggio `Going to store.` sulla console. Ad esempio, ecco una funzione il cui output è il messaggio "Hello World".
+
+```js
+function functionName() {
+ console.log("Hello World");
+}
+```
+
+# --hints--
+
+Dovresti avere la riga `console.log("Going to store.");` nel tuo codice. Non dimenticare il punto e virgola.
+
+```js
+assert.match(code, /console\.log\(('|")Going to store\.\1\);/);
+```
+
+La riga `console.log("Going to store.");` dovrebbe essere nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /console\.log\(('|")Going to store\.\1\);/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+let xp = 0;
+let health = 100;
+let gold = 50;
+let currentWeapon = 0;
+let fighting;
+let monsterHealth;
+let inventory = ["stick"];
+
+const button1 = document.querySelector('#button1');
+const button2 = document.querySelector("#button2");
+const button3 = document.querySelector("#button3");
+const text = document.querySelector("#text");
+const xpText = document.querySelector("#xpText");
+const healthText = document.querySelector("#healthText");
+const goldText = document.querySelector("#goldText");
+const monsterStats = document.querySelector("#monsterStats");
+const monsterName = document.querySelector("#monsterName");
+const monsterHealthText =document.querySelector("#monsterHealth");
+
+// initialize buttons
+button1.onclick = goStore;
+button2.onclick = goCave;
+button3.onclick = fightDragon;
+
+function goStore() {
+ console.log("Going to store.");
+}
+
+function goCave() {
+ console.log("Going to cave.");
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3cfc8328d3351b95d4f61.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3cfc8328d3351b95d4f61.md
new file mode 100644
index 00000000000..3e20b48477b
--- /dev/null
+++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3cfc8328d3351b95d4f61.md
@@ -0,0 +1,164 @@
+---
+id: 62a3cfc8328d3351b95d4f61
+title: Step 42
+challengeType: 0
+dashedName: step-42
+---
+
+# --description--
+
+La proprietà `innerText` controlla il testo che appare in un elemento HTML. Ad esempio:
+
+```js
+const info = document.querySelector("#info");
+info.innerText = "Hello World";
+```
+
+Questo codice cambia l'elemento assegnato alla variabile `div` in modo che abbia il testo `Hello World`.
+
+Quando un giocatore clicca sul pulsante `Go to store`, vuoi che cambino i pulsanti e il testo. Rimuovi il codice nella funzione `goStore` e aggiungi una riga che aggiorna il testo di `button1` in `Buy 10 health (10 gold)`.
+
+# --hints--
+
+Non dovresti avere la riga `console.log("Going to store.");` nel tuo codice.
+
+```js
+assert.notMatch(code, /console.log\(('|")Going to store\.\1\)/);
+```
+
+Dovresti usare la dot notation per accedere alla proprietà `innerText` di `button1`.
+
+```js
+assert.match(code, /button1\.innerText/);
+```
+
+Non dovresti usare `let` o `const` per accedere alla proprietà `innerText` di `button1`.
+
+```js
+assert.notMatch(code, /(let|const)\s+button1.innerText/);
+```
+
+Dovresti aggiornare la proprietà `innerText` di `button1` in modo che sia `Buy 10 health (10 gold)`.
+
+```js
+assert.match(code, /button1\.innerText\s*=\s*('|")Buy 10 health \(10 gold\)\1/);
+```
+
+Dovresti aggiornare la proprietà `innerText` nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /button1\.innerText\s*=\s*('|")Buy 10 health \(10 gold\)\1/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ border: 1px solid black;
+ padding: 5px;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+let xp = 0;
+let health = 100;
+let gold = 50;
+let currentWeapon = 0;
+let fighting;
+let monsterHealth;
+let inventory = ["stick"];
+
+const button1 = document.querySelector('#button1');
+const button2 = document.querySelector("#button2");
+const button3 = document.querySelector("#button3");
+const text = document.querySelector("#text");
+const xpText = document.querySelector("#xpText");
+const healthText = document.querySelector("#healthText");
+const goldText = document.querySelector("#goldText");
+const monsterStats = document.querySelector("#monsterStats");
+const monsterName = document.querySelector("#monsterName");
+const monsterHealthText =document.querySelector("#monsterHealth");
+
+// initialize buttons
+button1.onclick = goStore;
+button2.onclick = goCave;
+button3.onclick = fightDragon;
+
+--fcc-editable-region--
+function goStore() {
+ console.log("Going to store.");
+}
+--fcc-editable-region--
+
+function goCave() {
+ console.log("Going to cave.");
+}
+
+function fightDragon() {
+ console.log("Fighting dragon.");
+}
+```
diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a7beb1ad61211ac153707f.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a7beb1ad61211ac153707f.md
new file mode 100644
index 00000000000..568c5d52433
--- /dev/null
+++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a7beb1ad61211ac153707f.md
@@ -0,0 +1,176 @@
+---
+id: 62a7beb1ad61211ac153707f
+title: Step 43
+challengeType: 0
+dashedName: step-43
+---
+
+# --description--
+
+Ora aggiungi una riga che aggiorna il testo di `button2` in `Buy weapon (30 gold)` e aggiorna il testo di `button3` in `Go to town square`.
+
+# --hints--
+
+Dovresti usare la dot notation per accedere alla proprietà `innerText` di `button2`.
+
+```js
+assert.match(code, /button2\.innerText/);
+```
+
+Non dovresti usare `let` o `const` per accedere alla proprietà `innerText` di `button2`.
+
+```js
+assert.notMatch(code, /(let|const)\s+button2.innerText/);
+```
+
+Dovresti aggiornare la proprietà `innerText` di `button2` in modo che sia `Buy weapon (30 gold)`.
+
+```js
+assert.match(code, /button2\.innerText\s*=\s*('|")Buy weapon \(30 gold\)\1/);
+```
+
+Dovresti aggiornare la proprietà `innerText` nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /button2\.innerText\s*=\s*('|")Buy weapon \(30 gold\)\1/);
+```
+
+Dovresti usare la dot notation per accedere alla proprietà `innerText` di `button3`.
+
+```js
+assert.match(code, /button3\.innerText/);
+```
+
+Non dovresti usare `let` o `const` per accedere alla proprietà `innerText` di `button3`.
+
+```js
+assert.notMatch(code, /(let|const)\s+button3.innerText/);
+```
+
+Dovresti aggiornare la proprietà `innerText` di `button3` in modo che sia `Go to town square`.
+
+```js
+assert.match(code, /button3\.innerText\s*=\s*('|")Go to town square\1/);
+```
+
+Dovresti aggiornare la proprietà `innerText` nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /button3\.innerText\s*=\s*('|")Go to town square\1/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+let xp = 0;
+let health = 100;
+let gold = 50;
+let currentWeapon = 0;
+let fighting;
+let monsterHealth;
+let inventory = ["stick"];
+
+const button1 = document.querySelector('#button1');
+const button2 = document.querySelector("#button2");
+const button3 = document.querySelector("#button3");
+const text = document.querySelector("#text");
+const xpText = document.querySelector("#xpText");
+const healthText = document.querySelector("#healthText");
+const goldText = document.querySelector("#goldText");
+const monsterStats = document.querySelector("#monsterStats");
+const monsterName = document.querySelector("#monsterName");
+const monsterHealthText =document.querySelector("#monsterHealth");
+
+// initialize buttons
+button1.onclick = goStore;
+button2.onclick = goCave;
+button3.onclick = fightDragon;
+
+--fcc-editable-region--
+function goStore() {
+ button1.innerText = "Buy 10 health (10 gold)";
+}
+--fcc-editable-region--
+
+function goCave() {
+ console.log("Going to cave.");
+}
+
+function fightDragon() {
+ console.log("Fighting dragon.");
+}
+```
diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a7bf06d2ad9d1c5024e833.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a7bf06d2ad9d1c5024e833.md
new file mode 100644
index 00000000000..ca93773d440
--- /dev/null
+++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a7bf06d2ad9d1c5024e833.md
@@ -0,0 +1,202 @@
+---
+id: 62a7bf06d2ad9d1c5024e833
+title: Step 44
+challengeType: 0
+dashedName: step-44
+---
+
+# --description--
+
+Avrai anche bisogno di aggiornare le funzioni che vengono eseguite quando vengono cliccati i pulsanti. Aggiorna le proprietà `onclick` per ogni pulsante in modo che eseguano rispettivamente `buyHealth`, `buyWeapon` e `goTown`.
+
+# --hints--
+
+Dovresti usare la dot notation per accedere alla proprietà `onclick` di `button1`.
+
+```js
+assert.match(code, /button1\.onclick/);
+```
+
+Non dovresti usare `let` o `const` per accedere alla proprietà `onclick` di `button1`.
+
+```js
+assert.notMatch(code, /(let|const)\s+button1.onclick/);
+```
+
+Dovresti impostare la proprietà `onclick` di `button1` con `buyHealth`.
+
+```js
+assert.match(code, /button1\.onclick\s*=\s*buyHealth/);
+```
+
+Dovresti impostare la proprietà `onclick` di `button1` nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /button1\.onclick\s*=\s*buyHealth/);
+```
+
+Dovresti usare la dot notation per accedere alla proprietà `onclick` di `button2`.
+
+```js
+assert.match(code, /button2\.onclick/);
+```
+
+Non dovresti usare `let` o `const` per accedere alla proprietà `onclick` di `button2`.
+
+```js
+assert.notMatch(code, /(let|const)\s+button2.onclick/);
+```
+
+Dovresti impostare la proprietà `onclick` di `button2` con `buyWeapon`.
+
+```js
+assert.match(code, /button2\.onclick\s*=\s*buyWeapon/);
+```
+
+Dovresti impostare la proprietà `onclick` di `button2` nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /button2\.onclick\s*=\s*buyWeapon/);
+```
+
+Dovresti usare la dot notation per accedere alla proprietà `onclick` di `button3`.
+
+```js
+assert.match(code, /button3\.onclick/);
+```
+
+Non dovresti usare `let` o `const` per accedere alla proprietà `onclick` di `button3`.
+
+```js
+assert.notMatch(code, /(let|const)\s+button3.onclick/);
+```
+
+Dovresti impostare la proprietà `onclick` di `button3` con `goTown`.
+
+```js
+assert.match(code, /button3\.onclick\s*=\s*goTown/);
+```
+
+Dovresti impostare la proprietà `onclick` di `button3` nella funzione `goStore`.
+
+```js
+assert.match(goStore.toString(), /button3\.onclick\s*=\s*goTown/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
* The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
* The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
* The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
+
+
+
+```
+
+```css
+* {
+ box-sizing: border-box;
+}
+
+html {
+ font-size: 16px;
+}
+
+body {
+ font-family: 'Open Sans', sans-serif;
+}
+
+.label {
+ border: 2px solid black;
+ width: 270px;
+ margin: 20px auto;
+ padding: 0 7px;
+}
+
+header h1 {
+ text-align: center;
+ margin: -4px 0;
+ letter-spacing: 0.15px
+}
+
+p {
+ margin: 0;
+}
+
+.divider {
+ border-bottom: 1px solid #888989;
+ margin: 2px 0;
+ clear: right;
+}
+
+.bold {
+ font-weight: 800;
+}
+
+.right {
+ float: right;
+}
+
+.lg {
+ height: 10px;
+}
+
+.lg, .md {
+ background-color: black;
+ border: 0;
+}
+
+.md {
+ height: 5px;
+}
+
+.sm-text {
+ font-size: 0.85rem;
+}
+
+.calories-info h1 {
+ margin: -5px -2px;
+ overflow: hidden;
+}
+
+.calories-info span {
+ font-size: 1.2em;
+ margin-top: -7px;
+}
+
+.indent {
+ margin-left: 1em;
+}
+
+.dbl-indent {
+ margin-left: 2em;
+}
+
+.daily-value p:not(.no-divider) {
+ border-bottom: 1px solid #888989;
+}
+
+.note {
+ font-size: 0.6rem;
+ margin: 5px 0;
+ padding: 0 8px;
+ text-indent: -8px;
+}
+```
diff --git a/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md b/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
index c4e4aeaf4e0..c6189cfa276 100644
--- a/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
+++ b/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md
@@ -26,20 +26,20 @@ As linhas do dataset representam os pacientes e as colunas representam informaç
Nome do arquivo: medical_examination.csv
-| Funcionalidade | Tipo de variável | Variável | Tipo de valor |
-|:------------------------------------------------:|:-----------------:|:-----------:|:-----------------------------------------------------:|
-| Idade | Recurso objetivo | age | int (dias) |
-| Altura | Recurso objetivo | height | int (cm) |
-| Peso | Recurso objetivo | weight | float (kg) |
-| Gênero | Recurso objetivo | gender | código categórico |
-| Pressão arterial sistólica | Recurso de exame | ap_hi | int |
-| Pressão arterial diastólica | Recurso de exame | ap_lo | int |
-| Colesterol | Recurso de exame | cholesterol | 1: normal, 2: acima do normal, 3: bem acima do normal |
-| Glicose | Recurso de exame | gluc | 1: normal, 2: acima do normal, 3: bem acima do normal |
-| Fumar | Recurso subjetivo | smoke | binário |
-| Consumo de álcool | Recurso subjetivo | alco | binário |
-| Atividade física | Recurso subjetivo | active | binário |
-| Presença ou ausência de doenças cardiovasculares | Variável alvo | cardio | binário |
+| Funcionalidade | Tipo de variável | Variável | Tipo de valor |
+|:------------------------------------------------:|:-----------------:|:-------------:|:-----------------------------------------------------:|
+| Idade | Recurso objetivo | `age` | int (dias) |
+| Altura | Recurso objetivo | `height` | int (cm) |
+| Peso | Recurso objetivo | `weight` | float (kg) |
+| Gênero | Recurso objetivo | `gender` | código categórico |
+| Pressão arterial sistólica | Recurso de exame | `ap_hi` | int |
+| Pressão arterial diastólica | Recurso de exame | `ap_lo` | int |
+| Colesterol | Recurso de exame | `cholesterol` | 1: normal, 2: acima do normal, 3: bem acima do normal |
+| Glicose | Recurso de exame | `gluc` | 1: normal, 2: acima do normal, 3: bem acima do normal |
+| Fumar | Recurso subjetivo | `smoke` | binário |
+| Consumo de álcool | Recurso subjetivo | `alco` | binário |
+| Atividade física | Recurso subjetivo | `active` | binário |
+| Presença ou ausência de doenças cardiovasculares | Variável alvo | `cardio` | binário |
## Tarefas
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
index a4b1ca0de01..8081b745103 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
@@ -9,7 +9,7 @@ dashedName: step-11
O texto de um link deve ser colocado entre as tags de abertura e fechamento de um elemento de âncora (`a`). Por exemplo, `click here to go to freeCodeCamp.org` é um link com o texto `click here to go to freeCodeCamp.org`.
-Adicione o texto `cat photos` ao elemento de âncora. Ele se tornará o texto do link.
+Adicione o texto `link to cat pictures` ao elemento de âncora. Ele se tornará o texto do link.
# --hints--
@@ -25,12 +25,12 @@ O elemento de âncora (`a`) deve ter uma tag de fechamento. As tags de fechament
assert(code.match(/<\/a\>/));
```
-O elemento de âncora (`a`) deve conter o texto `cat photos`. Certifique-se de colocar o texto do link entre as tags de abertura e de fechamentoa do elemento de âncora (`a`).
+O elemento de âncora (`a`) deve conter o texto `link to cat pictures`. Certifique-se de colocar o texto do link entre as tags de abertura e de fechamentoa do elemento de âncora (`a`).
```js
assert(
document.querySelector('a').innerText.toLowerCase().replace(/\s+/g, ' ') ===
- 'cat photos'
+ 'link to cat pictures'
);
```
diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
index 3081524e635..e98ea6d8a19 100644
--- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
+++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ddbd81294d8ddc1510a8e56.md
@@ -9,7 +9,7 @@ dashedName: step-11
Текст посилання повинен бути розміщений між початковим та кінцевим теґами елемента прив'язки (`a`). Наприклад, `click here to go to freeCodeCamp.org` є посиланням з текстом `click here to go to freeCodeCamp.org`.
-Додайте текст `cat photos` до елемента прив'язки. Це буде текстом посилання.
+Додайте текст `link to cat pictures` до елемента прив'язки. Це буде текстом посилання.
# --hints--
@@ -25,12 +25,12 @@ assert(document.querySelector('a'));
assert(code.match(/<\/a\>/));
```
-Текст вашого елемента прив'язки (`a`) повинен бути `cat photos`. Переконайтеся, що розмістили текст посилання між початковим та кінцевим теґами елемента прив'язки (`a`).
+Текст вашого елемента прив'язки (`a`) повинен бути `link to cat pictures`. Переконайтеся, що розмістили текст посилання між початковим та кінцевим теґами елемента прив'язки (`a`).
```js
assert(
document.querySelector('a').innerText.toLowerCase().replace(/\s+/g, ' ') ===
- 'cat photos'
+ 'link to cat pictures'
);
```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a2401b9842721796b72850.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a2401b9842721796b72850.md
new file mode 100644
index 00000000000..19821a99b1c
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a2401b9842721796b72850.md
@@ -0,0 +1,62 @@
+---
+id: 62a2401b9842721796b72850
+title: Крок 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+Надайте своєму елементу `#text` такий текст:
+
+```
+Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town.
+You are in the town square. Where do you want to go? Use the buttons above.
+```
+
+# --hints--
+
+Ваш елемент `#text` повинен мати цитований вище текст.
+
+```js
+const text = document.querySelector('#text');
+assert.equal(text.innerText, "Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.");
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a2409897ec621942234cf6.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a2409897ec621942234cf6.md
new file mode 100644
index 00000000000..a471932d4cd
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a2409897ec621942234cf6.md
@@ -0,0 +1,86 @@
+---
+id: 62a2409897ec621942234cf6
+title: Крок 9
+challengeType: 0
+dashedName: step-9
+---
+
+# --description--
+
+Надайте елементу `#text` властивості `background-color` зі значенням `black`, `color` зі значенням `white` та відступи зі значенням `10px` з усіх боків.
+
+# --hints--
+
+Ви повинні мати селектор `#text`.
+
+```js
+const text = new __helpers.CSSHelp(document).getStyle('#text');
+assert.exists(text);
+```
+
+Ваш елемент `#text` повинен мати `background-color` зі значенням `black`.
+
+```js
+const background = new __helpers.CSSHelp(document).getStyle('#text')?.getPropertyValue('background-color');
+assert.equal(background, 'black');
+```
+
+Ваш елемент `#text` повинен мати `color` зі значенням `white`.
+
+```js
+const color = new __helpers.CSSHelp(document).getStyle('#text')?.getPropertyValue('color');
+assert.equal(color, 'white');
+```
+
+Ваш елемент `#text` повинен мати відступ зі значенням `10px` зі всіх сторін.
+
+```js
+const padding = new __helpers.CSSHelp(document).getStyle('#text')?.getPropertyValue('padding');
+assert.equal(padding, '10px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a241df03c1f61ce936f5d9.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a241df03c1f61ce936f5d9.md
new file mode 100644
index 00000000000..d795195f4b5
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a241df03c1f61ce936f5d9.md
@@ -0,0 +1,101 @@
+---
+id: 62a241df03c1f61ce936f5d9
+title: Крок 14
+challengeType: 0
+dashedName: step-14
+---
+
+# --description--
+
+Зрештою надайте своїм елементам `.stat` властивість `padding-right` зі значенням `10px`.
+
+# --hints--
+
+Ви повинні мати селектор `.stat`.
+
+```js
+const stat = new __helpers.CSSHelp(document).getStyle('.stat');
+assert.exists(stat);
+```
+
+Ваш селектор `.stat` повинен мати `padding-right` зі значенням `10px`.
+
+```js
+const paddingRight = new __helpers.CSSHelp(document).getStyle('.stat')?.getPropertyValue('padding-right');
+assert.equal(paddingRight, '10px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a0a3c0a4b32915d26a6e.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a0a3c0a4b32915d26a6e.md
new file mode 100644
index 00000000000..f8b7dab6340
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a0a3c0a4b32915d26a6e.md
@@ -0,0 +1,132 @@
+---
+id: 62a3a0a3c0a4b32915d26a6e
+title: Крок 19
+challengeType: 0
+dashedName: step-19
+---
+
+# --description--
+
+Вилучіть рядок `console.log("Hello World");`, щоб почати писати код свого проєкту.
+
+В JavaScript змінну використовують для утримання значення. Щоб використати змінну, потрібно оголосити її. Наприклад, щоб оголосити змінну `camperbot`, ви б написали:
+
+```js
+var camperbot;
+```
+
+Ключове слово `var` повідомляє JavaScript, що ви оголошуєте змінну. Оголосіть змінну під назвою `xp`.
+
+# --hints--
+
+Вам не потрібен рядок `console.log("Hello World");` у своєму коді.
+
+```js
+assert.notMatch(code, /console\.log\("Hello World"\);/);
+```
+
+Ви повинні використати ключове слово `var`, щоб оголосити змінну.
+
+```js
+assert.match(code, /var/);
+```
+
+Ви повинні оголосити змінну під назвою `xp`.
+
+```js
+assert.match(code, /xp/);
+```
+
+Ви не повинні присвоювати значення своїй змінній.
+
+```js
+assert.notMatch(code, /var xp =/);
+```
+
+Не забудьте про крапку з комою в кінці рядка.
+
+```js
+assert.match(code, /var xp;/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+--fcc-editable-region--
+console.log("Hello World");
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a488b24fb32b91155d56.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a488b24fb32b91155d56.md
new file mode 100644
index 00000000000..79073d885a1
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a488b24fb32b91155d56.md
@@ -0,0 +1,112 @@
+---
+id: 62a3a488b24fb32b91155d56
+title: Крок 20
+challengeType: 0
+dashedName: step-20
+---
+
+# --description--
+
+Змінним можна присвоїти значення. Якщо так зробити під час оголошення, це називається ініціалізацією. Наприклад:
+
+```js
+var camperbot = "Bot";
+```
+
+Це ініціалізує змінну `camperbot` зі значенням `Bot`. Ініціалізуйте змінну `xp`, щоб вона мала значення `0`.
+
+# --hints--
+
+`xp` повинне мати значення `0`.
+
+```js
+assert.equal(xp, 0);
+```
+
+Вам потрібно ініціалізувати змінну `xp` до `0`. Не забудьте про крапку з комою в кінці рядка.
+
+```js
+assert.match(code, /var\s+xp\s*=\s*0\s*;/)
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+--fcc-editable-region--
+var xp;
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a75d8466a12e009eff76.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a75d8466a12e009eff76.md
new file mode 100644
index 00000000000..f4a2e8cb755
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a75d8466a12e009eff76.md
@@ -0,0 +1,136 @@
+---
+id: 62a3a75d8466a12e009eff76
+title: Крок 21
+challengeType: 0
+dashedName: step-21
+---
+
+# --description--
+
+Ініціалізуйте іншу змінну `health` зі значенням `100` та змінну `gold` зі значенням `50`.
+
+# --hints--
+
+Ви повинні використати `var`, щоб оголосити змінну `health`.
+
+```js
+assert.match(code, /var health/);
+```
+
+Вам потрібно ініціалізувати змінну під назвою `health` зі значенням `100`.
+
+```js
+assert.match(code, /var health\s?=\s?100/);
+```
+
+Ви повинні використати `var`, щоб оголосити змінну `gold`.
+
+```js
+assert.match(code, /var gold/);
+```
+
+Вам потрібно ініціалізувати змінну під назвою `gold` зі значенням `50`.
+
+```js
+assert.match(code, /var gold\s?=\s?50/);
+```
+
+`health` повинна мати значення `100`.
+
+```js
+assert.equal(health, 100);
+```
+
+`gold` повинна мати значення `50`.
+
+```js
+assert.equal(gold, 50);
+```
+
+`xp` досі повинна мати значення `0`.
+
+```js
+assert.equal(xp, 0);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+--fcc-editable-region--
+var xp = 0;
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a7e4f1060e2fc5ffb34b.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a7e4f1060e2fc5ffb34b.md
new file mode 100644
index 00000000000..5007857537b
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3a7e4f1060e2fc5ffb34b.md
@@ -0,0 +1,122 @@
+---
+id: 62a3a7e4f1060e2fc5ffb34b
+title: Крок 22
+challengeType: 0
+dashedName: step-22
+---
+
+# --description--
+
+Створіть іншу змінну `currentWeapon` та встановіть її на 0.
+
+Якщо змінна має пару слів, за правилами JavaScript потрібно використати верблюдячийРегістр. Перше слово з малої літери, а кожне наступне – з великої.
+
+# --hints--
+
+Ви повинні використати `var`, щоб оголосити змінну `currentWeapon`.
+
+```js
+assert.match(code, /var currentweapon/i);
+```
+
+Ви повинні використати верблюдячийРегістр, щоб назвати свою змінну.
+
+```js
+assert.match(code, /currentWeapon/);
+```
+
+Ваша змінна `currentWeapon` повинна бути встановлена на `0`.
+
+```js
+assert.equal(currentWeapon, 0);
+```
+
+Вам потрібно ініціалізувати свою змінну на `0`.
+
+```js
+assert.match(code, /var currentWeapon\s?=\s?0/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+--fcc-editable-region--
+var xp = 0;
+var health = 100;
+var gold = 50;
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3b3eab50e193608c19fc6.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3b3eab50e193608c19fc6.md
new file mode 100644
index 00000000000..291d3873975
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3b3eab50e193608c19fc6.md
@@ -0,0 +1,115 @@
+---
+id: 62a3b3eab50e193608c19fc6
+title: Крок 24
+challengeType: 0
+dashedName: step-24
+---
+
+# --description--
+
+Оголосіть змінну `fighting`, використовуючи ключове слово `let`, але не ініціалізуйте її зі значенням. Не забудьте поставити крапку з комою в кінці рядка.
+
+# --hints--
+
+Ви повинні використати `let`, щоб оголосити змінну `fighting`.
+
+```js
+assert.match(code, /let fighting/);
+```
+
+Ваша змінна `fighting` не повинна мати значення.
+
+```js
+assert.isUndefined(fighting);
+```
+
+Ви не повинні присвоювати значення своїй змінній `fighting`. Не забудьте про крапку з комою в кінці рядка.
+
+```js
+assert.match(code, /let fighting;/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+
+
+```
+
+```css
+body {
+ background-color: darkblue;
+}
+
+#text {
+ background-color: black;
+ color: white;
+ padding: 10px;
+}
+
+#game {
+ max-width: 500px;
+ max-height: 400px;
+ background-color: lightgray;
+ color: white;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+#controls, #stats {
+ border: 1px solid black;
+ padding: 5px;
+ color: black;
+}
+
+#monsterStats {
+ display: none;
+ border: 1px solid black;
+ padding: 5px;
+ color: white;
+ background-color: red;
+}
+
+.stat {
+ padding-right: 10px;
+}
+```
+
+```js
+--fcc-editable-region--
+let xp = 0;
+let health = 100;
+let gold = 50;
+let currentWeapon = 0;
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3b41c9494f937560640ab.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3b41c9494f937560640ab.md
new file mode 100644
index 00000000000..4f377091c90
--- /dev/null
+++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-basic-javascript-by-building-a-role-playing-game/62a3b41c9494f937560640ab.md
@@ -0,0 +1,140 @@
+---
+id: 62a3b41c9494f937560640ab
+title: Крок 25
+challengeType: 0
+dashedName: step-25
+---
+
+# --description--
+
+Оголосіть ще дві змінні `monsterHealth` та `inventory`, але не ініціалізовуйте їх.
+
+# --hints--
+
+Ви повинні використати `let`, щоб оголосити змінну `monsterHealth`.
+
+```js
+assert.match(code, /let monsterHealth/i);
+```
+
+Ви повинні використати верблюдячийРегістр, щоб назвати свою змінну `monsterHealth`.
+
+```js
+assert.match(code, /monsterHealth/);
+```
+
+`monsterHealth` не повинна мати значення.
+
+```js
+assert.isUndefined(monsterHealth);
+```
+
+Ви не повинні присвоювати значення своїй змінній `monsterHealth`. Не забудьте про крапку з комою.
+
+```js
+assert.match(code, /let monsterHealth;/);
+```
+
+Ви повинні використати `let`, щоб оголосити змінну `inventory`.
+
+```js
+assert.match(code, /let inventory/i);
+```
+
+`inventory` не повинна мати значення.
+
+```js
+assert.isUndefined(inventory);
+```
+
+Ви не повинні присвоювати значення своїй змінній `inventory`. Не забудьте про крапку з комою.
+
+```js
+assert.match(code, /let inventory;/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ RPG - Dragon Repeller
+
+
+
+
+
+ XP: 0
+ Health: 100
+ Gold: 50
+
+
+
+
+
+
+
+ Monster Name:
+ Health:
+
+
+ Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+