Ccmmutty logo
Commutty IT
0 pv2 min read

Rustコード断片実行テスト

https://cdn.magicode.io/media/notebox/1d143f83-3bc0-4014-824d-954f7787d297.jpeg
Magicode上でRustコードを実行するテスト。コードの内容は Codewars 5kyu "Directions Reduction" より、自分の解答をコピペしたもの。
記事中のコードセルの言語設定はPCだと左上の歯車メニューから切り替えられる(デフォルトはPythonになっている)。1度ランタイムと接続したあとに別の言語を切り替えたい場合には、言語設定切り替え後にページを再読み込みする必要がある。
rust
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum Direction {
    North,
    East,
    West,
    South,
}

fn dir_reduc(arr: &[Direction]) -> Vec<Direction> {
    let mut v: Vec<Direction> = vec![];
    
    for i in arr {
        match (i, v.last()) {
            (&Direction::North, Some(&Direction::South))
            | (&Direction::South, Some(&Direction::North))
            | (&Direction::East, Some(&Direction::West))
            | (&Direction::West, Some(&Direction::East)) => {
                v.pop();
                continue;
            },
            (_, _) => v.push(*i),
        };
    };
    
    v
}

fn test() {
  	use Direction::{self, *};

    let a = [North, South, South, East, West, North, West];
    assert_eq!(dir_reduc(&a), [West]);

    let a = [North, West, South, East];
    assert_eq!(dir_reduc(&a), [North, West, South, East]);
}

test()

()
↑ ちゃんと実行できた ✅

Discussion

コメントにはログインが必要です。