パーポーフルート公式ブログ
【アルゴリズム】perlで直積 cross product with perl

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
目次

pythonなら

pythonなら

[ x+y+str(z) for x in ["+","-"]
             for y in ["A", "B", "C"]
             for z in range(0,2)]

内包表記、便利ですね。

参考

直積の導出と考えうる全ての値を網羅したハッシュの生成


2008/09/30
テーマ: アルゴリズム / 2008 / すべて