AOC日1:音の較正


  • Overview
  • My Solution
  • DEV Leaderboards

  • 概要
    昨晩のポストの後、我々はこれらの課題のために毎日議論のポストチェーンを開始することを提案した.私はそれはきちんとしたアイデアだと思うすべての人よりも効率的に“私のGitレポをチェックアウト!”
    今年のアドベントミッション、クリスマスを救うために旅行する時間に興奮しています!これは今日の問題について議論する場所である.我々は、シーケンシャル整数を追加することによって私たちの時間旅行デバイスを校正すると使命を帯びている.
    サイドノートでは、いくつかの余分な時間を取得する場合、おそらくそれはおそらく、ファイルからの入力テキストを読み取るためのいくつかのインフラストラクチャを設定するための良いアイデアだと思います.
    あなたが今日のパズルをまだ解決していないならば、私がここに私の解決を掲示するつもりであるので、今、読み始めてください.あなたが解決を終えたならば、コメントでそれを掲示してください!また、他の人に解決策を与える(愛、教育、いい)フィードバックを与えるために自由に感じたり、より速く実行してください.私は新しい機会を学ぶためにこの機会を使用しているいくつかの人々を見てきたので、もし何かを見ているが、あなたの好きな言語に慣用されていない、先に行くと提案を提案!これは私がたださびを学んでいるので、私を含んでいるので、私はそれが不十分に翻訳されたパイソンIsingとGobbdydygookの混合物であると確信します.

    マイソリューション
    // day1.rs
    
    /// Given a bunch of integers (changes in frequency), one per line,
    /// calculate the final sum
    pub fn final_frequency(text: &str) -> i32 {
        text.lines()
            .map(|value: &str| -> i32 {value.parse().expect("Not a number")})
            .sum()
    }
    
    /// Given a bunch of integers (changes in frequency), one per line,
    /// calculate the running sum until you hit a cumulative sum that you've
    /// seen before.  Return that first repeated cumulative sum.
    pub fn first_duplicate_frequency(text: &str) -> i32 {
        let mut history = vec![0];
        let mut total = 0;
        for line in text.lines().cycle() {
            let value: i32 = line.parse().expect("Not a number.");
            total += value;
            if history.contains(&total) {
                return total;
            }
            history.push(total);
        }
        return 0;
    }
    
    #[cfg(test)]
    mod tests {
        use super::final_frequency;
        use super::first_duplicate_frequency;
    
        #[test]
        fn final_all_positives() {
            assert_eq!(3, final_frequency("+1\n+1\n+1"));
        }
    
        // More tests...
    
    // main.rs
    
    // This file will change day to day as I just use it to exercise each day's module.
    
    use std::fs::File;
    use std::io::prelude::*;
    
    mod day1;
    
    fn main() {
    
        let mut input = File::open("data/day1.txt").expect("File not found.");
    
        let mut contents = String::new();
        input.read_to_string(&mut contents).expect("Couldn't read file.");
        println!("{}", day1::first_duplicate_frequency(&contents));
    }
    

    devリーダーボード
    最後に、私はdev . forのための“プライベート”リーダーボードを作成しました.明らかに、彼らはリーダーにつき200人だけを保持します、しかし、最初に来る最初のサーブ.明らかに、devの家族の中に200人以上のWAAAAYがあるので、あなたがそこに着く、そして、部屋がいっぱいであるならば、自由にあなた自身のものをつくるのを感じてくださいAdvent of Code site そして、コメントのあなたの部屋コードを掲示してください.私が誰かが部屋コードを掲示するのを見るならば、私は私のポストを編集して、それを下にコピーするために最善を尽くします、しかし、ちょうど私がそれを逃した場合、コメントを読んでください.
    幸せ-私は意味、陽気なコーディング!私は人々が何を考えているかを見て興奮している.
    - 224198.- 25048 A 19