Just beutiful
#152 lo he intentado leer cuando estaba poniendo a dormir a la niña y he visto que requería toda mi atención xD lo retomaré más tarde
#152 lo he leido y parece bastante mal explicado para lo que es.
Segun entiendo,
te dan N semillas y M mapas. Cada mapa es, simplemente, un nivel mas de traduccion con la siguiente informacion:
- mapa 1 (X to Y ):
coordenada_destino coordenada_origen longitud
Si tu X esta en [coordenada_origen, coordenada_origen+longitud), pues la traduccion es Y = coordenada_destino + (X - coordenada_origen) (te lo digo rapido, probablemente hace falta algo de tuning a la formula)
Si tu X no esta en ningun rango, la traduccion es Y = X
Cada mapa te da un output que le metes al siguiente mapa y asi hasta el mapa de location
#154 pero es que entonces no entiendo esto
50 98 2
52 50 48
The second line means that the source range starts at 50 and contains 48 values: 50, 51, ..., 96, 97. This corresponds to a destination range starting at 52 and also containing 48 values: 52, 53, ..., 98, 99. So, seed number 53 corresponds to soil number 55.
no deberia estar la seed number 53 en ese soil?
#155 la seed aplica identidad, identidad a = a, i.e identidad 13 = 13, si solo si, no existe un mapping.
Seed number 79 corresponds to soil number 81.
Seed number 14 corresponds to soil number 14.
Seed number 55 corresponds to soil number 57.
Seed number 13 corresponds to soil number 13.
14 y 13 no tienen mapping pues identidad. es decir, el mismo valor.
la verdad mucha fumada, advent of parsing lo hace de nuevo... que pereza
Si es facil cuando lo lees. Pero que perezota de enunciados y parseos. Suerte que ese mi ultimo dia de AOC xd
Reconozco que tambien me ha costado entenderlo al principio. La parte 1 es mas entenderlo porque implementarlo no es tan complicado. La parte 2 un poco al reves xD
Creo que lo que me ha liado mas es que los mappings te los dan en orden "destination source length" y no "source destination length"
parte2
python
Parte 1, cuando termine de currar le doy a la parte 2. Realmente la parte 1 se puede ver como un caso concreto de la parte 2, no creo que le añada mucha dificultad.
edit, parte 2, gran hueco el de despues de comer para hacer estas cosas!
Dependerá de cómo lo hagáis, pero por si acaso
El día 3 me ha costado horrores, he tenido que recurrir a ayuda en el hilo. El día 4 la parte 1 muy sencilla pero la parte 2 he estado un buen rato figurándome el enunciado.
Esta tarde le doy al 5
Contra el ejemplo me funciona bien la parte 2, pero es cambiarlo al input y se me queda hiper pillado. ¿Alguien que pilote de Rust sabe si es porque se está quedando picha con la memoria o hay algo que me estoy dejando? ¿Hay algo así como el bigint en Rust?
#165 Has mirado los rangos que estas manejando en el input? Yo por ejemplo tengo un rango de 1532286286
a 1532286286+1115055792
.
La verdad que no entiendo nada de tu codigo porque no se Rust, pero si estas guardando cada indice en memoria, para este rango en concreto solo eso seria 1115055792*128bits = 16GB. No solo es memoria si no que tienes que calcular el mapping de cada numero (1115055792 en total) solo para un seed-to-soil. Por lo que he visto en Reddit hay gente que lo ha solucionado asi a lo bruto, pero quizas lo tienen un poco mas optimo.
Yo lo que hice fue
#166 Yep xDDD no es que se quedara pillado, es que el proceso es heavy de cojones como bien dices.
Ahhh cabrón, claro; lo suyo es hacer un dfs en vez de bfs, o sea, mirar cada valor hasta el final y quedarte con el que ya sabes que es el más bajo en vez de contenerlos a todos como tremendo zote.
Estoy igual, lo he conseguido sacar con el ejemplo, pero con el input no puedo procesarlo porque he ido sacando los rangos y metiéndolos en arrays para comprobar xD
Arreglado, vaya tremenda gilipollez.
Hay alguna forma de mejorar el rendimiento de la parte 2? La que imagino que primero vamos a hacer la mayoría es bastante lenta pero debe haber alguna fórmula matemática que saca el número más directo y ahorre tener que comprobar todo
Edit: Vale, ya. Soy imbécil xD
Parte 1
La parte 2 la he hecho a mano, aunque luego he probado mi solución y también va bastante rápido, deberían haber puesto números mas grandes si querían evitar a la gente haciéndola a bruteforce xD
#176sergioRG:deberían haber puesto números mas grandes si querían evitar a la gente haciéndola a bruteforce xD
el objetivo del advent nunca ha sido escribir codigo rapido ni eficiente
siempre ha sido mas de golfing y hacer el codigo mas bonito
#177 para el leaderboard es el que encuentre la solución lo antes posible, da igual si tu codigo es eficiente, lento y/o infumable. De hecho es como me lo tomo yo, hacer lo que sea para sacarlo rapido.
Para codigo eficiente ya hay leetcoce, codechef etc..
Eso si, si te da igual el leaderboard pues que cada uno lo haga como le.apetezca
Pues nada, para una vez que le doy a la recursividad me tocan la moral en el punto 2.
EDIT: La verdad que admiro a la peña que es capaz de resolver este tipo de problemas en cuestión de segundos y leyendo en diagonal el enunciado. Supongo que llegará un momento en el que lo tendrás tan mecanizado y habrás grindeado tantos problemas similares que lo harás sin demasiado esfuerzo, pero en mi caso me tengo que repetir mentalmente varias veces -VARIAS veces- lo que estoy leyendo para que las neuronas me hagan conexión y muchas veces me quedo pajarito aún así.