ここから本文です

2つの配列の重複を削除する際、配列の順番を並べ替える方法 お世話になってお...

ode********さん

2015/5/820:06:03

2つの配列の重複を削除する際、配列の順番を並べ替える方法

お世話になっております。
プログラミングの際の配列操作についてご助言いただければ幸いです。

以下のような2つの配列があり、重複を除いたユニークな配列を作るとします。

@Array1 =("郵便番号", "住所", "電話番号", "FAX", "備考");
@Array2 =("郵便番号", "住所", "住所追加欄", "電話番号", "電話番号2", "FAX");

シンプルに、@Array1、@Array2の順で全要素へアクセスし、ユニークな値を新配列に追加していくと、
@Array3 =("郵便番号", "住所", "電話番号", "FAX", "備考", "電話番号2", "住所追加欄");
となってしまいますが、これを、それぞれの並び順を考慮し、
@Array3 = ("郵便番号", "住所", "住所追加欄", "電話番号", "電話番号2", "FAX", "備考");
とすることを希望しております。

このような配列操作をするには、どのようなアルゴリズムで行えば実現できるのでしょうか?
上記はPerlで書いてありますが、Perl以外でも汎用的なアルゴリズムであれば、教えていただければ幸いです。(Perlであれば言語固有の特殊機能でも助かります。)

何卒、よろしくお願いいたします。

閲覧数:
82
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

lon********さん

2015/5/904:41:59

> それぞれの並び順を考慮し、
と、「考慮」の一言で簡単におっしゃいますが、
どう「考慮」するのかを考えるのが大変で、
それが決まれば自ずと(最低限の)アルゴリズムが
出来上がると思います。

例えば、極端な例で言えば、
@Array1 =("郵便番号", "住所", "電話番号", "FAX", "備考");
@Array2 =("電話番号", "備考", "住所", "FAX", "郵便番号");
のように同じ項目がシャッフルされていた場合どうしますか?

そんなひねくれたことはしないとしても、
@Array1 =("郵便番号", "住所", "電話番号", "FAX", "備考");
@Array2 =("郵便番号", "住所", "電話番号", "メールアドレス", "備考");
のような場合は、「FAX」「メールアドレス」どちらを先にしますか?

などなど、考えないといけないことは沢山あると思います。
なので、その辺り少し考えてみてください。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2015/5/15 00:43:12

lonelywolf_67、foobar7979さん
問題点を明確にしていただき、参考になりました。
ご助言ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

foo********さん

2015/5/904:57:47

lonelywolf_67さん もおっしゃってることですが。
・最終結果の並び順をどうしたいのか?
によって、解は大きく変わるでしょう。

順序はどうでもいい、最終的に重複なしユニークに
なっていさえすればいい

なのか、

いや、入力の並びをなるべく尊重して...

なのか。

後者だとしたら、入力は2つあるわけで、
1個ずつ見比べていくにしても、
・どっちから入れんの?
で並び順は変わる。

そのへんのことが、書いてないですよね?
重複なしユニークになりさえすればいいのでしょうか?

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる