Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
engel.benjamin •->

Anmeldedatum: 08.05.2006 Beiträge: 10
|
Verfasst am: 06.07.2006 - 17:09 Titel: Buchstaben generator oder so.... |
|
|
Also mal ne frage wie bekomm ich aus 18 Buchstaben alle möglichen kombinationen die jeweils 6 Zeichen Lang sind raus, wobei die Buchstaben variabel sein müssen..
wäre echt cool wenn da jemand ne Idee hätte wie mann das in nem Script umsetzen könnte...
Muss auch nicht unbedingt Applescript sein wenns andererster schneller geht.
mfg
benny |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 07.07.2006 - 01:52 Titel: |
|
|
Das hier liefert Dir alle Permutationen. Also nicht nur die ersten 6 Stellen. Müßte ich noch mal ein bischen aufbohren. Ist eine alte Lösung zum Perl Minigolf Permutationen
Gib in einem Terminalfenster ein (ACHTUNG! Nur eine Zeile! Kein Return mittendrin):
Code: | perl -e 'sub p{@p=(p(@_,pop@p),@p)for@p;$p{join"",@_}=$/if!@p;pop}@p=@ARGV;p;print%p'
|
Und schreibe dahinter die Buchstaben. Also z.B.
Code: | perl -e 'sub p{@p=(p(@_,pop@p),@p)for@p;$p{join"",@_}=$/if!@p;pop}@p=@ARGV;p;print%p' A B C D
BCAD
BDCA
CBDA
DCAB
ABCD
BADC
ACDB
ABDC
DABC
BACD
CDBA
ACBD
CABD
BCDA
ADBC
CDAB
BDAC
DBAC
DCBA
ADCB
CBAD
DACB
CADB
DBCA
|
|
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 07.07.2006 - 10:33 Titel: Aufgebohrt... |
|
|
Jetzt habe ich es aufgebohrt!
Code: | perl -e 'sub p{if($l--){@p=(p(@_,pop@p),@p)for@p};$p{join"",@_}=$/if!$l++;pop}($l,@p)=@ARGV;p;print%p' 3 a b c d |
Du gibst also zuerst die Anzahl der Stellen (hier 3) und dann die einzelnen Zeichen an. |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 07.07.2006 - 10:41 Titel: P.S. NEIN! |
|
|
NEIN! Das ist nicht der Standard Perl Programme zu schreiben! Dies ist mein Lösungsvorschlag für eine Perl Minigolf Runde gewesen. Dabei kommt es darauf an, eine Aufgaba mit so wenig Zeichen wie möglich zu lösen.
Ihr müßt aber bedenken:
1. Ich bin 'ne faule Sau
2. Die Lösung war schon da
3. Es hilft dem Engelchen oder auch nicht
3a) Wenn er nur das ERgebnis will, hilft es
3b) Wenn es eine Hausaufgabe war, hilft es nicht, denke ich. Versuch das Script mal einem Lehrer zu erklären!!
Nix für ungut, Engelchen, aber es hat Spaß gemacht, mal wieder ein alter Perlgolf Script auszugraben... |
|
Nach oben |
|
 |
engel.benjamin •->

Anmeldedatum: 08.05.2006 Beiträge: 10
|
Verfasst am: 10.07.2006 - 07:58 Titel: Danke |
|
|
Hi danke, das funktioniert super, allerdings dauerts auch en bißchen (4 Stunden auf nem G5 Dual *grins*), danke....
mfg
Benny |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 10.07.2006 - 09:03 Titel: Re: Danke |
|
|
engel.benjamin hat Folgendes geschrieben: | Hi danke, das funktioniert super, allerdings dauerts auch en bißchen (4 Stunden auf nem G5 Dual *grins*), danke... |
Bitteschön... Aber da war doch noch ein Fehler drin!
Da fehlte ein ++$l. So wurde dir doch ein Zeichen zuwenig ausgegeben, oder?
Korrigiert:
Code: | perl -e 'sub p{if($l--){@p=(p(@_,pop@p),@p)for@p};$p{join"",@_}=$/if!$l++;pop}($l,@p)=@ARGV;++$l;p;print%p' 3 a b c d |
Aber probier mal, ob das hier schneller ist. Es speichert die Daten nicht zwischen, sondern gibt sie direkt aus:
Code: | perl -e 'sub p{if($l--){@p=(p(@_,pop@p),@p)for@p};print@_,$/if!$l++;pop}($l,@p)=@ARGV;++$l;p' |
|
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 10.07.2006 - 10:50 Titel: |
|
|
Es läuft schneller!
Code: | time perl -e 'sub p{if($l--){@p=(p(@_,pop@p),@p)for@p};print@_,$/if!$l++;pop}($l,@p)=@ARGV;++$l;p' 6 a b c d e f g h i j k l m n o p q r > /dev/null
real 89m54.716s
user 65m57.717s
sys 0m43.911s
|
Rechner:
1,67 GHz PowerPC G4
1,5GB DDR2 SDRAM |
|
Nach oben |
|
 |
|