ある状態を配列で持つことにして、ある状態と別のある状態を比較し、消えた要素と現れた要素を知りたい(ただしどのインデックスの要素が消えたりしたのかは気にしない)という状況を想定。各配列は重複する要素を持たないものとする。 Ruby の配列は集合のように扱うことができることを活用すると、単純にこんな感じで書ける。 def array_diff(older, newer) # 引数はどっちも配列 removed = older - newer # 配列 older から配列 newer に存在する要素を除去 added = newer - older # 配列 newer から配列 older に存在する要素を除去 return removed, added # 消えた要素からなる配列と現れた要素からなる配列を返す end p array_diff(["a", "b", "c", "d", "e