Re: [問題] 去除二維陣列內重複串列

看板Perl作者 (C語言)時間13年前 (2012/04/22 01:38), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
很有趣的問題,試著寫了一下,做法如下: #!/usr/bin/perl use strict; use warnings; my %rpt; my $key_len_pre = 0; my $key_len_cur = 0; my $output; /* 塞入資料進二維陣列 */ my $input = [ [ 'a', 'b', 'a' ], [ 'a', 'b', 'b' ], [ 'a', 'b', 'c' ], [ 'a', 'b', 'd' ], [ 'a', 'b', 'e' ], [ 'a', 'b', 'e' ], [ 'a', 'b', 'e' ], [ 'a', 'b', 'f' ], [ 'a', 'b', 'g' ], [ 'a', 'b', 'g' ], [ 'a', 'b', 'g' ], [ qw (1 234 567) ], [ qw (1 234 567) ], [ qw (12 34 567) ], ]; foreach (@$input) { /* 將每個2d陣列的字串轉成scalar值, 經過簡單的編碼 */ my $encode; $encode .= $_ . "^>^" for (@$_); /* 使用 hash 來區分是否重複 */ $key_len_pre = $key_len_cur; $rpt{$encode} += 1; $key_len_cur = keys %rpt; $output->[$key_len_pre] = $_ unless $key_len_pre eq $key_len_cur; } /* 輸出所有陣列驗證結果, output 即為未重複資料的陣列 */ foreach (@$output) { print "final: @$_ \n"; } 輸出: final: a b a final: a b b final: a b c final: a b d final: a b e final: a b f final: a b g final: 1 234 567 final: 12 34 567 ※ 引述《firegsh (~\cite{yaranaiga})》之銘言: : 就我所知一維陣列兩種解法 一是uniq 二是用hash : 但是現在我有一個二維陣列 : A[0]=('a','b','c') : ... : A[n]=('a','b','c') : 那麼我該怎麼做才能把A[n]這的串列拿掉?謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.161.58.211

04/24 01:17, , 1F
hmm,雖然自己解決了 還是感謝
04/24 01:17, 1F

04/24 01:18, , 2F
我的方法比較蠢,直接把資料弄成一個字串去uniq了
04/24 01:18, 2F
文章代碼(AID): #1Fal2RVI (Perl)
討論串 (同標題文章)
文章代碼(AID): #1Fal2RVI (Perl)