Resolviendo PROBLEMAS de ENTREVISTAS TÉCNICAS con SUSCRIPTORES

  Рет қаралды 67,206

BettaTech

BettaTech

Күн бұрын

Пікірлер: 201
@fedegregori318
@fedegregori318 4 жыл бұрын
Te ganaste un suscriptor que te va a comentar TODOS los videos. Lo bien que explicas y lo motivante que es este contenido es increíble! Gracias
@tonybravo5825
@tonybravo5825 3 жыл бұрын
Hola! Me he encontrado con tu canal y me ha encantado, hace poco hice un exámen para un trabajo con ese tipo de ejercicios y hubo uno que no me salió, tenía que hacerlo en python, aquí lo dejo esperando puedas asesoramos, Dado el siguiente diccionario, genera un programa que reciba dos números ‘x’ y ‘y’, posteriormente entrega como salida el mismo diccionario donde la llave “a” tendrá su contenido original más ‘x’ y la llave ‘b’ tendrá su contenido original más ‘y’. CMD = {"ID": 55, "Data": "hola", "More": [ {"a": 1}, {"b":2}]}
@jjmadeo
@jjmadeo 4 жыл бұрын
Martin, me encetaría que realizaras un video explicando el análisis de complejidad computacional de algún algoritmo, ya que en mi ultima entrevista no me fue bien por este tema, no supe analizar el costo computacional de mi algoritmo. saludos, me enseñas mucho
@Hadji404
@Hadji404 4 жыл бұрын
Lo mas sencillo que se me ocurre a esta hora es esto: function autocompletadoConFilter(palabras: string[], prefijo: string) { return palabras.filter(palabra => palabra.substring(0, prefijo.length) === prefijo) } Pero si no estuviese permitido hacerlo con el filter de ECMAScript, entonces optaria por el forEach que mantiene una legibilidad bastante similar (aunque ya pasaria a tambien ser O(N) de almacenamiento) Aca estan ambas soluciones implementadas con un test de unas 10.000 palabras: codepen.io/javierlazzarino/pen/YzWdWEg
@luisarturodelagarza133
@luisarturodelagarza133 4 жыл бұрын
El for else en Python funciona si al iterar no se interrumpe con un break, se ejecuta el código dentro del else. Saludos.
@RoylanMartinez
@RoylanMartinez 4 жыл бұрын
Hola, me acabo de suscribir por el simple hecho de fomentar este tipo de ejercicios de programación competitiva. Ojalá pongas algún otro reto u ejercicio a resolver entre los suscriptores
@aglon4288
@aglon4288 4 жыл бұрын
Yo lo que haria, sin ver este video ni nada, haría una estructura de pila (con una lista o lo si ya está implementada..), recorreria el string posicion a posicion apilando cada elemento que abre ( (, { , [). Cada vez que encuentro uno que cierra ( ), }, ]) desapilaría y compararia si el que desapile es el mismo que el que lei, si son iguales prosigo, si son distintos informo de error y paro el algoritmo. Cabe destacar que pueden pasar tres escenarios: Pila con elementos y fin de hilera: ERROR Pila vacia e hilera con algun elemento que cierra (cosa que no puede desapilar): ERROR Pila vacia y fin de hilera: Exito
@bettinimarcelo
@bettinimarcelo 3 жыл бұрын
Muy buena la opción de usar pares clave valor donde clave es el signo de apertura y valor el de cierre. Como novato que soy, no se me había ocurrido y es bastante obvio una vez que te lo enseñan. Gracias titán.
@acwolf849
@acwolf849 4 жыл бұрын
Contenido de calidad 🔥🔥🔥🔥🔥
@BettaTech
@BettaTech 4 жыл бұрын
Mil gracias!!!!
@ivanlhz
@ivanlhz 4 жыл бұрын
Muy buenas, desde mi punto de vista antes de ponerme a programar una solición a un problema como este me gusta aplicar TDD. Es decir, primero hacer los tests, con todas las casuisticas posibles, e ir creando / modificando el código que vaya dando positivo en cada casuistica. Un saludo.
@Detodounpocoenyoutube
@Detodounpocoenyoutube 4 жыл бұрын
Saludos, muy buen video, llamemos a los carácteres por su nombre, por lo menos asi lis conozco yo: paréntesis ( ) llaves { } y corchetes [ ] Gracias
@EduiNMarShalL
@EduiNMarShalL 3 жыл бұрын
Es verdad jeje
@nmarcel
@nmarcel 3 жыл бұрын
Recuerdo haber hecho ese mismo ejercicio en Clipper (allá por 1995) y fui el único del curso que lo tuvo 100% bueno (también usé un stack), je je.
@sanguchet3646
@sanguchet3646 3 жыл бұрын
Yo lo había hecho haciendo un Split del string, sacando todos los (),[],{} que haya y le saco los espacios vacíos, asique solo cuento cuántos carácteres hay, si es par entonces está bien, si es impar entonces salta el return con el False
@Ditmaros1
@Ditmaros1 4 жыл бұрын
function validate(test) { let regx1 = /\{\}/g; let regx2 = /\(\)/g; let regx3 = /\[\]/g; let len = test.length; for (let i = 0; i < len; i++) { test = test.replace(regx1, ""); test = test.replace(regx2, ""); test = test.replace(regx3, ""); if (test.length == 0) { return true; } } return false; }
@yeleqcrnoratasnipearataban5868
@yeleqcrnoratasnipearataban5868 4 жыл бұрын
Hola betta! Creo que la implementacion correcta al nuevo problema seria usar una estructura Trie
@monofachero7941
@monofachero7941 3 жыл бұрын
Cuando mencionó el problema pensé en el uso de contadores y recorrer el string caracter por caracter, es una solución que con arreglos de caracteres es muy eficiente.
@JorgeLPausa
@JorgeLPausa 2 жыл бұрын
Donde se puede encontrar el video donde se hace la revision del ultimo ejercicio?
@dwlince6473
@dwlince6473 4 жыл бұрын
En una materia de la universidad nos enseñaron sobre lexico,sintactico y semantico. donde desarrollamos el lexico y sintactivo que es la parte que mencionas todo de acuerdo al BNF y EBNF para definirla :D Saludos
@brandpcalderon5343
@brandpcalderon5343 2 жыл бұрын
Me encantó la útlima solución, hora de implementarlo en Java :3
@JoseOncina
@JoseOncina 4 жыл бұрын
Bueno, abajo tienes una solución en C++. En realidad la solución es solo el último for (de las líneas 27 a 29), lo demás es la lectura y preprocesado. Para compilar: g++ -std=c++2a -Wall -Wextra -pedantic -O3 pru.cc -o pru (ya lo sé, soy un poco exagerado con los warnings) Notas: 1) La opción -std=c++2a es necesaria porque estoy usando la función miembro "starts_with" que debería salir en la versión de C++ a publicar este año. 2) Tal como indica la documentación (www.cplusplus.com/reference/algorithm/lower_bound/), la función "lower_bound" tiene una comlejidad de log(N), donde N es el tamaño del vector. 3) Si no me equivoco, la complejidad de la búsqueda es de O(log(N)+n), donde N es el número de palabras y n es número de cadenas que tienen el prefijo buscado. (por los comentarios no me ha quedado claro si esto último había que contarlo). 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int main() { 10 string wordfile = "spanish.lst"; 11 string prefix="hola"; 12 13 ifstream is(wordfile); 14 15 if( !is ) { 16 cerr
@ramontomasevic
@ramontomasevic 3 жыл бұрын
Lo mejor de esos de los parentices es abrirlo y cerrarlo altiro el de cierre dejarlo abajo por ultimo para dejarlo presente que no se te olvide cerrar.
@FedeRacun
@FedeRacun 4 жыл бұрын
Me pasaron este y me parecio muy bueno: Una funcion recibe un dia de la semana expresado en 3 letras 'MON', 'TUE', 'WED', etc y un numero (puede ser de 0 a 500). La funcion debe devolver el dia que corresponde a la suma del dia dado y el numero. Ej funcion('MON', 7) debe devolver 'MON'. funcion('MON',2) debe devolver 'WED'. function('TUE',15) debe devolver 'WED'
@arntor8353
@arntor8353 Жыл бұрын
En python: def get_day(day, num): days = ("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN") return days[(days.index(day) + num) % 7] if day in days and 0
@patolote77
@patolote77 4 жыл бұрын
Excelente video. Gracias por compartir tus conocimientos!!!
@carlosp1116
@carlosp1116 4 жыл бұрын
Gracias por el video Bettatech!!!! Aprendo y me divierte más curiosear tu contenido que la u 😁. Saludos desde Perú!
@gabo_xp
@gabo_xp 4 жыл бұрын
recuerdo que lo vi en mi curso de compiladores! pero ya no recuerdo como lo implemente !
@bilfro37
@bilfro37 3 жыл бұрын
Este problema está muy bueno para implementar un autómata finito de pila. Muy interesante para pensarlo desde la perspectiva de los autómatas y los lenguajes formales.
@jimmymontenegro8517
@jimmymontenegro8517 3 жыл бұрын
Que entretenido, me gustó la última solución.
@luismontiel2800
@luismontiel2800 3 жыл бұрын
como se llama el editor de texto que utilizas??
@giopattoduck6785
@giopattoduck6785 4 жыл бұрын
trae màs contenido así por favor está de lujo casi no hay en español!! soy fan
@luis96xd
@luis96xd 3 жыл бұрын
Excelente video, muy buenas explicaciones, me gustó mucho aprender todas estas soluciones 😄👍
@JoseOncina
@JoseOncina 4 жыл бұрын
Si quieres hacerlo con le Bash de linux, basta con hacer: $ grep "^pref" spanish.lst donde "pref" es el prefijo que búscas y "spanish.lst" es el fichero de palabras. Desgraciadamente, la complejidad es lineal :-(
@diegoguzman1285
@diegoguzman1285 4 жыл бұрын
Sería muy interesante que intentaras hacer las soluciones un poco más TDD. Al menos en mi país a veces se nota la falta de experiencia en Unit testing y en las entrevistas se pone en evidencia
@tusbackingtrackes
@tusbackingtrackes 2 жыл бұрын
Paréntesis, corchetes y llaves. Todo tiene su nombre amigo
@eliaspaniagua1069
@eliaspaniagua1069 4 жыл бұрын
Y esto se puede hacer en Java? Perdonen la ignorancia
@DiegolVeintimilla
@DiegolVeintimilla 4 жыл бұрын
Claro, con cualquier lenguaje.
@eliaspaniagua1069
@eliaspaniagua1069 4 жыл бұрын
@@DiegolVeintimilla sabes de alguien que lo halla hecho o similar?
@aglon4288
@aglon4288 4 жыл бұрын
Se podría hacer con una BNF o una maquina de turing, pero no se si es valido jaja. Saludos. Buen Video.
@angelbarboza3254
@angelbarboza3254 4 жыл бұрын
Soy estudiante ISI de primer año, y aquí estoy viendo esto sin entender casi que algo :) jajaja, preparandome para futuro xD
@nazarenoalderete100
@nazarenoalderete100 2 жыл бұрын
Vamos ureeee yo soy de tercero jejeje
@eudyreynoso1889
@eudyreynoso1889 4 жыл бұрын
Alguien sabe cual será la fuente que usa?
@gastonarielarias
@gastonarielarias 4 жыл бұрын
Hola buenas Martin!! estaria bueno que dejes el link del codigo con tu solución!! Saludos y a seguir que es de mucha ayuda.
@sneydergarcia1953
@sneydergarcia1953 3 жыл бұрын
Disculpen mi estupidez pero con que de estructuras de datos se podría resolver?
@pepeluis766
@pepeluis766 4 жыл бұрын
Ahí va mi propuesta de autocompletado con un árbol en java: github.com/pepeluis76/autocompletado_arbol/tree/master/autocompletado_arbol/src Un saludo. Como mejora de optimización de la solución , podríamos asignar a cada nodo del arbol, aparte de la letra, el numero de veces que aparece ( en la creación del arbol se va incrementado el valor con cada nodo con cada nueva palabra que pasa por esa rama). Luego ordenamos los hijos de un nodo por el número de veces que apareció la letra. Así, al mostrar las opciones de autocompletado primarían los hijos con mayor valor. De todas formas la solución presentada parece rapidísima. Saludos nuevamente.
@Wuilson996
@Wuilson996 3 жыл бұрын
Mi solución en python. entrada = "[()]{()}{[()()]()}" entrada2 = "[(])" #funcion que verifica la entrada def is_valid(entrada): dic = {'[':']','{':'}','(':')'} valid = True aux = [] #toma el primer caracter y empieza a verificar si es apertura o cierre for character in entrada: if character in '({[': aux.append(character) else: try: if dic[aux[len(aux)-1]] == character: aux.pop(len(aux)-1) else: break except: valid = False break if aux: valid = False return valid print(is_valid(entrada2))
@BettaTech
@BettaTech 4 жыл бұрын
Puntos para aquellos que consigan resolver el reto con coste por debajo de O(N)! 😈😈😈😈😈 Añado, el coste ha de contarse el de buscar el conjunto de los prefijos. Es decir, queremos que el coste de la funcion autocomplete sea el menor posible. Si se ha de preprocesar el conjunto, vamos a asumirlo y listo, ya que siempre se ha de leer la entrada en algun momento. Tampoco contarenos el tiempo que tardas en imprimir la solucion, ya que eso ya seria en si mismo coste lineal.
@Alejandro-jo1fu
@Alejandro-jo1fu 4 жыл бұрын
O(n!), tómalo o déjalo (?)
@rainbow-jw3og
@rainbow-jw3og 4 жыл бұрын
@@lolimilesi1291 analisis algoritmico, personalmente creo que es lo que separa los buenos devs de los malos devs xd
@ebetanzosm
@ebetanzosm 4 жыл бұрын
Estimado Martín, si la entrada no está ordenada creo que no es posible bajar de O(n)
@BettaTech
@BettaTech 4 жыл бұрын
@@ebetanzosm Sure? 🤔🙄
@javiergavilanmerida2133
@javiergavilanmerida2133 4 жыл бұрын
@@BettaTech ¿vale un create table words (word varchar(255) primary key) con su select correspondiente? No creo que exista nada más rápido que eso (a menos que te programes un arbol B, donde al final simplemente estarás haciendo lo mismo xD)
@ricardoguevara7646
@ricardoguevara7646 3 жыл бұрын
Saludos, también existe una solucion con recursividad y sin pila suplementaria. =)
@Crus773
@Crus773 4 жыл бұрын
Un clásico de PRO1 en la FIB ;)
@sebastianc4557
@sebastianc4557 4 жыл бұрын
que tema utilizas para vim/neovim?
@LocalGhost_8080
@LocalGhost_8080 4 жыл бұрын
Un videito de buenas prácticas para escribir código, porfas
@SheigonSheffield
@SheigonSheffield 3 жыл бұрын
Como se haría en C para crear los pares? "(" es par de ")" "{" es par de "}" Gracias de antemano.
@lokenderossii
@lokenderossii 3 жыл бұрын
Podría ser una función que devuelva el cierre con un switch case
@Fran-kb2wi
@Fran-kb2wi 4 жыл бұрын
Excelente contenido, me suscribo ! un gusto conocerte.
@KoffeeCoding
@KoffeeCoding 4 жыл бұрын
excelentes videos siempreeee
@JoseOncina
@JoseOncina 4 жыл бұрын
No conozco el lenguaje de programación que estás usando, pero ¿qué pasaría si haces un pop de una pila vacía? ¿qué valdría "topChar"? ¿qué pasa si la cadena que le pasas es ")"?
@AlphariusOmegonREAL
@AlphariusOmegonREAL 3 жыл бұрын
Así hice el mio con python: def close(TopChar, character): abre = '([{' cierre = ')]}' for k,j in enumerate(abre): if j == TopChar: indO = k break for e,l in enumerate(cierre): if l == character: indC = e break if indO == indC: return True return False def comprobador(str): abre = '([{' stack = [] for i in str: if i in abre: stack.append(i) else: topChar = stack[-1] if close(topChar,i): stack.pop() if stack == []: return True return False intento1 = '[()]{}{[()()]}' intento2 = '[(])' print(comprobador(intento1)) print(comprobador(intento2))
@jorgecauich3367
@jorgecauich3367 4 жыл бұрын
Eres un capo, este tipo de vídeo ayudan a mejorar
@BettaTech
@BettaTech 4 жыл бұрын
Gracias!!!
@andresmoncada8637
@andresmoncada8637 4 жыл бұрын
Hola! Una solución rápida y sencilla: var string = '{[({}[]())]}'; var length = string.length; var count = 0; while (0 < string.length && count < length) { string = string.replaceAll('{}', '').replaceAll('[]', '').replaceAll('()', ''); count++; } console.log(string.length == 0 ? 'valid' : 'invalid');
@kiferingas129
@kiferingas129 4 жыл бұрын
Para este caso está excelente pero si hubiera algún texto ("32") ya no funcionaría pero muy buena esa
@ivanlhz
@ivanlhz 4 жыл бұрын
No sería valido cuando el orden de los cierres no es el correcto, un ejemplo { [ { ] } }
@kiferingas129
@kiferingas129 4 жыл бұрын
@@ivanlhz de hecho si sería válido por qué desde ya sabe que está mal por qué al no poder hacer un replace el string si tendrá length por ende en el .log saldrá invalid
@ivanlhz
@ivanlhz 4 жыл бұрын
@@kiferingas129 Pues si, había leido mal la solucion. El problema radica cuando agregas texto en medio de los cierres y no en el orden de los cierres. Lo mismo usando una expresion regular en los replace se podria solventar ese problema.
@kiferingas129
@kiferingas129 4 жыл бұрын
@@ivanlhz si era lo que comentaba para este caso está bien pero si añades texto ya no funciona aún que como dices con una expresión regular se solventa
@suchox
@suchox 4 жыл бұрын
suoer interesantes esta serie de video. 👌
@danielsarmientobolimbo6711
@danielsarmientobolimbo6711 4 жыл бұрын
Saludos desde Perú, buen contenido tiene tus videos. 😀
@BettaTech
@BettaTech 4 жыл бұрын
Muchas gracias! 😊
@yaredg
@yaredg 4 жыл бұрын
Excelente contenido 👌👌
@valderramaramirezangelgabr6289
@valderramaramirezangelgabr6289 4 жыл бұрын
hola, alguien sabe cómo instalar un autocompletado a Neovim? con vim-plug supuestamente tengo instalado YouCompleteMe, pero no autocompleta :( tengo Ubuntu 20.04 LTS
@valderramaramirezangelgabr6289
@valderramaramirezangelgabr6289 4 жыл бұрын
de antemano gracias
@juanmartinzuluagaacevedo759
@juanmartinzuluagaacevedo759 4 жыл бұрын
@@valderramaramirezangelgabr6289 Hola! Yo utilizo coc, quizá te sirva. github.com/neoclide/coc.nvim
@valderramaramirezangelgabr6289
@valderramaramirezangelgabr6289 4 жыл бұрын
@@juanmartinzuluagaacevedo759 muchas gracias!! lo probaré
@xjfw2
@xjfw2 4 жыл бұрын
Soy novato, por qué no contar los simbolos y si la cantidad de { es diferente a la de } entonces es inválido?
@kiferingas129
@kiferingas129 4 жыл бұрын
Por qué no tiene en cuenta el orden por ejemplo (}{) tiene la misma cantidad de ( ) y { } pero no están bien posicionados
@xjfw2
@xjfw2 4 жыл бұрын
@@kiferingas129 tenés razón, lo tendria que haber scripteado y me daba cuenta al instante
@johncerpa3782
@johncerpa3782 4 жыл бұрын
Excelente video
@michaelpaul7175
@michaelpaul7175 4 жыл бұрын
para resolver el ejercicio creo que se puede hace con arbol trie
@diegocazon5239
@diegocazon5239 4 жыл бұрын
yo lo relice en python y creo que tenes razon, pero creo que es dificil pasar de un tiempo de ejecucion lineal
@BettaTech
@BettaTech 4 жыл бұрын
Cual seria el coste de encontrar el conjunto de palabras que buscamos en un TRIE?
@michaelpaul7175
@michaelpaul7175 4 жыл бұрын
@@BettaTech en el peor de los casos, O(n) porque si el prefix seria un carácter entonces las posibles palabras seria todas las palabras. o no ? también O(h) si el prefix.length == h, siendo h la altura de árbol entonces solo una posible palabra
@eloytolosagomez5298
@eloytolosagomez5298 3 жыл бұрын
El primer problema se podría solventar igual con un integer = 0. Cada vez que abras paréntesis, corchetes... sumas uno y cuando encuentres un cierre restas uno. ¡Así gastas menos memoria! Me encantan tus vídeos sigue así
@srealmoreno
@srealmoreno 3 жыл бұрын
Se hace con un string ya que se debe saber el último carácter de apertura para verificarlo con el de cierre. Tu propuesta se rompería con: "((]]"
@andreperalta7720
@andreperalta7720 4 жыл бұрын
Aquí está mi solución al problema del final: github.com/Andre-PeraltaM/DocumentosVarios/blob/master/Autocompletado.ipynb Es sencillo y fácil de entender , espero lo veas.
@royerguerrerop5982
@royerguerrerop5982 4 жыл бұрын
Intenta pasarle un 1 millon de palabraas o mas
@royerguerrerop5982
@royerguerrerop5982 4 жыл бұрын
github.com/royerguerrero/autocompleter
@andreperalta7720
@andreperalta7720 4 жыл бұрын
@@royerguerrerop5982 Jajajaja en el ejemplo lo intenté con 270, podría intentar mandarle un libro en pdf
@edwarfrankponsbessio8821
@edwarfrankponsbessio8821 3 жыл бұрын
Tarde, recién veo esto!!! "use strict" let anterior = ""; const validate = text => { let res = text.replace(/({}|\[\]|\(\))/g, ''); if (res != text && res != "" && anterior != res) return validate(anterior = res && res); return res == ""; } Cómo lo ves ?
@rimuhrimu
@rimuhrimu 4 жыл бұрын
me acabo de dar cuenta, ¿eso de allá atras es una gameboy de las super viejas? no se ve bien porque no está enfocado pero si lo parece
@BettaTech
@BettaTech 4 жыл бұрын
Si, lo es! jaja estoy pensando en restaurarla porque la pantalla esta mal =(
@rimuhrimu
@rimuhrimu 4 жыл бұрын
@@BettaTech JAJA lo sabia! yo tambien tengo una y pues tambien está dañada que sad :´u espero que puedas repararla es una reliquia
@tonatiuhislas8006
@tonatiuhislas8006 4 жыл бұрын
Esta es mi solucion. No soy programador experto, asi que una disculpa por lo burdo de la solucion. Aun le faltan algunas validaciones como por ejemplo un regex para validar si el string es puramente los caracteres, pero en si mi solucion seria esta. github.com/TonaIslas-Git/Python/blob/main/betatech.py
@bettymaldonado2880
@bettymaldonado2880 4 жыл бұрын
👏🏻👏🏻👏🏻
@melchiah6603
@melchiah6603 3 жыл бұрын
Estaría padre que indique de color rojo el que no se cierta o no se abre.
@Wuilson996
@Wuilson996 3 жыл бұрын
mi solución en js var entrada = "[()]{()}{[()()]()}"; var entrada2 = "[()"; function is_valid(entrada){ dic = [['[',']'],['{','}'],['(',')']]; var valid = true; var aux = []; var opening = "({["; var closed = ")}]"; //toma el primer caracter y empieza a verificar si es apertura o cierre if(!closed.includes(entrada.charAt(0))){ for(i = 0; i < entrada.length; i++){ character = entrada.charAt(i); if(opening.includes(character)){ aux[aux.length] = character; }else{ for(j = 0; j < 3; j++){ //char = dic[i][1]; if(dic[j][1] == character){ //console.log(char); if(dic[j][0] == aux[aux.length-1]){ console.log(aux,dic[j][1]); aux.pop(aux.length-1); }else{ break; } } } } } }else{ valid = false; } if(aux.length != 0){ valid = false; } return valid; } console.log(is_valid(entrada2));
@danielclow
@danielclow 2 жыл бұрын
A mi se me ocurrió algo parecido ala tercera respuesta, pero lo hice en menos líneas, claro solo lo hice con js, estuvo bueno, pensé que me demoraría menos, pero me costo xd
@jsonft5417
@jsonft5417 4 жыл бұрын
Algoritmo de betta: un PDA
@uninhm
@uninhm 4 жыл бұрын
Solución en Python: repl.it/@unaihernandez/Bettaproblem-2
@BettaTech
@BettaTech 4 жыл бұрын
Se os ocurre alguna solución que no sea O(N)? 😈
@uninhm
@uninhm 4 жыл бұрын
@@BettaTech Lo único que se me ocurre sería si el conjunto de palabras está ordenado.
@uninhm
@uninhm 4 жыл бұрын
@@BettaTech Ahí está, lo mejor que pude conseguir para la prueba fue una lista de 80300 palabras :P PD: El link está actualizado con la nueva solución O(log n)
@carlosarena9864
@carlosarena9864 4 жыл бұрын
Como no sé de algoritmos lo haría con un query de MySQL conectado al PHP para mostrar el resultado en un html. Pensar correcto es lo que hago 😂
@juanandresmolina9704
@juanandresmolina9704 4 жыл бұрын
En realidad el lenguaje es lo de menos, lo importante es que la lógica sea correcta y eficiente, así que un Query de MySQL sería totalmente válido.
@moisescaicedo4078
@moisescaicedo4078 4 жыл бұрын
La tercera fue la manera de solucionarlo...!
@estebanruizrodriguez
@estebanruizrodriguez 4 жыл бұрын
Más vale tarde que nunca. Aquí va mi propuesta: codepen.io/stevebass7/pen/vYKoowj Cargo un texto del Quijote repetido varias veces para superar 1.000.000 de palabras. Uso de debounce para suavizar la búsqueda con un límite de 1000 palabras para no colapsar (de sobra para un autocompletado, solo para probar el performance). Toma en cuenta los separadores (espacios, puntos, comas) con regex. Al final el código de búsqueda es lo de menos con tantas pijotadas.
@uninhm
@uninhm 4 жыл бұрын
Solución en Nim: play.nim-lang.org/#ix=2Dm1
@Luis-ww1kx
@Luis-ww1kx 4 жыл бұрын
Les saluda un colega back-end. Se que muchos de aqui son desarrolladores front-end, sin embargo les dejo mi pequeña aplicación de "Autocompletado" al puro estilo BACK. Para los que se sientan dolidos en su alma, incluí Swagger para darle un poco de color y emoción como a ustedes les gusta :) ... github.com/luisorellana777/autocompletion-api
@JorgeLPausa
@JorgeLPausa 2 жыл бұрын
Hola, el link de slack me pone que ya no funciona. Dejo por aca mi solucion function validate(text: string) { let stack: string[] = []; let parenthesisArray = text.split(""); let closers: { [key: string]: string } = { "[": "]", "(": ")", "{": "}", }; for (const character of parenthesisArray) { if (openCharacter(character)) { stack.push(character); } else if (character === closers[stack[stack.length - 1]]) { stack.pop(); } else { return false; } } return stack.length === 0; } function openCharacter(character: string): boolean { return ["{", "(", "["].includes(character); }
@micanaldaro
@micanaldaro 4 жыл бұрын
( : paréntesis [ : Corchete { : Llave
@BettaTech
@BettaTech 4 жыл бұрын
Esooo 😂😂
@nahuelahumada9394
@nahuelahumada9394 4 жыл бұрын
Lo que te dirían en una entrevista con la tercera solución es: "Resuelve, pero con más complejidad de la que debería". Siempre busquen hacer la menor cantidad de recorridos posibles
@blissofking3335
@blissofking3335 4 жыл бұрын
Gracias por el video
@BettaTech
@BettaTech 4 жыл бұрын
Gracias a tí por ver el vídeo! 😊
@petterjhuniorgarciainfante5732
@petterjhuniorgarciainfante5732 3 жыл бұрын
La solucion que se me ocurrio en Kotlin: pl.kotl.in/tFT1P1ZuE
@aronjham.oviedojhamilaron4930
@aronjham.oviedojhamilaron4930 4 жыл бұрын
DIOS os bendiga. :D
@MrJDChavarro
@MrJDChavarro 4 жыл бұрын
Aqui mi solucion: codepen.io/jdchavarro/pen/rNLZRLr Intente hacerlo por medio de un arbol, al final del codigo deje una solucion mas sencilla de implementar
@sebastiansuarezvalencia5114
@sebastiansuarezvalencia5114 4 жыл бұрын
Mi solución es más elegante (JS avanzado 😎): console.log(true); console.log(true); console.log(false);
@wilmerterrero
@wilmerterrero 4 жыл бұрын
En una entrevista real ¿cuánto tiempo te dan para resolver este tipo de ejercicios? Porque con los nervios y el estrés dudo que me salga una solución así jajaja
@yonatanaquinteror2989
@yonatanaquinteror2989 4 жыл бұрын
A mi me dieron 15 minutos
@arntor8353
@arntor8353 Жыл бұрын
@@yonatanaquinteror2989 alv
@angelzc915
@angelzc915 4 жыл бұрын
Ala si sabia que harias esto hubiera participado :c
@rainbow-jw3og
@rainbow-jw3og 4 жыл бұрын
tengo el examen de mercado libre de dev backend es una es la empresas mas importante de latam
@jdcr1425
@jdcr1425 4 жыл бұрын
compartelo bro
@wilermarinez
@wilermarinez 3 жыл бұрын
DE
@locochon9268
@locochon9268 4 жыл бұрын
ay :c pense que el reto era reciente y lo hice de todas formas
@locochon9268
@locochon9268 4 жыл бұрын
execution_stack = [] adjective = { "bald", "attractive", "beautiful", "chubby", "brave", "calm", "delightful", "ckumsy", "big", "fat", "gigantic", "great", "huge", "inmense", "large" } singular_verb = { "is", "does", "has", "can", "could", "may", "might", "must", "will", "should", "would" } singular_noun = { "bed", "sister", "bike", "dog", "computer", "room", "cat", "bird", "tv", "guitar" } adverb = { "daily", "happily", "usually", "potentially", "helpfully", "crossly", "poorly", "solemmly", "softly", "heavily", "quicker" } # S -> NOUN_PHRASE VERB_PHRASE DOT S # S -> lambda # VERB_PHRASE -> # NOUN_PHRASE -> NOUN_PHRASE2 # NOUN_PHRASE2 -> NOUN_PHRASE # NOUN_PHRASE2 -> # DOT -> . # S = 4 # NOUN_PHRASE = 1 # NOUN_PHRASE2 = 5 # VERB_PHRASE = 2 # DOT = 3 # = 1000 # = 1001 # = 1003 # = 1002 # . = 1004 reverse_sugestion_dict = { 1000: singular_verb, 1001: adverb, 1002: adjective, 1003: singular_noun, 1004: {"."} } productions = { 1 : [4 ,3, 2, 1], 2: [], 3: [1001, 1000], 4: [5, 1002], 5: [1], 6: [1003], 7: [1004], } predict_table = { # First (4, 1002) : 1, (1, 1002) : 4, (2, 1000) : 3, (2, 1002) : 5, (3, 1004) : 7, (5, 1003) : 6, (5, 1002) : 5, # Follow (1, 1000) : 2, (2, 1004) : 2, (3, 1003) : 2, (3, 1002) : 2, } suggestions = { 1: [1002], 3: [1004], 2: [1000], 4: [1002], 5: [1002, 1003, 1000] } def parser(tokens): print(tokens) global execution_stack execution_stack = [1003, 4] for token in tokens: while True: top = execution_stack.pop() if top < 1000: # non terminal symbol axis = (top, terminal(token.lower())) print(axis) if axis in predict_table: row = predict_table[axis] execution_stack += productions[row] print(execution_stack) else: print("Error de sintaxis") else: # terminal symbol if terminal(token.lower()) == top: break else: print("Hubo un error con tu sintaxis") return if execution_stack[-1] == 1003: print("Felicidades sabes escribir :D") def terminal(token): if token in adjective: return 1002 if token in singular_verb: return 1000 if token in singular_noun: return 1002 if token in adverb: return 1001 if token == "EOF": return 1003 if token == ".": return 1004 return 1005 # any other phrase def getSugestions(): print("Tu autocompletado") global execution_stack global suggestions top = execution_stack[-1] if top >= 1000: if top in reverse_sugestion_dict: target = reverse_sugestion_dict[top] for suggestion in target: print(suggestion) elif top in suggestions: targets = suggestions[top] for target in targets: for sug in reverse_sugestion_dict[target]: print(sug) buffer_text = "" while True: print(f'Texto en el "corta papeles": {buffer_text}') text = input(f"Ingresa tu oración aqui y presiona enter para el autocompletado -> {buffer_text}") if text == ":c": buffer_text = "" else: buffer_text += text tokens = buffer_text.split() parser(tokens) getSugestions()
@locochon9268
@locochon9268 4 жыл бұрын
Así fue como lo soluciones, con una analizador sintactico y separando todo por espacios, no tiene semantica, por eso el autocompletado es muy basico
@sebastiansuarezvalencia5114
@sebastiansuarezvalencia5114 4 жыл бұрын
Modifique un poco el ejercicio para que pudiera leer un string con "código" y con símbolos modificables, por si a alguien le interesa verlo y dar sugerencias: gist.github.com/SuarezValenciaSebastian/9332da8a7bb0519654e367dfc2351963
@bigWazaa
@bigWazaa 2 жыл бұрын
Me acabo de mirar tu solución y veo que has llegado a la misma idea que yo, usar una cola LIFO. string test = "[({})]"; bool Check(string toCheck) { Stack[char] check = new Stack[char](); for (int i =0; i
@juanacosta7826
@juanacosta7826 4 жыл бұрын
no entiendo ni bosta jajaj :(
@rinconfede
@rinconfede 4 жыл бұрын
no estas solo amigo xD
@warzonesincortes-espanol1747
@warzonesincortes-espanol1747 2 жыл бұрын
Mac Miller programador.
@gattoalaparato
@gattoalaparato 4 жыл бұрын
Mi solución! github.com/debello/Bettatech-desafio2
@antonygiomarx
@antonygiomarx 4 жыл бұрын
Primer comentario, sos Grande Martín.
@BettaTech
@BettaTech 4 жыл бұрын
Vosotros sí que soys grandes :D
@lolimilesi1291
@lolimilesi1291 4 жыл бұрын
yo entendí que hay que hacer algo como esto codepen.io/taquion009/pen/XWXBMVZ?editors=0011
@braianledantes5772
@braianledantes5772 4 жыл бұрын
Listo acá les dejo mi solución en Java: github.com/chutebnl/Autocompletdo/blob/master/problemas/Autocompletado.java
@royerguerrerop5982
@royerguerrerop5982 4 жыл бұрын
github.com/royerguerrero/autocompleter El reto terminado, creo
@aralizavid
@aralizavid 3 жыл бұрын
///////////////////////////////////////////////////////////////////////// const array = ['hola','qundo','ivan', 'ivaN','samira,']; const result = array .map((item) => item.toLowerCase().replace(/[.,!]/g,'')) .reduce((acc,item) => { acc[item] = (acc[item] || 0)+1; return acc; },{}); console.log(result); //////////////////// mi solucion usando reduce y map , bueno esto teniendo ya el texto convertido en array
@voces352
@voces352 4 жыл бұрын
También se puede reemplazar los de apertura en 1 Y los de cierre en -1, se itera el array y se van sumando, si en algún momento la suma es -1 o si al final no es 0 entonces regresa falso 🤣
@BettaTech
@BettaTech 4 жыл бұрын
Y como distingues que {{)) es invalido? 🤔
@Totti619YT
@Totti619YT 4 жыл бұрын
Hola! Aquí te dejo mi solución al problema del autocompletado github.com/Totti619/bettatech_autocompletado
@MaxJusth
@MaxJusth 4 жыл бұрын
Lel
@BettaTech
@BettaTech 4 жыл бұрын
Se os ocurre alguna solución que no sea O(N)? 😈
@Totti619YT
@Totti619YT 4 жыл бұрын
@@BettaTech sortear las palabras antes de aplicar el filtro seguiría siendo O(N)? 😅
@uninhm
@uninhm 4 жыл бұрын
@@Totti619YT Sería peor, el hecho de ordenarlas suele tardar O(n log(n)), depende de la implementación del sort.
@uninhm
@uninhm 4 жыл бұрын
Hay algunos sorts lineales, pero la solución seguiría siendo lineal.
@fabriperoconalgomasytodojunto
@fabriperoconalgomasytodojunto 4 жыл бұрын
uwu
¿En qué consiste REALMENTE la PROGRAMACIÓN DINÁMICA?
13:20
6 ESTRUCTURAS de DATOS que todo INGENIERO debería CONOCER
12:52
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 45 МЛН
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 53 МЛН
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
This open problem taught me what topology is
27:26
3Blue1Brown
Рет қаралды 316 М.
Así es la REALIDAD de las ENTREVISTAS TÉCNICAS
7:33
BettaTech
Рет қаралды 102 М.
Arrays con JS - JavaScript for humans beings
30:07
Otro Profe Marco
Рет қаралды 25
RESOLVIENDO Problemas de Programación (Advent Of Code 2021)
14:37
10 marcas que la C4G4RON con las traducciones 😅 • #Datazo
16:50
Pablo Molinari
Рет қаралды 200 М.
Exploring Abandoned Games From Your Childhood
20:00
globert
Рет қаралды 51 М.
TECHNICAL INTERVIEW SOLVED! For JUNIOR PROGRAMMER
26:34
Carlos Azaustre - Aprende JavaScript
Рет қаралды 178 М.
ESTIMAR tareas de DESARROLLO de la MEJOR FORMA POSIBLE
13:04
BettaTech
Рет қаралды 40 М.
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН