This graph shows how many times the word ______ has been mentioned throughout the history of the program.
No os prometo nada, pero es una prueba técnica para un trabajo que son la friolera de 170.000 dólares al año.
Eso, igual no lo paso por eso, es mucho dinero, pero lo vamos a intentar y, hombre, son 170.000 dólares.
Si os sirve, aprendéis algo y aplicáis con esto o con una versión mejor, pues oye, ¿quién sabría?
¿Dónde te has conseguido la playera de GitHub? Esta no es la playera de GitHub, esta es de Discord.
Esta es de Discord. A ver, a ver, ¿dónde te has conseguido eso? Ya lo he dicho.
Hombre, eso no fue un chiste, para mí fue merecido. Bueno, aunque sea algo de mal gusto, un comentario de mal gusto,
es necesario realmente levantarte a imitar y darle una hostia. O sea, que yo no estoy defendiendo a este hombre,
porque además el intento de gracia es muy malo, pero tanto como para levantarte y defender el honor.
Me parece como tan medieval, defender el honor. No sé, es que he visto chistes mucho peores.
A mí me gusta mucho el humor de Ricky Gerbais y, madre mía, madre mía, madre mía.
¿Cuánto falta para la actualización en JavaScript que introduce los proxys?
A ver, los proxys ya están disponibles en JavaScript. No tienes que esperar nada.
Lo que tienes que mirar es si, vamos a verlo, vamos a verlo, cuál es el navegador que no lo soporta.
Eso es lo que tienes que mirar. Por ejemplo, tú te vas para acá y miras aquí, pones proxy, proxy object.
Pues aquí tendrías que ya lo soportan 95% de los navegadores y que tenemos, pues por ejemplo,
la verdad es que tiene bastante buen soporte. En lugar de Internet Explorer 11, por lo demás,
incluso Safari desde la versión 10, o sea, tiene Firefox 18, tiene un muy buen soporte de proxy.
O sea, no tienes que esperar más. Los proxys ya puedes utilizar.
Así que, ¿Midu, hay alguna diferencia entre Postman e Insomnia que conozcas?
Sí, que me gusta más Insomnia. Me gusta bastante más Insomnia. Es que Postman ya cada vez tiene más cosas.
Cada vez tiene más cosas.
Yo quiero una tacita de Bersel, que vi que Lerop hizo una app con todas las tazas.
Sí, yo también quiero una y no tengo tacita de Bersel.
Midu, tengo 800 unit tests rotos y esto es un peñazo.
Hostia, sí, es una putada.
Pero si tienes tantos tests unitarios rotos, pregúntate por qué.
¿Por qué? ¿Por qué tienes tantos tests unitarios rotos?
¿Qué has hecho? ¿Algo habrá pasado ahí? Algo ha ocurrido, ya te lo digo yo.
Porque no es tan normal. Algo ha pasado ahí.
Hoy he empezado mis prácticas en una empresa. Trabajamos con React y Django.
Y te doy las gracias por todos los vídeos que has hecho. Me has ayudado mucho.
All right, Musi and Punch. Nada, un placer. Me alegra mucho ayudarte.
Mi primer live con Midu Def. Excelente experiencia.
Dice Calizer. Hostia, hola Midu. Saludos desde Colombia. ¿Cuándo vienes?
Oye, amigos, si queréis que vaya a vuestro país. O sea, yo no estoy en Barcelona.
Yo no tomo la bicicleta ni el autobús y llego a Bogotá. ¿Te imaginas? Eso es increíble.
Pero no es así. El teletransporte tampoco me funciona todavía.
Entonces, si queréis que vaya a Bogotá, a Ecuador, a Uruguay, a yo que sé,
lo que tenéis que hacer es que cuando hagan una conferencia por ahí, yo que sé, la GS Conf,
o una conferencia muy grande, les escribís y les decís, tienes que invitar a Midu Def.
Ponte en contacto con este chico que venga aquí. ¿Por qué? Porque así puedo mover más maquinaria.
Me puedo pillar, si es una conferencia en condiciones que le puede interesar a mi empresa y tal,
me puedo pillar días de vacaciones, igual me pagan el viaje o me ayuda a la conferencia para ir para allí.
Y entonces ya tengo una excusa para ir. Porque si no, es imposible que pueda ir. Es imposible.
Pensad que Bogotá, que son, pues, 12, 14 horas. Y si Bogotá, Medellín, lo que sea.
O sea, si es Medellín, pues lo mismo, tiene que ser una conferencia.
Hola, Aníbal. Tú si quieres, guapo. Salud desde Panamá.
Midu, mira lo que pusieron a Will en un Twitter. A ver, ponlo.
En julio voy a Perú para ver a mi pareja. ¿Te vienes conmigo y haces tour por LATAM?
Sí, claro, Perú también. Aquí al lado, Perú.
Textualmente dice en referencia...
Pienso que su mejor actuación este último año ha sido ser simpático y amable con los novios de su mujer.
Vaya, tía.
¿Sabes cuál es el siguiente sitio al que irás, Midu?
Bueno, por ahora me voy a quedar aquí, quieto, eh. Quieto, quieto aquí. Por ahora quieto.
No sé, no sé. Colombia es un sitio que me gustaría mucho. Me gustaría mucho ir a Colombia.
Midu, estoy en un proyecto mediado con RIAG y el bundle es catastrófico. Un curso de optimización.
Bueno, ya he hecho algunos. O sea, he hecho pequeñas cositas. Así que...
Midu, te gasto una empanada si vienes a Bogotá. Hostia, estoy salvado. O sea, está entre el viaje, el billete de avión y la empanada. O sea...
Midu, es obligatorio escribirte ese en los proyectos. Hombre, si quieres dormir bien por las noches o más reyes, yo te lo recomiendo.
Te lo recomiendo, la verdad. Te lo recomiendo.
Bueno, vamos a ver, vamos a ver. Os voy a enseñar una cosita. Os voy a enseñar una cosita, va. Os voy a enseñar la prueba. Os voy a enseñar la prueba técnica.
Bueno, aquí tenemos a Jesús Seijas. No sé si lo he dicho bien, pero Jesús me lo perdonará.
Hola, busco una persona más para mi equipo. Las condiciones. Full remote, salario de unos 160.000 dólares.
160.000 dólares. Dios mío, que lo lamo eso.
160.000 dólares. ¿Qué haría yo con 160?000 dólares.
Eso sí, pone acá autónomo, ¿eh? O sea, 160.000, pero tienes que ser autónomo.
Aquí en España, a ser freelance, más o menos, se le llama autónomo.
Y tienes que parar. Por esto es un poco...
¡Hostia, GS Code! ¡Felicidades por el aniversario de un añito! ¡Qué grande! Muchas felicidades.
Y gracias, Kaliser, por suscribirte durante un mes con nivel 1. Muchas gracias.
Bueno, pues Jesús dice...
¿Cómo enviarme el currículum? Resolviendo este challenge.
Además, entre las 10 primeras personas que lo resuelvan, sortearé el Ghostwire Tokyo para Steam.
Bueno, entonces este es el challenge en el que... Vamos a leer un poquito.
Introducción.
Te encuentras un espejo extraño, como el doctor extraño.
Un espejo extraño como el doctor extraño.
Hola, Beto, ¿qué tal? Alces, ¿cómo estás?
Sí, ahí está el truco, pero hombre, yo como autónomo 170...
¿Cuánto era? 160.
No está mal, ¿eh? No está mal.
Limpios, pongamos que limpios te quedan en la mitad.
Son 80.000 dólares al año.
Limpios, limpios.
O sea, es bastante, ¿eh?
Es bastante.
Porque es que, bueno, no sé.
No voy a pensar más en esto, porque total, no...
Tengo una prueba técnica, realicé todo, pero no puedo hacer un requerimiento.
Busqué y busqué, pero no encuentro solución.
Envío la solución así o mejor no la mando.
Es para un puesto comprobado.
Mejor mandar algo que no mandar nada.
Entonces, si quieres probar...
Y además te pueden poner feedback o ponlo en Discord también, que la gente ayuda en el Discord de la comunidad.
Vale, vamos.
Venga, te encuentras...
Vamos con la prueba técnica de los 160.000 dólares.
Igual no me sale, ¿eh?
Que igual no me los he ganado.
Vamos a intentarlo y iremos poco a poco a ver hasta dónde llegamos.
Te encuentras un espejo extraño donde siempre se muestra una mano moviéndose.
¿Vale? Una manita.
Esta mano parece que está viva.
Hostia, pero esto es una prueba técnica de terror.
Me da miedo.
Y después de un montón de preguntas de sí o no,
sabes lo que la mano está intentando...
Lo que la mano te está intentando enseñar.
Que está escrito con el lenguaje Hand Programming Language.
O sea, el lenguaje de programación de la mano.
Suena fatal ese nombre, pero vamos a seguir.
Este lenguaje trabaja con una memoria con un número indefinido de bytes.
Los cuales todos se inicializan a cero.
Este lenguaje tiene siete instrucciones, ¿vale?
Y cada emoji es una instrucción.
O sea, si la manita sale para la derecha,
mueve el pointer a la siguiente celda.
Si sale a la izquierda, mueve el puntero hacia la celda anterior.
Si es hacia arriba, incrementa la posición actual de la celda, de la memoria.
La incrementa.
Si es hacia abajo, la decrementa.
Si tiene un puñito, dice la celda de la memoria está en la posición...
Si la celda de la memoria...
Si...
Vale.
Si el valor de la celda actual, o sea, en la posición en la que estamos ahora, es cero,
entonces salta hasta después del puñito que cierra.
Dios, Dios, con saltos.
Madre mía.
Yo he sido demasiado valiente para decir estas cosas, ¿eh?
Madre mía.
Vale.
Y si es...
Esto es el puñito que va hacia la derecha.
Dice si el valor de la posición actual es cero,
entonces salta hasta el correspondiente puño contrario.
Salta hasta ahí, supongo que justo después, o sea, la posición siguiente.
Si el puño es al revés,
entonces si el valor de la posición actual en la memoria no es cero,
entonces salta...
Es como que va al inicio, ¿vale?
Es como que si fuese un loop.
Entiendo que es como si fuese un loop, ¿no?
Porque haría pam, saltaría, pam, pam.
Vale.
Sería como un bucle.
Y tenemos este puñito en la cara.
Esto es un poquito puñito Will Smith,
donde lo que hace es mostrar el carácter actual representado por el código ASCII
definido por su posición actual.
A ver, ASCII code, JavaScript, yo ya voy buscando.
ASCII code.
Yo me imagino que es esto, el charcode add.
Esto es lo que me imaginaba.
Es lo que me imaginaba.
Bueno, pues a ver, dentro que cabe...
Shortcode add, ¿vale?
Ah, no, pero esto es el índice.
Esto no sería para crearlo, ¿no?
Es este.
Yo creo que es este.
El from charcode.
Este, este.
¿No?
Y aquí le pasamos el número y tal.
Vale.
Bueno, a ver, se ve, se ve, ¿eh?
Se ve.
Es un poco máquina de Turing.
Sí, sí, un poquito, ¿eh?
Un poquito.
No, no.
Va al siguiente puñito igual.
No, o sea, va...
Dice, si el valor no es cero, entonces va al siguiente, pero al que había iniciado.
O sea, es un bucle.
Parece un bucle, ¿eh?
Me suena mucho a brinfa, que es igualito.
Sí, tiene pinta que se parece.
Vale.
Bueno, ok.
Notas.
Las celdas de memoria son bytes y van del cero al 255.
Si tú del cero bajas uno, entonces tienes que...
Es como que da la vuelta, ¿no?
Del cero, en lugar de pasar al menos uno, pasarías al 255.
Si incrementas 255, entonces pasarías al cero.
Y...
Ah, mira, ¿ves?
Loops.
Es que ya lo pone aquí.
Loops.
Los loops estos pueden ser anidados.
Dios mío.
Vale, y aquí tenemos dos tests.
Este programa de display, hello, hello.
Y este programa con bucles anidados es Hello World.
¿Vale?
Vale, pues ya tenemos aquí nuestros tests.
¿Estamos preparados?
¿Estamos preparados?
Para el que acaba de unirse, que sepáis que estamos...
Vamos a intentar hacer una prueba técnica, a ver qué nos sale.
Con Node lo haremos, pero bueno, es JavaScript,
que esto también funciona en el frontend.
Para un salario de 160.000 euros.
Para ser autónomo.
Dólares, perdón.
No euros.
Dólares, que vale un poquito menos, ¿eh?
Venga, vamos a intentarlo.
Os dejo la prueba por si la queréis ir leyendo, ¿vale?
Pero básicamente me ha quedado bastante claro.
Yo creo que lo que tenemos que hacer es ir tirando, ir tirando y a ver qué sale de todo esto, ¿vale?
Así que lo que voy a hacer es...
Vamos a abrir esto.
Vamos a irnos a Dev.
Vamos a crear aquí el Hunt Challenge este.
Hunt Challenge.
Compartir la pantalla, ¿verdad?
Sí, es que digo, soy capaz de no compartir la pantalla.
Vale, vamos a hacer un npm init con guión y esto es para inicializar el proyecto así, tal cual, de buenas.
Vale, hacemos un code punto y con esto vamos a abrir Visual Studio Code.
Vale, Visual Studio Code.
He estado probando unos temas y por eso lo tengo totalmente así de este color.
No os asustéis.
Voy a poner el index.js y me voy a copiar esto que ponía por aquí, esto, para que me sirva un poco de guía, porque entiendo que esto es lo más importante.
Así que vamos a copiarnos esto.
Vamos a copiarnos esto.
Hostia, hostia, hostia.
Ahora.
Joder.
Voy a copiarme este comentario, que básicamente es la chuleta, ¿no?
Esta sería la chuleta que nos va a decir lo que tiene que hacer cada cosa.
Bueno, voy a decir una cosa.
Voy a decir una cosa antes de empezar.
Esto puede salir mal.
Esto, esto puede salir mal.
Pero puede salir bien.
Vamos a intentar hacerlo, a ver hasta dónde llegamos.
Que veo que al final me he liado mucho.
Pues nada, le damos otra cosa, ¿eh?
Sí, ahora le cambio el tema.
Perdón, perdón.
Es que he estado probando unos temas.
Estaba probando unos temas.
¿Cómo os ponéis, eh?
Vamos a ponerle siempre, mi querido OneDark.
Vamos a poner el OneDark, SetColorTheme, con el Darker.
O el Flat, nunca me acuerdo.
Yo creo que es el Darker.
Vamos a poner el Darker.
Vale.
Bueno, ya tenemos esto por aquí.
Sí, ya está, ya está.
Mi tu miedo.
Sí, sí, sí.
La verdad es que me ha dado un poquito de miedo.
Vale.
Lo primero que voy a hacer es poner las constantes estas del mínimo de la celda, que decía que era cero,
y el máximo de la celda, que decía 255.
Yo creo que esto seguramente nos servirá después, ¿no?
Vamos a hacer una función que le vamos a llamar Translate, ¿vale?
Voy a bajarle y todo a la música un poquito más, porque necesito concentrarme.
Sabéis una cosa, que uno cuando hace estas cosas, cuando lo haces en casa, todo tranquilo es mucho más fácil.
Pero cuando estás aquí haciéndolo en directo, ojo, cuidado, ¿eh? Ojo, cuidado.
Acabo de llegar, ¿qué andas haciendo?
Estoy haciendo una prueba técnica para entrar a un trabajo de 160.000 dólares al año.
Vamos a ver si somos capaces, al menos de sacar los test estos.
Vale.
Hablando de test, voy a poner los test, ¿vale?
Que luego siempre, nunca hacemos test, así que si os parece, vamos a instalar Jest.
Vamos a poner aquí un menos de, espero que no pete mucho el stream.
¿Sabéis que me llega en abril el Mac Studio?
Me llega en abril, me llega en abril el Mac Studio nuevo.
Y entonces dejará de petar las cosas.
No sé si ahora está petando.
¿Está petando?
Esperemos que no, ¿eh?
Hay música, hay música muy de fondo.
Beat, no, porque no vamos a utilizar beat.
Vamos a utilizar directamente note.
Por menos de 200.000 no vale la pena.
Joder, vaya, que sobráis, ¿cómo vais de sobraos?
Dios mío, ¿cómo vais de sobraos?
Yo lamería el suelo por los 170.000, 200.000.
Venga, va.
Vamos con test, va.
Vamos con test, que luego me decís que nunca hacemos test, con razón.
Vamos con test.
¿Cómo era esto?
Vamos a poner ya aquí nuestra función de translate,
que a esto lo que debería recibir es el string que hemos visto.
Vamos a poner module.export.translate
y vamos a importar este translate del index.
Se ve todo bien, ¿no?
Se ve todo bien.
Lo veis bien, grande.
¿Queréis que haga más grande?
Luego me decís, es que no veo.
Hostia, aquí me ha traído.
La madre que lo parió.
Voy a poner aquí global de test y expect, ¿vale?
Para que no se me queje el linter, que también voy a instalar,
porque ya que vamos a hacer esto, standard menos D.
Menos D, porque es una dependencia de desarrollo.
Que, por cierto, luego hablaremos de algunas noticias de JavaScript
que también te mueve una pinta, ¿eh?
No os preocupéis.
Esto no me puede llevar dos horas.
Si me lleva dos horas, o sea, si veo que me va a llevar dos horas
y que no soy capaz de hacer al menos los test esos que salen ahí,
pues os lo lleváis de deberes.
Y ya está.
Y al menos habremos avanzado algo.
Y si sale, pues bien.
Y si no, pero yo creo que no.
Yo creo que lo hacemos al momento.
Esto soy yo engañándome a mí mismo.
Sí, sí, claro.
Vamos a ir sobraos haciendo esto.
Sí, sí, sí.
Vale.
Esto es Lean, Extents.
Y ahora aquí...
A ver.
¿No?
Ah, es LeanConfig.
Esto es LeanConfig.
Ahora sí.
Vale.
Ya tengo el linter.
Perfecto.
A mí como me gusta el linter facilito, ¿eh?
Con dos líneas de código y auto-configurado.
Vamos a quitar esto, que tampoco sea muy importante,
pero por si acaso.
Vale.
Vamos con los test.
Entonces, hemos dicho aquí que vamos a poner el test.
No sé por qué me hace estas cosas.
El Visual Studio Code, de verdad, que...
Qué asco.
Qué asco es Autocomplete.
Dios mío.
Vamos a ver que esto...
A ver, ¿dónde tengo...?
Voy a ponerme aquí esto.
Me lo voy a copiar.
Me lo voy a poner por aquí también.
Para tenerlo más visible.
Esto decía que era el del Hello.
Vale.
Vamos.
Method o...
Sí.
It translates Hello accordingly.
Vamos a poner esto por aquí.
Esto por aquí.
Vamos a poner otro.
Y el otro que da It translates...
Bueno, esto además sería...
Hello.
Y este era Hello Wall.
Ponía por aquí.
Vale.
Hello Wall.
Hello Wall.
Oye, si alguien, después de hacer todo esto, si alguien hace la prueba y se queda con el dinero,
espero que luego compartáis.
Vale.
Que conozco.
Venga.
Alguien me decía, pon describe.
¿Para qué?
A ver, si son dos T solo, que tampoco tanto.
Vale.
Uno era este.
Este es el de Hello.
Entonces, esto...
Vamos a poner esto por aquí.
Esto tendría que ser...
Vamos a hacer un expect.
De que esto tenga que ser...
To be Hello.
¿Vale?
Y aquí vamos a poner un expect.
Esto casi te dede, ¿eh?
Esto casi te dede.
De hacer...
Oh, mira.
Sí, que hija, compáylo.
¿Qué estás intentando?
¿Qué estás intentando?
No me engañes.
Y este se supone, según esto, que esto tendría que ser...
To be Hello World...
Así.
¿Vale?
Vale, ya tenemos nuestros test.
Voy a poner aquí también...
Creo que ejecutando jest ya es suficiente.
Vamos a ver si esto funciona, que no peta nada.
Empie en run test.
Vale.
No he encontrado...
Creo que es que esto tiene que ser en singular.
Puede ser.
Creo que tiene que ser en singular.
Sí.
Vale.
Vale.
Como podemos ver, ahora me están petando los dos ranciamente, como era normal.
¿Vale?
Si ya hubiera funcionado.
Vale.
Ok.
Vamos a intentar, sobre todo el primero.
El que me preocupa es el de los nested.
Ese tiene bastante mala...
O sea, tiene pinta...
No, mala pinta de...
Tiene mala pinta.
Que nos vamos a callar.
Tiene mala pinta.
Entonces, tenemos un string.
Vamos a poner aquí...
Es que no sé si poner...
Voy a poner un skip de este, porque este es un poquito más complicado.
Vamos a poner este y vamos a poner que esto sea watch.
A ver si se queda.
No.
It's not supported without...
What?
Vale.
Test switch.
Ah, pero no me ha hecho un skip.
¿Por qué?
Ay, porque no los he guardado.
Vale, vale.
Vale, ya está.
Ahora ya sí que tengo este y entonces, bueno, podemos ir viendo a ver qué me está devolviendo.
Por ejemplo, si yo aquí pongo return h, pues me debería decir que tal y me falta el hello.
Perfecto.
Aquí lo importante ahora mismo...
A ver, voy a ver un momento de denuncia.
Tengo por aquí también.
Estos son las acciones.
Son celdas de memoria que van del 0 al 255.
Yo creo que lo que hay que hacer, cuando dice memoria y dice punteros y tal, tenemos que tratar, creo que lo mejor es tratar la memoria como un array.
Así que lo que vamos a hacer es crear una memoria.
Dice que se inicializaba con 0.
Voy a inicializar como el array sería la memoria y lo inicializamos en la primera posición con 0.
Luego veremos cómo hacemos esto.
Luego vamos a tener un pointer, efectivamente.
Oye, qué bueno, Gihar Copilot.
Si me lo puedes hacer entero, perfecto.
Memories assign, no sé qué, no sé cuánto.
Vale.
Bueno, esto tendrá que ser un let, por más que ahora me diga esto.
¿Qué más vamos a necesitar?
Necesitaremos el índice para estar iterando y tendremos el output.
Y el output es lo que habrá que devolver.
Así que por ahora vamos a poner esto.
Obviamente esto no funciona.
Esto me da mucha rabia porque lo quita todo.
Pero ya tenemos un string.
Vamos a dejar aquí el let.
Ahora, obviamente lo que hay que hacer aquí es iterar.
Hay que iterar este string.
Voy a mirar una cosa porque a mí me parece que este string no va a ser tan...
O sea, va a ser fácil, pero vais a ver.
Porque esto seguramente tiene un truquillo.
El tema es que este string son emojis.
Y si yo intento hacer esto que me está...
Oh, oh.
¿Pero esto qué es?
Pero si ya me está diciendo aquí todo.
Oye, pues tiene buena pinta, ¿eh?
Tiene buena pinta esto, ¿eh?
Pero bueno, vamos a...
Y Hacopilot es la hostia.
Vamos a intentar hacer esto.
Yo creo que esto está mal.
Y os voy a explicar por qué.
Yo creo que eso está mal porque si yo ahora hago string index...
Vamos a ver qué nos devuelve esto, pero algo me dice a mí que esto no va a devolver lo que espera de Hacopilot.
Porque los emojis son más de una posición...
¿Sabes?
O sea, son caracteres especiales.
Entonces, no me va a salir aquí el carácter, justamente.
¿Ves?
Me está saliendo aquí un...
Como que no lo encuentra.
Esto es lo que me está saliendo en el console.log.
Entonces, esto no funciona.
Hostia, ¿sabes?
¿Se ha hecho un loop infinito?
Ay, sí, sí, sí.
Esto ha hecho un loop infinito.
Ha hecho un loop infinito.
No, no.
Que es que...
La he liado.
La he liado.
Matar.
La he liado, la he liado.
Hostia, aquí...
Uf, ahora, ahora.
Uf, uf.
He hecho un loop infinito porque no has hecho el index más, más.
¿Vale?
Vale, yo creo que lo que hay que hacer aquí es convertirlo en un array.
Eso es lo que vamos a tener en el caso.
Porque vamos a llamarle array of instructions.
Un split, yo creo que se podría hacer un split,
pero creo que lo mejor es hacer un array from del string.
Y con esto, vamos a hacer esto, vamos a hacer esto,
vamos a hacer esto, ¿vale?
Y vamos a ver si ahora tenemos la instruction.
En lugar de, por si acaso, como los...
Bueno, venga, voy a hacerlo del test.
Es que me da un poco el rollo lo del test porque se me puede quedar penchado ahí.
Vale, vale.
Mira, ya tengo los símbolos, ¿vale?
Ya tengo los símbolos aquí.
Esto es justamente lo que quería.
Para poder hacer esto, cuando tú tienes un...
Puedes hacer el split,
pero el split es un poco peligroso con los emojis
porque hay emojis que si haces un split del string vacío,
igual te puede...
Algunos emojis te pueden petar.
En este caso, que son manos, no creo que haya ningún problema,
pero yo creo que lo más correcto es hacer un array from del string.
Y de esta forma nos lo va a separar un string.
Ahora sí que tenemos todas las instrucciones.
Y lo que podríamos hacer es tener en cuenta estos...
Como este diccionario.
Mira, esto os va a gustar.
Yo creo que esto os puede gustar.
Quítale copilot, estrampa.
Bueno, quito el copilot.
A ver, casi me engaña el copilot.
Casi me engaña.
Así que...
Algunos emojis son dos caracteres juntos o algo así.
Efectivamente.
Y a lo mejor con esto también sería...
Si queréis le quito el copilot.
Bueno, es que me sale mal.
Porque a ver, en realidad es como trabajo con el copilot.
Pero bueno.
Pero bueno.
Vale, ya tenemos aquí la instrucción.
Vamos a sacar...
La instrucción sería la acción.
Más que la instrucción, la voy a llamar acción.
¿Vale?
Tenemos aquí la acción.
Voy a poner aquí un console.log.
Para simplificar un poco...
Es que esto siempre es un poco sucio el tema este.
Voy a poner esto aquí.
¿Vale?
Sé que no...
Que ya no es tan TDD.
Pero lo que voy a hacer es ejecutar solo esto.
Y vamos a poner aquí node index, no sé qué.
Vale.
Vale, todavía...
Hostia.
Ahora.
Vale, ya tenemos aquí todas las acciones.
Está aquí perfecto.
Este index plus plus, pues bueno, ya veremos qué hacemos.
Lo que voy a hacer es justamente tener como un diccionario.
Que sé que os encantan los diccionarios, ¿vale?
Os encantan.
Os encantan los diccionarios.
En mi vídeo de YouTube, mucha gente casi me denuncia a la policía por culpa de los diccionarios.
Pero bueno.
Mira, muy bien.
Esto es lo que quería hacer.
Vale.
Vamos a ver lo que hay que hacer con cada uno.
Con este emoji decía, mueve el The Memory Printer to the next cell.
¿Vale?
El pointer es justamente lo que quiero mover a la siguiente.
Luego, vamos a hacer lo mismo, pero con...
Joder.
Mira, Jacob Palo me lo va a hacer solo.
Me lo va a hacer solo.
¿Vale?
Incrementar The Memory Cell at the current position.
¿Vale?
Incrementar The Memory Cell at the current position.
¿Vale?
Según esto, me decía de hacer el app.
Hostia, ¿cómo es el app este?
Así.
O sea, al revés.
¿Vale?
Así.
Según esto, me estaba diciendo de hacer Memory Pointer tal.
Pero dice, incrementar The Memory Cell at the current position.
¿Vale?
Esto tiene buena pinta.
Esto tiene buena pinta.
A ver, es bastante lo que iba a hacer.
Esto ya es más complicado.
IndexOf.
Esto no va a ser tan fácil.
Esto que me está haciendo GitHub Copilot es bastante más complicado.
Aunque bueno, este IndexOf.
Hostia, tiene un segundo parámetro.
La madre que lo parió.
A ver.
Aquí.
Array IndexOf.
IndexOf.
Ah, From Index.
Hostia, puta.
Esto no me acordaba.
Inicia.
Indica el índice por el que se comienza la búsqueda.
Por defecto cero.
Claro.
Esto parece así.
Pero esto con los nested nos va a joder.
Voy a quitar el GitHub Copilot porque igual me está chivando demasiado.
Tenéis razón.
Así que vamos a intentar hacer sin GitHub Copilot.
Y luego sí.
Porque es que si no, vamos a intentar hacerlo nosotros.
Pues no.
Además nos está dando demasiado truquillo.
Ahora lo voy a echar de menos.
Ahora lo voy a echar de menos.
Ahora ya no sé programar.
Ya no sé programar.
A ver.
¿Qué es lo que me decía?
Bueno, decía lo del IndexOf.
Decía del strings, del DTT, array of instructions, array of instructions, indexOf.
Y buscaba este.
Pero esto no va a poder funcionar tan fácil.
Ya veréis como esto no va a funcionar tan fácil.
A partir del índice actual.
Y esto es IndexOf.
Vale.
Esto sería...
Vamos a devolver el índice.
Ahora seréis ustedes.
Será mi GitHub Copilot.
Sí, GitHub Copilot ha conseguido el puesto.
De una.
Luego, aquí...
Claro, es que GitHub Copilot sí, pero no.
¿Vale?
Porque aquí hay cosas que no sabe GitHub Copilot.
Por ejemplo, cuando habla aquí del pointer...
Claro.
Es que aquí...
Aquí GitHub Copilot está bien, pero ojo, cuidado.
Vale, porque dice pointer.
Esto significa que vamos a mover la dirección de memoria.
Pero en la memoria han dicho antes, nos decían anunciado que había que inicializarlo en cero.
Entonces, tenemos que asegurarnos que lo inicializamos en cero.
Si no, la podemos liar parda.
¿Vale?
Y esto, lo mismo.
Que igual lo podemos hacer en otro punto.
Aunque yo creo que a lo mejor tiene sentido que lo hagamos aquí.
Así que voy a hacerlo aquí para asegurarme.
¿Vale?
Luego, esto del memory pointer más, más.
Aquí hay otro error.
Porque es verdad que dice que hay que hacer esto del más, más.
Vale, hay que incrementarlo.
Lo pone aquí, ¿vale?
Incremente, memory, sell, tal.
Pero lo que dice el enunciado es que puede llegar como mucho a 255.
Esto de GitHub Copilot no nos está ayudando.
Dice, you'll get 255.
Si incrementas a partir de 255, debería ser cero.
Y esto no va a funcionar así.
Por eso he dicho esto antes.
Y aquí lo que está haciendo es un más, más.
Pero claro, si llega a 255 y hace más, más, 256.
Así que lo que vamos a necesitar aquí es hacer una función.
Le vamos a llamar clamp.
¿Vale?
Clamp.
Y aquí le vamos a pasar el valor.
¿Vale?
Value.
Vale.
Si el valor es mayor que el max, sell, entonces devolvemos el min, sell.
¿Vale?
O sea, si el valor es 256, le damos la vuelta, le devolvemos cero, que es el mínimo.
Si el valor está por debajo de min, sell, o sea, es menos uno, hay que darle la vuelta
por el otro lado.
O sea, que le damos el máximo.
Y si no es ninguno de los dos, pues le devolvemos el valor.
Este clamp lo vamos a utilizar aquí.
Aquí.
¿Vale?
Lo que vamos a hacer aquí es darle, vale, pues me juntas con el clamp, el memory pointer,
o sea, el valor que tengamos ahí, más uno en este caso, ¿no?
Entonces, en este caso, si el memory pointer en ese momento es uno, pues será dos, irá
el clamp, irá bien y tal.
Si es 255, más uno, 256, y el método clamp, ¿qué es lo que hará?
Te dará el cero.
Y ya está.
Y esto mismo lo vamos a hacer aquí abajo.
Luego ya nos preocuparemos de refactorizar, ¿eh?
Si hace falta ahí todo esto.
Por ahora, que funcione.
Primero quiero ver que más o menos funcione.
Estos van a ser los complicados.
Estos son los jodidos.
Estos son los jodidos.
Estos van a ser...
Uy.
Estos van a ser los jodidos.
Estos dos.
Estos dos van a ser los jodidos.
Por ahora lo dejamos así.
¿Vale?
Por ahora lo dejamos así.
Index off, index off.
Que, bueno, este tendría que ser al revés en todo caso.
Este tendría que buscar el otro.
Que esto no es tan fácil, ¿eh?
Como esto.
Esto hay que darle una vuelta.
Pero, bueno, vamos a ver si se ejecuta.
A ver qué es lo que hace.
Qué es lo que devuelve.
Vamos a poner aquí el action.
Tenemos aquí las actions.
¿Vale?
He puesto un objeto.
Lo que vamos a hacer con estas actions es ejecutarlo.
De actions.
Recupero la posición de action.
Y ejecuto el método.
Y esto, al final, como está aquí, pues nos cambiará,
nos actualizará las variables y todo esto.
Así que...
Ah, me falta uno.
Me falta el puñito para adelante, ¿no?
El fist.
O el punch.
Este.
Close fist.
El guillesmith.
El puño de guillesmith.
En este caso, lo que tenemos que hacer es el string.
.fromchartcode.
Creo que es este.
Creo que es este.
¿Y cuál es el charcode?
El que tenemos en el memory pointer.
¿Vale?
Creo que es esto.
Bueno, pero esto no lo devolvemos.
Esto lo que hacemos es un output más igual.
Concatenamos en el output, que lo tenemos aquí arriba,
que es el string vacío.
¿Por qué?
Porque dice el enunciado que cada vez que hacemos esto...
Bueno, pone display.
Bueno, pero a ver, da igual, ¿no?
Por el display de current character represented by the ACSI code defined by the current position.
Bueno, lo vamos a ir concatenando en un output y ya está.
O sea, se supone que cada vez que se ve el puño de guillesmith,
entonces hay que mostrarlo en consola o lo que sea.
Bueno, no sé.
Podemos ponerlo también por aquí, por si acaso, por un tema de debugging.
Y ya está.
Y lo importante es que este output al final es lo que devuelve.
A ver, sé que esto no va a funcionar porque me faltan cositas,
sobre todo en estos dos puñitos.
Estos dos puñitos van a ser los más tricky, yo creo.
Pero por lo demás, más o menos, yo creo que no tiene mala pinta.
Voy a leer, a ver qué me comentáis.
¿Cómo estáis?
Pero el puño de guillesmith es amarillo.
Qué malos son, qué malos.
El cero cuenta.
El cero cuenta.
Sí, por eso estoy haciendo esto de que el cero cuente.
Ya que he puesto mincel cero, no entiendo el comentario ese.
El puño de guillesmith, el índice es índice.
¿Y pointer es un apuntador o se tendría que guardar una dirección de memorias?
Bueno, el pointer este es como el puntero de la memoria,
que en realidad es puntero del array.
Y estamos pensando como que el array nos servirá como de memoria.
Pensamos que como si la memoria tuviese como diferentes posiciones.
Pero claro, al final la memoria es con un puntero y pensemos que es,
pues en la posición cero hay una cosa en memoria,
en la posición uno hay una cosa en memoria,
y en cada posición de la memoria hay un byte.
Y los bytes van de cero a 255.
¿Qué quiere decir el interrogante, interrogante igual?
Esto lo que quiere decir es que solo va a asignarle el cero
en el caso de que el memory pointer este sea undefined.
¿Por qué hago esto?
Porque como el puntero va a ir moviéndose en memoria, ¿qué pasa?
Que al principio hemos hecho aquí un array de la primera posición.
La primera posición la inicializamos con cero.
Pero no sabemos cuántas posiciones tendrá el array.
Igual tiene 300 posiciones o 800, no lo sabemos.
Entonces lo que estamos haciendo es que cada vez que lo movamos,
digo, vale, muevo el puntero.
Y cuando muevo el puntero hacia la derecha,
voy a ver si realmente he inicializado esa posición.
Es verdad que si quitamos el puntero, esto a lo mejor no tendría tanto sentido.
Pero mira, por si acaso lo ponemos,
pero esto no tendría tanto sentido porque siempre el puntero se mueve hacia adelante
y si vuelves para atrás ya has tenido que inicializar previamente.
¿Sabes? Esto seguramente lo podremos comentar.
Vale, muy bien.
Pues vamos a ejecutarlo y luego le echamos otro vistazo al tema de los puñitos.
¿Vale?
¿Tiene sentido si comienza hacia atrás?
Sí, pero no creo que, ¿sabes?
No vas a ir a la posición menos uno.
No creo que sean tan chungos como hacer eso.
No creo que el punter, no creo que nunca hayan hecho esto,
que el punter vaya a menos uno.
¿Tiene sentido si el puntero retrocede desde el cero?
Pero yo no creo, no quiero pensar que no han sido tan puñeteros
porque al final quedaría muy raro.
Quedaría muy raro.
Yo quiero pensar que no.
Bueno, a ver, lo voy a dejar porque me da igual, ¿eh?
Pero yo creo que no.
Bueno, vamos a darle a note, note, index.
Vamos a ver qué pasa con esto.
Vale, esto tiene fatal.
Esto pinta fatal.
Esto pinta fatal.
Fatal, fatal.
Porque me está poniendo aquí unos símbolos súper raros.
Ta, ta, ta.
A ver, vamos a ver, muevo la pintura.
Esto, pointer++, memory pointer.
Esto tal, esto tal.
Vamos a poner aquí, en lugar de poner esto,
que esto es un poco raro,
el from charcode, este está bien, ¿no?
Ah, hostia.
Hostia, una cosa, una cosa.
Bueno, a ver.
No, es que estaba pensando.
No, porque esto es una función.
No, estaba pensando si tendría que recuperar el valor este
en una función en lugar de que se ejecutase.
Bueno, vamos a ver esto más o menos.
A ver cómo, qué es lo que nos está haciendo esto.
Y a ver qué pasa.
Vamos a darle otra vez.
Vale.
Bueno, index 0, 1, 2, 3, 4, 5, 6.
Se supone que, bueno, claro, es que igual tiene sentido que no funcione.
O sea, ojo, ojo.
Que igual tiene sentido que no funcione porque es que el puñito este ya empieza aquí.
Es que ya hay un puñito aquí.
O sea, ya de primera vez, es que el puñito hay que arreglarlo.
O sea, no tiene mala pinta en el sentido de que va hacia adelante,
pero claro, están los puñitos y entonces por eso me está poniendo estos símbolos raros.
Entonces, vamos a tener que solucionar el tema de los puñitos antes de poder continuar.
Al menos de intentarlo.
Entonces, a todo le estamos haciendo index++.
Y a ver qué.
Incrementa.
Memory, if the memory cell at the correct position 0, jump just after the corresponding tag.
Jump just after the correct position.
Vale.
O sea, siempre se supone que va hacia adelante, ¿no?
O sea, el index++ ahí tiene sentido, ¿no?
Sí.
Solo que en este caso tendríamos que haber...
Vale, vamos a ir un poco a saco.
Si enseña este, vamos a hacerlo bien.
Cuando ves este puñito, tienes que buscar este puñito.
Tienes que buscar este.
En lugar de hacer un return, esto lo que tendría que poner es un index.
Hay que cambiar el índice.
Y como que dice que luego tiene que ser el de después...
Ah, ojo, ojo, que aquí había lógica.
Aquí había lógica.
Este puñito es si la posición actual, el valor es 0.
O sea, que vamos a hacer si el memory pointer este...
Esto lo vamos a hacer solo si esto es 0.
¿Vale?
Si esto es 0, entonces hacemos esto.
Si no, pues se supone que no hacemos nada.
Y esto mismo lo haremos solo en el caso, dice...
The memory cell is not 0.
Vale, es diferente.
Joder, la madre que los parió.
Dice...
Si no es 0, si la posición actual en la que está no es 0,
entonces vamos a actualizar el índice.
Pero este es un poco más complicado.
Porque este no es tan fácil como hacer un index of y ya está.
Porque...
Claro, hay que buscar hacia atrás.
Hay que buscar hacia atrás.
Para buscar hacia atrás, ¿qué podríamos hacer?
Podríamos hacer...
A ver, voy a leer.
Os voy a leer a ver qué me decís.
¿No es pointer en vez de index?
En este no.
O sea, es complicado.
Pero...
Empiezas en el ACI de 0.
Pero eso está bien, ¿no?
Desde 0 hasta el índex, ¿no?
Desde 0 hasta el índex.
Sí, debería ser desde 0 hasta el índex.
Pero claro, el índex of...
Entonces, ¿qué no le puedes decir?
Le puedes decir from index.
O sea, que esto sería 0 directamente, ¿no?
El tema es...
Claro, esto nos puede funcionar al principio.
Pero luego, cuando sea nested, vamos a tener que hacer un for.
Vamos a tener que buscarlo en condiciones.
Porque no va a ser tan fácil esto.
Vamos a tener que hacer un for, buscar los de un...
No será difícil, pero será mejor hacerlo con un for.
Esto a lo mejor ahora no funciona.
Puede ser que no funcione.
Vamos a probarlo.
Uy.
Venga, loop infinito otra vez.
No ha funcionado del todo.
No ha funcionado del todo.
A ver.
Vamos a hacer esto.
Vamos a actualizar.
La h la muestra bien, ¿eh?
Ojo, cuidado que la h la ha mostrado bien.
La h sí que está bien.
Ah, es que ¿sabéis qué pasa también?
Ah, no, no, no.
No, estaba pensando otra cosa.
Vale, pero bueno, nos estamos acercando, ¿eh?
La h la ha puesto.
La h la ha puesto.
Sí, sí.
La h la ha puesto, ¿eh?
Si no te...
En vez de if memory, estaría bien hacer lo siguiente.
Si no tiene memory pointer.
Pero es que lo hemos tenido que inicializar en cero.
O sea que...
Yo creo que está bien, ¿no?
Yo creo que mejor hacerlo así porque sabemos exactamente.
Con la h nos hemos ganado unos 25.000 dólares.
¿Cómo vamos?
No, con la h igual unos 25.000 dólares.
No podrías hacer una copia invertida.
Sí.
Vamos a ver una cosa.
Voy a mirar un momento.
Voy a mirar un momento esto.
A ver si soy capaz.
Hostia.
Clear.
A ver si puedo ver el principio.
Un poco.
Hostia, es que se ejecuta rápido el cabrón.
Se ejecuta rapidísimo.
Voy a hacerlo aquí.
Que aquí seguro que tiene más...
Vale.
Y vamos a ver un poco qué es lo que está pasando ahí.
Vale.
Va con el cero, no sé qué.
Y ya tiene aquí un puñito.
Tiene el puñito.
Y esto, cuando es cero, es que va bajando el valor de ese pointer.
¿Vale?
Aquí mueve el pointer.
Ah, pues mira.
Voy a poner el pointer aquí también en la consola.
Me parece interesante.
Pointer.
¿Vale?
Vamos a poner aquí el pointer.
¿Vale?
Vamos a ver el pointer.
Vale.
Cero, cero.
¿Ves?
El pointer cuando está a la derecha.
Pam.
Y cuando tiene hacia arriba, pues aumenta el...
Ah, mira.
También me podría poner el valor.
Pero bueno, da igual.
Eso da igual.
Pointer.
¿Vale qué?
Hasta aquí.
Luego, cuando enseña este, pone index 1.
O sea, esto lo está haciendo bien.
O sea, está haciendo bien porque lo que nos dice es que cuando
encuentras este puñito, cuando encuentras el primer medio de
is not cero, entonces tienes que saltar justo después de este.
Y esto yo diría que lo estamos haciendo, ¿no?
Dicemos esto.
Arrayons.indexOf, ¿no?
La consola me tiene loco.
Me también me tiene loco.
Lo del reverse, me faltó poner el indexOf.
Sí, lo del reverse lo estaba pensando.
Pero bueno, si hacemos esto igualmente, ahora mismo.
Luego lo del reverse lo vamos a tener que hacer.
Pero si hacemos esto, al menos en el primero, en este caso,
en este caso tendría que devolverme este.
Ah, pero es que aquí hay otro.
La madre que lo parió.
Es que hay otro.
Vale, vale.
Pues ya está.
Ya tenemos el problema.
El problema es lo que estáis comentando.
Pensaba que solo había uno en el primer ejemplo y no es el caso.
Una cosa que podemos hacer es también, podríamos poner, podríamos hacerlo el reverse.
Podríamos hacerlo el reverse.
Podríamos hacerlo el reverse que comentáis o podríamos hacer un slice.
Podríamos hacer un slice para quedarnos hasta el índice.
No, pero el índice no puede ser.
El índice no puede ser.
Tenéis razón.
Mejor un reverse.
Justo después falta más uno.
No, porque luego el índice, ¿ves?
El index se está haciendo siempre, ¿no?
Dice que después del puño saltará al siguiente.
Ya, pero siempre salta al siguiente.
¿Veis?
Por eso hemos dejado este index más, más.
Siempre saltamos al siguiente.
Siempre, ¿eh?
Así que eso no sería.
Yo creo que en este caso lo ideal sería hacer el reverse.
Yo es que pensaba que solo había uno y que por eso no se iba a funcionar.
Lo que teníamos que hacer aquí, primero sería un reverse.
Luego tendríamos el index of de...
Sería este, ¿no?
Sí, sería este.
Y haríamos un index of...
A ver, hacemos un reverse.
Pero no sería solo un reverse.
Vamos a ver.
Vamos a ver.
Vamos a ver.
Los arrays, ¿eh?
Bueno, está muy bien la prueba.
La verdad que está chula.
Está chula.
Me gusta.
Me gusta.
Vamos a ver esto.
A ver.
Tenemos aquí el array, ¿vale?
Que sería un, dos, tres, cuatro, cinco, seis.
O...
Mira, vamos a poner algo así.
Que al final es básicamente lo que quiere, ¿no?
Seis.
Y vamos a poner aquí otro.
Y aquí otro.
Y esto sería algo así, ¿no?
Entonces, lo que queremos es que imaginemos que me he encontrado que ya estoy en este índice.
Que es cero, un, dos, tres, cuatro, cinco, seis, siete.
¿Vale?
Index siete.
Entonces, lo que quiero es justamente encontrar el primero.
Hostia, no sé si se podría hacer el índice last of.
Last index of.
Le voy a pasar un segundo parámetro.
Índice desde.
Hostia, hostia, hostia.
Qué bueno esto, ¿no?
Dentro de la cadena de reza llama desde donde comenzará la búsqueda.
A ver.
Cero, uno.
Pero si dice que es desde el dos.
Last index of.
O sea, podríamos hacer array punto last index of.
Y aquí decirle esto y decirle siete.
Ah, last index of, perdón.
Last index of.
Cero, un, dos, tres, cuatro, cinco, seis.
Vamos a probar esto.
Vamos a probarlo con last index of.
Last index of.
Y aquí le pasaríamos el índice en el que estamos.
¡Oh!
¿Qué ha pasado?
¿Qué ha pechado?
¿Qué ha pechado?
¿Qué ha funcionado?
¿Qué ha funcionado?
Ay.
Bueno.
¡Soy digno!
Bueno, soy digno todavía.
No, 160, ¿no?
Que nos falta lo más difícil.
Espérate.
Espérate.
Bueno, pero mucho mejor, ¿no?
Con el last index of.
Sí, vamos por 80.
Vamos por 80.
Sí, mejor que el last index of.
Hubiera funcionado, ¿eh?
Creo que era Iván que decía lo del reverse.
Es una, lo había pensado antes, pero creo que queda más fácil así, ¿no?
Pero creo que esto no nos va a funcionar con el segundo caso.
Creo que no va a funcionar con el segundo caso.
Para mí, con cómo está, va a funcionar el otro.
Yo creo que no, ¿eh?
Porque es que el otro tiene anidados.
Yo creo que no va a ser tan fácil.
Bueno, ojalá que sí.
Ojalá que sí.
Si es así, pues ya tienes el trabajo.
Sí, más quisiera yo.
Una hora que me he estado aquí.
Vale, el segundo se supone que es este, ¿no?
Este se ve más complejo.
Entonces, vamos a poner este.
Vamos a poner aquí el translate.
Vamos a poner...
Esto debería poner hello world o algo así.
Más o menos.
Más o menos.
Hopay, pone ahí.
Hopay.
Bueno, no sé qué coño pone.
¿Sabéis lo que pone aquí?
¿Sabéis lo que pone aquí?
No te has ganado los 170.
Los 160.
Eso es lo que pone ahí.
Bueno.
Puede ser por el tema...
Voy a mirarlo bien.
Ahora aquí.
Index.
Vale.
Yo creo...
¿Ves?
Pointer menos uno.
Esto no tiene buena pinta.
Esto no tiene buena pinta.
Mira, pointer uno.
Bla, bla, bla.
Aquí se encuentra esto.
Ta, ta, ta.
Y aquí este dice index nueve.
O sea, aquí cuando se encuentra esto,
esto le devuelve al index nueve.
Hasta ahí tiene buena pinta.
Index nueve, index nueve.
Pero se está quedando ahí.
Ah, no.
Mira, aquí ya sale del bucle este.
Entonces empieza a ir para adelante.
La H la pone.
¿Vale?
La H la pone.
Pero aquí...
¿Qué pasa con este pointer?
Mira, es que aquí hay bichos.
Aquí hay bichos.
Aquí hay bichos.
¿Ves?
En la posición 56 se va la 44.
De la 56.
Aquí hay algo raro.
Aquí hay cosas raras.
Yo es que creo que aquí está dando saltos regulares.
¿Ves?
¿Ves?
Porque este...
Este termina aquí.
Esto es raro de ver con los puñitos.
Este se ve aquí.
Bueno, alguien quería un console table.
Vamos a poner console table.
Para que se vea mejor.
Lo que pasa es que tampoco se ve...
Para tirar cohetes, ¿eh?
Tampoco se ve para tirar cohetes.
Es que me gusta más en una línea.
Pero bueno.
Vale.
Yo creo que el tema es de los anidados, ¿eh?
El tema de los anidados...
Buah.
Voy a ponerlo de la otra forma.
Es que me gusta más en una línea porque se lee un poquito mejor.
Normalmente...
A veces está bien el table.
Pero cuando es algo que está repetido todo el rato...
Vale.
La H sí que la pone.
Pero luego ya se le va la cabeza.
¡Oh!
¡Oh!
Está ahí cerca, ¿eh?
Está ahí cerca.
Además, el pointer esté negativo.
No tiene buena pinta.
O sea, yo creo que salta mal.
Mira, vamos a hacer bien.
Vamos a hacer bien el tema este.
Vamos a hacer bien.
Hasta aquí esto funciona bien.
Pero ¿qué es lo que pasa?
Claro.
Desde el índice...
Last index of...
En teoría no estás controlando que el valor mínimo sea cero.
Por tanto, cuando hay un dedo hacia la izquierda,
habiendo index cero, se rompe.
Pero ¿vosotros creéis que eso en el enunciado no pone nada?
Yo no creo que tenga nada de esto en cuenta, ¿eh?
Iván, gracias por la nueva suscripción.
Gracias, frito pendejo.
Santi y Coca.
Y Coca, siete meses.
Muchas gracias.
Mephistops.
Domen Pidef.
También GS Code.
Hostia, un añito.
Qué grande.
Y Sera ya existe.
Muchas gracias a todos.
Vale.
Estamos haciendo una prueba técnica para ganar 170.000 dólares al año.
Hopai es Hello World en ucraniano.
Es mentira, ¿verdad?
Me estás estimando.
El menos uno debería ser 255.
Pero no en el pointer.
El pointer no es el pointer lo que puede ser menos uno.
Es el valor del byte, que es lo que hay dentro del pointer.
Si tienes más de dos puños, ¿el last index funciona?
Eso es lo que estoy pensando.
Claro.
Claro.
Ya está.
Ya está.
Ya está.
Mira, os voy a explicar por qué falla.
Os voy a explicar por qué falla.
Ya lo he entendido.
Vale.
Imaginad que yo tengo esto, ¿no?
Yo tengo esto y tengo esto.
No.
Estaba pensando.
No.
Porque dice last index of.
Y el last index debería ser este.
Claro.
Debería.
Exacto.
¿Veis?
Claro.
Imaginad que yo estoy mirando este, ¿vale?
Para ver cuál es el que cierra.
Y miro hacia atrás y me encuentro a este.
Este es el del siguiente.
Este debería ser el del primero.
Por lo tanto, el last index of no funciona.
Ya está.
Ahora ya sabemos cómo hay que hacerlo.
Hay que hacer un for.
Con un for y uno shift vamos a llegar lejos.
Vamos a llegar lejos.
Ya veréis.
Vamos a llegar lejos.
Vamos a hacer una...
Lo vamos a hacer bastante verboso.
Porque, bueno, así al principio lo vamos a entender mejor.
Vamos a hacer un get next fist index.
Fist, por si no lo sabes, es puño.
Will Smith lo sabe bien.
Pero, por si no lo sabéis, vosotros.
Vale.
Get next fist.
¿Qué es lo que hacemos?
¿Cuántos fists, cuántos puños hemos encontrado?
Hemos encontrado uno.
¿Vale?
Justo nada más empezar, hemos encontrado uno.
Esto se puede hacer de diferentes formas.
Pero yo lo voy a hacer verboso para que lo entendamos todos.
¿Vale?
Entonces, imaginamos que nos hemos encontrado este puñito de aquí.
Por lo tanto, me he encontrado un puño.
Y ahora voy a ir a buscar este, el que le cierra a este.
¿Cómo podemos hacerlo?
Vamos a ir contando.
Lo que vamos a hacer es, vale, ya he encontrado un puño.
Voy a hacer un for.
Luego, si se puede hacer con otra cosa, no es un for, pues, fantástico.
Let i igual index.
¿Index o index más uno?
Index más uno, ¿vale?
Porque en el propio índice está el puñito.
No tiene sentido.
Index más uno.
Mientras la i sea más pequeña que las instrucciones de la longitud, ¿vale?
Porque no sabemos, es hacia adelante, no sabemos, ¿vale?
Pues, vamos a seguir incrementando en uno.
Perfecto.
Ahora, lo que vamos a hacer es, si las instrucciones, lo estoy haciendo verboso, ¿vale?
Ya sé que alguien me dirá, ay, es que muy verboso.
Bueno, pero lo importante es entenderlo al principio, sobre todo que no nos perdamos.
Si la instrucción tiene un puñito hacia ese lado, hacia el mismo que estoy,
¿qué es lo que va a pasar?
Pues que tengo los puños que me he encontrado, lo incrementamos en uno.
Esto significa que tendré que encontrar el de cierre antes de saber que es el que cierra.
Ahora, si las instrucciones es uno de cierre, ¿vale?
Vale, left, east, mira.
Entonces, hacemos menos menos, ¿vale?
Y decrementamos el número de puñitos.
Y finalmente, iba a hacer un if, pero ya, bueno, sí, if.
Bueno, a ver, ya no tiene sentido, ¿no?
Bueno, sí, claro, claro que tiene sentido, sí, sí.
Si los puñitos se han quedado a cero, entonces vamos a devolver el índice.
El índice, que es la i.
Esto sería para el next.
Y lo mismo podríamos hacer con el previous, ¿vale?
Que sería como lo contrario.
Hemos encontrado un puñito, que es este, el que va para allá.
Y lo que hacemos es, en lugar de hacerlo así, el índice sería menos uno, ¿vale?
Porque vamos hacia atrás.
Y en lugar de hacer que las instrucciones sean menores que la longitud,
lo que hacemos es que vaya mientras la i sea mayor o igual a cero, ¿vale?
Porque tenemos que ir decrementando, efectivamente.
Y aquí, pues, tenemos que cambiar la lógica esta.
Bueno, que a ver, lo podríamos hacer así, ¿vale?
Lo voy a poner así.
¿Por qué?
Porque para el previous significa que si voy tirando para la izquierda
y me encuentro el puño igual, lo que tengo que hacer es incrementar el número de puños
que me he encontrado para saber al final cuál es el que cierra.
Y el que cierra es cuando esto llegue a cero, cuando los fees lleguen a cero.
Los puñitos.
No sé, me he ido muy rápido, ¿lo habéis entendido?
¿Cómo ha ido?
Bien, ¿no?
Bueno, no sé, yo lo he visto muy claro en este momento.
Y se me ha iluminado la cara, ¿eh?
Venga.
Get Prep First Index.
Primero vamos a ver.
Tips de interview 1, intento fuerza bruta.
Totalmente calufao.
Ahí está, ¿eh?
Midu, profe, me repites desde que está a este yes.
What?
What?
What?
Bueno, a ver.
Ahora que ya tenemos esto, ahora entiendo que este Get New First Index y todo esto,
pues esto simplemente lo tenemos que ejecutar aquí, ¿no?
O sea, ahora esto sería Get Next First Index, que le pasamos el índice y las instrucciones.
¿Por qué las instrucciones no las encuentran?
Ah, porque es Array of Instructions.
¿Vale?
Y esto mismo lo tendríamos que hacer, pero al revés.
O sea, Get Prep First Index.
Y con esto...
Dame el money, money, money.
Money, money, money, money.
Bueno, Hello World, ya lo tenemos ahí, ¿eh?
Ya lo tenemos ahí.
Ya lo tenemos ahí, amigos.
Dame la pasta.
No sé por qué sale un salto de línea.
Quiero pensar que esto se les ha colado, porque yo no estoy añadiendo ningún salto de línea.
Y a ver, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 símbolos.
Tiene que haber 13 puñitos.
Bueno, aquí pone 12 de 15, pero aquí hay 13.
O sea, que el salto de línea este no es exactamente lo que habían dicho.
O sea, esto tiene que ser aquí como un salto de línea.
No sé por qué el salto de línea está, pero...
Bueno, pues esto es una prueba técnica para ganar 160.000 dólares.
Creo que he tenido suerte, ¿eh?
Creo que he tenido suerte.
Hacemos un recap.
¿Queréis que hagamos un recap?
Bueno, voy a ver qué...