作者: 閑舎
日時: 2002/5/12(17:58)
 再帰を使わないで、また割り算する前のやり方を少し代えた版(かなり汚いけ
れど作った以上出します)。

--------^ ticket2.pl ( date:02-05-12 time:17:53 ) ----------< cut here
$num = "8 4 2 1";
@op = qw(+ - * /);
$target = 10;
$opn = $num =~ s/\s+/ /g;
$BASE = @op;
for ($i = 0; $i < $BASE**$opn; $i++) {
  for ($j = $BASE**($opn - 1), $m = $i, $exp = $num; $j >= 1; $j /= $BASE) {
    $k = int($m / $j) % $BASE;
    $exp =~ s/ /$op[$k]/;
    $m %= $j;
  }
  printf("$exp=%d\n", eval($exp)) if (eval($exp) == $target);
}
--------$ ticket2.pl ( lines:13 ) --------------------------< cut here

--
本田博通(閑舎)
Hiromichi Honda <raku@...>