• # Manque de temps aujourd'hui

    Posté par . En réponse au message Advent of Code 2023 : Day 5. Évalué à 2.

    Je manque de temps aujourd'hui. J'ai une première partie qui devrait fonctionner qui sort le bon résultat sur l'exemple, mais pas sur mes données d'entrée. J'ai fais une petite visualisation qui ne m'a pas montré grand chose, donc je vais devoir debuger à la main... mais ce sera pour demain. Je découvre rust du coup le code n'est probablement pas optimal (je présume qu'il y a trop de unwrap() par exemple).

    useregex::Regex;
    usestd::cmp;
    usestd::collections::HashMap;
    usestd::env;
    usestd::io::{self,BufRead};
    usestd::ops::Range;
    fn mapping(value: i64,mapper: &HashMap<Range<i64>,i64>)-> i64 {
    for(ran,delta)inmapper{
    ifran.contains(&value){
    //dbg!(value - delta, delta, value);
    returnvalue+delta;
    }
    }
    returnvalue;
    }
    fn part1()-> i64 {
    lettoken_pattern=Regex::new(r"(\d+)").unwrap();
    letmap_pattern=Regex::new(r"(\d+) (\d+) (\d+)").unwrap();
    letmutseeds: Vec<i64>=Vec::new();
    letmutmapper=HashMap::new();
    forlineinio::stdin().lock().lines(){
    letl=line.unwrap();
    ifl.is_empty(){
    // dbg!(&mapper);
    seeds=seeds.iter().map(|a|mapping(*a,&mapper)).collect();
    mapper.clear();
    dbg!(&seeds);
    }elseifseeds.is_empty(){
    for(_,[seed])intoken_pattern.captures_iter(&l).map(|c|c.extract()){
    seeds.push(seed.parse::<i64>().unwrap());
    }
    }else{
    for(_,values)inmap_pattern.captures_iter(&l).map(|c|c.extract()){
    let[target,src,len]=values.map(|str|str.parse::<i64>().unwrap());
    letran=Range{start: src,end: src+len};
    letdelta=target-src;
    mapper.insert(ran,delta);
    }
    }
    }
    return*seeds.iter().reduce(|a,b|cmp::min(a,b)).unwrap();
    }
    fn main(){
    letargs: Vec<String>=env::args().collect();
    ifargs.len()>1&&args[1]=="part2"{
    //println!("Part 2: {}", part2());
    }else{
    println!("Part 1: {}",part1());
    }
    }

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll