Hallo felix_92,
nachdem Du das Thema unter Mathematik gestellt hast, hier ein Lösung in Perl, da mir an diesem Rechner kein Excel zur Verfügung steht.
Da @aiwendil das mit der Fakultät bereits aufgeźeigt hat, hier die Auflistung aller nicht doppelten Möglichkeiten.
Das Skript ist ein Teil eines Programmes, das zur Unterstützung eines Datenbankprogrammes gebraucht wurde. Daher ist es nicht ganz auf Deinen Bedarf optimiert, aber zumindest einigermaßen dokumentiert hoffe/meine ich.
Um die Prozedur zu starten, musst Du Perl installiert haben ( = Pflicht auf jedem Rechner ;)). Den Quelltext kannst Du via cut&pase in einen Editor laden und dann als z.B. permute.pl in Dein Programmverzeichnis speichern.
Du startest die Prozedur mit perl /pfad/zur/Quelldatei/permute.pl im Terminal bzw. der Eingabeaufforderung.
Ich hoffe es hilft Dir ein wenig weiter.
Gruß und schönes Restwochenende,
charly60
use strict;
use warnings;
use v5.14;
##################
# Variablen deklarieren
my $txt;
my $erg;
my $i = 0;
my $j = 0;
########################
Berechnung aller Möglichkeiten
$txt .= join("", @$_) for permute( [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘] );
while( $i < 15620){
my $v = substr($txt, $i, 1);
my $w = substr($txt, $i+1, 1);
my $x = substr($txt, $i+2, 1);
my $y = substr($txt, $i+3, 1);
my $z = substr($txt, $i+4, 1);
###################
# 'Doppelte' herausfiltern
if($v eq $w or $v eq $x or $v eq $y or $v eq $z or $w eq $x or $w eq $y or $w eq $z or $x eq $y or $x eq $z or $y eq $z ){
$i += 5;
next;
} else {
$erg .= substr($txt, $i, 5) . "\n";
}
$i += 5;
}
#################
Ergebnisse ausgeben
print $erg;
say "Anzahl aller Möglichkeiten bei 5 Stellen = " . length( $txt )/5;
say "Anzahl aller Möglichkeiten bei 5 Stellen ohne ‚Doppelte‘ = " . length( $erg )/6;
EOP
###############
Unterprogramme
sub permute {
my $last = pop @;
unless(@) {
return map([$], @$last);
}
return map {
my $left = $;
map([@$left, $], @$last)
}
permute(@);
}