大佬教程收集整理的这篇文章主要介绍了perl – 从哈希值生成组合,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何生成所有组合的数组,例如
--level 10 --threads 8 --tic 0 --level 10 --threads 8 --tic 1 --level 10 --threads 8 --tic 2 --level 10 --threads 16 --tic 0 --level 10 --threads 16 --tic 1 --level 10 --threads 16 --tic 2 --level 20 --threads 8 --tic 0 --level 20 --threads 8 --tic 1 --level 20 --threads 8 --tic 2 --level 20 --threads 16 --tic 0 --level 20 --threads 16 --tic 1 --level 20 --threads 16 --tic 2
可以有任意数量的哈希条目,每个条目的值数组中可以包含任意数量的元素.输出数组的顺序无关紧要,每个组合只需要1个元素,在这种情况下3 * 2 * 2 = 12,但可以是任意数字.
我认为拼接,地图和foreach的某些组合应该可以工作,但我正在以一种糟糕的方式找到它.
use Strict; use warnings; sub getCartesian { # my @input = @_; my @ret = map [$_],@{ shift @input }; for my $a2 (@input) { @ret = map { my $v = $_; map [@$v,$_],@$a2; } @ret; } return @ret; } my %ranges = ( '--tic' => [ 0,20 ] ); my @arr = map { my $k = $_; [ map "$k $_",@{$ranges{$k}} ]; } keys %ranges; print "@$_\n" for getCartesian(@arr);
产量
--level 10 --tic 0 --threads 8 --level 10 --tic 0 --threads 16 --level 10 --tic 1 --threads 8 --level 10 --tic 1 --threads 16 --level 10 --tic 2 --threads 8 --level 10 --tic 2 --threads 16 --level 20 --tic 0 --threads 8 --level 20 --tic 0 --threads 16 --level 20 --tic 1 --threads 8 --level 20 --tic 1 --threads 16 --level 20 --tic 2 --threads 8 --level 20 --tic 2 --threads 16
以上是大佬教程为你收集整理的perl – 从哈希值生成组合全部内容,希望文章能够帮你解决perl – 从哈希值生成组合所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。