```
-Agrega el "id" `left-well` al elemento de la izquierda de la clase "well". Agrega el "id" `right-well` al elemento de la derecha de la clase "well".
+Agrega el "id" `left-well` al elemento de la izquierda con la clase "well". Agrega el "id" `right-well` al elemento de la derecha con la clase "well".
# --hints--
-El elemento de la izquierda de la clase `well` deberá tener el "id" `left-well`.
+El elemento de la izquierda con la clase `well` debe tener el "id" `left-well`.
```js
assert(
@@ -33,7 +33,7 @@ assert(
);
```
-El elemento de la derecha de la clase `well` deberá tener el "id" `right-well`.
+El elemento de la derecha con la clase `well` debe tener el "id" `right-well`.
```js
assert(
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/call-out-optional-actions-with-btn-info.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/call-out-optional-actions-with-btn-info.md
index e70158147e..db27726a3a 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/call-out-optional-actions-with-btn-info.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/call-out-optional-actions-with-btn-info.md
@@ -8,7 +8,7 @@ dashedName: call-out-optional-actions-with-btn-info
# --description--
-Bootstrap viene con diferentes colores predefinidos para botones. La clase `btn-info` se utiliza para llamar la atención sobre las acciones opcionales que el usuario puede realizar.
+Bootstrap viene con varios colores predefinidos para los botones. La clase `btn-info` se utiliza para llamar la atención sobre las acciones opcionales que el usuario puede realizar.
Crea un nuevo botón de Bootstrap debajo de tu botón `Like` con el texto `Info` y añádele las clases de Bootstrap `btn-info` y `btn-block`.
@@ -22,7 +22,7 @@ Debes crear un nuevo elemento `button` con el texto `Info`.
assert(new RegExp('info', 'gi').test($('button').text()));
```
-Ambos botones deben tener las clases `btn` y `btn-block`.
+Tus dos botones de Bootstrap deben tener las clases `btn` y `btn-block`.
```js
assert($('button.btn-block.btn').length > 1);
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/center-text-with-bootstrap.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/center-text-with-bootstrap.md
index ad681c0aa5..50efd9da38 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/center-text-with-bootstrap.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/center-text-with-bootstrap.md
@@ -8,9 +8,9 @@ dashedName: center-text-with-bootstrap
# --description--
-Ahora que estamos usando Bootstrap, podemos centrar el encabezado para que luzca mejor. Todo lo que necesitamos hacer es añadir la clase `text-center` a nuestro elemento `h2`.
+Ahora que estamos usando Bootstrap, podemos centrar nuestro encabezado para que luzca mejor. Lo único que necesitamos hacer es agregar la clase `text-center` a nuestro elemento `h2`.
-Recuerda que puedes añadir varias clases al mismo elemento separando cada una de ellas con un espacio:
+Recuerda que puedes agregar varias clases al mismo elemento separando cada una de ellas con un espacio, de la siguiente manera:
```html
your text
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-block-element-bootstrap-button.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-block-element-bootstrap-button.md
index 1e31f61f80..6a7338ed26 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-block-element-bootstrap-button.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-block-element-bootstrap-button.md
@@ -1,6 +1,6 @@
---
id: bad87fee1348cd8acef08812
-title: Crear un botón Bootstrap como elemento de bloque
+title: Crea un botón Bootstrap como elemento de bloque
challengeType: 0
forumTopicId: 16810
dashedName: create-a-block-element-bootstrap-button
@@ -8,7 +8,7 @@ dashedName: create-a-block-element-bootstrap-button
# --description--
-Normalmente, tus elementos `button` con las clases `btn` y `btn-default` son tan anchos como el texto que contienen. Por ejemplo:
+Normalmente, tus elementos `button` con las clases `btn` y `btn-default` son tan anchos como el texto que los contiene. Por ejemplo:
```html
@@ -16,9 +16,9 @@ Normalmente, tus elementos `button` con las clases `btn` y `btn-default` son tan
Este botón será tan ancho como la palabra `Submit`.
-
+
-Al hacer los elementos de bloque con la clase `btn-block`, tu botón ocupará el ancho horizontal de la página y cualquier elemento que lo siga se posicionará en una "nueva línea" debajo del bloque.
+Al convertirlos en elementos de bloque con la clase adicional `btn-block`, tu botón se estirará para llenar completamente el espacio horizontal de tu página y cualquier elemento siguiente se posicionará en una "nueva línea" debajo del bloque.
```html
@@ -26,27 +26,27 @@ Al hacer los elementos de bloque con la clase `btn-block`, tu botón ocupará el
Este botón tomará el 100% del ancho disponible.
-
+
Ten en cuenta que estos botones aún necesitan la clase `btn`.
-Añade la clase `btn-block` a tu botón Bootstrap.
+Agrega la clase de Bootstrap `btn-block` a tu botón de Bootstrap.
# --hints--
-Tu botón debe contener las clases `btn` y `btn-default`.
+Tu botón debe conservar las clases `btn` y `btn-default`.
```js
assert($('button').hasClass('btn') && $('button').hasClass('btn-default'));
```
-Tu botón debe contener la clase `btn-block`.
+Tu botón debe conservar la clase `btn-block`.
```js
assert($('button').hasClass('btn-block'));
```
-Todos tu elementos `button` deben tener etiquetas de cierre.
+Todos tus elementos `button` deben tener etiquetas de cierre.
```js
assert(
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-button.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-button.md
index 4c80afe699..f1bc408acd 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-button.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-button.md
@@ -8,7 +8,7 @@ dashedName: create-a-bootstrap-button
# --description--
-Bootstrap tiene sus propios estilos para los elementos `button`, que se ven mucho mejor que el HTML plano.
+Bootstrap tiene sus propios estilos para los elementos `button`, que se ven mucho mejor que los de HTML puro.
Crea un nuevo elemento `button` debajo de la foto grande de tu gatito. Dale las clases `btn` y `btn-default`, así como el texto de `Like`.
@@ -23,13 +23,13 @@ assert(
);
```
-Tu nuevo botón debería tener dos clases: `btn` y `btn-default`.
+Tu nuevo botón debe tener dos clases: `btn` y `btn-default`.
```js
assert($('button').hasClass('btn') && $('button').hasClass('btn-default'));
```
-Todos los elementos `button` deben tener etiquetas de cierre.
+Todos los elementos de tu `button` deben tener etiquetas de cierre.
```js
assert(
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-headline.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-headline.md
index 978760ec6b..83dd224f8d 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-headline.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-bootstrap-headline.md
@@ -1,6 +1,6 @@
---
id: bad87fee1348bd9aec908846
-title: Crear un encabezado de Bootstrap
+title: Crea un encabezado de Bootstrap
challengeType: 0
forumTopicId: 16812
dashedName: create-a-bootstrap-headline
@@ -34,7 +34,7 @@ assert(
);
```
-Tu elemento `h3` debe estar coloreado al aplicar la clase `text-primary`
+Tu elemento `h3` debe ser coloreado aplicando la clase `text-primary`
```js
assert($('h3').hasClass('text-primary'));
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-class-to-target-with-jquery-selectors.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-class-to-target-with-jquery-selectors.md
index 4d2c8bebdb..fefb977c20 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-class-to-target-with-jquery-selectors.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-class-to-target-with-jquery-selectors.md
@@ -1,6 +1,6 @@
---
id: bad87fee1348bd9aec908852
-title: Crear una clase para apuntar con selectores jQuery
+title: Crear una clase para seleccionar con selectores jQuery
challengeType: 0
forumTopicId: 16815
dashedName: create-a-class-to-target-with-jquery-selectors
@@ -8,7 +8,7 @@ dashedName: create-a-class-to-target-with-jquery-selectors
# --description--
-No todas las clases necesitan tener CSS correspondientes. A veces creamos clases sólo con el propósito de seleccionar aquellos elementos más fácilmente utilizando jQuery.
+No es necesario que todas las clases tengan su correspondiente CSS. A veces creamos clases sólo con el propósito de seleccionar aquellos elementos más fácilmente utilizando jQuery.
Dale a cada uno de tus elementos `button` la clase `target`.
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-custom-heading.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-custom-heading.md
index 3aa2946413..c0c5dce1ff 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-custom-heading.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-a-custom-heading.md
@@ -8,11 +8,11 @@ dashedName: create-a-custom-heading
# --description--
-Crearemos un título simple para nuestra aplicación de fotos de gatos colocando el título y la imagen relajante del gato en la misma fila.
+Haremos un encabezado simple para nuestro 'Cat Photo App' colocando el título y la imagen del gato relajándose en la misma fila.
-Recuerda, Bootstrap usa un sistema de cuadrícula responsivo, lo que facilita la colocación de elementos en filas y especifica el ancho relativo de cada elemento. La mayoría de las clases de Bootstrap se pueden aplicar a un elemento `div`.
+Recuerda que Bootcamp utiliza un sistema de cuadrícula responsivo, el cual hace más fácil poner elementos en filas y especificar el ancho relativo de cada elemento. La mayoría de las clases de Bootstrap pueden ser aplicadas a un elemento `div`.
-Anida tu primera imagen y tu elemento `h2` dentro de un solo elemento `
`. Anida tu elemento `h2` dentro de un `
` y tu imagen en un `
` de modo que estén en la misma línea.
+Anida tu primera imagen y tu elemento `h2` dentro de un solo elemento `
`. Anida tu elemento `h2` dentro de `
` y tu imagen en un `
` para que estén en la misma línea.
¿Observas cómo la imagen ahora tiene el tamaño adecuado para ajustarse al texto?
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-bootstrap-wells.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-bootstrap-wells.md
index 74a6d4923f..1cc045edb0 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-bootstrap-wells.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/create-bootstrap-wells.md
@@ -8,25 +8,25 @@ dashedName: create-bootstrap-wells
# --description--
-Bootstrap tiene una clase llamada `well` (pozo) que puede crear una ilusión visual de profundidad en las columnas.
+Bootstrap tiene una clase llamada `well` que puede crear una sensación visual de profundidad en tus columnas.
-Incrusta un elemento `div` con la clase `well` en cada uno de los elementos `col-xs-6` y `div`.
+Anida un elemento `div` con la clase `well` dentro de cada uno de tus elementos `col-xs-6` `div`.
# --hints--
-Debes añadir un elemento `div` con la clase `well` dentro de cada uno de los elementos `div` con la clase `col-xs-6`
+Debes añadir un elemento `div` con la clase `well` dentro de cada uno de tus elementos `div` con la clase `col-xs-6`
```js
assert($('div.col-xs-6').not(':has(>div.well)').length < 1);
```
-Ambos elementos `div` con la clase `col-xs-6` deben estar incrustados en el elemento `div` con la clase `row`.
+Ambos de tus elementos `div` con la clase `col-xs-6` deben estar anidados dentro de tu elemento `div` con la clase `row`.
```js
assert($('div.row > div.col-xs-6').length > 1);
```
-Todos los elementos `div` deben tener etiquetas de cierre.
+Todos tus elementos `div` deben tener etiquetas de cierre.
```js
assert(
diff --git a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/ditch-custom-css-for-bootstrap.md b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/ditch-custom-css-for-bootstrap.md
index 51089db04b..6561a5cc14 100644
--- a/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/ditch-custom-css-for-bootstrap.md
+++ b/curriculum/challenges/espanol/03-front-end-development-libraries/bootstrap/ditch-custom-css-for-bootstrap.md
@@ -1,6 +1,6 @@
---
id: bad87fee1347bd9aedf08845
-title: Deja de lado el CSS personalizado por Bootstrap
+title: Adiós CSS Personalizado. Hola Bootstrap
challengeType: 0
forumTopicId: 17565
dashedName: ditch-custom-css-for-bootstrap
@@ -8,31 +8,31 @@ dashedName: ditch-custom-css-for-bootstrap
# --description--
-Podemos limpiar nuestro código y hacer que nuestra aplicación de fotos de gatos parezca más convencional, usando los estilos incorporados de Bootstrap, en lugar de los estilos personalizados que hemos creado antes.
+Podemos limpiar nuestro código y hacer que nuestro 'Cat Photo App' se vea más convencional utilizando los estilos incorporados de Bootstrap en lugar de los estilos personalizados que creamos antes.
-No te preocupes – tendremos mucho tiempo para personalizar nuestro CSS más adelante.
+No te preocupes - habrá mucho tiempo para personalizar nuestro CSS después.
-Elimina las declaraciones de CSS `.red-text`, `p` y `.smaller-image` de tu elemento `style` para que la únicas declaraciones que queden en tu elemento `style` sean `h2` y `thick-green-border`.
+Borra las declaraciones de CSS `.red-text`, `p` y `.smaller-image` de tu elemento `style` para que las únicas declaraciones en tu elemento `style` sean `h2` y `thick-green-border`.
-A continuación elimina el elemento `p` que contiene un enlace roto. Después elimina la clase `red-text` de tu elemento `h2` y reemplázala con la clase `text-primary` de Bootstrap.
+Luego, borra el elemento `p` que contiene un enlace muerto. Después, borra la clase `red-text` de tu elemento `h2` y reemplázalo con la clase de Bootstrap `text-primary`.
-Finalmente elimina la clase `smaller-image` de tu primer elemento `img` y reemplázala con la clase `img-responsive`.
+Finalmente, remueve la clase `smaller-image` de tu primer elemento `img` y reemplázalo con la clase `img-responsive`.
# --hints--
-Tu elemento `h2` ya no debería incluir la clase `red-text`.
+Tu elemento `h2` ya no debe tener la clase `red-text`.
```js
assert(!$('h2').hasClass('red-text'));
```
-Tu elemento `h2` ahora debe incluir la clase `text-primary`.
+Tu elemento `h2` ahora debe tener la clase `text-primary`.
```js
assert($('h2').hasClass('text-primary'));
```
-Tus elementos p (párrafo) ya no deben usar la fuente `Monospace`.
+Tus elementos de párrafo ya no deben usar la fuente `Monospace`.
```js
assert(
@@ -42,7 +42,7 @@ assert(
);
```
-La clase `smaller-image` debe ser eliminada de tu imagen superior.
+La clase `smaller-image` debe ser removida de tu imagen superior.
```js
assert(!$('img').hasClass('smaller-image'));
diff --git a/curriculum/challenges/italian/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md b/curriculum/challenges/italian/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md
index 622d817ed6..069d27bebb 100644
--- a/curriculum/challenges/italian/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md
+++ b/curriculum/challenges/italian/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md
@@ -22,7 +22,7 @@ Segui
, { useNewUrlParser: true, useUnifiedTopology: true });
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-or-equal-to-operator.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-or-equal-to-operator.md
index 2d63322ffd..b60bafe849 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-or-equal-to-operator.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-greater-than-or-equal-to-operator.md
@@ -9,7 +9,7 @@ dashedName: comparison-with-the-greater-than-or-equal-to-operator
# --description--
-O operador maior ou igual que (`>`) compara os valores de dois números. Se o número à esquerda é maior ou igual ao número à direita, ele retorna `true`. Caso contrário, ele retornará `false`.
+O operador maior ou igual que (`>=`) compara os valores de dois números. Se o número à esquerda é maior ou igual ao número à direita, ele retorna `true`. Caso contrário, ele retornará `false`.
Tal como o operador de igualdade, o operador maior que converterá os tipos de dados de valores enquanto compara.
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-inequality-operator.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-inequality-operator.md
index 6cc1b90581..caae841cd7 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-inequality-operator.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-inequality-operator.md
@@ -9,7 +9,7 @@ dashedName: comparison-with-the-strict-inequality-operator
# --description--
-O operador de desigualdade estrito (`!=`) é o oposto lógico do operador de igualdade estrito. Significa que "não é estritamente igual" e retorna `false` onde a igualdade estrita retornaria `true` e *vice-versa*. O operador de desigualdade estrita não converterá tipos de dados.
+O operador de desigualdade estrito (`!==`) é o oposto lógico do operador de igualdade estrito. Significa que "não é estritamente igual" e retorna `false` onde a igualdade estrita retornaria `true` e *vice-versa*. O operador de desigualdade estrita não converterá tipos de dados.
**Exemplos**
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md
index 1f10fa047a..db5a7e25c5 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md
@@ -8,27 +8,25 @@ dashedName: understanding-the-differences-between-the-freecodecamp-and-browser-c
# --description--
-Você pode ter percebido que alguns dos desafios de JavaScript da freeCodeCamp incluem seu próprio console. Esse console se comporta um pouco diferente do console do navegador que você utilizou no último desafio.
+Você pode ter percebido que alguns dos desafios do freeCodeCamp incluem seu próprio console. Este console se comporta um pouco diferente do console do navegador.
-O desafio a seguir tem a finalidade de destacar a principal diferença entre o console do freeCodeCamp e do navegador.
-
-Quando você executa JavaScript comum, o console do navegado exibirá suas instruções `console.log()` a exata quantidade de vezes que é chamada.
-
-O console do freeCodeCamp irá imprimir suas instruções `console.log()` um curto período depois do editor detectar mudança no script, e também durante o teste.
-
-O console do freeCodeCamp é apagado antes de cada execução de testes e, para evitar spam, só imprime os logs durante o primeiro teste (veja a nota abaixo para exceções).
-
-Se você gostaria de ver todos os logs em todos os testes, execute os testes e abra o console do navegador. Se preferir usar o console do navegador e quiser que ele imite o console do freeCodeCamp, coloque `console.clear()` antes de qualquer outra chamada ao `console`, para apagar o console do navegador.
-
-**Observação:** `console.log` dentro de funções é impresso no console do freeCodeCamp toda vez que essas funções forem chamadas. Isso pode ajudar a depurar (ou debugar) funções que são chamadas durante os testes.
+Existem muitos métodos para usar no `console` para exibir mensagens. `log`, `warn` e `clear` são alguns deles. O console do freeCodeCamp só produzirá mensagens de `log`. Já o console do navegador mostrará todas as mensagens. Quando você fizer alterações em seu código, ele será executado e mostrará automaticamente os logs. O console do freeCodeCamp é limpo cada vez que o código é executado.
# --instructions--
-Primeiro, use `console.log` para exibir a variável `output`. Em seguida, use `console.clear` para apagar o console do navegador.
+Primeiro, abra o console do navegador para poder ver os registros (logs). Para fazer isso, clique com o botão direito na barra de navegação do freeCodeCamp, na parte superior, e clique em `inspect` na maioria dos navegadores. Em seguida, encontre a aba `console` na janela que é aberta.
+
+Depois disso, use `console.log` para registrar a variável `output`. Veja os dois consoles para ver o log. Por fim, use `console.clear` depois do registro para limpar o console do navegador. Veja a diferença entre os dois consoles.
# --hints--
-Você deve usar `console.clear()` para apagar o console do navegador.
+Você deve usar `console.log()` para imprimir a variável `output`.
+
+```js
+assert(__helpers.removeWhiteSpace(code).match(/console\.log\(output\)/));
+```
+
+Você deve usar `console.clear()` para limpar o console do navegador.
```js
assert(
@@ -38,10 +36,14 @@ assert(
);
```
-Você deve usar `console.log()` para imprimir a variável `output`.
+Você deve limpar o console após o registro (log).
```js
-assert(__helpers.removeWhiteSpace(code).match(/console\.log\(output\)/));
+assert(
+ __helpers
+ .removeWhiteSpace(code)
+ .match(/console\.log\(output\)[\s\S]*console.clear\(\)/)
+);
```
# --seed--
@@ -49,25 +51,15 @@ assert(__helpers.removeWhiteSpace(code).match(/console\.log\(output\)/));
## --seed-contents--
```js
-// Open your browser console.
-let output = "Get this to log once in the freeCodeCamp console and twice in the browser console";
-// Use console.log() to print the output variable.
+let output = "Get this to show once in the freeCodeCamp console and not at all in the browser console";
-// Run the tests to see the difference between the two consoles.
-
-// Now, add console.clear() before your console.log() to clear the browser console, and pass the tests.
```
# --solutions--
```js
-// Open your browser console.
-let output = "Get this to log once in the freeCodeCamp console and twice in the browser console";
-// Use console.log() to print the output variable.
-console.clear();
+let output = "Get this to show once in the freeCodeCamp console and not at all in the browser console";
+
console.log(output);
-
-// Run the tests to see the difference between the two consoles.
-
-// Now, add console.clear() before your console.log() to clear the browser console, and pass the tests.
+console.clear();
```
diff --git a/curriculum/challenges/portuguese/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md b/curriculum/challenges/portuguese/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md
index 8afee665f7..f35b0116b6 100644
--- a/curriculum/challenges/portuguese/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md
+++ b/curriculum/challenges/portuguese/05-back-end-development-and-apis/mongodb-and-mongoose/install-and-set-up-mongoose.md
@@ -22,7 +22,7 @@ Siga , { useNewUrlParser: true, useUnifiedTopology: true });
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/insert-an-element-into-a-max-heap.md b/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/insert-an-element-into-a-max-heap.md
index 3b9c0f67f6..bfa72f8565 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/insert-an-element-into-a-max-heap.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/insert-an-element-into-a-max-heap.md
@@ -133,20 +133,28 @@ var MaxHeap = function() {
```js
var MaxHeap = function() {
// Only change code below this line
- this.heap = [null];
- this.insert = (ele) => {
- var index = this.heap.length;
- var arr = [...this.heap];
- arr.push(ele);
- while (ele > arr[Math.floor(index / 2)] && index > 1) {
- arr[index] = arr[Math.floor(index / 2)];
- arr[Math.floor(index / 2)] = ele;
- index = arr[Math.floor(index / 2)];
- }
- this.heap = arr;
+ this.heap = [];
+ this.parent = index => {
+ return Math.floor((index - 1) / 2);
+ }
+ this.insert = element => {
+ this.heap.push(element);
+ this.heapifyUp(this.heap.length - 1);
+ }
+ this.heapifyUp = index => {
+ let currentIndex = index,
+ parentIndex = this.parent(currentIndex);
+ while (currentIndex > 0 && this.heap[currentIndex] > this.heap[parentIndex]) {
+ this.swap(currentIndex, parentIndex);
+ currentIndex = parentIndex;
+ parentIndex = this.parent(parentIndex);
+ }
+ }
+ this.swap = (index1, index2) => {
+ [this.heap[index1], this.heap[index2]] = [this.heap[index2], this.heap[index1]];
}
this.print = () => {
- return this.heap.slice(1);
+ return this.heap;
}
// Only change code above this line
};
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/remove-an-element-from-a-max-heap.md b/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/remove-an-element-from-a-max-heap.md
index 0a41765d45..230ca85f7d 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/remove-an-element-from-a-max-heap.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/remove-an-element-from-a-max-heap.md
@@ -114,21 +114,29 @@ assert(
## --seed-contents--
```js
-var MaxHeap = function() {
- this.heap = [null];
- this.insert = (ele) => {
- var index = this.heap.length;
- var arr = [...this.heap];
- arr.push(ele);
- while (ele > arr[Math.floor(index / 2)] && index > 1) {
- arr[index] = arr[Math.floor(index / 2)];
- arr[Math.floor(index / 2)] = ele;
- index = arr[Math.floor(index / 2)];
+var MaxHeap = function () {
+ this.heap = [];
+ this.parent = index => {
+ return Math.floor((index - 1) / 2);
+ }
+ this.insert = element => {
+ this.heap.push(element);
+ this.heapifyUp(this.heap.length - 1);
+ }
+ this.heapifyUp = index => {
+ let currentIndex = index,
+ parentIndex = this.parent(currentIndex);
+ while (currentIndex > 0 && this.heap[currentIndex] > this.heap[parentIndex]) {
+ this.swap(currentIndex, parentIndex);
+ currentIndex = parentIndex;
+ parentIndex = this.parent(parentIndex);
}
- this.heap = arr;
+ }
+ this.swap = (index1, index2) => {
+ [this.heap[index1], this.heap[index2]] = [this.heap[index2], this.heap[index1]];
}
this.print = () => {
- return this.heap.slice(1);
+ return this.heap;
}
// Only change code below this line
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-100-arranged-probability.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-100-arranged-probability.md
index 1d44675e28..4bf56bc5c5 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-100-arranged-probability.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-100-arranged-probability.md
@@ -1,6 +1,6 @@
---
id: 5900f3d01000cf542c50fee3
-title: 'Problem 100: Arranged probability'
+title: 'Problema 100: Probabilidade com arranjo'
challengeType: 5
forumTopicId: 301724
dashedName: problem-100-arranged-probability
@@ -8,47 +8,47 @@ dashedName: problem-100-arranged-probability
# --description--
-If a box contains twenty-one colored discs, composed of fifteen blue discs and six red discs, and two discs were taken at random, it can be seen that the probability of taking two blue discs.
+Suponha que uma caixa tem vinte e um discos coloridos, quinze discos azuis e seis discos vermelhos. Se dois discos forem escolhidos aleatoriamente, é possível ver a probabilidade de receber dois discos azuis.
$${P(BB)} = \frac{15}{21}×\frac{14}{20} = \frac{1}{2}$$
-The next such arrangement, for which there is exactly a 50% chance of taking two blue discs at random, is a box containing eighty-five blue discs and thirty-five red discs.
+O arranjo seguinte, para o qual há exatamente 50% de chance de pegar dois discos azuis ao acaso, é uma caixa contendo oitenta e cinco discos azuis e trinta e cinco discos vermelhos.
-By finding the first arrangement to contain over `limit` discs in total, determine the number of blue discs that the box would contain.
+Ao encontrar o primeiro arranjo contendo `limit` discos no total, determine o número de discos azuis que a caixa contém.
# --hints--
-`arrangedProbability(20)` should return a number.
+`arrangedProbability(20)` deve retornar um número.
```js
assert(typeof arrangedProbability(10) === 'number');
```
-`arrangedProbability(20)` should return `15`.
+`arrangedProbability(20)` deve retornar `15`.
```js
assert.strictEqual(arrangedProbability(20), 15);
```
-`arrangedProbability(100)` should return `85`.
+`arrangedProbability(100)` deve retornar `85`.
```js
assert.strictEqual(arrangedProbability(100), 85);
```
-`arrangedProbability(100000)` should return `97513`.
+`arrangedProbability(100000)` deve retornar `97513`.
```js
assert.strictEqual(arrangedProbability(100000), 97513);
```
-`arrangedProbability(1000000000)` should return `3822685023`.
+`arrangedProbability(1000000000)` deve retornar `3822685023`.
```js
assert.strictEqual(arrangedProbability(1000000000), 3822685023);
```
-`arrangedProbability(1000000000000)` should return `756872327473`.
+`arrangedProbability(1000000000000)` deve retornar `756872327473`.
```js
assert.strictEqual(arrangedProbability(1000000000000), 756872327473);
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-101-optimum-polynomial.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-101-optimum-polynomial.md
index cd51f0f2ec..21be3de807 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-101-optimum-polynomial.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-101-optimum-polynomial.md
@@ -1,6 +1,6 @@
---
id: 5900f3d21000cf542c50fee4
-title: 'Problem 101: Optimum polynomial'
+title: 'Problema 101: Polinômio ideal'
challengeType: 5
forumTopicId: 301725
dashedName: problem-101-optimum-polynomial
@@ -8,29 +8,29 @@ dashedName: problem-101-optimum-polynomial
# --description--
-If we are presented with the first k terms of a sequence it is impossible to say with certainty the value of the next term, as there are infinitely many polynomial functions that can model the sequence.
+Se nos forem apresentados os primeiros termos k de uma sequência, é impossível dizer com certeza o valor do termo seguinte, uma vez que existem infinitas funções polinomiais que podem modelar a sequência.
-As an example, let us consider the sequence of cube numbers. This is defined by the generating function, $u_n = n^3: 1, 8, 27, 64, 125, 216, \ldots$
+Como exemplo, vamos considerar a sequencia de números cúbicos. Isso é definido pela função de geração, $u_n = n^3: 1, 8, 27, 64, 125, 216, \ldots$
-Suppose we were only given the first two terms of this sequence. Working on the principle that "simple is best" we should assume a linear relationship and predict the next term to be 15 (common difference 7). Even if we were presented with the first three terms, by the same principle of simplicity, a quadratic relationship should be assumed.
+Suponhamos que só nos foram dados os dois primeiros termos desta sequência. Trabalhando com o princípio de que "simples é melhor", devemos assumir uma relação linear e prever que o próximo termo será 15 (diferença comum 7). Mesmo que nos fossem apresentados os três primeiros termos, pelo mesmo princípio de simplicidade, uma relação quadrática deveria ser assumida.
-We shall define $OP(k, n)$ to be the $n^{th}$ term of the optimum polynomial generating function for the first k terms of a sequence. It should be clear that $OP(k, n)$ will accurately generate the terms of the sequence for $n ≤ k$, and potentially the first incorrect term (FIT) will be $OP(k, k+1)$; in which case we shall call it a bad OP (BOP).
+Definiremos $OP(k, n)$ como o termo $n^{th}$ da função de geração polinomial ótima para os primeiros termos k de uma sequência. Deve ficar claro que $OP(k, n)$ gerará com precisão os termos da sequência para $n ≤ k$ e, potencialmente, o primeiro termo incorreto (FIT) será $OP(k, k+1)$; Nesse caso, devemos chamá-lo de OP (BOP) ruim.
-As a basis, if we were only given the first term of sequence, it would be most sensible to assume constancy; that is, for $n ≥ 2, OP(1, n) = u_1$.
+Como base, se nos fosse dado apenas o primeiro termo de sequência, seria mais sensato assumir constância, ou seja, por $n ≥ 2, OP(1, n) = u_1$.
-Hence we obtain the following OPs for the cubic sequence:
+Assim, obtemos as seguintes OPs para a sequência cúbica:
$$\begin{array}{ll} OP(1, n) = 1 & 1, {\color{red}1}, 1, 1, \ldots \\\\ OP(2, n) = 7n−6 & 1, 8, {\color{red}{15}}, \ldots \\\\ OP(3, n) = 6n^2−11n+6 & 1, 8, 27, {\color{red}{58}}, \ldots \\\\ OP(4, n) = n^3 & 1, 8, 27, 64, 125, \ldots \end{array}$$
-Clearly no BOPs exist for k ≥ 4. By considering the sum of FITs generated by the BOPs (indicated in $\color{red}{red}$ above), we obtain 1 + 15 + 58 = 74. Consider the following tenth degree polynomial generating function:
+Claramente não existem BOPs para k ≥ 4. Considerando a soma dos FITs gerados pelos BOPs (indicados em $\color{red}{red}$ acima), obtemos 1 + 15 + 58 = 74. Considere a seguinte função de geração de polinômios de décimo grau:
$$u_n = 1 − n + n^2 − n^3 + n^4 − n^5 + n^6 − n^7 + n^8 − n^9 + n^{10}$$
-Find the sum of FITs for the BOPs.
+Encontre a soma dos FITs para os BOPs.
# --hints--
-`optimumPolynomial()` should return `37076114526`.
+`optimumPolynomial()` deve retornar `37076114526`.
```js
assert.strictEqual(optimumPolynomial(), 37076114526);
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-108-diophantine-reciprocals-i.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-108-diophantine-reciprocals-i.md
index 3b8d6f014f..17fe6cfb7e 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-108-diophantine-reciprocals-i.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-108-diophantine-reciprocals-i.md
@@ -1,6 +1,6 @@
---
id: 5900f3d91000cf542c50feeb
-title: 'Problem 108: Diophantine Reciprocals I'
+title: 'Problema 108: Diofantinos recíprocos I'
challengeType: 5
forumTopicId: 301732
dashedName: problem-108-diophantine-reciprocals-i
@@ -8,19 +8,19 @@ dashedName: problem-108-diophantine-reciprocals-i
# --description--
-In the following equation x, y, and n are positive integers.
+Na equação a seguir, x, y e n são inteiros positivos.
$$\frac{1}{x} + \frac{1}{y} = \frac{1}{n}$$
-For `n` = 4 there are exactly three distinct solutions:
+Para `n` = 4, há exatamente três soluções distintas:
$$\begin{align} & \frac{1}{5} + \frac{1}{20} = \frac{1}{4}\\\\ \\\\ & \frac{1}{6} + \frac{1}{12} = \frac{1}{4}\\\\ \\\\ & \frac{1}{8} + \frac{1}{8} = \frac{1}{4} \end{align}$$
-What is the least value of `n` for which the number of distinct solutions exceeds one-thousand?
+Qual é o menor valor de `n` para o qual o número de soluções distintas excede um mil?
# --hints--
-`diophantineOne()` should return `180180`.
+`diophantineOne()` deve retornar `180180`.
```js
assert.strictEqual(diophantineOne(), 180180);
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-110-diophantine-reciprocals-ii.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-110-diophantine-reciprocals-ii.md
index 79070c6654..84b6ecdec6 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-110-diophantine-reciprocals-ii.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-110-diophantine-reciprocals-ii.md
@@ -1,6 +1,6 @@
---
id: 5900f3db1000cf542c50feed
-title: 'Problem 110: Diophantine Reciprocals II'
+title: 'Problema 110: Diofantinos recíprocos II'
challengeType: 5
forumTopicId: 301735
dashedName: problem-110-diophantine-reciprocals-ii
@@ -8,19 +8,19 @@ dashedName: problem-110-diophantine-reciprocals-ii
# --description--
-In the following equation x, y, and n are positive integers.
+Na equação a seguir, x, y e n são inteiros positivos.
$$\frac{1}{x} + \frac{1}{y} = \frac{1}{n}$$
-It can be verified that when `n` = 1260 there are 113 distinct solutions and this is the least value of `n` for which the total number of distinct solutions exceeds one hundred.
+Pode ser verificado que, quando `n` = 1260, existem 113 soluções distintas e este é o menor valor de `n` para o qual o número total de soluções distintas excede cem.
-What is the least value of `n` for which the number of distinct solutions exceeds four million?
+Qual é o menor valor de `n` para o qual o número de soluções distintas excede quatro milhões?
-**Note:** This problem is a much more difficult version of Problem 108 and as it is well beyond the limitations of a brute force approach it requires a clever implementation.
+**Nota:** este problema é uma versão muito mais difícil do Problema 108 e, como está muito além das limitações de uma abordagem de força bruta, requer uma implementação inteligente.
# --hints--
-`diophantineTwo()` should return `9350130049860600`.
+`diophantineTwo()` deve retornar `9350130049860600`.
```js
assert.strictEqual(diophantineTwo(), 9350130049860600);
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-131-prime-cube-partnership.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-131-prime-cube-partnership.md
index 729f8689fb..687cb6c0e6 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-131-prime-cube-partnership.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-131-prime-cube-partnership.md
@@ -1,6 +1,6 @@
---
id: 5900f3ef1000cf542c50ff02
-title: 'Problem 131: Prime cube partnership'
+title: 'Problema 131: Associação dos cubos primos'
challengeType: 5
forumTopicId: 301759
dashedName: problem-131-prime-cube-partnership
@@ -8,20 +8,20 @@ dashedName: problem-131-prime-cube-partnership
# --description--
-There are some prime values, p, for which there exists a positive integer, n, such that the expression n3 + n2p is a perfect cube.
+Existem alguns valores primos, $p$, para os quais também existe um número inteiro positivo, $n$, tal que a expressão $n^3 + n^{2}p$ é um cubo perfeito.
-For example, when p = 19, 83 + 82×19 = 123.
+Por exemplo, quando $p = 19,\\ 8^3 + 8^2 x 19 = {12}^3$.
-What is perhaps most surprising is that for each prime with this property the value of n is unique, and there are only four such primes below one-hundred.
+O que é talvez mais surpreendente é que o valor de $n$ é único para cada primo com essa propriedade, e só existem 4 primos com essa propriedade abaixo de 100.
-How many primes below one million have this remarkable property?
+Quantos primos abaixo de 1 milhão possuem essa propriedade notável?
# --hints--
-`euler131()` should return 173.
+`primeCubePartnership()` deve retornar `173`.
```js
-assert.strictEqual(euler131(), 173);
+assert.strictEqual(primeCubePartnership(), 173);
```
# --seed--
@@ -29,12 +29,12 @@ assert.strictEqual(euler131(), 173);
## --seed-contents--
```js
-function euler131() {
+function primeCubePartnership() {
return true;
}
-euler131();
+primeCubePartnership();
```
# --solutions--
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-132-large-repunit-factors.md b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-132-large-repunit-factors.md
index d71927659b..41ccd4cf49 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-132-large-repunit-factors.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-132-large-repunit-factors.md
@@ -1,6 +1,6 @@
---
id: 5900f3f11000cf542c50ff03
-title: 'Problem 132: Large repunit factors'
+title: 'Problema 132: Fatores repunit grandes'
challengeType: 5
forumTopicId: 301760
dashedName: problem-132-large-repunit-factors
@@ -8,18 +8,18 @@ dashedName: problem-132-large-repunit-factors
# --description--
-A number consisting entirely of ones is called a repunit. We shall define R(k) to be a repunit of length k.
+Em inglês, um número que consiste apenas de 1s é chamado de repunit. Devemos definir $R(k)$ como uma repunit de tamanho $k$.
-For example, R(10) = 1111111111 = 11×41×271×9091, and the sum of these prime factors is 9414.
+Por exemplo, $R(10) = 1111111111 = 11 × 41 × 271 × 9091$, e a soma desses fatores primos é 9414.
-Find the sum of the first forty prime factors of R(109).
+Encontre a soma dos 40 primeiros fatores primos de $R({10}^9)$.
# --hints--
-`euler132()` should return 843296.
+`largeRepunitFactors()` deve retornar `843296`.
```js
-assert.strictEqual(euler132(), 843296);
+assert.strictEqual(largeRepunitFactors(), 843296);
```
# --seed--
@@ -27,12 +27,12 @@ assert.strictEqual(euler132(), 843296);
## --seed-contents--
```js
-function euler132() {
+function largeRepunitFactors() {
return true;
}
-euler132();
+largeRepunitFactors();
```
# --solutions--