This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Empezamos con el Fair Estimator este. Dice, Uber está construyendo un Fair Estimator que te pueda decir cuánto cuesta un viaje.
Cuánto va a costar un viaje antes de que lo pidas. Y esto funciona pasándole la distancia recorrida aproximada y el tiempo del viaje usando esta fórmula.
Bueno, esto está bien porque ya tenemos aquí como una fórmula. Tenemos el Cost Per Minute. O sea, yo le voy a ir cambiando ya las variables.
Este parece fácil. Este parece más de que te dé palo a hacer algo. Yo le cambio ya el número de las variables para que lo tengamos aquí.
Estoy compartiendo la pantalla, ¿verdad? Sí, vale. La voy a leer parda. Donde el Cost Per Minute y el Cost Per Minute depende del tipo de coche.
Vale. O sea, que dependiendo del tipo de coche. ¿Eres uno de los ingenieros? Ah, soy ya uno de los ingenieros que está en Uber.
Ya es que te vas imaginando ahí dentro. Creando el Estimador de Tarifas. Y así que...
Vale. Así que sabiendo todos los datos que tenemos aquí, nos deberían devolver el coste estimado para todos los tipos de coche.
Vale. Ah, es que es... Vale, vale. Ojo. Es que el coste por minuto y el coste por milla... O sea, estos dos son arrays. Aquí lo podemos ver. Son arrays.
Y entonces... Bueno, pues parece que es un map, ¿no? O sea, tenemos el Write Time, el Write Distance, Cost Per Minute y Cost Per Minute.
Y lo que necesitamos es devolver un array donde nos diga de cada... O sea, cada posición entiendo que es un tipo de coche.
Cada posición es un tipo de coche. Entonces, el tipo de coche, cero. El coste por minuto es 0,2. Y el coste por milla es 1,1.
Pues me imagino que esto será un map, ¿no? Entonces, tenemos el map. Vamos a utilizar cualquiera de los dos.
Puedes utilizar o el coste por minuto o el coste por milla. El que te dé más rabia. En este caso, pues vamos a utilizar el coste por milla, que es más corto.
Vamos a hacer un map. Tendríamos aquí el cost... Cost... Voy a ponerle cost y ya está.
O car cost o write mile cost. ¿Vale? Y aquí, pues deberíamos multiplicar... Ah, y vamos a necesitar también el índice.
El índice. Porque necesitamos aquí recuperar el coste por minuto.
Cost per... O sea, write minute cost. Coste por minuto. Y le pasamos el índice.
Y ahora ya creo que ya está, ¿no? O sea, esto ya debería ser directamente lo que habíamos visto aquí.
Write mile cost... Mile cost por el write minute cost... Ah, bueno, esto va al revés, ¿eh? Según esto, esto va al revés.
Más coste por milla... Ah, no. Ah, vale, vale.
Lo que hay que multiplicar aquí es el coste por minuto más el tiempo. O sea, write time y esto por el write distance.
Esto es así. Me da bastante rabia que te vengan aquí con snake case. O sea, me da un poco de coraje.
Las cosas como son. No es que... No sé, no pasa nada. Funciona exactamente igual. Pero bueno, es cosa mía.
Y bueno, por si queréis evitaros problemas... Que no va a haber ningún problema. Pero bueno, ya os lo digo.
Pero para que lo veáis mejor, pues a lo mejor podríamos hacer así, ¿no?
Y yo creo que esto debería funcionar. A menos el que le haya liado...
Minuto cost, write mile cost... Yo creo que esto es esto, ¿no? Lo que espera. Vamos a ver.
Efectivamente. Bueno, este era fácil, ¿eh? Este... Creo que era fácil.
Este era fácil. ¿Lo hemos entendido este? ¿Lo hemos entendido mientras lo hacía o qué?
Si le dedico ocho horas al día en dos años, ¿crees que tendría el mismo nivel? No.
Bueno, Amidu. Cosas que estás haciendo hoy de lo que nunca podría hacer en mi vida.
¿Qué cosas estás haciendo hoy de las que nunca podría hacer en mi vida?
Nada. O sea, ni tanto ni tampoco. Vamos a ver. Vamos a ver.
Ocho horas al día en dos años... A ver, para hacer esto sí que vas a poder hacerlo sin ningún tipo de problema, ¿vale?
No vas a tener ningún tipo de problema. Pero... Para llegar a mi nivel... A ver, no es que yo sea...
Alguien superior, ni mucho menos. Pero claro, yo es que tengo quince años de experiencia.
Entonces, es difícil en dos años, por más que trabajes ocho horas al día. Depende de muchas cosas.
Entonces, yo creo que con el tiempo podrías llegar sin ningún tipo de problema.
Pero tampoco te quiero poner como... De engañarte y decir...
Sí, sí, en dos años llegas sobrado. Es que... Porque al final...
No se trata de que te compares conmigo ni con nadie. No te dejes comparar con nadie.
Te dejes comparar contigo mismo, ¿sabes?
Y dos años no es suficiente tiempo para que te compares con una persona que pueda tener quince años.
Y no hablo de mí. Hablo de cualquier persona. No te compares con gente que tenga quince años de experiencia.
No tiene sentido, ¿sabes?
Entonces... No. No hagas eso.
Ahora, que alguien decía... ¿Podré llegar alguna vez a algún año en este nivel?
Claro que sí, por supuesto. O sea, yo tampoco soy aquí. Nadie... No soy más inteligente que nadie.
Y no creo ser ante un tema de inteligencia.
¿Subirás el vídeo a YouTube? Quiero hacer el de la prueba que hizo Lara en Go.
Claro que sí. Bueno, el vídeo no sé si lo subiré, pero intentaré.
Pero tal vez son quince años de dos horas al día. Eso puede ser más.
Más interesante son quince años dos horas al día que ocho horas al día durante dos años.
Eso seguro.
Midu, ¿tú eres senior o semi-senior?
Hombre, yo he trabajado durante seis años. No como senior. He trabajado como principal.
Yo creo que... Pero bueno, depende. En cada empresa podría ser una empresa semi-senior o lo que sea.
Bueno, yo creo que deberías de diferencias de trabajar en un trabajo y dedicarte a aprender.
Buena observación.
Sobre todo porque el trabajo te da experiencias que el estudio no te hará totalmente.
Es que la experiencia es imposible. Muchas veces lo digo. Es que la experiencia se vive. No se lee.
¿Acaso es un reto? Acabamos de esto. No es un reto. Esto es una prueba técnica de Uber.
Y de hecho vamos a hacer más. Hemos hecho la primera, la del Freddy Estimator.
Vamos a ver la de FancyWrite. Esta que por lo que veo ya tenía una solución.
Debe ser que la hice hace un tiempo. Bueno, la reseteo.
Es que de hecho esta creo que la he adaptado en el App Engine de otra forma.
Puede ser. Puede ser que van por ahí los tiros.
Muchos te consideran...
Midu, muchos te consideran un referente de desarrollo.
¿Pero quién es tu referente?
Yo la verdad es que no...
No tengo muchos referentes. O sea, no tengo referentes.
A ver.
Si pienso en referentes, me sale gente a la cabeza, ¿no?
Pienso, por ejemplo, en Jason Miller, que Jason Miller es un crack.
Pienso en Das Surma. Pienso en una Kravets.
Claro que se me ocurre gente. Guillermo Rauch.
Se me ocurre gente. Y gente incluso que tampoco tenga...
Que ya no... O sea, gente que admiro.
No por un hecho de que yo... O sea, que...
No hace falta que alguien sea mejor o...
O que creas que es mejor o que... No sé.
No hace falta que sea gente que está muy lejos de ti.
Por ejemplo, yo admiro un montón a Gonzi.
El Gonzi me parece muy crack.
Es una persona bellísima.
Que además está trabajando en Bersel.
Hace cosas recopadas.
Y lo admiro muchísimo.
Y para mí es un referente, ¿no?
O sea, es alguien en el que me gusta...
Me gusta aprender.
Me gusta estar con él, ¿sabes?
Así que hay veces que no hace falta ser...
No hace falta que tengamos referentes como muy increíbles.
Dios mío.
Inalcanzables, ¿no?
Y pueden ser compañeros de trabajo.
Tengo de referente a Daniel de la Cruz.
Ya sabéis que lo he invitado un montón de veces aquí.
Es una persona que admiro.
Que me gusta un montón hablar con él de cualquier cosa.
Así que...
Yo creo que lo mejor de tener referentes realistas.
Especialmente es que...
De las que más puedes aprender, ¿no?
Y mira, tengo de referente a Feral.
Porque es una bellísima persona.
El tío está aquí a tope siempre todos los días.
Así que...
No sé.
Pero no tengo un referente inalcanzable que piense...
Pues, yo qué sé.
No sé.
Guillermo Rao, quizás, ¿no?
Que es un...
Pero...
Lo veo como muy...
O sea, me gusta pensar...
Lo que me gusta pensar de Guillermo como referente es...
Ostras.
Sin desmerecer el trabajo que ha hecho.
Es decir...
Joder.
Es que...
Claro que se puede, ¿sabes?
Que podemos cualquiera hacer cosas...
Muy chulas.
Y...
Y lo que pasa es que hay que creerlo, ¿no?
Y hay que trabajar y...
Y todo esto.
Pero...
Eso es lo que os diría.
Feral, tú tendrás puesta en el CV que ya más de un año moderando el canal de Mido, ¿no?
Importante ser buena gente.
Ahora todos lo ven en Messi.
Y Mido es súper perfil bajo.
Eso es un crack.
Muchas gracias, Dana.
Te lo agradezco un montón.
Gracias.
Pues...
Vamos a darle...
Venga, vamos con la siguiente prueba técnica.
Que es esta.
Que es la del...
Fancy Ride.
A ver.
Siendo un usuario de Uber, tienes 20 dólares, ¿no?
O sea, que ya tenemos aquí una...
Tenemos...
¿Qué le puedo poner aquí?
Crédito.
20.
Y quieres hacer...
Sacar el máximo provecho de estos 20 dólares.
Siempre conduciendo el car, el coche más chulo que te puedas permitir.
Sin gastar ningún tipo de dinero del bolsillo.
Hay cinco opciones, ¿vale?
Bueno, pues aquí tenemos.
Que van desde la...
Del list.
De la menos cara.
O sea, de más barato a más caro.
Así que aquí tenemos los cars o los rides.
Vamos a llamarlos rides.
¿No?
Y vamos a poner esto por aquí.
Vamos a poner esto por acá.
Y...
Esto por acá.
Ok.
Dice...
Si sabes la longitud L de tu...
Vale, L es esto, ¿no?
La longitud de millas.
Tienes que decir cuánto...
How much one mile cost for each car.
O sea, cuánto cuesta una milla para cada coche.
Y tenemos que devolver cuál es el mejor coche.
O sea, cuál es el mejor coche que nos podemos...
Nos podemos gastar.
O sea, que primero tendríamos que encontrar...
Ah, no.
Ya tenemos aquí...
O sea, vale.
Aquí tenemos los precios, ¿no?
Temos que saber cuál es el mejor coche que nos podemos permitir con la longitud y con el crédito.
Vale.
Lo hemos entendido todos, ¿no?
¿Cuánto mide la milla?
Yo qué sé.
¿Cuánta milla?
Lo importante es que nos dan el número de millas.
Y ya está.
Este es el de los renos del App NGS.
¿Ves?
Este es el de los renos del App NGS.
Vale.
Entiendo...
Claro, un tema que aquí es polémico...
Un tema que aquí es polémico es que no sabemos si tenemos que ordenar las fares, ¿vale?
O sea, que lo vamos a dejar así en duda, ¿no?
Vale.
Entonces, lo que deberíamos hacer es como buscar el primero, ¿no?
O sea, tendríamos que de fares punto...
No sé si hacer el find...
¿Podemos hacer un find index?
Find index.
No sé si hacer un find, un find index.
Porque con el find index podríamos quedarnos justo el anterior, ¿no?
O sea, podríamos decirle...
A ver, index.
Voy a probar esto, ¿eh?
Me lo voy a traer por aquí.
Antes, como habéis visto, tenía una solución diferente.
Pero vamos a poner solution.
Y aquí le ponemos 30.
Y que las puntuaciones sean estas.
Y esto debería dar el Uber XL.
¿Vale?
Pues lo que vamos a buscar de los precios es el índice...
O sea, vamos a buscar el índice que...
Fares...
Ah, no.
Find index.
Esto es el precio, ¿eh?
No es el índice.
Vale.
Tenemos aquí el precio.
Y el que el precio...
Que entiendo que sea el UberX o no sé qué, no sé cuánto...
Sea mayor a 20.
O sea, vamos a encontrar el índice donde el precio sea mayor a 20.
Eso es lo que vamos a hacer.
Y...
A ver, algo me he cargado aquí que no le ha gustado.
Ah, porque esto no lo he orientado mal.
¿Vale?
Y vamos a devolver.
Voy a devolver un momento el índice.
Vale.
No he encontrado ninguno.
Que el Fares sea mayor a 20, no he encontrado ninguno.
A ver, a ver, a ver.
¿Por qué no se ha encontrado ninguno?
Vamos a ver.
Ah, no.
El Fares no.
El Fares que sea mayor a 20, no.
Fares por la longitud.
¿Vale?
Ahora sí.
Tampoco he encontrado ninguno.
Vamos a ver la longitud.
Y vamos a ver cuánto es el Fares.
Console lock is not a function.
¿Qué ha pasado aquí?
Console lock is not a function.
Console lock.
¿Cómo que es not a function?
¿Qué he hecho aquí?
¿Qué he hecho aquí?
Que me dice...
Ah, es por esto.
No es por esto.
Es que esto, como antes lo había puesto en la misma línea.
Que esto sea mayor a 20.
Vale.
Vale.
Longitud 30, 0,3, 0,5, 0,7.
¿Y por qué me está haciendo el find index 0,7?
¿Pero por qué?
Ah, vale.
Ahora sí me lo está haciendo.
Es que antes me estaba dando menos uno.
Y digo que no puede ser.
Vale, vale.
Ya está.
Ahora sí.
Vale.
Me está dando el 2.
O sea que 0, 1, 2.
Me está dando.
¿Cuál es el que sea mayor de 20?
Mira, de hecho, voy a poner aquí el result.
Que sería result.
O sea, fair.length.
Entonces, tendríamos aquí que este 0, 0, 1, 2.
O sea, el Uber Plus vemos que ya me daría 21.
Por lo tanto, una cosa que puedo hacer sería quedarme con justo el anterior.
O sea, voy a encontrar el índice.
Que supere los 20.
Como ya está, se supone que está ordenado de peor a mejor, el anterior de este índice debería ser la solución buena.
O sea, tendríamos que tener writes, index, menos uno.
Lo que pasa, ves, el XL, ¿no?
Que esto es lo que esperamos.
Lo que pasa es que, ojo con esto, aquí hay una trampa, porque esto funciona en el caso de que encuentre uno.
Pero tendríamos que poner que el índice, en el caso de que sea menos uno, que puede ser, ¿no?
Por ejemplo, si aquí en estos que hemos puesto aquí, imaginemos que son todos 0.7 y 0.7.
Claro, en este caso...
Ay, no, 0.6 porque si no, no va a entrar, ¿no?
0.6, 0.6.
¿Ves?
En este caso, el índice va a ser menos uno.
¿Qué tenemos que hacer?
Pues que el write va a ser...
O si tenemos índice es mayor...
Bueno, podemos decir que es menor a 0, entonces es el writes at menos uno.
Y si no, es el writes at index.
Esto lo podríamos devolver directamente.
Y ya lo tendríamos, ¿no?
Creo que sí.
Sí, sí, sí.
Entonces esto me daría el último.
Entiendo que esta es la solución definitiva.
Ahora lo veremos, ahora lo veremos, ¿eh?
Pero, ¿qué es lo que hace esto?
Esto lo que se supone es que de izquierda a derecha, estas tarifas son ordenadas.
O sea, cada tarifa es de cada Uber, ¿no?
En el primer Uber es 0.3.
Segundo Uber, 0.5.
Tercer Uber, 0.7.
Cuarto Uber, 0.8 y tal.
Entonces, están ordenadas de más barato a más caro.
¿Qué es lo que queremos hacer aquí?
Pues lo que queremos hacer...
¡Ay, hostia!
Aquí se me ha escapado esto, ¿no?
Esto tiene que ser menos uno.
Estoy pensando...
Claro, que otra cosa...
Bueno, lo voy a dejar así.
No pasa nada.
Entonces, lo que...
No, es que estoy pensando...
Position Index 0...
Bueno, da igual.
Da igual, estaba pensando otra cosa.
Bueno, entonces, lo que queremos es cuál es el Uber que me puedo permitir,
que es el más caro, pero que no se pasa de los 20 de esto que hemos puesto aquí.
Que, por cierto, esto lo tendríamos que poner aquí para aprovecharlo.
Entonces, pues el más caro será aquel que justamente el anterior del que supera,
del que supera el crédito.
Así que con esto...
Ahora, ¿qué pasa?
Que si todos...
Si me puedo permitir todos, si me lo puedo permitir todos, por ejemplo,
si me puedo permitir hasta el Uber Sub, ¿qué significa?
Que el índice este que me va a devolver va a ser menos uno.
Y por eso tengo que decir, vale, si el índice es menor a cero, voy a recuperar el último.
O sea, de los writes, el que está en el menos uno, que sería este.
Y si no, utilizo el índice, que entonces será índice menos uno para recuperar el anterior.
Y creo que con esto está.
No sé, a ver, vamos a probar.
Tampoco estoy 100% seguro.
Hasta que no lo probemos.
Vale, estas sí que han pasado.
Vamos a ver otro tipo de test.
A ver, ¿ves?
Aquí tenemos otro test en el que se queda es el Uber Plus, que es el tercero también.
¿Ves?
Aquí tenemos un, dos, tres, cuatro, cinco.
Claro, aquí es más barato.
Ah, no, aquí solo puedes quedarte con el primero, que es este.
Vale, vamos a enviar esto.
Mira, ya he resuelto cinco pruebas técnicas de empresas.
No está mal.
Vale.
¿Alguna pregunta sobre el código o algo que no habéis entendido?
¿Midu habrá reto muy difícil en AppGIS?
No, no creo.
Si index es igual a cero, te petará.
Pero index es igual a cero.
Si index es igual a cero.
Si index es igual a cero.
Cero menos uno.
No, porque no debería ser nunca cero.
No puede ser cero.
No puede ser cero.
Te explico por qué no puede ser cero.
Es una muy buena observación, pero el index nunca va a poder ser cero.
Porque el primer elemento...
Nunca me va a devolver el primer elemento porque entonces no tendría solución.
¿Sabes?
Significaría que nunca te puedes montar en ninguno.
Que si fuese el enunciado, me dijese, ten en cuenta que a lo mejor nunca te puedes montar en uno.
Pero bueno, aún así estaría bien porque te estaría dando undefined, ¿sabes?
Entonces, ¿qué pasa?
Que el find index me va a encontrar el primero que no me puedo permitir.
O sea, como máximo, o sea, como mínimo, me tiene que dar el vrxl.
Porque es el primero que no puedo permitir.
Siempre te tienes que poder permitir uno.
Ahora que me dicen, oye, no permite uno.
Pues esto no petaría.
En todo caso, lo que ocurriría aquí es que me darían define.
En writes, o sea, si tú intentas entrar aquí para que nos hagamos la idea, ¿vale?
Tenemos aquí writes.
Si tú intentas acceder a esta posición, pues es undefined.
Y ya está.
No petaría.
Daría undefined, pero tiene sentido que sea undefined, ¿no?
O sea, si no me puedo permitir ninguno, pues undefined.
No hay ninguno que me pueda permitir.
Eso sería el tema, ¿no?
Vale, pues nada, ya le he hecho su mitad a este.
¿Cuál es el siguiente?
Eh, medium...
No sé si el Nightroot o el Perfect City.
Perfect City, que parece un poco corto.
Bueno, pero no me va a dar tiempo hoy.
No me va a dar tiempo.
Mira, aquí tengo, joder.
Tengo una solución...
No la entiendo ni yo ahora.
O sea, no entiendo...
Esta solución la hice.
Vete a saber cuándo.
Y no la entiendo.
No la entiendo.
No la entiendo.
Bueno, sí.
Esto sí que sé para lo que es.
Que básicamente es para redondear.
Pero, madre mía, qué complicado esto que hice aquí, ¿no?
Pues mira, el próximo día, ya porque no nos da tiempo.
Pero el próximo día vamos a hacer este y lo vamos a explicar bien porque ni yo lo entiendo.
Ni yo lo entiendo.
Ni yo lo entiendo.
O sea, no sé qué coño hice en esta...
No sé qué hice.
No sé qué hice.