Si no había if ni ternarios que usar, podrías haberte decantado por un switch case... Ya para un bucle, como tu lo hiciste, me pareció genial usar recursividad. Allí se supo que realmente dominabas el pensamiento lógico y el lenguaje donde decidiste trabajar. Maravilloso!!! Quiero ver como termina esta saga...
😅 Yo también consigo sacar ese código sin usar bucles ni condiciones y que me funcione todo a la primera, con sus tests y todo, en 5 minutos. Después de pensarlo hora y media, claro.
No he visto el resto del video(voy en 1:45, también lo primero que pensé fue recursión pero acabo de ver que es TypeScript, y también dejé avanzar un poco el video porque necesitaba saber cual era la entrada, no estaba seguro que fuera a ser un arreglo de tamaño arbitrario), pero creo que esto depende demasiado del lenguaje que se esté utilizando, en el caso de typescript usando map y filter se puede saltar fácilmente la restricción, lo siento casi como hacer trampa: // Returns false if no solution can be found function twoSums(numbers : number[], target : number) : number[] | false { let index = 0; const indexOf = Map(numbers.map((value) => { index++; return [value, index]; }); const valuesPresent = new Set(numbers); const numbersThatCanBePaired = numbers.filter(entry => valuesPresent.has(target - entry)); const pairAbleIndexes = numbersThatCanBePaired.map(entry => indexOf.get(entry)); let solution : number[] | false = false; const assignSolution = () => { solution = [pairAbleIndexes[0], indexOf.get(target - numbersThatCanBePaired[0])]; }; (pairAbleIndexes.length > 0 && assignSolution()); return solution; } Irónicamente lo mas difícil fue hacer que regresara `false` si no existe solución. En un momento me autocontesto y pongo una respuesta en C++, ésa será más interesante.
Acá está la solución en C++, para esta sí usé recursión ^^ : absl::status_or twoSums(const vector& numbers, int target) { std::unordered_set values_present(numbers.begin(), numbers.end()); std::unordered_map index_of; auto fillMap = [&](int index) { index_of[numbers[index]] = index; return index + 1 < numbers.size() && fillMap(index + 1); }; std::pair solution = absl::NotFoundError(""); auto findSol = [&](int index) { int value = numbers[index]; auto assignSol = [&] () { solution = std::make_pair(index, index_of[target-value]); return true; }; return (values_present.count(target-value) > 0 && assignSol) || (index + 1 < numbers.size() && findSol(index + 1)); }; return solution; } Supongo que hay manera de eliminar ese set y sólo usar el map, pero dada la limitante de no poder usar if prefiero no complicarmela de más.
Excelente video me encanto, en general este canal es una joya siempre estoy al tanto de todo lo que sale y me descargo videos para verlos en casa y tener mi propio repo de videos a la mano jeje
Tuve una similar hace poco en la que tampoco permitian la recursividad, nose si hay alguna tercera forma de iterar o si querian que busque alguna formula matematica
Tecnicamente cumple. Hay un chingo de problemas respecto a llamadas recursivas y throw que es costoso pero supongo que pasaría el test si lo pones en alguna plataforma.
Me alejé un poco de tu contenido, pero con este video me he dado cuenta que has mejorado tanto en producción como profesional, me encantó, saludos desde México
Tambien podrias haber iterado con etiquetas (una guarrada, sí, pero se puede), o podrias haber utilizado metodos de javascript como map, foreach o incluso reduce (el hacker no pone estas restricciones 😄).
@@javiergavilanmerida2133 en modo infierno sería haciendolo con desplazamiento de bits o con regex 🤣🤣. Hablando en serio, se podría resolver de mil maneras. El ejercicio es brutal.
Mi sobrina vendiendo turrones en la rambla cobra lo puto mismo que yo con una ingeniería y dos años ejerciendo . En vez de tanto hablar de lo mucho que mola programar, muchos canales debieran hablar de como está el mercado
El supuesto "Hacker" ese que te ha llamado seguro que es un hacker de pacotilla.
Espero que me libere el canal de youtube pronto 🥲
Par de cracks 😎👍
Dale ahí tito
Se parece a tu voz S4vitar de seguro usa una IA para suplantar tu voz 😂
😂😂😂 crack
El acento de S4av1tar es inconfundible jaja
Vaya... 😂😂😂
Real XDDD
😂😂😂
jaja seee super gitano
Si no había if ni ternarios que usar, podrías haberte decantado por un switch case... Ya para un bucle, como tu lo hiciste, me pareció genial usar recursividad. Allí se supo que realmente dominabas el pensamiento lógico y el lenguaje donde decidiste trabajar. Maravilloso!!! Quiero ver como termina esta saga...
Esto parece una película de Saw. Una prueba si sobreviven para que los juniors liberen su ego
Estaría buena una prueba así para subir de seniority 😆
s4vitar tiene una voz inconfundible.
Nunca había pensado en una prueba de ese tipo. Que joya de video. Gracias
Me alegro que te guste!!
Se puede hacer incluso sin Try Catch aunque eso implicaria hacer double-dispatch
Muy buen vídeo, el código que hiciste es muy interesante, la producción está excelente, espero más videos de estos. Saludos.
Como veo que os gusta, tengo varios en mente de esta serie 🙃🙃
😅 Yo también consigo sacar ese código sin usar bucles ni condiciones y que me funcione todo a la primera, con sus tests y todo, en 5 minutos. Después de pensarlo hora y media, claro.
Mi enhorabuena por el video, hacia tiempo que no te veia y me encanto!
Muchas gracias! 😊
No he visto el resto del video(voy en 1:45, también lo primero que pensé fue recursión pero acabo de ver que es TypeScript, y también dejé avanzar un poco el video porque necesitaba saber cual era la entrada, no estaba seguro que fuera a ser un arreglo de tamaño arbitrario), pero creo que esto depende demasiado del lenguaje que se esté utilizando, en el caso de typescript usando map y filter se puede saltar fácilmente la restricción, lo siento casi como hacer trampa:
// Returns false if no solution can be found
function twoSums(numbers : number[], target : number) : number[] | false {
let index = 0;
const indexOf = Map(numbers.map((value) => {
index++;
return [value, index];
});
const valuesPresent = new Set(numbers);
const numbersThatCanBePaired = numbers.filter(entry => valuesPresent.has(target - entry));
const pairAbleIndexes = numbersThatCanBePaired.map(entry => indexOf.get(entry));
let solution : number[] | false = false;
const assignSolution = () => {
solution = [pairAbleIndexes[0], indexOf.get(target - numbersThatCanBePaired[0])];
};
(pairAbleIndexes.length > 0 && assignSolution());
return solution;
}
Irónicamente lo mas difícil fue hacer que regresara `false` si no existe solución.
En un momento me autocontesto y pongo una respuesta en C++, ésa será más interesante.
Acá está la solución en C++, para esta sí usé recursión ^^ :
absl::status_or twoSums(const vector& numbers, int target) {
std::unordered_set values_present(numbers.begin(), numbers.end());
std::unordered_map index_of;
auto fillMap = [&](int index) {
index_of[numbers[index]] = index;
return index + 1 < numbers.size() && fillMap(index + 1);
};
std::pair solution = absl::NotFoundError("");
auto findSol = [&](int index) {
int value = numbers[index];
auto assignSol = [&] () {
solution = std::make_pair(index, index_of[target-value]);
return true;
};
return (values_present.count(target-value) > 0 && assignSol) || (index + 1 < numbers.size() && findSol(index + 1));
};
return solution;
}
Supongo que hay manera de eliminar ese set y sólo usar el map, pero dada la limitante de no poder usar if prefiero no complicarmela de más.
Mi pc hasta que enciende ya pasan los 5 minutos😂😂 xd
Muy top el podcast de The Commit Show !! Estaría guay que dedicaseis uno al Data Science o Machine Learning
Excelente video me encanto, en general este canal es una joya siempre estoy al tanto de todo lo que sale y me descargo videos para verlos en casa y tener mi propio repo de videos a la mano jeje
Gracias!!!!🫶
Mi solución en python:
def buscar(array, valor):
esta_en(array, valor, 0)
def esta_en(array, valor, indice):
elemento = 0
try:
elemento = array[indice]
except:
exit()
try:
1/(elemento-valor)
except:
print(indice)
esta_en(array, valor, indice+1)
Tuve una similar hace poco en la que tampoco permitian la recursividad, nose si hay alguna tercera forma de iterar o si querian que busque alguna formula matematica
Podrias iterar con un reduce (si no te prohiben tambien la PF)
Ahora imagínate en realizar el examen final de ingeniería en informática y les muestras esto a los profesores
Tecnicamente cumple. Hay un chingo de problemas respecto a llamadas recursivas y throw que es costoso pero supongo que pasaría el test si lo pones en alguna plataforma.
por favor no les des ideas a los profesores... :)
@@OnnaSoft la verdad es que en mi universidad no es así, tienen una rúbrica detallada de lo que debes hacer y que no
Muy didáctico el ejemplo y muy buena solución.
hmmmmmm
la vez que me pusieron esas restricciones era para que usáramos programación funcional. no se podría resolver usando eso?
Me alejé un poco de tu contenido, pero con este video me he dado cuenta que has mejorado tanto en producción como profesional, me encantó, saludos desde México
Welcome back!
Excelente video , por más videos así que ayudan mucho a la comunidad. Saludos
oye gracias por compartir me parece muy interesante lo estudiare
¡Ese crossover bueno ahí!
Se tensó la capa guan jandred madafakin eitinait
Dios, me he puesto nervioso, que bien hecho el vídeo 👏👏
Gracias! Estoy experimentando con formulas para darle un vuelco al contenido de programación clásico
@@BettaTech Pues te felicito!
Tambien podrias haber iterado con etiquetas (una guarrada, sí, pero se puede), o podrias haber utilizado metodos de javascript como map, foreach o incluso reduce (el hacker no pone estas restricciones 😄).
el forEach es un for xD hubieras perdido el canal
@@rogmarrivero6677 el hacker dijo for a secas, el foreach es otra cosa xD
@@EdwardDev Eso es en el modo fácil, en el modo infierno se hacen las cosas atado de pies y manos si hace falta 😂
@@javiergavilanmerida2133 en modo infierno sería haciendolo con desplazamiento de bits o con regex 🤣🤣.
Hablando en serio, se podría resolver de mil maneras.
El ejercicio es brutal.
Esa prueba podría ser una experiencia cercana a cualquier examen de ingeniería informática 😂😂
Cualquier parecido con la realidad es casualidad
Esta espectacular este nuevo enfoque de contenido, tienes todo mi apoyo❤
Gracias! 😊
No me ha avisado RUclips sobre tu nuevo video, en fin, gran video!
Creo que por alguna razón el vídeo no está acabando de atraer (en cuanto a miniatura o título), así que experimentaré un poco a ver xdd
Otra opción mas para mortales, para comparar dos números es dividir por la resta, si da cero dara error
Bueniiisiimo ajajja la parte del hacker de 10 🎉
Incluiré ejercicio de este estilo en entrevistas
Muy buen tipo de video 😮
Gracias!!! ❤️❤️
No lo hizo en 5 min no joda, ya sabía q hacer y lo pensó mucho más tiempo
que grande el tito savi!
Me ha encantado 🤩 ✍️
Muchas gracias!! 😍😍
¿y esto es para junios? lo he visto un poco complicado
Esta que se tensa!😂
Mi sobrina vendiendo turrones en la rambla cobra lo puto mismo que yo con una ingeniería y dos años ejerciendo . En vez de tanto hablar de lo mucho que mola programar, muchos canales debieran hablar de como está el mercado
Cine señores …. 🚬
Que video tan interesante, capto totalmente mi atención
Que buen video, hasta me emocione y me asuste.
Todos hablando de s4vitar pero nadie se fijó en Isadora. Doble cameo!!
S4vitar inconfundible!
Es Isadora 😮 7:17
y quien pingo es?
Gracias por tu videos, eres grande.
El Hacker tenia accent canari... qui serà qui serà
jaja me haces recordar a un ex coworker .....
Interesante propuesta.
Está bueno, esperando la parte 2.
Se tenso la cosa no?
Inténtalo en ANSI C
:oooo me exploto la cabeza.... genial
Ahora quítale la recursividad y los métodos que tienen internamente bucles 😂
esa no es la voz de savitar ?
Muy bueno! 😀
🤙 Gracias!!!!
Solo tengo que decir: El video está chingón.
Gracias!!!
La verdad es el mismo algoritmo escrito diferente pero bueno supongo que ese era el reto.
@s4vitar Se te reconoce por el acento 😂
Tome su like, buen hombre.
Arigato!!
genial pero con js no es dificil
Assert cuenta como if ? 😂
Jajaja podria!!!!
Tito Savi si fuera entrevistador
Métodos y ternarios?
Ternarias no se podían, pero por los comments han dejado otras opciones menos... esotéricas jaja
Grande tito savi
Parece más una prueba de cómo escribir mal código.
BUENISIMOOOOOOOOOOOOOOO
Buenísimo
Increible
Mil gracias!
O sea que estás buscando trabajo?
Primero
Para Junior??????? 😅🤣
Mastodonte, pitera.
Brujería!
Savitar XD
Recursiooooon
Y switch
Mira no pensé en el switch 😂😂