INDAPlus21 / INDAPlus21/antonul-task-2

Pass

Aperta
#1 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Rust
Stelle
0
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Very well done Anton!

Tips och tricks följer:

Your code:

// ...

let mut sum = 0;

match numbers.len() {
    // edge cases, logic and print
    0 => {
        sum = 0;
    }
    _ => {
        numbers.sort();
        let half_of_numbers = numbers.len()/2;
        for number in half_of_numbers..numbers.len() {
            sum += numbers[number];
        }
    }
}
println!("{}", sum);

Condensed vesion:

// ...

println!("{}",
    match numbers.len() {
        0 => 0,
        _len => {
            numbers.sort();
            numbers[_len/2.._len].iter().sum()
        }
    }
);

Your code:

// ...

for row in 1..=rows {   
let mut row_output: String = String::default();
    for col in 1..=columns {
        let top_dist = row;
        let bot_dist = rows - row + 1;
        let left_dist = col;
        let right_dist = columns - col + 1;
        //gets the smallest value of ..._dist variables
        let min_distance = top_dist.min(bot_dist).min(left_dist).min(right_dist);
        //adds the distance if it's under 10 to output and . if it's not
        if min_distance < 10 {
            row_output.push_str(&min_distance.to_string());
        }
        else {
            row_output.push('.');
        }
    }
println!("{}", row_output);
}

Optimised version:

//...

for _row in 1..=rows {
    // Pre-allocate memory.
    let mut row = String::with_capacity(5);
            
    for _col in 1..=columns {
        let top_dist = _row;
        let bottom_dist = rows - _row + 1;
        let left_dist = _col;
        let right_dist = columns - _col + 1;
        
        row.push(
            match top_dist.min(bottom_dist).min(left_dist).min(right_dist) {
                _min_dist if _min_dist < 10 =>
                    // Quicker to convert directly to static sized type, than to dynamic string to static sized string.
                    std::char::from_digit(_min_dist, 10).unwrap(),
                _ => '.'
            }
        );
    }
    
    println!("{}", row);
}

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Non viene indicato alcun file, test o punto di ingresso. L’issue è un feedback sul codice Rust, non una modifica richiesta, quindi conferma prima di iniziare se è previsto un aggiornamento della documentazione o del codice; non è fornito alcun criterio di completamento.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust
Ambito
documentation
Tipo di issue
Documentazione
Difficoltà
1/5
Tempo stimato
Meno di un'ora
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
10/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.