Advent of code

Día 5

Tarjeta de embarque

Advent of code

El Advent of Code es una página web donde cada día del mes de diciembre van descubriendo un problema para que la gente haga un algoritmo que lo resuelva.

5 de diciembre de 2020

El de este día se basa en decodificar tarjetas de embarque y hallar el máximo valor de la lista que nos dan.

Formato de tarjeta

La tarjeta de embarque consta de diez caracteres.

  • Un bloque de 7 letras que son todas B o F
  • Un bloque de 3 letras que son todas R o L

Primer bloque → un número entre 0 y 127

Segundo bloque → un número entre 0 y 7

Codificación

Luego ponen un rollo, que si parte superior y parte inferior, que si parte derecha o parte izquierda...

Pero es tan simple como decir que está en binario.

B o R → 1

F o L → 0

FBBFFBFLLR → 0110010001 → 401

Solución

  1. Inicializar: resultado ← 0
  2. Ir leyendo línea a línea (no hace falta almacenarlas)
  3. Cambiar letras por ceros y unos
  4. Pasar a número
  5. Resultado ← max(resultado, número)

Implementación

Lo he hecho en Java pq es un lenguaje con el que me encuentro cómodo.

Se podía haber hecho en cualquier otro lenguaje (C, Python, Perl, Basic, Pascal, Javascript...), pero me he quedado con éste.

Código - 1

Apertura del fichero

Código - 2

Procesar

Optimización

He mirado cuantos milisegundos le cuesta validar las 834 tarjetas de embarque que me han puesto en el ejercicio y le ha costado 3 milisegundos, por lo que he decidido no optimizarlo.

Contacto

¿Quieres contactar conmigo?

@xblasco.com (blueSky)

@xblasco (twitter)

Vuelta al índice

índice

Web Analytics