Change:
In some curriculum articles, some of the code-bits highlighted by the are enclosed by a pair of quotes which are not necessary. Since the tags already highlight code, there is no need for the quotes to be there. That is, instead of: It should be: One example can be found in PRs: [x] English [x] Chinese - No instances found [] Russian [x] Arabic [] Portuguese [x] Spanish
Do we have a list of such challenges? That would help so we know when to close this issue (i.e. all have been covered).
I do not have a list of these challenges a.t.m. In the P.R. from where this originated, has said something about there being other files where we had this, he might have a lead on it, otherwise a repo wide search for can be run
OK.
If you do a quick search of the repo to see how many files might be affected by this, then I will query the open PRs to check all existing open PRs which might have such changes.
I would like to start from . Kindly let me know May I start now to avoid file merge conflict. I checked for . There are 18 files that will be affected.
we can take care of the merge conflicts if you want to submit the PR. Make sure you're working from the latest commit of the freecodecamp master branch. Please try to limit the changes in this PR to only removing the quotes so it doesn't make conflict resolution more difficult. Thanks!
I think it's better to allow a first-time contributor to work on the issue. Please feel free to look through the other issues. There are many of them we could use your help on! In case this one is still not picked up in a few days, you can then work on this.
I was already working on this. I will look for issues also from now onwards.
Is this issue still on? If yes, can I help you?
This one already has an open PR (see above ).
Okay No problem!!
Is this issue closed ? I am a first time contributor and would like to work on it.
Not yet, only the PR for English language has been merged. Check with for what languages he is making a PR for
You can start with any of the language except English language. I am not working as of now for any other language. It would be great if we allow first timer to work on this.
hello, I would like to do this as a first timer. Where should I start?
check with for what languages they are working on, you can pick up the other languages and use the search and replace functionality of your code editor to make changes as discussed above
Hi, I'm new to freecodecamp but I'm wondering if you guys still need help on this? If so, what languages should I work on? Thanks!
Hello, I'd like to help with this issue as well. Which language folders are available? Thanks!
Thanks for helping out with this! AFAIK, so far only . Since we haven't heard from and yet, you both are welcome to pick one language each from the available four (Arabic, Chinese, Portuguese and Spanish), and start working on the corresponding files. Considering that and asked first, we'll wait for them to claim the other two language versions if they're still interested. In case they (or aren't, you can then continue with these remaining versions too (if you prefer).
Thanks I'll volunteer to do the Spanish folder.
Thanks I'll take the Portuguese folder!
Hi, after taking a cursory look in /curriculum/challenges/portuguese, and searching for <code"<codestuff </code"</code", and &quot, I haven't found any examples of <code"<codestuff </code"</code", and the only places where <code"<codeor </code" </codepop up are in Tests, and in assert fields, where it's unrelated I think. Am I missing something? Sorry for the bother!
Hi Try searching making sure there is a space in between. I noticed there were a lot of false positives when I did my search. When I searched, I was able to find in the Portuguese folder at declare-the-doctype-of-an-html-
Thank you! I removed all the instances of , and I think that that may be all of the instances in the Portuguese files. Would it be possible for me to work on the other untaken languages as well, or should I wait on and to see if they are picking up Arabic/Chinese?
Guys, try searching for and separately
I made sure to search , , , , , , , and , all separately.
Do we still need help for Arabic/Chinese? I wouldn't mind picking up those as well!
Sure! Go ahead!
Hi are you doing both Arabic/Chinese? Do you mind if I do one of the folders?
Go for it! I'll take Chinese and you can have Arabic?
Thanks I'll move forward with the Arabic folder.
Hey, Would like to give a hand as its my first contribution. Where should i start? is the quote issue resolved or are there more languages where help is needed? Thanks in advance
- It appears you can choose between Spanish and Portuguese. If you have not contributed before, I suggest starting with and . If you have any questions, then ask in our .
Actually I think that all files currently are accounted for. Me and have created PR's for Portuguese/Spanish, and now we're working on Chinese/Arabic. I think Russian and English were already taken before us.
After looking for , , , , , , , and , I couldn't find any instances of any of these in the Chinese folder. Somebody else can verify if they wish, but as far as I've searched, I can't find anything in the Chinese folder specifically, even though they exist in my local (non-fixed) Arabic, Portuguese, Spanish, etc. folders, so I don't think a PR needs to be made for the Chinese folder specifically.
Hi, this will be my first contribution. I'm wondering if Chinese is still up for grab. If not, which one can I choose? Thanks.
It appears is already working on the Chinese version.
Alright, it seems like every one of them is taken. Let me know if any one of them needs help in the future. Thanks.
I've taken a look at the Chinese version, and it seems like the quotes are already removed. I won't be submitting a PR for it, so if you want to take a look and find something that I missed then feel free to make the PR yourself!
Had this been fixed in the Portuguese and Russian folders? Someone needs to have a look
Even if those languages were not translated, it is fine. We are no longer accepting translations for the current curriculum. We do not need any further PRs for the the non-English curriculum files.
I see. Alright

