Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2905 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  25164  25165  25166  ..  27186  27187  27188  27189  27190  27191
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2435146
R3g
fonctionnaire certifié ITIL
Posté le 10-12-2022 à 14:06:26  profilanswer
 

Reprise du message précédent :

masklinn a écrit :

Bon après m'être souvenu de itertools::izip!, et que j'avais ajouté un post-increment à mes extensions, et un peu de nettoyage, je suis arrivé à un day10 dont je suis un peu content, en une passe (mais sans buffering du CRT): https://topaz.github.io/paste/#XQAA [...] 6E7nf7UZBH


 

masklinn a écrit :


FWIW map c'est bien si t'as une fonction que tu peux lui passer direct, mais là t'as aussi bien fait d'utiliser une listcomp imo.
 
Et t'as pas besoin de l[-1], tu peux juste l.isdigit().


alors c'est ce que je croyais mais apparemment '-1'.isdigit() est False :/
 
mais oui pour map je suis d'accord, c'est qu'il y a eu pas mal de refactoring pour arriver là.

Message cité 1 fois
Message édité par R3g le 10-12-2022 à 14:10:29

---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le 10-12-2022 à 14:06:26  profilanswer
 

n°2435147
SekYo
Posté le 10-12-2022 à 14:09:16  profilanswer
 
n°2435148
R3g
fonctionnaire certifié ITIL
Posté le 10-12-2022 à 14:12:06  profilanswer
 


ouais c'est "normal", mais j'aurais trouvé "normal" d'avoir une méthode disant que '-1' représente un nombre


Message édité par R3g le 10-12-2022 à 14:14:43

---------------
Au royaume des sourds, les borgnes sont sourds.
n°2435149
masklinn
í dag viðrar vel til loftárása
Posté le 10-12-2022 à 14:22:01  profilanswer
 

R3g a écrit :


alors c'est ce que je croyais mais apparemment '-1'.isdigit() est False :/


Ah merde j'y avais pas pensé :D dsl. isnumeric() marche pas non plus :/

 

Et ya pas de `int.tryparse` ou équivalent :/


Message édité par masklinn le 10-12-2022 à 14:23:38

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2435150
skeye
Posté le 10-12-2022 à 14:25:18  profilanswer
 

Day 10 done. Assez rapide finalement, le plus compliqué c'est de comprendre l'énoncé.[:joce]
Pas fait de fantaisies sur celui-ci, pas assez dormi cette nuit et pas le temps. :o  

Spoiler :


J'ai cru que j'avais le cerveau trop brumeux pour faire la partie 1 en une passe, mais c'est au calcul du total que j'avais introduit un décalage de 1 [:el g]
https://github.com/mrossard/aoc2022 [...] /day10.php


---------------
Can't buy what I want because it's free -
n°2435151
skeye
Posté le 10-12-2022 à 14:27:17  profilanswer
 

Ydalb a écrit :

AOC day 10 done :o
 
Plus facile que les précédents je trouve :o
 
https://github.com/Ydalb/adventofco [...] /solve.php


 
Pfiouu que c'est compliqué. :o


---------------
Can't buy what I want because it's free -
n°2435152
nucl3arfl0
Better Call Saul
Posté le 10-12-2022 à 14:31:23  profilanswer
 

Je trouve mon code plus simpliste à la lecture, en fait [:clooney11]

 

Mais j'ai un gros biais évidemment.
Après, c'est certainement pas le plus optimal / performant.


Message édité par nucl3arfl0 le 10-12-2022 à 22:32:11
n°2435153
el_barbone
too old for this shit ...
Posté le 10-12-2022 à 17:04:23  profilanswer
 

ratibus a écrit :

Pour les gens qui ont fait refaire leur salle de bain : 1 seul artisan ou plusieurs sur le chantier ?
Quels corps de métier à privilégier car ça demande des compétences en plomberie/carrelage/elec...


Nous on a pris un seul  ... Il était mal organisé (ça c'est bien fini pour nous, mais le chantier de la sdb a été une plaie pour nous)
L'idéal est dans prendre un seul qui gère ses (bons) sous traitants (c'est comme ça que ça c'est passé pour la cuisine et c'était nickel).


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
n°2435154
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 10-12-2022 à 17:35:54  profilanswer
 

