加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Perl获取所有可能的字符串组合

发布时间:2020-12-15 23:26:44 所属栏目:大数据 来源:网络整理
导读:给定一个字符串例如’rogerdavis’它应该将它转换为’rogerd @ vis’或’rogerdav!s’或’rogerdavi $’或’rogerd @ v!$’以及所有可能的组合并将其附加到文件中.所以基本上必须将’a’转换为’@’,将’s’转换为’$’,将’i’转换为’
给定一个字符串例如’rogerdavis’它应该将它转换为’rogerd @ vis’或’rogerdav!s’或’rogerdavi $’或’rogerd @ v!$’以及所有可能的组合并将其附加到文件中.所以基本上必须将’a’转换为’@’,将’s’转换为’$’,将’i’转换为’!’并使用所有可能的组合.这是在Perl中完成的.

伪代码

>创建一个新文件
>计算a,A,s,S,i,I(或者)的出现次数
我们只接受小字或大写字母的关键字来简化
开关盒)
>计算我们可以拥有的总体可能性
使用组合公式我们可能的总数
执行替换角色a – > @,s-> $的工作,
异>一世
>为文件添加唯一条目

这是我最初想到的.请帮助我,因为我知道必须有一个简单而简单的方法来做这件事:

>在数组关键字[]中接受关键字
>在length_of_keyword中计算数组的长度
>从左到右扫描数组关键字[]
????count = 0;
????for(i = 0; i
????}
>使用计数来计算可能性的总数

total_poss =0;
r= 1;
new_count = count
for (i = count; i > 0; i--)
{
    // fact( ) will calculate factorial
    total_poss += fact(new_count)/(fact(r)*fact(new_count - r))  
    r++;
 }

for (k=0; k<total_poss; total_poss++)
   copy array keyword[ ] in temporary array temp[ ];
   for (i=0; i< new_count; i++)
   {

       for (j = 0; j< lenght_of_keyword; j++)
       {
           if (temp[i] is equal to 'a' || 'A' || 's' || 'S' || 'i' || 'I' )
           {
               switch (temp[j])

                   case i: tempt[i] = ! ;
                              if ( modified array is equal to an entry in file)
                                  continue;
                              else save in file; break;
                   case I: (same as above or we can have function for above code)
                 .
                 .// similarly for all cases
                 .
        }
    }
}

解决方法

我想给 List::Gen一个旋转.这个问题提供了完美的借口!

use strict;
use warnings;
use List::Gen;

my %symbol = ( a => '@',A => '@',i => '!',I => '!',s => '$',S => '$',);  # Symbol table

my $string = 'rogerdavis';
my @chunks = split /(?<=[ais])|(?=[ais])/i,$string;

# Turn into arrayrefs for cartesian function

@chunks = map { $_ =~ /^[ais]$/i ? [ $_,$symbol{$_} ] : [ $_ ] } @chunks;

my $cartesian = cartesian { join '',@_ } @chunks;  # returns a generator

say for @$cartesian;  # or 'say while < $cartesian >'

产量

06001

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读