Discussion:
--- ## Description <del> <section id="description"> Los desafíos hasta ahora han cubierto elementos HTML específicos y sus usos. Sin embargo, hay algunos elementos que le dan estructura general a su página y deben incluirse en cada documento HTML. En la parte superior de su documento, debe indicar al navegador qué versión de HTML está usando su página. HTML es un lenguaje en evolución, y se actualiza regularmente. La mayoría de los principales navegadores son compatibles con la última especificación, que es HTML5. Sin embargo, las páginas web más antiguas pueden usar versiones anteriores del idioma. Usted le dice al navegador esta información agregando la etiqueta <code>&lt;!DOCTYPE ...&gt;</code> en la primera línea, donde la parte &quot; <code>...</code> &quot; es la versión de HTML. Para HTML5, utiliza <code>&lt;!DOCTYPE html&gt;</code> . El <code>!</code> y el <code>DOCTYPE</code> mayúsculas es importante, especialmente para los navegadores más antiguos. El <code>html</code> no distingue entre mayúsculas y minúsculas. A continuación, el resto de su código HTML debe estar envuelto en etiquetas <code>html</code> . La apertura <code>&lt;html&gt;</code> va directamente debajo de la línea <code>&lt;!DOCTYPE html&gt;</code> , y el cierre <code>&lt;/html&gt;</code> va al final de la página. Aquí hay un ejemplo de la estructura de la página: <blockquote> &lt;! DOCTYPE html&gt; <br> &lt;html&gt; <br> &lt;! - Su código HTML va aquí -&gt; <br> &lt;/html&gt; </blockquote></section> </del> <ins> <section id="description"> Los desafíos hasta ahora han cubierto elementos HTML específicos y sus usos. Sin embargo, hay algunos elementos que le dan estructura general a su página y deben incluirse en cada documento HTML. En la parte superior de su documento, debe indicar al navegador qué versión de HTML está usando su página. HTML es un lenguaje en evolución, y se actualiza regularmente. La mayoría de los principales navegadores son compatibles con la última especificación, que es HTML5. Sin embargo, las páginas web más antiguas pueden usar versiones anteriores del idioma. Usted le dice al navegador esta información agregando la etiqueta <code>&lt;!DOCTYPE ...&gt;</code> en la primera línea, donde la parte  <code>...</code> es la versión de HTML. Para HTML5, utiliza <code>&lt;!DOCTYPE html&gt;</code> . El <code>!</code> y el <code>DOCTYPE</code> mayúsculas es importante, especialmente para los navegadores más antiguos. El <code>html</code> no distingue entre mayúsculas y minúsculas. A continuación, el resto de su código HTML debe estar envuelto en etiquetas <code>html</code> . La apertura <code>&lt;html&gt;</code> va directamente debajo de la línea <code>&lt;!DOCTYPE html&gt;</code> , y el cierre <code>&lt;/html&gt;</code> va al final de la página. Aquí hay un ejemplo de la estructura de la página: <blockquote> &lt;! DOCTYPE html&gt; <br> &lt;html&gt; <br> &lt;! - Su código HTML va aquí -&gt; <br> &lt;/html&gt; </blockquote></section> </ins> ## Instructions <section id="instructions"> Agregue una etiqueta <code>DOCTYPE</code> para HTML5 en la parte superior del documento HTML en blanco en el editor de código. Debajo de él, agregue etiquetas <code>html</code> apertura y cierre, que envuelven un elemento <code>h1</code> . El encabezado puede incluir cualquier texto. </section>

--- ## Description <del> <section id="description"> Puede ejecutar el mismo código varias veces utilizando un bucle. El siguiente tipo de bucle que aprenderá se denomina bucle &quot; <code>do...while</code> &quot; porque primero &quot; <code>do</code> &quot; una pasada del código dentro del bucle sin importar qué, y luego se ejecuta &quot; <code>while</code> &quot; se cumple una condición específica y se detiene una vez que esa condición ya no es verdadera. Veamos un ejemplo. <blockquote> var ourArray = []; <br> var i = 0; <br> hacer { <br> nuestroArray.push (i); <br> i ++; <br> } while (i &lt;5); </blockquote> Esto se comporta como se esperaría con cualquier otro tipo de bucle, y la matriz resultante se verá como <code>[0, 1, 2, 3, 4]</code> . Sin embargo, lo que hace <code>do...while</code> diferente de otros bucles es cómo se comporta cuando la condición falla en la primera comprobación. Veamos esto en acción. Aquí hay un bucle while común que ejecutará el código en el bucle siempre y cuando <code>i &lt; 5</code> . <blockquote> var ourArray = []; <br> var i = 5; <br> mientras (i &lt;5) { <br> nuestroArray.push (i); <br> i ++; <br> } </blockquote> Observe que inicializamos el valor de <code>i</code> en 5. Cuando ejecutamos la siguiente línea, notamos que <code>i</code> no es menor que 5. Por lo tanto, no ejecutamos el código dentro del bucle. El resultado es que <code>ourArray</code> no agregará nada, por lo que aún se verá así <code>[]</code> cuando todo el código del ejemplo anterior termine de ejecutarse. Ahora, eche un vistazo a un <code>do...while</code> loop. <blockquote> var ourArray = []; <br> var i = 5; <br> hacer { <br> nuestroArray.push (i); <br> i ++; <br> } while (i &lt;5); </blockquote> En este caso, inicializamos el valor de <code>i</code> como 5, tal como hicimos con el bucle while. Cuando llegamos a la siguiente línea, no hay comprobación del valor de <code>i</code> , por lo que vamos al código dentro de las llaves y lo ejecutamos. Agregaremos un elemento a la matriz e incrementaremos <code>i</code> antes de llegar a la verificación de condición. Entonces, cuando se llega a comprobar si <code>i &lt; 5</code> ver que <code>i</code> es ahora de 6 años, que no pasa la comprobación condicional. Así que salimos del bucle y estamos listos. Al final del ejemplo anterior, el valor de <code>ourArray</code> es <code>[5]</code> . Esencialmente, un bucle <code>do...while</code> while garantiza que el código dentro del bucle se ejecute al menos una vez. Intentemos obtener un bucle <code>do...while</code> while para que funcione presionando valores en una matriz. </section> </del> <ins> <section id="description"> Puede ejecutar el mismo código varias veces utilizando un bucle. El siguiente tipo de bucle que aprenderá se denomina bucle <code>do...while</code> porque primero <code>do</code> una pasada del código dentro del bucle sin importar qué, y luego se ejecuta <code>while</code> se cumple una condición específica y se detiene una vez que esa condición ya no es verdadera. Veamos un ejemplo. <blockquote> var ourArray = []; <br> var i = 0; <br> hacer { <br> nuestroArray.push (i); <br> i ++; <br> } while (i &lt;5); </blockquote> Esto se comporta como se esperaría con cualquier otro tipo de bucle, y la matriz resultante se verá como <code>[0, 1, 2, 3, 4]</code> . Sin embargo, lo que hace <code>do...while</code> diferente de otros bucles es cómo se comporta cuando la condición falla en la primera comprobación. Veamos esto en acción. Aquí hay un bucle while común que ejecutará el código en el bucle siempre y cuando <code>i &lt; 5</code> . <blockquote> var ourArray = []; <br> var i = 5; <br> mientras (i &lt;5) { <br> nuestroArray.push (i); <br> i ++; <br> } </blockquote> Observe que inicializamos el valor de <code>i</code> en 5. Cuando ejecutamos la siguiente línea, notamos que <code>i</code> no es menor que 5. Por lo tanto, no ejecutamos el código dentro del bucle. El resultado es que <code>ourArray</code> no agregará nada, por lo que aún se verá así <code>[]</code> cuando todo el código del ejemplo anterior termine de ejecutarse. Ahora, eche un vistazo a un <code>do...while</code> loop. <blockquote> var ourArray = []; <br> var i = 5; <br> hacer { <br> nuestroArray.push (i); <br> i ++; <br> } while (i &lt;5); </blockquote> En este caso, inicializamos el valor de <code>i</code> como 5, tal como hicimos con el bucle while. Cuando llegamos a la siguiente línea, no hay comprobación del valor de <code>i</code> , por lo que vamos al código dentro de las llaves y lo ejecutamos. Agregaremos un elemento a la matriz e incrementaremos <code>i</code> antes de llegar a la verificación de condición. Entonces, cuando se llega a comprobar si <code>i &lt; 5</code> ver que <code>i</code> es ahora de 6 años, que no pasa la comprobación condicional. Así que salimos del bucle y estamos listos. Al final del ejemplo anterior, el valor de <code>ourArray</code> es <code>[5]</code> . Esencialmente, un bucle <code>do...while</code> while garantiza que el código dentro del bucle se ejecute al menos una vez. Intentemos obtener un bucle <code>do...while</code> while para que funcione presionando valores en una matriz. </section> </ins> ## Instructions <section id="instructions"> Cambiar el <code>while</code> de bucle en el código a un <code>do...while</code> bucle de modo que el bucle empujará el número 10 a <code>myArray</code> , y <code>i</code> será igual a <code>11</code> cuando el código termina de ejecutarse. </section>