skeye a écrit :


 
Pfiouu que c'est compliqué. :o


Tu n’es pas habitué c’est tout :o
 
Le tien est compliqué :o

Message cité 1 fois
Message édité par Ydalb le 10-12-2022 à 17:36:26

---------------
:o
n°2435155
masklinn
í dag viðrar vel til loftárása
Posté le 10-12-2022 à 17:49:22  profilanswer
 

Les fans de JPEG XL [:rofl]
 
Ils s'injectent du copium au litre, pire que des butters  [:implosion du tibia] il y a une blockchain dans JXL?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 10-12-2022 à 17:49:22  profilanswer
 

n°2435156
el muchach​o
Comfortably Numb
Posté le 10-12-2022 à 17:51:07  profilanswer
 

ratibus a écrit :


Y a toujours pas de récursion, c'est bon pour moi :o


ce genre de truc, je ne me souvenais plus l'avoir résolu: https://adventofcode.com/2020/day/18
Je ne sais pas si je suis encore capable de le faire. Faudrait que je retente pour voir.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2435157
skeye
Posté le 10-12-2022 à 19:46:36  profilanswer
 

Ydalb a écrit :


Le tien est compliqué :o


not sure if serious.  [:sombrero67]  
 


---------------
Can't buy what I want because it's free -
n°2435160
ratibus
Posté le 10-12-2022 à 23:08:18  profilanswer
 

el_barbone a écrit :


Nous on a pris un seul  ... Il était mal organisé (ça c'est bien fini pour nous, mais le chantier de la sdb a été une plaie pour nous)
L'idéal est dans prendre un seul qui gère ses (bons) sous traitants (c'est comme ça que ça c'est passé pour la cuisine et c'était nickel).


:jap:

el muchacho a écrit :


ce genre de truc, je ne me souvenais plus l'avoir résolu: https://adventofcode.com/2020/day/18
Je ne sais pas si je suis encore capable de le faire. Faudrait que je retente pour voir.


Si j'en crois mon Github, j'avais mis 31 minutes sur la première partie et 13 sur la seconde :d
https://github.com/ratibus/adventof [...] 020/day_18
Sans récursivité par contre :o

Message cité 1 fois
Message édité par ratibus le 10-12-2022 à 23:10:14

---------------
Mon blog
n°2435161
el muchach​o
Comfortably Numb
Posté le 11-12-2022 à 06:47:59  profilanswer
 

ratibus a écrit :


Si j'en crois mon Github, j'avais mis 31 minutes sur la première partie et 13 sur la seconde :d
https://github.com/ratibus/adventof [...] 020/day_18
Sans récursivité par contre :o


T'es très fort.
 
Bon ça y est, on entre dans les problèmes du weekend. Mon dimanche est foutu :o


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2435162
el muchach​o
Comfortably Numb
Posté le 11-12-2022 à 06:56:56  profilanswer
 

Dans l'exemple, "Monkey 2 inspected items 7 times.".
 
Moi je compte 3, lors du round 1 et 0 les rounds suivants. Comment ils parviennent à 7 ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2435163
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 11-12-2022 à 08:06:16  profilanswer
 

el muchacho a écrit :

Dans l'exemple, "Monkey 2 inspected items 7 times.".
 
Moi je compte 3, lors du round 1 et 0 les rounds suivants. Comment ils parviennent à 7 ?


Je viens de réaliser que les actions de chaque singe ne sont pas simultanées dans chaque ronde : si le singe 1 lance un truc au singe 2 dans la première ronde, le singe 2 va l'inspecter et le relancer. C'est peut-être ton erreur aussi ?

n°2435164
Flaie
Posté le 11-12-2022 à 08:27:30  profilanswer
 

J'en ai quand même méga chié, quasi 40 min les deux parties  
 
Day 11:

Spoiler :

https://rehost.diberie.com/Picture/Get/r/113521

n°2435165
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 11-12-2022 à 08:35:23  profilanswer
 

J'ai envie de dire, en toute simplicité (pas de jugement, j'ai des trucs à faire moi aujourd'hui...) :
https://codeshare.io/8pKyNB

 

