Ответы пользователя по тегу Алгоритмы
  • Как сделать перебор всех возможных комбинаций из символов?

    Надеюсь на перле вам подойдет. Только недавно делала, правда он циферный..

    #! /usr/bin/perl 
    
    use strict;
    use warnings;
    use Fcntl;
    
    #my $num=5;
    #my @str=();
    
    
    sub nextShuffle($)
    {	my $shuffle=shift;
    	for(my $i=1; $i<@$shuffle; $i++)
    	{
    		if($shuffle->[$i]<$i)
    		{
    			$shuffle->[$i]++;
    			return $shuffle;
    		}
    		else
    		{
    			$shuffle->[$i]=0;
    		}
    	}
    	return;
    }
    
    sub nextPermutation($)
    {
    	my $p=shift;
    	my $i=$#$p-1;
    	$i-- while $i>=0 and $p->[$i]>$p->[$i+1];
    	if($i>=0)
    	{
    		my $j=$i+1;
    		$j++ while $j<$#$p and $p->[$j+1]>$p->[$i];
    		@$p[$i, $j]=@$p[$j, $i];
    		push @$p, reverse splice @$p, $i+1;
    		return $p;
    	}
    	return;
    }
    
    sub fact{
        my $n = shift;
        if ($n==0) {
            return 1;
        } else {
            return $n*fact($n-1);
        }
    }
    
    my $fileout = 'out.txt';
    open(my $fo, '>>:encoding(UTF-8)', $fileout)
    or die "Could not open file '$fileout' $!";
    
    my $n=shift;
    print $fo fact($n)."\n";
    die "$0: Нужно неотрицательное число!\n" unless defined($n) and $n>=0;
    
    for(my $p=[1..$n]; defined $p; $p=nextPermutation($p))
    {
    	print $fo "@$p\n";
    }
    #for (my $i=1; $i<$num; $i++){
    #	$str[$i]=$i;
    #}
    Ответ написан
    Комментировать