, { useNewUrlParser: true, useUnifiedTopology: true });
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md
index 6b4450a302f..be3fd40572c 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md
@@ -60,22 +60,33 @@ primeSummation(2000000);
# --solutions--
```js
-function primeSummation(n) {
- if (n < 3) { return 0 };
- let nums = [0, 0, 2];
- for (let i = 3; i < n; i += 2){
- nums.push(i);
- nums.push(0);
- }
- let sum = 2;
- for (let i = 3; i < n; i += 2){
- if (nums[i] !== 0){
- sum += nums[i];
- for (let j = i*i; j < n; j += i){
- nums[j] = 0;
+const NUM_PRIMES = 2000000;
+const PRIME_SEIVE = Array(Math.floor((NUM_PRIMES-1)/2)).fill(true);
+(function initPrimes(num) {
+ const upper = Math.floor((num - 1) / 2);
+ const sqrtUpper = Math.floor((Math.sqrt(num) - 1) / 2);
+ for (let i = 0; i <= sqrtUpper; i++) {
+ if (PRIME_SEIVE[i]) {
+ // Mark value in PRIMES array
+ const prime = 2 * i + 3;
+ // Mark all multiples of this number as false (not prime)
+ const primeSqaredIndex = 2 * i ** 2 + 6 * i + 3;
+ for (let j = primeSqaredIndex; j < upper; j += prime) {
+ PRIME_SEIVE[j] = false;
}
}
}
+})(NUM_PRIMES);
+
+function isOddNumberPrime(num) {
+ return PRIME_SEIVE[(num - 3) / 2];
+}
+
+function primeSummation(n) {
+ let sum = 2;
+ for (let i = 3; i < n; i += 2) {
+ if (isOddNumberPrime(i)) sum += i;
+ }
return sum;
}
```
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-128-hexagonal-tile-differences.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-128-hexagonal-tile-differences.md
index 4d8655b4841..ee97523a343 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-128-hexagonal-tile-differences.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-128-hexagonal-tile-differences.md
@@ -28,10 +28,16 @@ Encontre o 2000º bloco desta sequência.
# --hints--
-`hexagonalTile()` deve retornar `14516824220`.
+`hexagonalTile(10)` deve retornar `271`.
```js
-assert.strictEqual(hexagonalTile(), 14516824220);
+assert.strictEqual(hexagonalTile(10), 271);
+```
+
+`hexagonalTile(2000)` deve retornar `14516824220`.
+
+```js
+assert.strictEqual(hexagonalTile(2000), 14516824220);
```
# --seed--
@@ -39,16 +45,62 @@ assert.strictEqual(hexagonalTile(), 14516824220);
## --seed-contents--
```js
-function hexagonalTile() {
+function hexagonalTile(tileIndex) {
return true;
}
-hexagonalTile();
+hexagonalTile(10);
```
# --solutions--
```js
-// solution required
+const NUM_PRIMES = 840000;
+const PRIME_SEIVE = Array(Math.floor((NUM_PRIMES-1)/2)).fill(true);
+(function initPrimes(num) {
+ const upper = Math.floor((num - 1) / 2);
+ const sqrtUpper = Math.floor((Math.sqrt(num) - 1) / 2);
+ for (let i = 0; i <= sqrtUpper; i++) {
+ if (PRIME_SEIVE[i]) {
+ // Mark value in PRIMES array
+ const prime = 2 * i + 3;
+ // Mark all multiples of this number as false (not prime)
+ const primeSqaredIndex = 2 * i ** 2 + 6 * i + 3;
+ for (let j = primeSqaredIndex; j < upper; j += prime) {
+ PRIME_SEIVE[j] = false;
+ }
+ }
+ }
+})(NUM_PRIMES);
+
+function isPrime(num) {
+ if (num === 2) return true;
+ else if (num % 2 === 0) return false
+ else return PRIME_SEIVE[(num - 3) / 2];
+}
+
+function hexagonalTile(tileIndex) {
+ let count = 1;
+ let n = 1;
+ let number = 0;
+
+ while (count < tileIndex) {
+ if (isPrime(6*n - 1) &&
+ isPrime(6*n + 1) &&
+ isPrime(12*n + 5)) {
+ number = 3*n*n - 3*n + 2;
+ count++;
+ if (count >= tileIndex) break;
+ }
+ if (isPrime(6*n + 5) &&
+ isPrime(6*n - 1) &&
+ isPrime(12*n - 7) && n != 1) {
+ number = 3*n*n + 3*n + 1;
+ count++;
+ }
+ n++;
+ }
+ return number;
+}
```
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md
index 84a8cfb8dfb..ec2917fba0d 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md
@@ -68,13 +68,13 @@ distinctPrimeFactors(4, 4);
```js
// Initalize factor count with seive
-const NUMFACTORS = Array(150000).fill(0);
+const NUMFACTORS = Array(135000).fill(0);
(function initFactors(num) {
for (let i = 2; i < num; i++)
if (NUMFACTORS[i] === 0)
for (let j = i; j < num; j += i)
NUMFACTORS[j]++;
-})(150000);
+})(135000);
function distinctPrimeFactors(targetNumPrimes, targetConsecutive) {
let numConsecutive = 0;
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/hofstadter-figure-figure-sequences.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/hofstadter-figure-figure-sequences.md
index c4f950845ea..b3558a729c0 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/hofstadter-figure-figure-sequences.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/hofstadter-figure-figure-sequences.md
@@ -8,36 +8,28 @@ dashedName: hofstadter-figure-figure-sequences
# --description--
-Estas duas sequências de inteiros positivos são definidas como:
+As sequências de figura-figura de Hofstadter $R_n$ e $S_n$ são dadas por
-$R(1)=1\\ ;\\ S(1)=2 \\\\R(n)=R(n-1)+S(n-1), \\quad n>1.$
+$R_1 = 1\\ ;\\ S_1 = 2 \\\\R_n = R_{n-1} + S_{n-1}, \\quad n>1.$
-A sequência $S(n)$ está definida ainda mais como a sequência de números inteiros positivos não presentes em $R(n)$.
-
-A sequência $R$ inicia assim:
+Especificamente, a sequência $R_n$ contém os valores
1, 3, 7, 12, 18, ...
-A sequência $S$ inicia assim:
+e a sequência $S_n$ contém os valores
2, 4, 5, 6, 8, ...
+A sequência $R_n$ é definida pela relação de recorrência $R_n = R_{n-1} + S_{n-1}$, enquanto $S_n$ é definida como a sequência de números inteiros positivos não incluídos na sequência $R_n$.
+
# --instructions--
-Crie duas funções chamadas `ffr` e `ffs` que, ao receber `n`, retornam `R(n)` ou `S(n)`, respectivamente. (Observe que R(1) = 1 e S(1) = 2 para evitar erros de "fora por um").
+Crie duas funções, chamadas `ffr` e `ffs` que retornem `R(n)` ou `S(n)`, respectivamente, para qualquer índice `n`. Observe que as sequências de figura-figura de Hofstadter são de índice 1, com $R_1 = 1$ e $S_1 = 2$.
Nenhum valor máximo para `n` deve ser assumido.
-**Referências**
+**Referências**Rosetta: sequências de figura-figura de Hofstadter
.
-
# --hints--
@@ -53,13 +45,13 @@ assert(typeof ffr === 'function');
assert(typeof ffs === 'function');
```
-`ffr` deve retornar um inteiro.
+`ffr` deve retornar um número inteiro.
```js
assert(Number.isInteger(ffr(1)));
```
-`ffs` deve retornar um inteiro.
+`ffs` deve retornar um número inteiro.
```js
assert(Number.isInteger(ffs(1)));
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f693e0728f77c87f3020.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f693e0728f77c87f3020.md
index ba60f7bc86d..f4ed6fdb789 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f693e0728f77c87f3020.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f693e0728f77c87f3020.md
@@ -7,7 +7,7 @@ dashedName: step-79
# --description--
-Crie uma terceira `@media` query para `only screen` com uma `max-width` de `550px`. Dentro dele, crie um seletor `.hero-title` com `font-size` definido como `6rem`, um seletor `.hero-subtitle, .author, .quote, .list-header` com `font-size` definido como `1.8rem`, um seletor `.social-icons` com `font-size` definido como `2rem` e um seletor `.text` com `font-size` definido como `1.6rem`.
+Crie uma terceira `@media` query para `only screen` com uma `max-width` de `550px`. Dentro dele, crie um seletor `.hero-title` com `font-size` definido como `6rem`, um seletor `.hero-subtitle, .author, .quote, .list-title` com `font-size` definido como `1.8rem`, um seletor `.social-icons` com `font-size` definido como `2rem` e um seletor `.text` com `font-size` definido como `1.6rem`.
# --hints--
@@ -17,11 +17,11 @@ Você deve ter uma nova `@media` query para `only screen` com uma `max-width` de
assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.media?.mediaText === 'only screen and (max-width: 550px)');
```
-A nova regra `@media` deve ter um seletor `.hero-title`, um seletor `.hero-subtitle, .author, .quote, .list-header` , um seletor `.social-icons` e um seletor `.text`. Esses seletores devem estar nesta ordem.
+A nova regra `@media` deve ter um seletor `.hero-title`, um seletor `.hero-subtitle, .author, .quote, .list-title`, um seletor `.social-icons` e um seletor `.text`. Esses seletores devem estar nesta ordem.
```js
assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[0]?.selectorText === '.hero-title');
-assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[1]?.selectorText === '.hero-subtitle, .author, .quote, .list-header');
+assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[1]?.selectorText === '.hero-subtitle, .author, .quote, .list-title');
assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[2]?.selectorText === '.social-icons');
assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[3]?.selectorText === '.text');
```
@@ -32,7 +32,7 @@ O seletor `.hero-title` deve ter a `font-size` definida como `6rem`.
assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[0]?.style?.fontSize === '6rem');
```
-O seletor `.hero-subtitle, .author, .quote, .list-header` deve ter a `font-size` definida como `1.8rem`.
+O seletor `.hero-subtitle, .author, .quote, .list-title` deve ter a `font-size` definida como `1.8rem`.
```js
assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[1]?.style?.fontSize === '1.8rem');
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f6f7d8914c78e93136ca.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f6f7d8914c78e93136ca.md
index aeb35bd0abf..587663b4402 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f6f7d8914c78e93136ca.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148f6f7d8914c78e93136ca.md
@@ -387,7 +387,7 @@ hr {
.hero-subtitle,
.author,
.quote,
- .list-header {
+ .list-title {
font-size: 1.8rem;
}
@@ -759,7 +759,7 @@ hr {
.hero-subtitle,
.author,
.quote,
- .list-header {
+ .list-title {
font-size: 1.8rem;
}
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md
index fff8d13dccc..634a185c137 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md
@@ -20,7 +20,7 @@ assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1a')?.backgroundColor
Você deve usar `var(--building-color1)` para definir a `background-color` do elemento `.bb1a`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1a')?.backgroundColor.trim(), 'var(--building-color1)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1a')?.getPropVal('background-color', true), 'var(--building-color1)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md
index dcc0931e1f4..c97820f2118 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md
@@ -20,7 +20,7 @@ assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1b')?.backgroundColor
Você deve usar `var(--building-color1)` para definir a `background-color` do elemento `.bb1b`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1b')?.backgroundColor.trim(), 'var(--building-color1)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1b')?.getPropVal('background-color', true), 'var(--building-color1)');
```
A `background-color` do elemento `bb1c` deve ser definida.
@@ -32,7 +32,7 @@ assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1c')?.backgroundColor
Você deve usar `var(--building-color1)` para definir a `background-color` do elemento `.bb1c`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1c')?.backgroundColor.trim(), 'var(--building-color1)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1c')?.getPropVal('background-color', true), 'var(--building-color1)');
```
A `background-color` do elemento `bb1d` deve ser definida.
@@ -44,7 +44,7 @@ assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1d')?.backgroundColor
Você deve usar `var(--building-color1)` para definir a `background-color` do elemento `.bb1d`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1d')?.backgroundColor.trim(), 'var(--building-color1)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1d')?.getPropVal('background-color', true), 'var(--building-color1)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98de.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98de.md
index de9920518c7..970146cefc0 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98de.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98de.md
@@ -32,7 +32,7 @@ assert.exists(new __helpers.CSSHelp(document).getStyle('.bb2')?.backgroundColor)
Você deve definir a `background-color` usando a variável `--building-color2`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2')?.backgroundColor.trim(), 'var(--building-color2)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2')?.getPropVal('background-color', true), 'var(--building-color2)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98df.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98df.md
index 7e371ef32d7..ac7735abc2e 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98df.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98df.md
@@ -14,7 +14,7 @@ Hmm, eu não sei porque isso não funcionou. Você pode adicionar um valor subst
Você deve adicionar um valor substituto de `green` na propriedade `background-color`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2')?.backgroundColor.trim(), 'var(--building-color2, green)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2')?.getPropVal('background-color', true), 'var(--building-color2,green)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e0.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e0.md
index 7dcf6ee7257..c2761479d87 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e0.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e0.md
@@ -32,7 +32,7 @@ assert.exists(new __helpers.CSSHelp(document).getStyle('.bb3')?.backgroundColor)
Você deve definir a `background-color` usando a variável `--building-color3` com um valor substituto de `pink`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb3')?.backgroundColor.trim(), 'var(--building-color3, pink)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb3')?.getPropVal('background-color', true), 'var(--building-color3,pink)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e2.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e2.md
index eeaedea617d..26656ee3676 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e2.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98e2.md
@@ -14,13 +14,13 @@ Agora que você resolveu os erros e os prédios estão com a cor correta, você
Você deve remover os valores alternativos no `background-color` de `.bb2`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2')?.backgroundColor, 'var(--building-color2)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2')?.getPropVal('background-color', true), 'var(--building-color2)');
```
Você deve remover os valores alternativos no `background-color` de `.bb3`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.bb3')?.backgroundColor.trim(), 'var(--building-color3)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb3')?.getPropVal('background-color', true), 'var(--building-color3)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98eb.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98eb.md
index bfa2c2174ef..d4c04bff432 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98eb.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98eb.md
@@ -14,37 +14,37 @@ O horizonte está quase pronto. Preencha a propriedade `background-color` dos ed
Você deve dar a `.fb1` um `background-color` usando `--building-color4`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.fb1')?.backgroundColor.trim(), 'var(--building-color4)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.fb1')?.getPropVal('background-color', true), 'var(--building-color4)');
```
Você deve dar a `.fb2` um `background-color` usando `--building-color3`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.fb2')?.backgroundColor, 'var(--building-color3)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.fb2')?.getPropVal('background-color', true), 'var(--building-color3)');
```
Você deve dar a `.fb3` um `background-color` usando `--building-color1`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.fb3')?.backgroundColor, 'var(--building-color1)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.fb3')?.getPropVal('background-color', true), 'var(--building-color1)');
```
Você deve dar a `.fb4` um `background-color` usando `--building-color1`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.fb4')?.backgroundColor, 'var(--building-color1)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.fb4')?.getPropVal('background-color', true), 'var(--building-color1)');
```
Você deve dar a `.fb5` um `background-color` usando`--building-color2`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.fb5')?.backgroundColor, 'var(--building-color2)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.fb5')?.getPropVal('background-color', true), 'var(--building-color2)');
```
Você deve dar a `.fb6` um `background-color` usando `--building-color3`.
```js
-assert.equal(new __helpers.CSSHelp(document).getStyle('.fb6')?.backgroundColor, 'var(--building-color3)');
+assert.equal(new __helpers.CSSHelp(document).getStyle('.fb6')?.getPropVal('background-color', true), 'var(--building-color3)');
```
# --seed--
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804dc.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804dc.md
index 6e26edaac5c..905c9e68b38 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804dc.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804dc.md
@@ -72,12 +72,12 @@ const radioInputElem = $('input')[0];
assert(!radioInputElem.previousSibling.nodeValue.match(/Indoor/i));
```
-O texto `Indoor` deve estar localizado diretamente à direita do seu botão `radio`. Certifique-se de que haja um espaço entre o elemento e o texto. Você omitiu o texto ou tem um erro de digitação.
+O texto `Indoor` deve estar localizado diretamente à direita do seu botão `radio`. Você omitiu o texto ou tem um erro de digitação.
```js
const radioInputElem = $('input')[0];
assert(
- radioInputElem.nextSibling.nodeValue.replace(/\s+/g, ' ').match(/ Indoor/i)
+ radioInputElem.nextSibling.nodeValue.replace(/\s+/g, ' ').match(/Indoor/i)
);
```
diff --git a/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md b/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md
index 511333a5542..5cc346a57c6 100644
--- a/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md
+++ b/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-10-summation-of-primes.md
@@ -60,22 +60,33 @@ primeSummation(2000000);
# --solutions--
```js
-function primeSummation(n) {
- if (n < 3) { return 0 };
- let nums = [0, 0, 2];
- for (let i = 3; i < n; i += 2){
- nums.push(i);
- nums.push(0);
- }
- let sum = 2;
- for (let i = 3; i < n; i += 2){
- if (nums[i] !== 0){
- sum += nums[i];
- for (let j = i*i; j < n; j += i){
- nums[j] = 0;
+const NUM_PRIMES = 2000000;
+const PRIME_SEIVE = Array(Math.floor((NUM_PRIMES-1)/2)).fill(true);
+(function initPrimes(num) {
+ const upper = Math.floor((num - 1) / 2);
+ const sqrtUpper = Math.floor((Math.sqrt(num) - 1) / 2);
+ for (let i = 0; i <= sqrtUpper; i++) {
+ if (PRIME_SEIVE[i]) {
+ // Mark value in PRIMES array
+ const prime = 2 * i + 3;
+ // Mark all multiples of this number as false (not prime)
+ const primeSqaredIndex = 2 * i ** 2 + 6 * i + 3;
+ for (let j = primeSqaredIndex; j < upper; j += prime) {
+ PRIME_SEIVE[j] = false;
}
}
}
+})(NUM_PRIMES);
+
+function isOddNumberPrime(num) {
+ return PRIME_SEIVE[(num - 3) / 2];
+}
+
+function primeSummation(n) {
+ let sum = 2;
+ for (let i = 3; i < n; i += 2) {
+ if (isOddNumberPrime(i)) sum += i;
+ }
return sum;
}
```
diff --git a/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md b/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md
index 5404f345299..a3f1ec3ab3e 100644
--- a/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md
+++ b/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-47-distinct-primes-factors.md
@@ -68,13 +68,13 @@ distinctPrimeFactors(4, 4);
```js
// Initalize factor count with seive
-const NUMFACTORS = Array(150000).fill(0);
+const NUMFACTORS = Array(135000).fill(0);
(function initFactors(num) {
for (let i = 2; i < num; i++)
if (NUMFACTORS[i] === 0)
for (let j = i; j < num; j += i)
NUMFACTORS[j]++;
-})(150000);
+})(135000);
function distinctPrimeFactors(targetNumPrimes, targetConsecutive) {
let numConsecutive = 0;