câest plus malin que mon modulo, je vais corriger ![]()
quand câest pas clair, en gĂ©nĂ©ral ca nâa pas dâimportance
je suis sur que les puzzle gĂ©nĂ©rĂ©s nâont jamais dâarbre en 0,0
sinon je suis fier de mon code, que je trouve trÚs élégant
en revanche adventofcode me dit que la rĂ©ponse nâest pas bonne 
mais est-ce si important que le code soit juste sâil est Ă©lĂ©gant ? (vous avez 2h)
Dans le cas oĂč lâoffset de la pente est de plus de 2 fois la largeur du motif, tu aurais une erreur dâaccĂšs dans le tableau. Le modulo est plus sĂ»r !
Day 3 groovy, aprĂšs un poil de refactor suite Ă la phase 2
Summary
File f = new File("../../resources/day3Input.txt")
def lines = f.readLines()
void phase1(){
println "Phase 1: Answer is " + findNbOfTreesOnPath(3,1)
}
void phase2(){
println "Phase 2: Answer is " + findNbOfTreesOnPath(1,1) * findNbOfTreesOnPath(3,1) * findNbOfTreesOnPath(5,1) * findNbOfTreesOnPath(7,1) * findNbOfTreesOnPath(1,2)
}
private Long findNbOfTreesOnPath(Integer stepsToTheRight, Integer stepsDown) {
Long numberOfTreesEncountered = 0
Integer startingPointForNextRow = 0
Integer currentLineNumber = 0
lines.forEach() { line ->
if (currentLineNumber%stepsDown == 0){
if (line.getAt(startingPointForNextRow) == '#') {
numberOfTreesEncountered++
}
startingPointForNextRow = (startingPointForNextRow + stepsToTheRight) % line.size()
}
currentLineNumber++
}
return numberOfTreesEncountered
}
Voici mon code en Elixir (jâai jetĂ© ma premiĂšre tentative Ă la poubelle et tout réécrit avec des Stream.cycle() qui sont une sorte de gĂ©nĂ©rateurs infinis de nombre Ă partir dâune liste)
Au fait je viens de créer un leaderboard geekzone. Pour le rejoindre :
- https://adventofcode.com/2020/leaderboard/private
- join code:
660803-4fa861fa

