Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 20 jun 2013, 10:16



Svara på tråd  [ 5 inlägg ] 
 Permutationer 
Författare Meddelande

Blev medlem: 08 mar 2010, 00:21
Inlägg: 12
OS: Ubuntu
Inlägg Permutationer
Hej,

Jag skulle vilja få ett förslag på lösning till följande problem.

Jag har en fil med ord eller strängar. Det kan se ut så här:

    hej
    som
    A
    56
…n-stycken
I detta fall är n=4

Jag önskar göra ett script/program (t ex i awk, bash, perl, pyton etc.) som genererar följande utifrån ovan nämnda fil:

hej
som
A
56
hejsom
hejA
hej56
somhej
somA
som56

hejsomA
hejsom56

hejsomA56
hejsom56A
hejAsom56
hejA56som
...
56Asomhej


Vet inte om permutationer är den korrekta bedömningen då man inte använder samtliga n-stycken vid varje tillfälle.
Kombinationer?

Hur som helst, så fattar ni säkert. Att pipe:a till sort -u efter körning för att eliminera dubletter är fullt tillåtet, bara det blir löst.
Jag är också fullkomligt medveten om att det snabbt blir ohyggligt många kombinationer/permutationer.

Hasse


08 maj 2012, 21:03
Profil
Serveradmin
Användarvisningsbild

Blev medlem: 31 dec 2007, 00:19
Inlägg: 2919
Ort: Linköping
OS: Ubuntu
Utgåva: 13.04 Raring Ringtail
Inlägg Re: Permutationer
Åhh, en skoluppgift? :)

Vad har du för idéer själv? Vad har du prövat? Något särskilt du inte får till?


08 maj 2012, 22:18
Profil WWW

Blev medlem: 08 mar 2010, 00:21
Inlägg: 12
OS: Ubuntu
Inlägg Re: Permutationer
Ja vi säger att det är en skoluppgift, det blir bra.

Har inte gett mig på det än, men får väl göra ett försök vid tillfälle.

Har fått hjälp tidigare av duktigt folk här, så jag tänkte att någon kanske sitter på en one-liner som löser det hela.

/ H


08 maj 2012, 23:01
Profil

Blev medlem: 15 dec 2007, 03:20
Inlägg: 1268
OS: Xubuntu
Inlägg Re: Permutationer
hanssolo skrev:
tänkte att någon kanske sitter på en one-liner som löser det hela.

Nej, men jag har ett par one-liners som inte löser ditt problem:

shuf - generate random permutations

Skapa en textfil med följande innehåll och spara som ord.txt
Kod:
flygande
bäckasiner
söka
hwila

Sedan, detta kommando upprepade gånger
Kod:
shuf ord.txt

Min första körning
Kod:
 ~$ shuf ord.txt
hwila
söka
flygande
bäckasiner


Bash Brace Expansion

I bash expanderas "orden" {a,b,c,d} och {1..9} till flera "ord". Det första ger 4 stycken "ord" och det andra 9. Sätter man flera {} i samma "ord" bildas kombinationer. {a,b,c,d}{0..9} ger 4*9=36 stycken "ord". "\" framför mellanslag i följande kommando gör att alla {} ingår i samma "ord", som därmed skapar 2*2*2=8 nya "ord" (där varje "ord" ser ut att bestå av 3 vanliga ord):
Kod:
echo {Yes,No}\ {we,you}\ {can,can\'t}\!


09 maj 2012, 15:14
Profil

Blev medlem: 11 dec 2006, 21:09
Inlägg: 232
Ort: Sweden
OS: Ubuntu
Utgåva: 7.04 Feisty
Inlägg Re: Permutationer
Intressant problem faktiskt. Jag kommer inte på några one-liners dock. Om du ska få lite fart på det så skulle jag föreslå awk, men jag kan för lite sådant för att komma på något vettigt sätt att skriva det på. Jag gjorde en lösning i python, men det blev en 20-liner :-) Jag undrar vad du kom på för lösning, skulle vara intressant att se den...

(Davids brace expansion verkar mycket smidig, men jag har dålig erfarenhet från att arbeta med variabler som utgör delar av argument i bash)


26 maj 2012, 15:53
Profil WWW
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 5 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011