--- ## Description <del> <section id="description"> Puede ejecutar el mismo código varias veces utilizando un bucle. El tipo más común de bucle de JavaScript se llama &quot; <code>for loop</code> &quot; porque se ejecuta &quot;por&quot; un número específico de veces. Para los bucles se declaran con tres expresiones opcionales separadas por punto y coma: <code>for ([initialization]; [condition]; [final-expression])</code> La instrucción de <code>initialization</code> se ejecuta una sola vez antes de que comience el bucle. Normalmente se utiliza para definir y configurar su variable de bucle. La declaración de <code>condition</code> se evalúa al comienzo de cada iteración de bucle y continuará mientras se evalúe como <code>true</code> . Cuando la <code>condition</code> es <code>false</code> al inicio de la iteración, el bucle dejará de ejecutarse. Esto significa que si la <code>condition</code> comienza como <code>false</code> , su bucle nunca se ejecutará. La <code>final-expression</code> se ejecuta al final de cada iteración de bucle, antes de la siguiente verificación de <code>condition</code> y generalmente se usa para incrementar o disminuir su contador de bucle. En el siguiente ejemplo, iniciamos con <code>i = 0</code> e iteramos mientras nuestra condición <code>i &lt; 5</code> es verdadera. Incrementaremos <code>i</code> en <code>1</code> en cada iteración de bucle con <code>i++</code> como nuestra <code>final-expression</code> . <blockquote> var ourArray = []; <br> para (var i = 0; i &lt;5; i ++) { <br> nuestroArray.push (i); <br> } </blockquote> <code>ourArray</code> ahora contendrá <code>[0,1,2,3,4]</code> . </section> </del> <ins> <section id="description"> Puede ejecutar el mismo código varias veces utilizando un bucle. El tipo más común de bucle de JavaScript se llama <code>for loop</code>  porque se ejecuta &quot;por&quot; un número específico de veces. Para los bucles se declaran con tres expresiones opcionales separadas por punto y coma: <code>for ([initialization]; [condition]; [final-expression])</code> La instrucción de <code>initialization</code> se ejecuta una sola vez antes de que comience el bucle. Normalmente se utiliza para definir y configurar su variable de bucle. La declaración de <code>condition</code> se evalúa al comienzo de cada iteración de bucle y continuará mientras se evalúe como <code>true</code> . Cuando la <code>condition</code> es <code>false</code> al inicio de la iteración, el bucle dejará de ejecutarse. Esto significa que si la <code>condition</code> comienza como <code>false</code> , su bucle nunca se ejecutará. La <code>final-expression</code> se ejecuta al final de cada iteración de bucle, antes de la siguiente verificación de <code>condition</code> y generalmente se usa para incrementar o disminuir su contador de bucle. En el siguiente ejemplo, iniciamos con <code>i = 0</code> e iteramos mientras nuestra condición <code>i &lt; 5</code> es verdadera. Incrementaremos <code>i</code> en <code>1</code> en cada iteración de bucle con <code>i++</code> como nuestra <code>final-expression</code> . <blockquote> var ourArray = []; <br> para (var i = 0; i &lt;5; i ++) { <br> nuestroArray.push (i); <br> } </blockquote> <code>ourArray</code> ahora contendrá <code>[0,1,2,3,4]</code> . </section> </ins> ## Instructions <section id="instructions"> Use un bucle <code>for</code> para trabajar y empujar los valores del 1 al 5 en <code>myArray</code> . </section>

