Advent of Code 2020

¿Dónde me apunto?

https://adventofcode.com/

Normas

  • Cada día se desbloquea un problema nuevo
  • Programas en el lenguaje que te da la gana
  • Utilizas las técnicas que te da la gana
  • Le dedicas el tiempo que te da la gana
  • Cada problema tiene una caja de texto para meter la solución (suelen ser números o alguna cadena de texto pequeña)

Leaderboard privado para el pique sano

NSFW

Las respuestas se postean en Spoiler + code

Slowbro

#1 Méteme si puedes porfa -> https://github.com/SlowbroDev/AdventOfCode_2020

Lo estoy haciendo en python. Si a alguien le apetece sangrar de los ojos, cualquier increpada es bienvenida

2 respuestas
AikonCWD

#511 Tranqui, si aquí la mayoría somos unos puercos escribiendo código.

Te viene uno con una solución de 1 tocho y luego otro con la misma solución en 3 líneas xdddd

1
B

Bastante chulo el dia 7, cuando vuelva a casa pongo mis soluciones

JuAn4k4

Este mola ya un poco más, pero vaya que parsear esto... Ya podrían dar algún formato mejor y centrarse en el problema.

Pseudo Código fase 1:

spoiler

En la dos imagino que será algo así como cuantas gold tengo si tengo una bag de cada tipo. Por lo que es igual que el 1 pero llevando un count en el que se cuentan aunque ya estén en el set.

B

Dia 7, parte 2, me he cargado la parte 1 pero la idea es la misma más o menos

spoiler

La parte 1 vendría a ser

spoiler
1 respuesta
ciza

#515 la parte 2 fallandome todo el rato hasta que lei: cuantas bolsas dentro y yo haciendo las bolsas totales :man_facepalming:

1 respuesta
B

#516 Estos problemas de grafos siempre tienen estos porculos

1 respuesta
Leos

Hoy por fin puedo hacer el día dos si todo va bien y ya hasta el finde no podré ponerme con mas que retraso llevo xD

AikonCWD

qué pereza el día de hoy macho.

3
JuAn4k4

#517 ¿Hay loops?

1 respuesta
B

#520 No.

Fyn4r

#511 dentro

P.D Me acabo de leer el día de hoy, el año pasado había ejercicios de este tipo. pero la entrada era A - B, B - C, B -D y así, esto es un coñazo de parsear la verdad xD

1 1 respuesta
B

#522 se que voy a sonar repetitivo, pero con regex no es tan complicado de parsear el input, a mi el parsing me ha quedado en 3 lineas por ejemplo. Pero si, es un poco lamer los problemas con inputs de mierda, me recuerdan a los problemas del UVa OJ de principios de los 2000, cuando pensaban que complicar el input era cool y tal jajajaja

1 respuesta
Fyn4r

#523 ya, si lo estoy haciendo con regex, pero leí el problema y dije "ui, un grafo!". luego me encontré el percal xd

ciza

Por lo menos, no meten outliers. Algo del estilo a pongo en dos lineas distintas el mismo color con contenidos distintos para que tengas que unirlo.
Yo puse todos esos checks just in case

1 respuesta
B

#525 La verdad es que se portan bastante con no poner putadas en los inputs, yo en los anteriores iba con mucha más paranoia pero he ido bajando la guardia.

ciza

Por cierto, el ratio de drops empieza a ser significativo

7 11875 3492 ******
6 51424 1718 ******************
5 57469 1165 ********************
4 64761 8107 *************************
3 80348 2498 ****************************
2 96927 2693 *********************************
1 115337 7750 *****************************************

1 respuesta
B

#527 Aparte de por la dificultad gradual no creo que haya ayudado que los problemas tengan tanto parsing, da pereza. La verdad es que la calidad es flojilla de momento...

2
Traber

Menuda putísima mierda el de hoy, me recuerda a este:

https://adventofcode.com/2019/day/14

LLoid

yo pensaba hacerlos todos al día la verdad, pero leyendo el enunciado de hoy es como pff

Traber

Bueno, segunda parte completa, una vez hecha la primera, la segunda ha sido coser y cantar. Otra vez overkill implementando mi propia "BagCollection" y demás polleces. No me apetece poner la solución, si me da un venazo la pongo luego.

desu

advent of regex

1 respuesta
Traber

#532 Regex dice

__Lines = File.ReadAllLines("input.txt");

foreach(string Line in __Lines) {
	/*
	light red bags contain 1 bright white bag, 2 muted yellow bags.
	dark orange bags contain 3 bright white bags, 4 muted yellow bags.
	bright white bags contain 1 shiny gold bag.
	muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
	shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
	dark olive bags contain 3 faded blue bags, 4 dotted black bags.
	vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
	faded blue bags contain no other bags.
	dotted black bags contain no other bags.
	*/

string[] LineData = Line.Split(" contain ");

string[] BagData         = LineData[0].Replace(" bags", "").Split(" ");
string[] ContainableData = LineData[1].Split(", ");

Bag bag = new Bag(BagData[0], BagData[1]);
foreach(string ContainableDataItem in ContainableData) {
	if(ContainableDataItem == "no other bags.") {
		continue;
	}

	string[] CurrentBagData = ContainableDataItem
		.Substring(2)
		.Split(" ")
	;

	int CurrentBagDataCount = Int32.Parse(ContainableDataItem.Substring(0, 1));

	bag.AddHoldable(new Bag(CurrentBagData[0].Trim(), CurrentBagData[1].Trim()), CurrentBagDataCount);
}

Bags.Add(bag);
}
Ranthas

Resuelto de la manera más ineficiente posible

El primero con búsqueda recursiva; el segundo por suerte no tuve que rehacerlo ya que mantenía el nº de bolsas desde el inicio, así que igualmente con la misma búsqueda recursiva se resuelve al toque.

MartiONE

Menuda perdida de media hora de mi vida hasta que me he dado cuenta que la parte 2 era al reves macho...

spoiler
Fyn4r

Listo, hice una mierda y construí el grafo 2 veces pero aprendí mucho sobre regex xD

r2d2rigo

Pues ya estaria, si estructuras la parte 1 como un grafo desde el primer momento, tardas 1 minuto en hacer la parte 2.

BeheritSp

A mi el day7 me ha gustado. Yo lo hecho con dicts/sets, no tengo ni idea de grafos

spoiler
3 respuestas
B

#538 Bueno, lo de grafo es conceptual más que otra cosa, yo lo he hecho con diccionarios y sets igual (mira #515 ), pero lo llamo grafo por las relaciones que hay entre los contenidos de las keys y estas, que lo puedes ver como un DAG. Lo importante es sacar el problema al final.

Fyn4r

#538 sin ver tu código me aventuro a decir que probablemente hayas hecho una lista de adyacencia sin saberlo xd