J'ai vite décidé que rentrer les données à la main serait le plus judicieux. Le plus relou a été de tout convertir en int64 pour la partie 2 ><.


Message édité par hephaestos le 11-12-2022 à 08:36:50
n°2435166
gfive
Posté le 11-12-2022 à 09:54:39  profilanswer
 

J'ai trouvé que l'énoncé d'aujourd'hui donnait presque trop d'indices :o


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2435168
Jubijub
Parce que je le VD bien
Posté le 11-12-2022 à 10:20:24  profilanswer
 

-5°, y’a un coin dans le Jura suisse (la Brévine) où il fait -18°
 
 [:bakk52]


---------------
Jubi Photos : Flickr - 500px
n°2435170
R3g
fonctionnaire certifié ITIL
Posté le 11-12-2022 à 10:23:23  profilanswer
 

Bon, la partie 1 était vite faite, mais ma solution scale pas...


---------------
Au royaume des sourds, les borgnes sont sourds.
n°2435172
el muchach​o
Comfortably Numb
Posté le 11-12-2022 à 10:36:17  profilanswer
 

aaargh j'ai pas le bon résultat pour part 2.
J'ai le round 1 correct mais au round 20 : [99, 97,8,103]

 

Un integer overflow ? edit: ah oui, même avec des Long, j'ai des nombres négatifs...

 

"you'll need to find another way to keep your worry levels manageable." ????

 

Bon ben BigNum alors... ? Non probablement pas, ça explose, et les 10 000 rounds sont là pour faire exploser le temps. Du coup, je sèche.

 

En attendant

Spoiler :


package AOC2022

 

import java.io.File

 

class Day11 {

 

   data class Monkey(val items: MutableList<Long>,
                 private val operation: String,
                 private val test: Long,
                 private val throwToIfTrue: Int, private val throwToIfFalse: Int) {

 

       var inspected = 0

 

       fun operate(item : Long): Long {
            var worry = operation.split(' ')
                .let { (instr, operand) ->
                    when(instr) {
                        "+" -> item + if (operand != "old" ) operand.toLong() else item
                        "*" -> item * if (operand != "old" ) operand.toLong() else item
                        else -> throw Exception("Unknown operation: $instr" )
                    }
                }
            return worry / 3
        }

 

       fun throwTo(worryLevel: Long) : Pair<Int, Long> {
            inspected++
            return Pair(if (worryLevel % test == 0L) throwToIfTrue else throwToIfFalse, worryLevel)
        }
    }

 

   var monkeys: MutableList<Monkey> = mutableListOf()

 

   fun parse(lines: List<String> ): List<Monkey> {
        var numChunk = 0
        val chunks = lines
            .chunked(7)
            .map { it.filter { it.isNotBlank() } }
        for(chunk in chunks) {
                monkeys.add(
                    Monkey(
                        chunk[1].substring(18).split(',').map { it.trim().toLong() }.toMutableList(),
                        chunk[2].substring(23).trim(),
                        chunk[3].substring(20).trim().toLong(),
                        chunk[4].substring(29).trim().toInt(),
                        chunk[5].substring(29).trim().toInt(),
                    )
                )
        }
        return monkeys
    }

 

   fun part1(lines: List<String> ): Int {
        for (monkey in parse(lines)) {
            println(monkey)
        }
        (1..20).forEach{ i ->
            println("Round " + i)
            for(monkey in monkeys) {
                for (item in monkey.items.toLongArray()) {   // copy to avoid concurrent modification
                    monkey.items.removeAt(0)
                    val (recipient, item) = monkey.throwTo(monkey.operate(item))
                    monkeys[recipient].items.add(item)
                }
            }
            for(monkey in monkeys) {
                println("${monkey}, ${monkey.inspected}" )
            }
        }
        val sortedByInspected = monkeys.map { it.inspected }.sortedByDescending { it }
        return monkeys[0].inspected * monkeys[1].inspected
    }

 

   fun part2(lines: List<String>  ): Unit {
    }
}

 

fun main() {
    val lines = File("src/main/kotlin/AOC2022/input11.txt" ).readLines()
    val day11 = Day11()
    println(day11.part1(lines))
    println(day11.part2(lines))
}