--- ## Description <del> <section id="description"> Puede ejecutar el mismo código varias veces utilizando un bucle. El primer tipo de bucle vamos a aprender se llama un &quot; <code>while</code> &quot; bucle porque funciona &quot;mientras que&quot; una condición especificada es verdadera y se detiene una vez que la condición ya no es cierto. <blockquote> var ourArray = []; <br> var i = 0; <br> mientras (i &lt;5) { <br> nuestroArray.push (i); <br> i ++; <br> } </blockquote> Intentemos que funcione un bucle while empujando los valores a una matriz. </section> </del> <ins> <section id="description"> Puede ejecutar el mismo código varias veces utilizando un bucle. El primer tipo de bucle vamos a aprender se llama un <code>while</code> bucle porque funciona &quot;mientras que&quot; una condición especificada es verdadera y se detiene una vez que la condición ya no es cierto. <blockquote> var ourArray = []; <br> var i = 0; <br> mientras (i &lt;5) { <br> nuestroArray.push (i); <br> i ++; <br> } </blockquote> Intentemos que funcione un bucle while empujando los valores a una matriz. </section> </ins> ## Instructions <section id="instructions"> Empuje los números de 0 a 4 para <code>myArray</code> usando un <code>while</code> de bucle. </section>

--- ## Description <del> <section id="description"> Otra forma de cambiar los datos en una matriz es con la función <code>.pop()</code> . <code>.pop()</code> se utiliza para &quot; <code>.pop()</code> &quot; un valor del final de una matriz. Podemos almacenar este valor &quot;extraído&quot; asignándolo a una variable. En otras palabras, <code>.pop()</code> elimina el último elemento de una matriz y devuelve ese elemento. Cualquier tipo de entrada se puede &quot;extraer&quot; de una matriz: números, cadenas, incluso matrices anidadas. <blockquote> <code>var threeArr = [1, 4, 6]; <br> var oneDown = threeArr.pop(); <br> console.log(oneDown); // Returns 6 <br> console.log(threeArr); // Returns [1, 4]</code> </blockquote> </section> </del> <ins> <section id="description"> Otra forma de cambiar los datos en una matriz es con la función <code>.pop()</code> . <code>.pop()</code> se utiliza para  <code>.pop()</code>  un valor del final de una matriz. Podemos almacenar este valor &quot;extraído&quot; asignándolo a una variable. En otras palabras, <code>.pop()</code> elimina el último elemento de una matriz y devuelve ese elemento. Cualquier tipo de entrada se puede &quot;extraer&quot; de una matriz: números, cadenas, incluso matrices anidadas. <blockquote> <code>var threeArr = [1, 4, 6]; <br> var oneDown = threeArr.pop(); <br> console.log(oneDown); // Returns 6 <br> console.log(threeArr); // Returns [1, 4]</code> </blockquote> </section> </ins> ## Instructions <del> <section id="instructions"> Use la función <code>.pop()</code> para eliminar el último elemento de <code>myArray</code> , asignando el valor &quot; <code>removedFromMyArray</code> &quot; a <code>removedFromMyArray</code> . </section> </del> <ins> <section id="instructions"> Use la función <code>.pop()</code> para eliminar el último elemento de <code>myArray</code> , asignando el valor  <code>removedFromMyArray</code> a <code>removedFromMyArray</code> . </section> </ins> ## Tests <section id='tests'>

