2008/09/30
テーマ: アルゴリズム / 2008 / すべて
ほかのモジュールを使わずに直積を書いてみました。
sub cross_product
{
my $r = [[]];
$r = [ map{ my $t=$_; map{ [$t, @$_] } @$r } @$_ ]
for reverse @_;
$r;
}
$result = cross_product(["+", "-"], ["A".."C"], [0..2]);
print join "
", map { join "", @$_ } @$result;
実行結果
+A0
+A1
+A2
+B0
+B1
+B2
+C0
+C1
+C2
-A0
-A1
-A2
-B0
-B1
-B2
-C0
-C1
-C2
[ x+y+str(z) for x in ["+","-"]
for y in ["A", "B", "C"]
for z in range(0,2)]
内包表記、便利ですね。
参考
2008/09/30
テーマ: アルゴリズム / 2008 / すべて