summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2021-12-29 04:42:44 +0100
committerache <ache@ache.one>2021-12-29 04:42:56 +0100
commit5e987c201b4b20d4034b2f72edd528e75939ffcd (patch)
tree972625be0f0e17656b4e29a6705e0f2e46e3b595
parentAjout du logo (diff)
Remplacement des secrets par des ressources externes
-rw-r--r--articles/res/code1_j03_aoc.py20
-rw-r--r--articles/res/code2_j03_aoc.py38
-rw-r--r--articles/retour-sur-laoc-2021-semaine-1.md73
3 files changed, 62 insertions, 69 deletions
diff --git a/articles/res/code1_j03_aoc.py b/articles/res/code1_j03_aoc.py
new file mode 100644
index 0000000..f4c36e7
--- /dev/null
+++ b/articles/res/code1_j03_aoc.py
@@ -0,0 +1,20 @@
+gamma, epsi = 0, 0
+total = 1
+
+with open("input") as f:
+ final = f.readline().strip()
+ final = list(map(lambda x: 1 if x == '1' else 0, final))
+ print(final)
+
+ for line in f:
+ for i, c in enumerate(line):
+ if c == '1':
+ final[i] += 1
+ total += 1
+
+gamma = int("".join(list(map(lambda x: '1' if total - x > x else '0', final))), 2)
+epsi = int("".join(list(map(lambda x: '0' if total - x > x else '1', final))), 2)
+
+
+print(epsi, gamma, gamma * epsi)
+
diff --git a/articles/res/code2_j03_aoc.py b/articles/res/code2_j03_aoc.py
new file mode 100644
index 0000000..c373465
--- /dev/null
+++ b/articles/res/code2_j03_aoc.py
@@ -0,0 +1,38 @@
+total = 1
+number = []
+
+with open("input") as f:
+ for line in f:
+ number.append(line.strip())
+
+number_oxy = list(number)
+number_co2 = list(number)
+
+
+i = 0
+while len(number_oxy) > 1 and i < len(number_oxy[0]):
+ number_1 = len(list(filter(lambda x: x[i] == '1', number_oxy)))
+ total = len(number_oxy)
+ if number_1 >= total - number_1 :
+ keep = '1'
+ else:
+ keep = '0'
+ number_oxy = [ number for number in number_oxy if number[i] == keep]
+ i += 1
+
+i = 0
+while len(number_co2) > 1 and i < len(number_co2[0]):
+ number_0 = len(list(filter(lambda x: x[i] == '0', number_co2)))
+ total = len(number_co2)
+ if number_0 > total - number_0 :
+ keep = '1'
+ else:
+ keep = '0'
+ number_co2 = [ number for number in number_co2 if number[i] == keep]
+ i += 1
+
+oxy_rate = int("".join(number_oxy[0]), 2)
+CO2_rate = int("".join(number_co2[0]), 2)
+
+print(oxy_rate * CO2_rate)
+
diff --git a/articles/retour-sur-laoc-2021-semaine-1.md b/articles/retour-sur-laoc-2021-semaine-1.md
index 1dbbebf..b4faa7b 100644
--- a/articles/retour-sur-laoc-2021-semaine-1.md
+++ b/articles/retour-sur-laoc-2021-semaine-1.md
@@ -91,7 +91,7 @@ Le but est donc de simuler la course d'un sous-marin en fonction des instruction
Exemple d'entrée :
-~~~
+~~~shell
forward 5
down 5
forward 8
@@ -149,7 +149,7 @@ Ici, il n'y a pas de difficulté mais ça reste un puzzle peu optimisable. Un pe
Vous avez pour ça une suite de nombre binaire :
-~~~
+~~~shell
00100
11110
10110
@@ -166,30 +166,7 @@ Vous avez pour ça une suite de nombre binaire :
On doit chercher le bit le plus courant pour chiffre de cette liste de nombre binaire. Dans la première colonne cela nous donne `1` car c'est le nombre le plus courant. Pour chacun des indices ça donne `10110` soit 22 en décimal, cette valeur est le taux *gamma*. Le taux epsilon est similaire mais avec le bit le moins courant.
-Bon ben c'est parti pour coder ça. J'ai d'abord fait un truc bien moche dont je suis pas fière :
-
-[[secret]]
-| ~~~py
-| gamma, epsi = 0, 0
-| total = 1
-|
-| with open("input") as f:
-| final = f.readline().strip()
-| final = list(map(lambda x: 1 if x == '1' else 0, final))
-| print(final)
-|
-| for line in f:
-| for i, c in enumerate(line):
-| if c == '1':
-| final[i] += 1
-| total += 1
-|
-| gamma = int("".join(list(map(lambda x: '1' if total - x > x else '0', final))), 2)
-| epsi = int("".join(list(map(lambda x: '0' if total - x > x else '1', final))), 2)
-|
-|
-| print(epsi, gamma, gamma * epsi)
-| ~~~
+Bon ben c'est parti pour coder ça. J'ai d'abord fait [un truc bien moche dont je suis pas fière](articles/res/code1_j03_aoc.py).
Si je devais le ré-écrire ça donnerait plutôt ça :
@@ -220,49 +197,7 @@ En avant pour la partie 2 !
Cette fois-ci on doit itérer plusieurs fois sur les valeurs (c'est la première fois que l'on doit faire ça) et à chaque fois ne garder que les valeurs qui ont le plus n^ième^ bit le plus (le moins pour l'autre donnée) courant. On continue jusqu'à ce qu'il n'y en ait plus qu'un.
-Bon ben là, j'ai dû tout refaire mon code. Mais j'ai quand même fait un code pas super propre :
-
-[[secret]]
-| ~~~py
-| total = 1
-| number = []
-|
-| with open("input") as f:
-| for line in f:
-| number.append(line.strip())
-|
-| number_oxy = list(number)
-| number_co2 = list(number)
-|
-|
-| i = 0
-| while len(number_oxy) > 1 and i < len(number_oxy[0]):
-| number_1 = len(list(filter(lambda x: x[i] == '1', number_oxy)))
-| total = len(number_oxy)
-| if number_1 >= total - number_1 :
-| keep = '1'
-| else:
-| keep = '0'
-| number_oxy = [ number for number in number_oxy if number[i] == keep]
-| i += 1
-|
-| i = 0
-| while len(number_co2) > 1 and i < len(number_co2[0]):
-| number_0 = len(list(filter(lambda x: x[i] == '0', number_co2)))
-| total = len(number_co2)
-| if number_0 > total - number_0 :
-| keep = '1'
-| else:
-| keep = '0'
-| number_co2 = [ number for number in number_co2 if number[i] == keep]
-| i += 1
-|
-| oxy_rate = int("".join(number_oxy[0]), 2)
-| CO2_rate = int("".join(number_co2[0]), 2)
-|
-| print(oxy_rate * CO2_rate)
-| ~~~
-
+Bon ben là, j'ai dû tout refaire mon code. Mais j'ai quand même fait [un code pas super propre](articles/res/code2_j03_aoc.py).
Ouais, y a un bon gros copier/coller. Bon si je devais le recoder j'aurais fait ça :
~~~py