Cool, aprĂšs, je peux le faire que le soir ![]()
En php, avec dessin du parcours et des arbres rencontrés
part1
$timestart = microtime(true);
$toboggan = file("input3");
if ($toboggan === false) die("erreur de lecture");
//compteur d'arbres
$arbres = 0;
//coords
$x = 0;
$y = 0;
//mouvement
$right = 3;
$down = 1;
//mod
$xmax = strlen($toboggan[0])-2;
while ($y<count($toboggan))
{
if (substr($toboggan[$y], $x, 1) == '.') $m = 'O';
else $m = 'X';
echo substr($toboggan[$y], 0, $x) . $m . substr($toboggan[$y], $x+1) . "<br>";
$x += $right;
if ($x>$xmax) $x = $x-$xmax-1;
$y += $down;
if ($y<count($toboggan) && substr($toboggan[$y], $x, 1) != '.') $arbres++;
}
echo "arbres: $arbres";
$timeend = microtime(true);
echo "<hr>temps : " . number_format($timeend-$timestart, 4);
Part2, jâai aussi fait une fonction slope ($right, $down)
Câest assez marrant comme reprĂ©sentation. Voici avec slope (1, 2).
O...#...............#.#..###.##
.O..###......#....#.#...#.##..#
..O..#..#......#..#..##..#...#.
...O........###...#............
....O...#.........##..#.#...##.
.#...O.#.#......#....#..#..#..#
#.....O..#..##...###....##.....
##.....O.#..#.........#...#....
..##....O......#.#.#.#.....#.#.
#.#..#...O#.....#.....##...#..#
......###.O...#...#........###.
.......#...X....##...#.........
#.#...#...#.O..#...#.#......#..
.#.........#.O.#......##.#...#.
.#.....###....X##..##.#..##.#..
#...##....#....O..#.....##.##..
##.#........###.O.........###.#
.................O#..#.........
.#.#.......#..##..O.....#..##.#
...#......#....#...O##.#..#....
...#.##...##........O......#..#
#....#..........#....O......#.#
.....#..##..........#.O###.....
#.............#...#....O..##...
.#..#.......#..##...#...X......
##...#.#.#...........#...O#....
.....#.......#.......#.#.#O....
#...#..#.#....###....##...#O#.#
###..##..#......#.....#.....O.#
.....#..#....#...#.#...#...#.O.
#.#..#....#..#.....#.#...#.#..O
X.........#..#..#.........##..#
.O...###...#..#...##.#..#......
..O....#.##.#.##...#.#.......##
##.X........#.....##.....#.....
....X..##..#..#....#..#.#......
.##..O.....#.#.#.#..........#.#
.#....X....#.#.#.#....#..#.....
.....#.O...##..#....##.........
........O........#....#.......#
...#.#..#O.##..##....#.....#...
.......#..X..#.#..#.....#......
.##........O#.#...........#....
.....#.#....X...#............#.
#......##...#O..#............#.
.............#O......#.#.......
....#...##.#...O##..#.....#.#..
.####.#..#..#.#.O.#.#.#....#...
.........#....##.O#..#.........
....#..##.#....#.#O.#...##.....
..........#.......#O##..#.##..#
....##.#.......#....O..........
#.#..#.#....#.#......O..###...#
...#....##........##..O#...#...
#....#.##...#.#..#....#O....#..
...........#.......#....O.#..#.
.#.##.#.#.............#..O.##..
.#.#........#.#...#..#....O...#
..##..##....#.#............X...
.#...#..#..#.#.....#.....#..O.#
...#.#........#.#.###...#....O#
..#....###.##.#..#..#....#...#O
O....#......###...#.#...##.....
.O.#..###.....#....#.#...#.....
..O#..####.###........#.....#..
...O#....##..##..##.......###..
.#.#O....#.#.#..........#..#..#
.....O..#......#.##....##...#.#
......O....#...............#...
.......O..####..##.##.#....#...
.#.#....O.###.....#....#.......
...#.....O......#......##...###
.#.#......X..##.#..#..#.#...#.#
..#.###.#..X...#.##..#.##......
.#..##.#..#.X.#...##..#.#......
.##.###..##..O..#.##..#........
##....#...#...O.......#........
.......#.......X#.#..#....#.#..
..........#....#O.#..#....#....
........##.###...O.....#.#.#...
......#........#..O...#.....#..
.#..#...#..........O.##.##..#..
.##.#.#....#........O......#..#
#............##..##..O......##.
........#.....#..#....O....#.##
.#.#.....#.#..#..##....X....#..
.#....#.#.......#..#..#.O.###..
#....#..#...#.....#......O#.##.
###....#.#......#....#.#..O##..
.#.................#.......X#.#
.....##.#..............##..#O..
..#...#.#.#.......##.#.....#.O.
#.....#...##....##..##........X
X..#.....#....#...##......#....
.O....#...............#.....#..
..O........##......#...#.......
...O..##..###.......#....#.##..
....O#.........#........##.....
.#.#.O.##................#.....
.#....O...........#...###....#.
.......X....##...............#.
......#.X....#...#..#..........
##....#..O##.....#..#.###.#....
.##.#.....O.....##.........#.#.
#..##......X##........#...#....
.....#.#..#.O...#.......#..##..
.#.#...###...O..###............
.......#......O...........#...#
....#..#.......O....#.#........
.......#....#...O..#....#......
.........###.#..#O.............
....##..#.......#.X...#.#..#.#.
........##..#......O.#.........
.........#.#..####..X...#.##.##
..#...#...#....#.#...O#.....#.#
.##.....#....#.......#O#..#.##.
...#.........####......O..##..#
.........#....#..#.#....O....#.
....#......#..#.#...#....O#....
.#....#............#....##X#...
...#...##...#.#....#.......O...
.....#.....#.#....#.........X..
.#..#.##..#......#..........#X.
..#.............#.......#.#...O
X#...##...#.#....#..#..........
.O..#.#......##.#......#...#.#.
..O#.#.........................
...X#.#...##..#.#.##.#...#.##..
.#..O............#..#...#......
...#.O...#...####....##....#..#
.....#X.##..#..#.........##....
..##.#.O..####..#...........#..
...#...#O.....#..#.#....#......
.........X...##...........#....
...#......O...#.###..##...#.##.
....#..#.#.O...##...#.#.#.#....
.##.........O#.#.#.....#.....#.
.#...#.....##X..#......#.....#.
#....#....#...O#....#..#.##....
##.###..#...##.O.....#.#.......
..##.#.#....#...X.....##.......
###......#.##....X.#..##.......
.......#.#....#...O.##......#..
....#.#....#..#.#..O##.........
.#.....#.....#.##...O#.##..#..#
..#...........#....#.O.....##..
..#..#..........#...##O...#....
.##...##..........#.#..X...#...
............#.......#..#O....##
#.#......#.#...#.....#...O.....
.#..#.#.#.##...#..#.#.....O...#
#..##.##.#.##.......#......O#..
....#..##....##..##......#..X#.
......#...#...###..#.........O.
..##.#.....#.#..#......#.#....O
X..#.#..#.....#.#..#..##..#.#..
.O.#..##....#..#.#....#.###.#..
##O..........#......##.##.....#
#..O..#........................
....X.#..#..............#......
.###.O..#..#.#.####.........#..
......O...#................#.##
Tâen fais pas, câest un marathon pas un sprint ![]()
Dans qq jours le classement se fera sur le nombre dâĂ©toiles (car tout le monde ne parviendra pas Ă faire tous les quizz) et le temps sera juste la pour dĂ©partager les rares Ă©galitĂ©s
Ah ben clairement, vu mon niveau de chie (et le fait que je dĂ©couvre python), ça va probablement vite sâarrĂȘter ![]()
La seule autre fois oĂč jâai essayĂ©, en 2018, jâai coincĂ© au jour 6, ça devenait dĂ©jĂ trop chaud pour moi (sauf Ă y passer des heures
)
Jâai rejoins le board 
Et jâai pousser mes codes adventofcode2020/Program.cs at main · jeromefirlej/adventofcode2020 · GitHub
Pas de prise de tĂȘte au quasi plus court
hop, 2* aussi pour moi aujourdâhui :
mon code en python
slope = []
f = open("Z:\donnees\developpement\Python\AdventOfCode\day3.txt", "r")
for line in f:
slope.append(list(line.rstrip("\n")))
f.close()
def calculateCollision(shiftX, shiftY, slope):
currentPositionX = 0
currentPositionY = 0
finishLine = len(slope)
slopeWidth = len(slope[0])
collision = 0
while(currentPositionX < finishLine):
if slope[currentPositionX][currentPositionY] == '#':
collision += 1
currentPositionX += shiftX
currentPositionY = (currentPositionY + shiftY) % slopeWidth
return(collision)
print("Star 1 : nb of collision = ", calculateCollision(1, 3, slope))
print("Star 2 : nb of collision = ", calculateCollision(1, 1, slope) * calculateCollision(1, 3, slope) * calculateCollision(1, 5, slope) * calculateCollision(1, 7, slope) * calculateCollision(2, 1, slope))
Et le resultat :
Star 1 : nb of collision = 257
Star 2 : nb of collision = 1744787392
[Finished in 0.074s]
@silicium : trĂšs sympa comme representation
jâai hesitĂ© Ă le faire aussi 
Tâas merdouillĂ© dans des coordonnĂ©es
ou alors les rĂ©sultats peuvent ĂȘtre differents en fonction des gens ?
on a tous des donnĂ©es diffĂ©rentes en entrĂ©e, câest pour ca 
RAaaaaaaaaaaaah putain je cherchais mon erreur, yâen avait pas !
Tâen veux pas. Sur 28 etudiants de 1ere annĂ©e ce matin, jâai eu plusieurs fois la question « pourquoi jâai pas le mĂȘme rĂ©sultat » 
Je viens de lire lâĂ©noncĂ© du Day4 et je propose une rĂšgle : PAS DE LIB EXTERNE.
Je dis ça car il existe dans lâunivers Symfony un component servant Ă valider des donnĂ©es, suffit de dĂ©crire les rĂšgles de validation et il fait le job tout seul⊠Ăa serait clairement cheatĂ© pour cet exercice donc je propose comme rĂšgle de faire le code en langage le plus natif possible.

