[perl]配列を一意にするuniq関数、ネストされた配列をフラットにする関数を書いた


経緯

タイトルに上げている関数を自分なりに書いてみたので、載せてみようと思います。
というのもこういうアルゴリズムの課題って、日々意識して置かないと、いざ書いてみようと思うとなかなか書くことが出来ないですよねー。。普段はプログラミング言語に用意されていたら、それ用のモジュールがあったりするので、アルゴリズムを意識しなくても同様の動作する関数はどこかしらから拾ってこれるので。。。

そういうゆるゆるにならないためにも、ちょっとずつでもこういう簡単なアルゴリズムは身につけられるように、、言語の勉強も兼ねて書いていこうと思いましたー!!


概要

以下の2つを実装してみました。

  1. 配列を一意にするuniq関数
    重複のある配列から重複を取り除いた形式の配列にする。
    ( 1, 3, 4, 7, 4, 8, 1, 3 ) => ( 1, 3, 4, 7, 8 )
  2. ネストされた配列をフラットにする関数
    配列の中に配列というように、ネスト構造にある配列を一つの配列にすべての要素を含むようにする。
    perlはネスト配列は配列リファレンスでしか扱えないと思うので、以下のようにしました。
    [1, 3, [3, 0], 4] => [1, 3, 3, 0, 4]

実装

Test::Moreを使って書きました。subtestsでテストを構造化して、上記2つのパターンをテストしています。
uniq_**という関数がuniq関数で、 flatten関数がネスト配列をフラットにする処理です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です