Message cité 1 fois
Message édité par el muchacho le 11-12-2022 à 10:51:57

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2435173
el muchach​o
Comfortably Numb
Posté le 11-12-2022 à 10:46:53  profilanswer
 

gfive a écrit :

J'ai trouvé que l'énoncé d'aujourd'hui donnait presque trop d'indices :o


T'as fait la partie 2 ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2435175
Flaie
Posté le 11-12-2022 à 10:54:51  profilanswer
 

el muchacho a écrit :

aaargh j'ai pas le bon résultat pour part 2.
J'ai le round 1 correct mais au round 20 : [99, 97,8,103]
 
Un integer overflow ? edit: ah oui, même avec des Long, j'ai des nombres négatifs...
 
"you'll need to find another way to keep your worry levels manageable." ????
 
 Bon ben BigNum alors... ? Non probablement pas, ça explose, et les 10 000 rounds sont là pour faire exploser le temps. Du coup, je sèche.


Réfléchis a comment tu peux éviter que le nombre grossisse trop. Quel moyen mathématiques connaît tu pour ramener le nouveau level de worriness à un nombre plus petit commun à tous qui te permettrait de rester sur des long. Je suis que tu sais

Message cité 1 fois
Message édité par Flaie le 11-12-2022 à 10:55:02
n°2435176
el muchach​o
Comfortably Numb
Posté le 11-12-2022 à 11:11:29  profilanswer
 

Flaie a écrit :


Réfléchis a comment tu peux éviter que le nombre grossisse trop. Quel moyen mathématiques connaît tu pour ramener le nouveau level de worriness à un nombre plus petit commun à tous qui te permettrait de rester sur des long. Je suis que tu sais


Hmmm, okay, je vois. :jap:  
Bon par contre j'ai pas le temps de le faire ce matin. On verra ce soir.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2435177
ratibus
Posté le 11-12-2022 à 11:17:41  profilanswer
 

Bon j'ai raté la partie 2 (ça me soûle, il y avait la même feinte une des années précédentes...) :(
Quand j'applique la solution à mon code ça fonctionne sur la partie 2 mais plus sur la partie 1 alors que ça fonctionne sur les 2 parties avec les données de test :fou:


---------------
Mon blog
n°2435178
el_barbone
too old for this shit ...
Posté le 11-12-2022 à 11:17:44  profilanswer
 

Jubijub a écrit :

-5°, y’a un coin dans le Jura suisse (la Brévine) où il fait -18°
 
 [:bakk52]


 
-3 a 7h ce matin .... Apparemment dans la Creuse il a fait -12. [:bakk12]


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
n°2435179
Flaie
Posté le 11-12-2022 à 11:19:39  profilanswer
 

ratibus a écrit :

Bon j'ai raté la partie 2 (ça me soûle, il y avait la même feinte une des années précédentes...) :(
Quand j'applique la solution à mon code ça fonctionne sur la partie 2 mais plus sur la partie 1 alors que ça fonctionne sur les 2 parties avec les données de test :fou:


overflow probable

n°2435181
ratibus
Posté le 11-12-2022 à 11:33:55  profilanswer
 

Flaie a écrit :


overflow probable


Non je pense pas.

Spoiler :

Quand je veux mettre cette ligne tout le temps (et pas uniquement dans la partie 2), ça casse ma partie 1 (mais pas sur les données de test) : https://github.com/ratibus/adventof [...] ve.php#L53
Je comprends pas pourquoi.

n°2435182
masklinn
í dag viðrar vel til loftárása
Posté le 11-12-2022 à 11:37:55  profilanswer
 

Flaie a écrit :


overflow probable


ratibus a écrit :


Non je pense pas.

Spoiler :

Quand je veux mettre cette ligne tout le temps (et pas uniquement dans la partie 2), ça casse ma partie 1 (mais pas sur les données de test) : https://github.com/ratibus/adventof [...] ve.php#L53
Je comprends pas pourquoi.



Pas en PHP. Mais tu peux avoir pire: il passe pas en bigint il passe en float, sur une plateforme 32b ça veut dire que tu montes de 31 à 53 bits de précision entière, mais sur une plateforme 64b tu descend de 63 à 53 bits, donc tu passes à des valeurs approximatives [:dawa]

