Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7578[/thread]

foreach mit großen und kleinen Chars



<< >> 6 Einträge, 1 Seite
Gast Gast
 2005-12-27 13:05
#61383 #61383
Hallo,

folgendes Problem:

Ich würde mir gerne sämtliche Zeichenkombinationen von z.B.
aaaa-ZZZZ ausgeben lassen. Hierzu habe ich folgende Möglichkeit in Perl gefunden:

Code: (dl )
$ perl -e 'foreach (aaaa..ZZZZ) { print $_,"\n";}'


Allerdings funktioniert das immer nur entweder mit Großbuchstaben
(AAAA-ZZZZ), oder mit kleinen (aaaa-zzzz).

Ich hätte es aber gerne gemischt. Wie kann ich das machen? Geht das überhaupt?

Gruß initrc
esskar
 2005-12-27 14:23
#61384 #61384
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
perl -e 'foreach (aaaa...zzzz,AAAA..ZZZZ) { print $_,"\n";}'
initrc
 2005-12-27 15:41
#61385 #61385
User since
2005-12-27
1 Artikel
BenutzerIn
[default_avatar]
Erstmal vielen Dank.

Aber leider ist das nicht das, was ich suche. Nochmal zu Verdeutlichung:

Es soll so angefangen werden:

aaaa dann geht bis zzzz
Das nächste was kommt sollte nun sein:
Aaaa bis Zzzz dann
AAaa bis ZZzz

so dass ich mir alle Möglichkeiten der Kombination von vier Groß- und Kleinbuchstaben ausgeben lassen kann.

Gruß initrc
renee
 2005-12-27 16:54
#61386 #61386
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich wuerde hier zu einem Modul raten, und zwar zu CPAN:Math::Combinatorics...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
use Math::Combinatorics;

my @n = (a..z,A..Z);
my $combinat = Math::Combinatorics->new(count => 4,
data => [@n],
);

while(my @combo = $combinat->next_combination){
print join(' ', @combo)."\n";
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pKai
 2005-12-28 00:47
#61387 #61387
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
my $set = '{' . join(',','a'..'z','A'..'Z') . '}';
for my $elem (glob($set x 4)) { print $elem,$/; }

Allerdings baut glob dummerweise die komplette Liste zuerst im Speicher auf, was bei 7311616 Elementen, wie hier, doch "etwas" dauern kann.
I sense a soul in search of answers.
pKai
 2005-12-29 20:11
#61388 #61388
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Hm, irgendwie hab ich so meine Schwierigkeiten mit Math::Combinatorics.
Die Bedeutung der count- und frequency-Parameter wird mir nicht so ganz klar.
Den Autoren evtl. auch nicht so ganz!? Da gibt es nämlich in der Doku ein Beipiel, das folgendes berechnen soll:
Quote
"Morse signals: diferent signals of 3 positions using the two symbols - and ."

Wenn ich richtig lese, also alle 3-Zeichen-langen Morsezeichen. [s]In der im Bsp. berechneten Folge fehlen dann aber die Zeichen für "s" (...) und "o" (---).[/s](siehe unten *)

Und auch renee ist in seinem Post auf dem Holzweg, da sein Code keineswegs die vom OP gewünschten Zeichenfolgen generiert, da nämlich "next_combination" Teilmengen (also kein Zeichen aus data darf im Ergebnis wiederholt vorkommen) durchläuft.
[me=pKai] is confused[/me]

Was es alternativ noch gäbe wäre CPAN:Algorithm::Combinatorics. Dort heißt das entsprechende Konstrukt: "variations_with_repetition"

Edit:(*) Keine Ahnung, was ich da damals falsch gemacht habe, jedenfalls habe ich es gerade im anderen Zusammenhang wieder mal probiert und siehe da, es funktioniert.
Geschieht mir selbst recht, dass ich keine Code poste. Dann könnte ich wenigsten nachvollziehen, was ich damals falsch gemacht habe.
Anscheinend hat sich aber keiner die Mühe gemacht meine Aussage zu überprüfen... ;)\n\n

<!--EDIT|pKai|1136585283-->
I sense a soul in search of answers.
<< >> 6 Einträge, 1 Seite



View all threads created 2005-12-27 13:05.