空の配列が空の配列か確認する方法は?
次のHokkaido.pm Casualのネタに良いなーって思って見てたんだけど、
テストを通すだけなら、こんな感じだと思います。
perlの複数の配列をこんな風に並び替えたいんです – 鈍足ランナーのIT日記
http://dokechin.hatenablog.com/entry/2014/03/07/213446
package Sort {
use strict;
use warnings;
sub sort {
my @sorted;
my $total = 0;
for my $item(@_){
$total = $total + scalar(@$item);
}
until( $total == scalar @sorted){
foreach (@_) {
if (my $hit = shift (@$_)){
push @sorted , $hit;
}
}
}
return @sorted;
}
}
use Test::More;
use Sort;
my $aaa = [1,3];
my $bbb = [1,3];
my $ccc = [1,3,5];
my $ddd = [1,3,4,8];
my @expected = ( 1,1,1,1,3,3,3,3,5,4,8);
is(Sort::sort ($aaa,$bbb,$ccc,$ddd), @expected, "sort 4 list");
my @got = Sort::sort ([],[]);
is_deeply( \@got, [], "sort 2 list empty");
done_testing;
追記 2014/03/11
配列を期待する書き方って意味では、これでも良さそう。
余計な代入もなくなって、こっちの方が良いですね。
package Sort {
use strict;
use warnings;
sub sort {
my @sorted;
my $total = 0;
for my $item(@_){
$total = $total + scalar(@$item);
}
until( $total == scalar @sorted){
foreach (@_) {
if (my $hit = shift (@$_)){
push @sorted , $hit;
}
}
}
return @sorted;
}
}
use Test::More;
use Sort;
my $aaa = [1,3];
my $bbb = [1,3];
my $ccc = [1,3,5];
my $ddd = [1,3,4,8];
my @expected = ( 1,1,1,1,3,3,3,3,5,4,8);
is(Sort::sort ($aaa,$bbb,$ccc,$ddd), @expected, "sort 4 list");
is_deeply( [Sort::sort ([],[])], [], "sort 2 list empty");
done_testing;
他にも良い方法があれば、ネタ元へどうぞ。
おしまい。
Leave a Comment