Message cité 1 fois
Message édité par masklinn le 11-12-2022 à 11:39:59

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2435183
Hermes le ​Messager
Breton Quiétiste
Posté le 11-12-2022 à 11:40:53  profilanswer
 

Jubijub a écrit :

-5°, y’a un coin dans le Jura suisse (la Brévine) où il fait -18°
 
 [:bakk52]


 

el_barbone a écrit :


 
-3 a 7h ce matin .... Apparemment dans la Creuse il a fait -12. [:bakk12]


 
Les complotistes en mode : On vous l'avait dit que c’était du pipeau le RC.  [:sardinelorano]  [:romano21]


---------------
Expert en expertises
n°2435185
ratibus
Posté le 11-12-2022 à 11:51:41  profilanswer
 

masklinn a écrit :


Pas en PHP. Mais tu peux avoir pire: il passe pas en bigint il passe en float, sur une plateforme 32b ça veut dire que tu montes de 31 à 53 bits de précision entière, mais sur une plateforme 64b tu descend de 63 à 53 bits, donc tu passes à des valeurs approximatives [:dawa]


Non c'est pas ça le souci :o

Spoiler :

Ca fonctionne chez vous la partie 1, si vous faites un % LCM après la division entière par 3 ? Je pensais que la division par le LCM allait tout le temps fonctionner mais j'ai dû rater un truc dans le raisonnement.

n°2435186
ratibus
Posté le 11-12-2022 à 11:59:04  profilanswer
 

Sinon c'était magnifique le paysage au réveil ce matin :love:
https://i.imgur.com/jDPvI0Z.jpg

n°2435187
beel1
Posté le 11-12-2022 à 12:06:52  profilanswer
 

ratibus a écrit :


:jap:
L'insatisfaction vient de quoi au final ? Uniquement le souci de synchronisation menuisier/peintre ou bien d'autres soucis ?


Autres soucis, comme toujours dans les chantiers...
Cela dit, Mobalpa faisant pas de peinture, le plombier-cowboy s'est pas fait chier et a laissé la merde au peintre (bandes pas poncées par ex)
Le peintre a d'abord crisé mais après un café et le OK de son chef il était content d'être chez nous plutôt que peindre à la chaîne des apparts sortis de terre :D
Mais on a eu à faire au directeur à pompes en croco qui a essayé de nous manipuler pour faire réparer la baignoire (irréparable) que leur carreleur a pété (sans l'avouer) pour pas avoir à la changer. OK ça retardait le chantier mais les plus emmerdés c'était quand même nous (la vendeuse est intervenue et ils ont remplacé la baignoire). On s'en serait bien passé surtout qu'il y avait d'autres merdes et autres raccourcis pris à côté (trop long à tout détailler mais genre du PER dans du tube IRL, chaque fois qu'un plombier vient dans mon garage il me demande si j'ai fait la plomberie moi-même).
À côté de ça ils ont fait un faux plafond pour l'éclairage et déplacer la VMC, c'était propre, plutôt bien vu, pas cher et j'y aurait pas pensé (mais comme j'étais pris de court j'en ai pas profité pour isoler)

n°2435188
gfive
Posté le 11-12-2022 à 12:12:53  profilanswer
 

el muchacho a écrit :


T'as fait la partie 2 ?


Oui.

 

L'indice sur la "another way" m'a tt de suite mis sur l'idée de changer simplement une fonction.

 

Les valeurs de diviseurs m'ont donné presque instantanément la solution.

 

Mais j'étais très très bien réveille. :o


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2435189
beel1
Posté le 11-12-2022 à 12:13:05  profilanswer
 

masklinn a écrit :


OK mais si t'es un boomer t'es pas concerné :o


Je fous en veille mon HTPC (fixe), qui pendant longtemps sortait de veille tout seul (je sais pas ce qui a fini par régler le problème) mais aussi qui de temps en temps crashe quand je lui le demande de se réveiller :o
Donc si ça m'intéresse quand même cette histoire :o

n°2435190
ratibus
Posté le 11-12-2022 à 12:21:15  profilanswer
 

beel1 a écrit :


Autres soucis, comme toujours dans les chantiers...
Cela dit, Mobalpa faisant pas de peinture, le plombier-cowboy s'est pas fait chier et a laissé la merde au peintre (bandes pas poncées par ex)
Le peintre a d'abord crisé mais après un café et le OK de son chef il était content d'être chez nous plutôt que peindre à la chaîne des apparts sortis de terre :D
Mais on a eu à faire au directeur à pompes en croco qui a essayé de nous manipuler pour faire réparer la baignoire (irréparable) que leur carreleur a pété (sans l'avouer) pour pas avoir à la changer. OK ça retardait le chantier mais les plus emmerdés c'était quand même nous (la vendeuse est intervenue et ils ont remplacé la baignoire). On s'en serait bien passé surtout qu'il y avait d'autres merdes et autres raccourcis pris à côté (trop long à tout détailler mais genre du PER dans du tube IRL, chaque fois qu'un plombier vient dans mon garage il me demande si j'ai fait la plomberie moi-même).
À côté de ça ils ont fait un faux plafond pour l'éclairage et déplacer la VMC, c'était propre, plutôt bien vu, pas cher et j'y aurait pas pensé (mais comme j'étais pris de court j'en ai pas profité pour isoler)


Ah ouais bien relou quand même :d


---------------
Mon blog
n°2435191
Mackila
Posté le 11-12-2022 à 12:33:24  profilanswer
 

ratibus a écrit :

Spoiler :

Ca fonctionne chez vous la partie 1, si vous faites un % LCM après la division entière par 3 ?



 

Spoiler :

oui


 
comme hephaestos pour moi, la grosse flemme de parser le bordel...
 

Spoiler :


using System.Collections.ObjectModel;
 
Collection<Monkey> AllMonkeys = new Collection<Monkey>();
 
void InitAllMonkeys()
{
    AllMonkeys.Clear();
    AllMonkeys.Add(new Monkey(new UInt64[] { 71, 56, 50, 73                 }, wl => wl * 11, wl => ((wl % 13) == 0) ? 1 : 7));
    AllMonkeys.Add(new Monkey(new UInt64[] { 70, 89, 82                     }, wl => wl + 1 , wl => ((wl %  7) == 0) ? 3 : 6));
    AllMonkeys.Add(new Monkey(new UInt64[] { 52, 95                         }, wl => wl * wl, wl => ((wl %  3) == 0) ? 5 : 4));
    AllMonkeys.Add(new Monkey(new UInt64[] { 94, 64, 69, 87, 70             }, wl => wl + 2 , wl => ((wl % 19) == 0) ? 2 : 6));
    AllMonkeys.Add(new Monkey(new UInt64[] { 98, 72, 98, 53, 97, 51         }, wl => wl + 6 , wl => ((wl %  5) == 0) ? 0 : 5));
    AllMonkeys.Add(new Monkey(new UInt64[] { 79                             }, wl => wl + 7 , wl => ((wl %  2) == 0) ? 7 : 0));
    AllMonkeys.Add(new Monkey(new UInt64[] { 77, 55, 63, 93, 66, 90, 88, 71 }, wl => wl * 7 , wl => ((wl % 11) == 0) ? 2 : 4));
    AllMonkeys.Add(new Monkey(new UInt64[] { 54, 97, 87, 70, 59, 82, 59     }, wl => wl + 8 , wl => ((wl % 17) == 0) ? 1 : 3));
}
 
InitAllMonkeys();
 
UInt64 MaxWorryLevel = 13 * 7 * 3 * 19 * 5 * 2 * 11 * 17;
 
for (int round = 1; round <= 20; ++round)
{
    for (int monkeyID = 0; monkeyID < AllMonkeys.Count; ++monkeyID)
    { // Monkey turn
        Monkey monkey = AllMonkeys[monkeyID];
        while (monkey.Items.Count != 0)
        {
            ++monkey.inspectionCount;
            UInt64 wl = monkey.Items[0];
            monkey.Items.RemoveAt(0);
            wl = (monkey.operationOp(wl) / 3) % MaxWorryLevel;
            AllMonkeys[monkey.nextMonkeyOp(wl)].Items.Add(wl);
        }
    }
}
 
Console.WriteLine("1 = " + AllMonkeys.Select( m => m.inspectionCount ).OrderBy( ic => ic ).Skip( AllMonkeys.Count-2 ).Aggregate( (a, b) => a*b ) ) ;
 
InitAllMonkeys();
 
for (int round = 1; round <= 10000; ++round)
{
    for (int monkeyID = 0; monkeyID < AllMonkeys.Count; ++monkeyID)
    { // Monkey turn
        Monkey monkey = AllMonkeys[monkeyID];
        while (monkey.Items.Count != 0)
        {
            ++monkey.inspectionCount;
            UInt64 wl = monkey.Items[0];
            monkey.Items.RemoveAt(0);
            wl = monkey.operationOp(wl) % MaxWorryLevel;
            AllMonkeys[monkey.nextMonkeyOp(wl)].Items.Add(wl);
        }
    }
}
 
Console.WriteLine("2 = " + AllMonkeys.Select(m => m.inspectionCount).OrderBy(ic => ic).Skip(AllMonkeys.Count - 2).Aggregate((a, b) => a * b));
 
public class Monkey
{
    public UInt64 inspectionCount = 0;
    public Collection<UInt64> Items = new Collection<UInt64>();
    public delegate UInt64 OperationOp(UInt64 wl);
    public OperationOp operationOp;
    public delegate int NextMonkeyOp(UInt64 item);
    public NextMonkeyOp nextMonkeyOp;
    public Monkey(UInt64[] items, OperationOp op, NextMonkeyOp nm)
    {
        foreach (UInt64 i in items) Items.Add(i);
        operationOp = op;
        nextMonkeyOp = nm;
    }
}

Message cité 1 fois
Message édité par Mackila le 11-12-2022 à 12:38:31
n°2435192
ratibus
Posté le 11-12-2022 à 13:41:06  profilanswer
 

Mackila a écrit :


 

Spoiler :

oui



J'ai identifié des nombres qui posent soucis :

Spoiler :


J'ai à un moment le nombre 41426456027.
 
Considérons l'opération new = old + 7  à effectuer et un test de divisibilité par 3 (qui est la configuration d'un de mes monkeys).
 
Le code qui fonctionne (= donc la réponse est validée par le formulaire de l'AoC) et n'applique pas une division par le LCM
41426456027 + 7 = 41426456034
41426456034 / 3 = 13808818678 (on est en partie un, il faut diviser par 3)
13808818678 mod 3 = 1
 
Si on applique en amont la division par le LCM (dans mon cas 9699690) :
41426456027 mod 9699690 = 8779727
8779727 + 7 = 8779734
8779727 / 3 = 2926578
2926578 mod 3 = 0
 
Du coup dans un cas j'ai 1 en sortie et dans l'autre cas j'ai 0, donc ça oriente pas vers le même singe ensuite.
 
Et j'ai 2 autres nombres comme ça qui posent ce souci : 6648690481 et 1067073787.
 
Avec mon jeu de données https://github.com/ratibus/adventof [...] /input.txt tu as combien en partie 1 ? Le résultat attendu par AoC est : 88208
Si je divise par le LCM, j'obtiens 87615.


Message édité par ratibus le 11-12-2022 à 13:46:09
n°2435193
ratibus
Posté le 11-12-2022 à 13:54:15  profilanswer
 

Bon je confirme, c'est pas un bug chez moi, ça dépend des données d'entrée des gens :D
Cette solution ne fonctionne pas en partie 1 sur mes données : https://www.reddit.com/r/adventofco [...] &context=3 :)

n°2435194
masklinn
í dag viðrar vel til loftárása
Posté le 11-12-2022 à 13:59:31  profilanswer
 

ratibus a écrit :

Bon je confirme, c'est pas un bug chez moi, ça dépend des données d'entrée des gens :D
Cette solution ne fonctionne pas en partie 1 sur mes données : https://www.reddit.com/r/adventofco [...] &context=3 :)


Ou alors c’est un bug dans les deux. Il y a régulièrement des edge cases qui sont présents que dans certains jeux de données, donc tu peux avoir une solution incorrecte / incomplète qui passe chez toi mais pas chez le voisin.


Message édité par masklinn le 11-12-2022 à 14:00:28

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  25164  25165  25166  ..  27186  27187  27188  27189  27190  27191

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)