#Challenge 20
1 messages · Page 1 of 1 (latest)
Hola, en el segundo ejemplo falta una 's', debería devolver false o añadirse una 's' al texto
Día 20, el codigo es lo primero que se me vino a la cabeza, a partir de aquí empezaría a refactorizar y buscar otras maneras
@vale fox no es correcta... jajaja he añadido un test para que no te pase más 😛
ok jeje
eso me pasa por no añadir ninguno con símbolos 😛
Pasaba Jajaja ya no 😅
es posible que este roto ahora ?
Mi solución
.
Para los one-liners:
el poder del regex y el lowerCase brutal 🙂
casi: "Extraño pan de col y kiwi se qemó bajo fúgaz vaho" no tiene en cuenta los acentos (no detecta la ú)
Igualmente, increible lo que se puede hacer con regex
regex FTW 🤣 utilizando la flag case insensitive:
quizás === a 27 sería mas valido aún no ?
Falla con el siguiente string 'abcdefghijklmnopqrstuvwáéíó'
con la segunda versión ya no (al ponerle el > 26), pero vaya, que hay otras soluciones más 'estables' y mejores antes que utilizar este tipo de one-line functions
Efectivamente, en algún caso sigue fallando, pero igualmente, increíble los de regex. ¿Conocéis algún tutorial bueno sobre regex?
RegexOne provides a set of interactive lessons and exercises to help you learn regular expressions
Learn RegEx interactively, practice at your level, test and share your own RegEx.
¡Muchas gracias! 👏 👏
Me han gustado! lo único que el Set ya tiene size, no hace falta crear el array para el length
Buenas, dejo mi solución al reto #20
Corrección para textos con dígitos
Mi solución
||```js
export default function pangram( sentence ) {
const ALPHABET = 'abcdefghijklmnñopqrstuvwxyz'.split( '' )
const cleanSentence = sentence
.normalize( 'NFD' )
.replace( /([aeio])\u0301|(u)[\u0301\u0308]/gi,'$1$2' )
.normalize()
.toLowerCase()
.split( '' )
return ALPHABET.every( letter => cleanSentence.includes( letter ) )
}
Mi solución reto 20 xd
Un poquito tarde 😪
Mi solución:
No he usado mucho Regex de hecho tuve que buscar en internet, pero creo que para ser mi primera vez usándolo, creo que esta decente, o me equivoco?
Yo solo vengo a compartir la parte de normalizado, que me ha sorprendido porque no la había utilizado nunca así. Aunque ya lo habéis puesto varios
const normalized = letter.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "")
yo fue lo primero que use, pero también normaliza la ñ y por eso opte por otro enfoque
Cierto, por eso después sumo la comprobación del normalized con todo el resto de letras & letter.includes('ñ')
no veo donde compartiste tu código para echarle un ojo 
Por aquí va:
||```js
function pangram(letter) {
const all = [...'abcdefghijklmnopqrstuvwxyz']
const normalized = letter.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "")
let res = true
all.forEach(char => {
if (!normalized.includes(char)) res = false
})
if (res) return letter.includes('ñ')
return res
}
No es el mejor, pero funciona xD
😎 gracias por compartir
esta solución no esta bien, funciona por que no hay un caso de uso que la rompa.
eje. letter: 'abcdefghijlmnñopqrstuvwxyz' se esperia un false por que falta la letra k
En mi solución utilizo normalize, pero el truco está en el replace posterior si lo que quieres es conservar la ñ. Muchos reemplazan el rango de caracteres unicode entre 0300 y 036f, entre los que está la ñ (0303), pero si utilizas una expresión regular simple para evadir la ñ eliminarías solo las tildes, diéresis, etc.
Reto 20 terminado, tarde pero seguro (tenia otra respuesta pero viendo las demás decidí lanzarme a entender normalize).
El problema de la normalización es que puede fallar, si midu incluye la siguiente validacion la mayoría de las soluciones no pasarían
'abcdefghijklmñopqrstuvwxyz' => esperado un FALSE por que falta la n
Mi solución