Importante y mis redes: En el último minuto, puse en el foro un obj.keys(word1) en realidad quise poner obj.keys(word2) Cuando dije 4 * O(n), escondi que detras de eso en realidad es usar la formula n * (n-1) / 2 = (n*n - n) / 2 que se podria tomar como o(n*n) . Pero no queria perder tiempo explicando la formula. Colaborar con la compra de un microfono: paypal.me/damiansire Mi linkedin: www.linkedin.com/in/damiansire/ Mi twitter: twitter.com/damiansire Instagram: instagram.com/damiansire/ Mi facebook: facebook.com/damian.sire.148/ Comunidad en discord: discord.gg/J28vAPK Grupo de facebook: facebook.com/groups/865776550575105
Me encanta haber encontrado un canal como el tuyo, como estudiante universitario de informática y apasionado a la programación, este tipo de videos es muy fundamental! ayuda muchísimo al aprendizaje y pensamiento algorítmico. Sigue así!
Qué gusto poder ver estos videos en español. En inglés no he podido encontrar algo así de bueno. Tus vídeos son un recurso supervalioso. ✌🏿 Saludos desde Sudáfrica
Buen contenido desde lo mas básico hasta lo avanzado y encima explicando las ideas que aplicas , mil gracias por compartir tus conocimientos ,exitos bro
Cuando se te fue el return false casi exploto, me super activaste el TOC xD muy divertidos tus videos, la velocidad a la que explicaste este video me parece buena, hay veces que explicas algo 4 o 5 veces y se vuelve algo tedioso. Creo que alguien que sigue tus videos fácilmente entendió todo el procedimiento. Muchas gracias por tus videos c:
muchas muchas muchas gracias por tu comentario! Lo que sucede, es que también tengo que explicar para los que no entienden a la primera, lo siento :/ Imagínate yo, que me retornaba false y digo "que raro esto"
Joya de contenido, aunque no programo en Javascript, es un lenguaje que me interesa aprender, y que mejor que con contenido que me ayude a mejorar mi lógica de programación. Me suscribo!
qué bueno sería que cuando mencionas otro vídeo en el que explicas otro tema, por ejemplo el de los órdenes, pusieras el enlace al vídeo en la descripción
Amigoooooo no se por que Tenes tan poco seguidores si subís alto contenido, genio!!!! Yo estoy entendiendo algo por que recién Arranco con html pero muero de ganas de saber JavaScript Saludo de Argentina
Si Damian, tienes un don para enseñar y ademas el hecho de que compartas lo que sabes hace que tu contenido sea muy ameno y sencillo. Gracias a personas como tu, esta plataforma vale la pena.
Buenas! Quisiera comentar que con la última formulación no evalúa la cantidad de veces que se repite el caracter/letra. Se está disminuyendo en 1 a todas las letras en el mapWord1. Si pruebas con isAnagrama("Tom Sorvolo Ryddle","Soy Lord Voldemorx") donde se cambia la última letra por una 'x' la función retorna true ya que solo evalúa la longitud del texto.
Si no estoy mal, en la versión más eficiente eso tiene un error (44:53). Si tenés "aamor" y "roma" va a retornar true porque no estás validando la cantidad de letras. El if que está dentro del for debería ser: if(mapWord1[letter] != undefined && mapWord1[letter] > 0) { mapWord1[letter] -= 1; } else { return false; }
@@DamianSireDesarrollo Genial! Te re recomiendo el canal de Code with Ania Kubów porque su inglés está perfecto y explica con javascript así que podés escuchar como pronuncia los nombres de todas las funciones que usás en tus videos.
@@DamianSireDesarrollo ahh perfecto, me quedo con tu respuesta entonces! Mil gracias!!! Temía que me preguntes que función era jaja, era esta: function isAnangrama (word1, word2) { word1 = cleanString(word1); word2 = cleanString(word2); if (word1.length === word2.length) { let mapWord1 = wordToMap(word1); let mapWord2 = wordToMap(word2); for (let letter of Object.keys(mapWord1)) { if(!(mapWord1[letter] === mapWord2[letter])) { // Si hay alguna letras demás return false; } } return true; } return false; }
creo que la ultima implementación está mal porque en la iteración la palabra se comprueba con sus mismas letras, ya no se está tomando en cuenta la segunda palabra por lo tanto siempre va a salir true a menos que tengan un length diferente y si no es así significa que no le entendí jaja
Importante y mis redes:
En el último minuto, puse en el foro un obj.keys(word1) en realidad quise poner obj.keys(word2)
Cuando dije 4 * O(n), escondi que detras de eso en realidad es usar la formula n * (n-1) / 2 = (n*n - n) / 2 que se podria tomar como o(n*n) . Pero no queria perder tiempo explicando la formula.
Colaborar con la compra de un microfono: paypal.me/damiansire
Mi linkedin: www.linkedin.com/in/damiansire/
Mi twitter: twitter.com/damiansire
Instagram: instagram.com/damiansire/
Mi facebook: facebook.com/damian.sire.148/
Comunidad en discord: discord.gg/J28vAPK
Grupo de facebook: facebook.com/groups/865776550575105
Tus videos se escuchan muy bajo, de resto excelente video!!
Concuerdo, si le podes subir un poco el volumen a tus videos porfa, le puse al tope pero se escucha muy bajo
Me encanta haber encontrado un canal como el tuyo, como estudiante universitario de informática y apasionado a la programación, este tipo de videos es muy fundamental! ayuda muchísimo al aprendizaje y pensamiento algorítmico. Sigue así!
Muchas gracias camja!! Cualquier sugerencia, no dudes en avisarme
Qué gusto poder ver estos videos en español. En inglés no he podido encontrar algo así de bueno. Tus vídeos son un recurso supervalioso.
✌🏿 Saludos desde Sudáfrica
Desde Sudáfrica? Omg! Eso queda en otro continente, soy de Uruguay
@@DamianSireDesarrollo ¡Uruguay nomá! 😁 Gracias por el buen contenido
Buen contenido desde lo mas básico hasta lo avanzado y encima explicando las ideas que aplicas , mil gracias por compartir tus conocimientos ,exitos bro
Gracias Fede! Voy a tratar de explicar las funciones y eso (splice, slide, join, etc) en vídeos aparte
Cuando se te fue el return false casi exploto, me super activaste el TOC xD muy divertidos tus videos, la velocidad a la que explicaste este video me parece buena, hay veces que explicas algo 4 o 5 veces y se vuelve algo tedioso. Creo que alguien que sigue tus videos fácilmente entendió todo el procedimiento. Muchas gracias por tus videos c:
muchas muchas muchas gracias por tu comentario! Lo que sucede, es que también tengo que explicar para los que no entienden a la primera, lo siento :/ Imagínate yo, que me retornaba false y digo "que raro esto"
Joya de contenido, aunque no programo en Javascript, es un lenguaje que me interesa aprender, y que mejor que con contenido que me ayude a mejorar mi lógica de programación. Me suscribo!
Muchas gracias!!!
Pd: hay un curso introductorio desde 0 en este canal, tal vez te sirva
Genial, he aprendido más de algoritmia contigo que con los maestros de mi facultad, sigue así. 😎
Por comentarios como este, despues me mandan mail los profesores puteandome jajajja
Estoy aprendiendo JS y de verdad que tus videos me ayudan muchísimo, gracias
Muchas gracias!! Me alegro!!!
Estuvo tan bueno el video, que ni me di cuenta que me había tirado mas de 40 min viendolo, paso super rápido, muy buena explicación 👍
Muchas gracias sebastian!!
Man tenés un contenido muy fresco, tus videos, en especial estos de entrevista de trabajo, me tienen muy enganchado. Un saludo!
Muchas gracias!! Ahora estoy viendo de traer recluiters / gente que hace entrevistas
@@DamianSireDesarrollo Sería excelente!
Sos un grande, suerte que UA-cam me recomendó tu canal
Muchas gracias valentin!!
muy buen video, no te conformas con solucionarlo de una única forma sino que nos enseñas las formas más y menos eficientes 👏🏻
Muchas muchas gracias! Me parece fundamental mostrar el proceso de mejora, en general no se nos ocurren las mejores soluciones a la primera
qué bueno sería que cuando mencionas otro vídeo en el que explicas otro tema, por ejemplo el de los órdenes, pusieras el enlace al vídeo en la descripción
@@DanielLozadaDev dale
Cada video que sacas mejora la calidad de contenido, felicitaciones bro
Trato de aprender de los errores y mejorar! Muchas gracias por tu comentario!! Me alegro que de a poco vaya mejorando!
ME suscribo para seguir viendo Resolucion a entrevistas
¡Excelente contenido!
He aprendido bastante gracias a tu contenido.
Muchas muchas gracias!!
buen contenido broder, yo resolví de una manera un poco diferente, por si les interesa esta es la func:
const isAnagrama = (palabra, anagrama) => {
if (palabra.length !== anagrama.length) return false;
const arrPalabra = [];
const arrAnagrama = [];
let ban = true;
palabra = palabra.replace(/ /g, "").toUpperCase();
anagrama = anagrama.replace(/ /g, "").toUpperCase();
for (let index = 0; index < palabra.length; index++) {
arrAnagrama.push(anagrama[index]);
arrPalabra.push(palabra[index]);
}
const obj = arrPalabra.reduce(
(acum, x, i) => ({
...acum,
[x]: !acum[x]
? arrPalabra.filter((elem) => elem === x).length
: acum[x]++,
}),
{}
);
for (const key in obj) {
if (key === " " || obj[key] === 0) delete obj[key];
} //solo para evitar tener elem innecesarios en el arr
arrAnagrama.forEach((x) => {
const repeat = arrAnagrama.filter((elem) => elem === x).length;
if (obj[x] !== repeat) ban = false;
});
return ban;
};
Muchas gracias por tu comentario, luego con mas tiempo lo leo en detalle!
Amigoooooo no se por que Tenes tan poco seguidores si subís alto contenido, genio!!!!
Yo estoy entendiendo algo por que recién Arranco con html pero muero de ganas de saber JavaScript
Saludo de Argentina
Hace 2 semanas tenía 300 subs xD
Como me gustan estos videos sos muy capo
Muchas muchas gracias Gabriel, me alegro que te haya gustado!!
Genial tu contenido amigo, me encanta! Sólo que yo le subiría un poco más el volumen de tu voz, saludos desde Venezuela 👍👍
En estos días me consigo un micrófono nuevo!
Damian, excelente contenido, gracias por compartir tu conocimiento.
Muchas gracias a vos Tona, me alegro que te haya gustado!
Si Damian, tienes un don para enseñar y ademas el hecho de que compartas lo que sabes hace que tu contenido sea muy ameno y sencillo. Gracias a personas como tu, esta plataforma vale la pena.
alto canal, no puedo creer que tan solo tengas 7k de seguidores
Buen video !. Bastante entretenido y muy entendible
Muchas gracias Nico!! Espero te gusten los otros vídeos del canal también
gracias youtube por recomendar buen contenido
Me pone muy contento esto que decís!!
Excelente vídeo! Sabes que sería bueno, un vídeo donde expliques los distintos tipos de algoritmos que son necesarios de aprender, saludos.
Me gusta la idea!!
muy copada tu solucion brother!
Soy principiante, gracias por tu contenido tan bueno me inspira a seguir xd
De nada!! Voy a tratar de acompañar más, para llegar al nivel de esto
Buenas! Quisiera comentar que con la última formulación no evalúa la cantidad de veces que se repite el caracter/letra. Se está disminuyendo en 1 a todas las letras en el mapWord1. Si pruebas con isAnagrama("Tom Sorvolo Ryddle","Soy Lord Voldemorx") donde se cambia la última letra por una 'x' la función retorna true ya que solo evalúa la longitud del texto.
Capo, buenísimo tu contenido
Gracias!! Cualquier sugerencia es mas que vienvenida!!
Excelente contenido amigo, el peso algorítmico se conoce como Big O Notation
Si, exacto! No lo dije porque no queria ponerme a distinguir entre las distintas variantes
Muy bueno! Muy clarito!
Muchisimas gracias!!
Disculpa, cual es el link del video de orden del cual hablas???
Crack, gracias!!
Me puedes pasar el link de la entrevista? Gracias!
buen video y bien explicado. solo falta ver las pelis de harry potter para saber pronunciar el apellido ryddle jajajaja un abrazo papa
raidel
@@DamianSireDesarrollo ridl jajjaja nunca un perez o garcia
Genial!
Muchas gracias!!
Muy bueno, solo un detalle en tu ultimo metodo falto validar si no llega a 0 o es numero negativo. Pero overall muy bien!
Si no estoy mal, en la versión más eficiente eso tiene un error (44:53). Si tenés "aamor" y "roma" va a retornar true porque no estás validando la cantidad de letras. El if que está dentro del for debería ser:
if(mapWord1[letter] != undefined && mapWord1[letter] > 0) {
mapWord1[letter] -= 1;
} else {
return false;
}
Hola!! Se valida en la linea 19 (Te animas a fijarte si te referias a eso)
@@DamianSireDesarrollo tal cual.
Buenas clases crack! Creo que mejorar el ingles lleavaria todo el canal a otro nivel
Estamos en eso, estamos en eso jajajaja
@@DamianSireDesarrollo Genial! Te re recomiendo el canal de Code with Ania Kubów porque su inglés está perfecto y explica con javascript así que podés escuchar como pronuncia los nombres de todas las funciones que usás en tus videos.
Aparte de que te vas a querer casar con ella
@@matiquielma siiii, la ubico!! Vi el vídeo de cómo hacer un Flappy bears 😂 pero estoy complicado con los tiempos, voy a tratar de ver más!!! Graciass
Deje de ver el video cuando leí "Tom Sorvolo Ryddle", en vez de "Tom Marvolo Riddle" xd
Hubieras usado el clásico "Anita lava la tina"
Capoo...
Me alegro que te haya gustado!! También tenés una de Facebook que subí ayer, y por si fuera poco ahora estoy subiendo una de LinkedIn
Super bueno el video, yo lo solucioné con suma de ASCII que implementé en c++, si tengo errores agradezco que lo mencionen!! (debería de ser O(n), cierto?)
bool isAnagram(string frase1, string frase2){
regex regexp(" ");
string frase1RegExpr = regex_replace(frase1, regexp, "");
string frase2RegExpr = regex_replace(frase2, regexp, "");
transform(frase1RegExpr.begin(), frase1RegExpr.end(), frase1RegExpr.begin(),
[](unsigned char c){return tolower(c);});
transform(frase2RegExpr.begin(), frase2RegExpr.end(), frase2RegExpr.begin(),
[](unsigned char c){return tolower(c);});
int asciiFrase1 = 0;
int asciiFrase2 = 0;
for(int i = 0; i < frase1RegExpr.length();i++){
asciiFrase1 += frase1RegExpr[i];
asciiFrase2 += frase2RegExpr[i];
}
if(asciiFrase1 == asciiFrase2){
return true;
}
return false;
}
O(N) con espacio auxiliar, o(N log n) sin espacio auxiliar (necesitas eso para ordenar el array
@@DamianSireDesarrollo gracias!!!, la verdad es que soy un poco nuevo en esto de análisis asintóticos, y bueno en el área de algoritmos en general.
soy un bobo, el return puede ser:
return asciiFrase1 == asciiFrase2;
queda mejor aksdjaskjdk
amigo sos goooooooooooooood
Gracias nico!!!
Excelente video, lo que no entendí es si el orden final es de o(n) o de o(log (n)), gracias!
Hola!! Depende de qué algoritmo te refieras, hicimos varias soluciones en el vídeo
Igualmente, vas a tener que recorrer si o si todas las letras de una de las palabras, entonces si o si va a ser orden n
@@DamianSireDesarrollo ahh perfecto, me quedo con tu respuesta entonces! Mil gracias!!! Temía que me preguntes que función era jaja, era esta:
function isAnangrama (word1, word2) {
word1 = cleanString(word1);
word2 = cleanString(word2);
if (word1.length === word2.length) {
let mapWord1 = wordToMap(word1);
let mapWord2 = wordToMap(word2);
for (let letter of Object.keys(mapWord1)) {
if(!(mapWord1[letter] === mapWord2[letter])) {
// Si hay alguna letras demás
return false;
}
}
return true;
}
return false;
}
Mucho respeto
Porque? Jajaja Me gusta mucho tu nombre! Me hace acuerdo a los arboles de hash
Futuramente tendre mi canal de educacion de programacion
Por eso a si le puse
Respeto desde nicaragua❤
Que bueno!! Si algun dia necesitas un invitado, avisame nomas :P
creo que la ultima implementación está mal porque en la iteración la palabra se comprueba con sus mismas letras, ya no se está tomando en cuenta la segunda palabra por lo tanto siempre va a salir true a menos que tengan un length diferente y si no es así significa que no le entendí jaja
Tenés razón, hay que cambiar el 1 por el 2, en obj.keys
ya no se usaría Object.keys porque word2 no es un array no?
@@joseluisperezmontano2391 object.keys() te da las claves del objeto