算术运算符数组

2024-06-29 00:28:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一道数学题,我需要测试数字和数学运算的不同组合(+,-,*,/)。我可以用Perl或Python创建一个算术运算数组,以便循环使用这些组合吗?在

示例: (下划线表示某些操作,字母是整数的变量)

一个,一个,一个

可能是

A+B+C+D 或 A*B+C-D 或 付款交单 等。。。在

我需要测试是否能够测试所有这些组合中的整数值,而无需手动创建每个表达式(我相信上面的示例有256种可能的组合)。在

谢谢


Tags: 示例表达式字母数字数学整数算术数组
2条回答
use Algorithm::Loops qw( NextPermute );

my %OPS = (
   '+' => sub { $_[0] + $_[1] },
   '-' => sub { $_[0] - $_[1] },
   '*' => sub { $_[0] * $_[1] },
   '/' => sub { $_[0] / $_[1] },
);

my @OPS = keys(@OPS);

sub evaluate {
   my ($vals, $ops) = @_;

   $vals = [ @$vals ];

   my $acc = shift(@$vals);{
   for my $op (@$ops) {
      $acc = $OPS{$op}->($acc, shift(@$vals));
   }

   return $acc;
}

my @vals = ...;

my @indexes = 0..$#ops;
do {
   my @ops = map $OPS[$_], @indexes;
   my $rv = evaluate(\@vals, \@ops);
   ...
} while (NextPermute(@indexes));

在Python中

import operator

ops = [operator.add, operator.sub, operator.mul, operator.div]

您的问题似乎没有考虑操作顺序,即您不会得到(A + B) / (C - D),或{}。这很重要吗?在

编辑:

^{pr2}$

相关问题 更多 >