99 lines
4.5 KiB
Markdown
99 lines
4.5 KiB
Markdown
|
---
|
||
|
id: aaa48de84e1ecc7c742e1124
|
||
|
title: Palindrome Checker
|
||
|
localeTitle: Comprobador de palíndromo
|
||
|
isRequired: true
|
||
|
challengeType: 5
|
||
|
---
|
||
|
|
||
|
## Description
|
||
|
<section id='description'>
|
||
|
Devuelve <code>true</code> si la cadena dada es un palíndromo. De lo contrario, devuelve <code>false</code> .
|
||
|
Un <dfn>palíndromo</dfn> es una palabra u oración que se escribe de la misma manera tanto hacia adelante como hacia atrás, ignorando la puntuación, el caso y el espaciado.
|
||
|
<strong>Nota</strong> <br> Deberá eliminar <strong>todos los caracteres no alfanuméricos</strong> (puntuación, espacios y símbolos) y convertir todo en el mismo caso (mayúsculas o minúsculas) para comprobar si hay palíndromos.
|
||
|
Pasaremos cadenas con distintos formatos, como <code>"racecar"</code> , <code>"RaceCar"</code> y <code>"race CAR"</code> entre otros.
|
||
|
También pasaremos cadenas con símbolos especiales, como <code>"2A3*3a2"</code> , <code>"2A3 3a2"</code> y <code>"2_A3*3#A2"</code> .
|
||
|
Recuerda usar <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask</a> si te atascas. Escribe tu propio código.
|
||
|
</section>
|
||
|
|
||
|
## Instructions
|
||
|
<section id='instructions'>
|
||
|
|
||
|
</section>
|
||
|
|
||
|
## Tests
|
||
|
<section id='tests'>
|
||
|
|
||
|
```yml
|
||
|
tests:
|
||
|
- text: <code>palindrome("eye")</code> debe devolver un valor booleano.
|
||
|
testString: 'assert(typeof palindrome("eye") === "boolean", "<code>palindrome("eye")</code> should return a boolean.");'
|
||
|
- text: <code>palindrome("eye")</code> debe devolver verdadero.
|
||
|
testString: 'assert(palindrome("eye") === true, "<code>palindrome("eye")</code> should return true.");'
|
||
|
- text: <code>palindrome("_eye")</code> debe devolver verdadero.
|
||
|
testString: 'assert(palindrome("_eye") === true, "<code>palindrome("_eye")</code> should return true.");'
|
||
|
- text: <code>palindrome("race car")</code> debe devolver verdadero.
|
||
|
testString: 'assert(palindrome("race car") === true, "<code>palindrome("race car")</code> should return true.");'
|
||
|
- text: <code>palindrome("not a palindrome")</code> debe devolver falso.
|
||
|
testString: 'assert(palindrome("not a palindrome") === false, "<code>palindrome("not a palindrome")</code> should return false.");'
|
||
|
- text: ' <code>palindrome("A man, a plan, a canal. Panama")</code> debería devolver la verdad ".
|
||
|
testString: 'assert(palindrome("A man, a plan, a canal. Panama") === true, "<code>palindrome("A man, a plan, a canal. Panama")</code> should return true.");'
|
||
|
- text: <code>palindrome("never odd or even")</code> debe devolver verdadero.
|
||
|
testString: 'assert(palindrome("never odd or even") === true, "<code>palindrome("never odd or even")</code> should return true.");'
|
||
|
- text: <code>palindrome("nope")</code> debe devolver falso.
|
||
|
testString: 'assert(palindrome("nope") === false, "<code>palindrome("nope")</code> should return false.");'
|
||
|
- text: <code>palindrome("almostomla")</code> debe devolver falso.
|
||
|
testString: 'assert(palindrome("almostomla") === false, "<code>palindrome("almostomla")</code> should return false.");'
|
||
|
- text: ' <code>palindrome("My age is 0, 0 si ega ym.")</code> debería devolver verdadero.'
|
||
|
testString: 'assert(palindrome("My age is 0, 0 si ega ym.") === true, "<code>palindrome("My age is 0, 0 si ega ym.")</code> should return true.");'
|
||
|
- text: <code>palindrome("1 eye for of 1 eye.")</code> debe devolver falso.
|
||
|
testString: 'assert(palindrome("1 eye for of 1 eye.") === false, "<code>palindrome("1 eye for of 1 eye.")</code> should return false.");'
|
||
|
- text: ' <code>palindrome("0_0 (: /-\ :) 0-0")</code> debe devolver verdadero.'
|
||
|
testString: 'assert(palindrome("0_0 (: /-\ :) 0-0") === true, "<code>palindrome("0_0 (: /-\ :) 0-0")</code> should return true.");'
|
||
|
- text: <code>palindrome("five|\_/|four")</code> debe devolver falso.
|
||
|
testString: 'assert(palindrome("five|\_/|four") === false, "<code>palindrome("five|\_/|four")</code> should return false.");'
|
||
|
|
||
|
```
|
||
|
|
||
|
</section>
|
||
|
|
||
|
## Challenge Seed
|
||
|
<section id='challengeSeed'>
|
||
|
|
||
|
<div id='js-seed'>
|
||
|
|
||
|
```js
|
||
|
function palindrome(str) {
|
||
|
// Good luck!
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
palindrome("eye");
|
||
|
```
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
</section>
|
||
|
|
||
|
## Solution
|
||
|
<section id='solution'>
|
||
|
|
||
|
|
||
|
```js
|
||
|
function palindrome(str) {
|
||
|
var string = str.toLowerCase().split(/[^A-Za-z0-9]/gi).join('');
|
||
|
var aux = string.split('');
|
||
|
if (aux.join('') === aux.reverse().join('')){
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
</section>
|