```yml tests: <del> - text: Su expresión regular debe coincidir con <code>one</code> criminal (&quot; <code>C</code> &quot;) en <code>&quot;C&quot;</code> testString: 'assert("C".match(reCriminals) && "C".match(reCriminals)[0] == "C", "Your regex should match <code>one</code> criminal ("<code>C</code>") in <code>"C"</code>");' - text: Su expresión regular debe coincidir con <code>two</code> delincuentes (&quot; <code>CC</code> &quot;) en <code>&quot;CC&quot;</code> testString: 'assert("CC".match(reCriminals) && "CC".match(reCriminals)[0] == "CC", "Your regex should match <code>two</code> criminals ("<code>CC</code>") in <code>"CC"</code>");' - text: Su expresión regular debe coincidir con <code>three</code> delincuentes (&quot; <code>CCC</code> &quot;) en <code>&quot;P1P5P4CCCP2P6P3&quot;</code> testString: 'assert("P1P5P4CCCP2P6P3".match(reCriminals) && "P1P5P4CCCP2P6P3".match(reCriminals)[0] == "CCC", "Your regex should match <code>three</code> criminals ("<code>CCC</code>") in <code>"P1P5P4CCCP2P6P3"</code>");' - text: Su expresión regular debe coincidir con <code>five</code> delincuentes (&quot; <code>CCCCC</code> &quot;) en <code>&quot;P6P2P7P4P5CCCCCP3P1&quot;</code> testString: 'assert("P6P2P7P4P5CCCCCP3P1".match(reCriminals) && "P6P2P7P4P5CCCCCP3P1".match(reCriminals)[0] == "CCCCC", "Your regex should match <code>five</code> criminals ("<code>CCCCC</code>") in <code>"P6P2P7P4P5CCCCCP3P1"</code>");' </del> <ins> - text: Su expresión regular debe coincidir con <code>one</code> criminal (<code>C</code> ) en <code>&quot;C&quot;</code> testString: 'assert("C".match(reCriminals) && "C".match(reCriminals)[0] == "C", "Your regex should match <code>one</code> criminal (<code>C</code>) in <code>"C"</code>");' - text: Su expresión regular debe coincidir con <code>two</code> delincuentes (<code>CC</code>) en <code>&quot;CC&quot;</code> testString: 'assert("CC".match(reCriminals) && "CC".match(reCriminals)[0] == "CC", "Your regex should match <code>two</code> criminals (<code>CC</code>) in <code>"CC"</code>");' - text: Su expresión regular debe coincidir con <code>three</code> delincuentes (<code>CCC</code>) en <code>&quot;P1P5P4CCCP2P6P3&quot;</code> testString: 'assert("P1P5P4CCCP2P6P3".match(reCriminals) && "P1P5P4CCCP2P6P3".match(reCriminals)[0] == "CCC", "Your regex should match <code>three</code> criminals (<code>CCC</code>) in <code>"P1P5P4CCCP2P6P3"</code>");' - text: Su expresión regular debe coincidir con <code>five</code> delincuentes (<code>CCCCC</code>) en <code>&quot;P6P2P7P4P5CCCCCP3P1&quot;</code> testString: 'assert("P6P2P7P4P5CCCCCP3P1".match(reCriminals) && "P6P2P7P4P5CCCCCP3P1".match(reCriminals)[0] == "CCCCC", "Your regex should match <code>five</code> criminals (<code>CCCCC</code>) in <code>"P6P2P7P4P5CCCCCP3P1"</code>");' </ins> - text: Tu expresión regular no debe coincidir con ningún criminal en <code>&quot;&quot;</code> testString: 'assert(!reCriminals.test(""), "Your regex should not match any criminals in <code>""</code>");' - text: Su expresión regular no debe coincidir con ningún criminal en <code>&quot;P1P2P3&quot;</code> testString: 'assert(!reCriminals.test("P1P2P3"), "Your regex should not match any criminals in <code>"P1P2P3"</code>");' <del> - text: Su expresión regular debe coincidir con <code>fifty</code> delincuentes (&quot; <code>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</code> &quot;) en <code>&quot;P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3&quot;</code> . testString: 'assert("P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals) && "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals)[0] == "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", "Your regex should match <code>fifty</code> criminals ("<code>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</code>") in <code>"P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3"</code>.");' </del> <ins> - text: Su expresión regular debe coincidir con <code>fifty</code> delincuentes (<code>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</code>) en <code>&quot;P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3&quot;</code> . testString: 'assert("P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals) && "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals)[0] == "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", "Your regex should match <code>fifty</code> criminals (<code>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</code>) in <code>"P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3"</code>.");' </ins> ```

