Explicación de Corrector ortográfico de Bhaj
Objetivo de este acertijo: Buscar la información clave en un problema verbal y resolver el problema usando un código.
Tutorial de la solución: Bhaj quiere una función que verifique si una palabra podría ajustarse como una respuesta del crucigrama.
Esta función tomará una palabra, por ejemplo, 'cat'
, y un espacio, por ejemplo, '-a-'
, y devolverá true
si la palabra cabe dentro del espacio, y false
si no cabe.
Primero, sabemos que si la palabra y el espacio son de diferentes largos, la palabra no cabrá. Por lo tanto, agrega una if statement que compare los largos y devuelva false
si no son iguales. Esto se encargará de las palabras que sean demasiado largas o demasiado cortas.
A continuación, debemos verificar las palabras que tienen el largo correcto. Agrega un classic for loop para iterar por el espacio.
Dentro del for loop, agrega una if statement. Esta if statement debe verificar 2 cosas. Primero, debemos verificar los caracteres en el espacio que no sean '-'
.
Segundo, debemos verificar que los caracteres que no son '-'
no sean iguales al carácter en la misma posición en la palabra.
Se verá así:
for (let i = 0; i < space.length; i++) {
if (space[i] !== '-' && space[i] !== word[i]) {
return false;
}
}
Por último, al final de la función, return true
. La función solo ejecutará esta línea de código si el for loop termina de iterar sin devolver false
anticipadamente.
Solución del código de ejemplo:
import { randomWord } from 'cross.words';
function check(space, word) {
if (space.length !== word.length) {
return false;
}
for (let i = 0; i < space.length; i++) {
if (space[i] !== '-' && space[i] !== word[i]) {
return false;
}
}
return true;
}
console.log('-a-t');
console.log(randomWord);
console.log(check('-a-t', randomWord));
Conceptos de JavaScript: funciones, if statements, for loops, strings, notación de corchete, indexación, declaraciones return
Código adicional (código oculto que se ejecuta antes del código del acertijo):
const _words = ['bait','cart','cast','daft','dart','east','fact','fast','gait','gast','halt','last','malt','mast','pact','pant','part','past','raft','rant','salt','tact','tart','vast','waft','wait','want','wart','watt','cats','bats','rats','bate','bath','bats','cats','data','date','eats','fate','fats','gate','hats','late','mate','math','oath','oats','rate','rats','baits','darts','attach','attack','attain','strata','tartan','tartar','tatars','aeronautics','alterations','astronautic','automations','devastation','evacuations','evaluations','salutations','situational','accusation','aeronautic','agitations','alteration','automating','automation','gelatinous','hesitation','infatuated','passionate','poinsettia','quotations','restaurant','valuations','adult','basil','bones','doses','early','heads'];
defineModule(
'cross.words',
{
randomSpace: pickRandom(_words).split('').map(i=>pickRandom([i,'-'])).join(''),
randomWord: pickRandom(_words)
}
);