gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:02:25 25 4
gpt4 key购买 nike

给定一个字符串,例如“rogerdavis”,它应该将其转换为“rogerd@vis”或“rogerdav!s”或“rogerdavi$”或“rogerd@v!$”以及所有可能的组合并将其附加到文件。所以基本上必须将 'a' 转换为 '@','s' 转换为 '$','i' 转换为 '!'并使用所有可能的组合。这将在 Perl 中完成。

伪代码

  • 创建一个新文件
  • 计算a、A、s、S、i、I(或我们只能接受小写或大写的关键字以简化开关盒)
  • 计算我们可以拥有的可能性总数使用组合公式 对于可能性的总数,我们执行替换字符 a ->@s->$ 的工作,i->我
  • 向文件添加唯一条目

这是我首先想到的。请帮助我,因为我知道必须有一种简单易行的方法来完成这件事:

  1. 接受数组中的关键字keyword[ ]
  2. 计算 length_of_keyword 中数组的长度
  3. 从左到右扫描数组关键字[ ] 计数=0; 对于(i=0;我 }
  4. 使用 count 计算可能性总数

    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 >'
<小时/>

输出

rogerdavis
rogerdavi$
rogerdav!s
rogerdav!$
rogerd@vis
rogerd@vi$
rogerd@v!s
rogerd@v!$

关于perl - 使用 Perl 获取所有可能的字符串组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com