--- ## Description <del> <section id="description"> Tarea: <p> Implementar una función que: </p> toma un número entero positivo que representa una duración en segundos como entrada (por ejemplo, <code>100</code> ), y devuelve una cadena que muestra la misma duración descompuesta en semanas, días, horas, minutos y segundos como se detalla a continuación (por ejemplo, &quot; <code>1 min, 40 sec</code> &quot;). <p> Demostrar que pasa los siguientes tres casos de prueba: </p><p style="font-size:115%; margin:1em 0 0 0"> Casos de prueba </p><table><tbody><tr><th> número de entrada </th><th> número de salida </th></tr><tr><td> 7259 </td><td> <code>2 hr, 59 sec</code> </td> </tr><tr><td> 86400 </td><td> <code>1 d</code> </td> </tr><tr><td> 6000000 </td><td> <code>9 wk, 6 d, 10 hr, 40 min</code> </td> </tr></tbody></table><p style="font-size:115%; margin:1em 0 0 0"> Detalles </p> Se deben usar las siguientes cinco unidades: <table><tbody><tr><th> unidad </th><th> sufijo utilizado en la salida </th><th> conversión </th></tr><tr><td> semana </td><td> <code>wk</code> </td> <td> 1 semana = 7 días </td></tr><tr><td> día </td><td> <code>d</code> </td> <td> 1 día = 24 horas </td></tr><tr><td> hora </td><td> <code>hr</code> </td> <td> 1 hora = 60 minutos </td></tr><tr><td> minuto </td><td> <code>min</code> </td> <td> 1 minuto = 60 segundos </td></tr><tr><td> segundo </td><td> <code>sec</code> </td> <td></td></tr></tbody></table> Sin embargo, solo incluya cantidades con valores distintos de cero en la salida (p. Ej., Devuelva &quot; <code>1 d</code> &quot; y no &quot; <code>0 wk, 1 d, 0 hr, 0 min, 0 sec</code> &quot;). Dé prioridad a las unidades más grandes sobre las más pequeñas como sea posible (p. ej., devolver <code>2 min, 10 sec</code> y no <code>1 min, 70 sec</code> o <code>130 sec</code> ) Imitar el formato que se muestra en los casos de prueba (cantidades ordenadas de unidad mayor a menor y separadas por comas + espacio; valor y unidad de cada cantidad separada por espacio). <p></p><hr style="margin:1em 0;"><p></p></section> </del> <ins> <section id="description"> Tarea: <p> Implementar una función que: </p> toma un número entero positivo que representa una duración en segundos como entrada (por ejemplo, <code>100</code> ), y devuelve una cadena que muestra la misma duración descompuesta en semanas, días, horas, minutos y segundos como se detalla a continuación (por ejemplo, <code>1 min, 40 sec</code>). <p> Demostrar que pasa los siguientes tres casos de prueba: </p><p style="font-size:115%; margin:1em 0 0 0"> Casos de prueba </p><table><tbody><tr><th> número de entrada </th><th> número de salida </th></tr><tr><td> 7259 </td><td> <code>2 hr, 59 sec</code> </td> </tr><tr><td> 86400 </td><td> <code>1 d</code> </td> </tr><tr><td> 6000000 </td><td> <code>9 wk, 6 d, 10 hr, 40 min</code> </td> </tr></tbody></table><p style="font-size:115%; margin:1em 0 0 0"> Detalles </p> Se deben usar las siguientes cinco unidades: <table><tbody><tr><th> unidad </th><th> sufijo utilizado en la salida </th><th> conversión </th></tr><tr><td> semana </td><td> <code>wk</code> </td> <td> 1 semana = 7 días </td></tr><tr><td> día </td><td> <code>d</code> </td> <td> 1 día = 24 horas </td></tr><tr><td> hora </td><td> <code>hr</code> </td> <td> 1 hora = 60 minutos </td></tr><tr><td> minuto </td><td> <code>min</code> </td> <td> 1 minuto = 60 segundos </td></tr><tr><td> segundo </td><td> <code>sec</code> </td> <td></td></tr></tbody></table> Sin embargo, solo incluya cantidades con valores distintos de cero en la salida (p. Ej., Devuelva <code>1 d</code> y no &<code>0 wk, 1 d, 0 hr, 0 min, 0 sec</code>). Dé prioridad a las unidades más grandes sobre las más pequeñas como sea posible (p. ej., devolver <code>2 min, 10 sec</code> y no <code>1 min, 70 sec</code> o <code>130 sec</code> ) Imitar el formato que se muestra en los casos de prueba (cantidades ordenadas de unidad mayor a menor y separadas por comas + espacio; valor y unidad de cada cantidad separada por espacio). <p></p><hr style="margin:1em 0;"><p></p></section> </ins> ## Instructions <section id="instructions">