2024-06-29 00:28:56 发布
网友
我正在做一道数学题,我需要测试数字和数学运算的不同组合(+,-,*,/)。我可以用Perl或Python创建一个算术运算数组,以便循环使用这些组合吗?在
示例: (下划线表示某些操作,字母是整数的变量)
一个,一个,一个
可能是
A+B+C+D 或 A*B+C-D 或 付款交单 等。。。在
我需要测试是否能够测试所有这些组合中的整数值,而无需手动创建每个表达式(我相信上面的示例有256种可能的组合)。在
谢谢
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),或{}。这很重要吗?在
(A + B) / (C - D)
编辑:
在Python中
您的问题似乎没有考虑操作顺序,即您不会得到}。这很重要吗?在
(A + B) / (C - D)
,或{编辑:
^{pr2}$相关问题 更多 >
编程相关推荐