P06 - 判断一个列表是否为回文。
作者:Aaron Sherman
源代码: P06-ajs.pl
use v6;
sub palindromic(@list) {
return True if @list < 2;
my $start = 0;
my $end = @list.end;
my $mid_start = floor(@list / 2 - 1);
my $mid_end = ceiling(@list / 2);
@list[$start .. $mid_start] ~~ @list[$mid_end .. $end].reverse.list;
}
my @examples = [
[[< a b c d E >], False],
[[< a b c b a >], True],
[[< a b b E >], False],
[[< E b b a>], False],
[[< a b b a >], True],
[[< a >], True],
[[< a a >], True],
[[< E a >], False] ];
for @examples -> ($list, $result) {
my $is-result = $result ?? "" !! "not ";
if palindromic($list) != $result {
die "{$list.perl} was expected {$is-result}to be a palindrome, but isn't";
}
else {
say $list ~ " is {$is-result}a palindrome";
}
}
Perl 6 示例