かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

重複したメールアドレスがあるかないかのチェックプログラム書いてみた

メールアドレスが改行くぎりで列挙されてるテキストから重複がないか確認しないといけなくなったので、どうせなのでF#で書いてみた。どうだろう?まだまだスマートに書けるかな・・・。

open System
open System.IO

let distinctCheck (stream : StreamReader) =
    // 分割して
    let addresses = stream.ReadToEnd().Split([|Environment.NewLine|], StringSplitOptions.RemoveEmptyEntries)
    // 重複排除して
    let distinctAddresses = addresses |> Seq.distinct |> Seq.toArray
    // 長さ比べ
    printfn(if addresses.Length = distinctAddresses.Length then "OK" else "NG")

using(new StreamReader("input.txt")) distinctCheck

因みに想定しているインプットはこんな感じです。

hogehoge@sample.com
mogemoge@sample.com
chomechome@sample.com

上記は重複がないのでOKと出る。以下のように重複があるとNGと出る。

hogehoge@sample.com
mogemoge@sample.com
hogehoge@sample.com

残念ながら、手持ちのファイルではNGと表示された・・・。これから何が重複してるか探すお仕事。