22. september 2003 - 19:19
Der er
26 kommentarer og 1 løsning
Arrays der overlapper samles til en
Jeg har en fil, der via et prg som jeg ikke har adgang til hele tiden får tilføjet linier forneden og fjernet foroven. Eksempel æble banan pære appelsin tomat agurk banan tomat agurk banan Lidt senere pære appelsin tomat agurk banan tomat agurk banan melon ært Således er æble fjernet, melon tilføjet, banan fjernet, ært tilføjet. Der er altid 10 i listen Jeg vil gerne hente listen ofte se hvilke nye der er kommet med siden sidst (altså ært og melon) Bemærk at ordene kan forekomme flere gange, og så skal de med igen. De 2 lister skal således koges sammen til 1: æble banan pære appelsin tomat agurk banan tomat agurk banan melon ært melon@array1= ('æble','banan','pære','appelsin','tomat','agurk','banan','tomat','agurk','banan'); @array2= ('pære','appelsin','tomat','agurk','banan','tomat','agurk','banan','melon','ært'); &makeonearrey; print @arrey3; er der en der kan lave sub makeonearrey så de virker som ønsket?
Annonceindlæg fra FPT Software
22. september 2003 - 19:53
#1
Der skal være 12 efter operationen. Er rækkefølgen ligegyldig?
22. september 2003 - 19:56
#2
ja
22. september 2003 - 20:04
#3
Øhm, der der jo kun disse forskellige - er det med vilje: ært banan æble appelsin pære melon tomat agurk
22. september 2003 - 20:09
#4
ok, jeg har læst dit spørgsmål.... Det er de samme værdier der går igen i array2 med et udefineret overlap. Kan man regne med at dine linier er unikke, så hvis appelsin=sppelsin så er der ikke andre linier med den værdi?
22. september 2003 - 21:47
#5
erikjacobsen>Ja de samme værdier går som regel igen, idet jeg forsøger at hente filen så tit at der er et overlap for ikke at misse noget. og nej desværre, du kan ikke regne med at samme ord ikke forekommer igen. jfr banan er med 2 gange i ovenstående eksempel.
22. september 2003 - 21:50
#6
Som nævnt tilføjes ord forneden og fjernes foroven, det handler således om et kontinuum. Det er en ueendelig kæde med ord, som sagtens kan forekomme flere gange, men jeg har kunnn adgang til de seneste 10, og udfra disse skal jeg forsøge at gendanne kæden.
22. september 2003 - 21:52
#7
Øe hizung, hvordan kan du svare på om rækkefølgen er ligegyldig? Jae, joe rækkefølgen er vel ligegyldig, bare alle ordene kommer med - eller alternativt antallet af forekomster talt
22. september 2003 - 21:53
#8
Det er da et spændende problem. Hvis det kan løses .... :) Hvad nu hvis de første linier er (skrevet på een linie): a a b b a a a b b a og de næste er b b a a a a a a a a Hvordan overlapper det så? Skal man i trivlstilfælde tage "fra neden" eller "fra oven" ?
22. september 2003 - 21:53
#9
Forstået således at antallet af banan er 3 og IKKE 5 i ovenstående
22. september 2003 - 21:58
#10
I tilfælde af at der er flere mulige overlap (det vil meget sjældent forekomme) skal den antage at den korrekte er den med mest overlap. I dit eksempel er der kun 1 løsning : a a b b a a a b b a a a a a a a a idet overlappet altid varer filen ud
22. september 2003 - 21:58
#11
det var ikke helt korrekt. Prøver igen: Hvad nu hvis de første linier er (skrevet på een linie): a a b b a a a b b a og de næste er b b a a a b b a a a
22. september 2003 - 21:59
#12
men et mere spændende eksempel er a b c d e f g h f g og f g h f g e b h d g Her er der nemlig 2 mulige løsninger
22. september 2003 - 22:00
#13
undskyld forkert
22. september 2003 - 22:01
#14
men et mere spændende eksempel er b c d e f g h f g h og f g h f g h b h d g Her er der nemlig 2 mulige løsninger
22. september 2003 - 22:02
#15
b c d e f g h f g h f g h b h d g eller b c d e f g h f g h b h d g her er den nederste "rigtig" for der er mest overlap
22. september 2003 - 22:03
#16
Og endelig: Hvis der slet ikke er overlap, skal de bare efter hinanden
22. september 2003 - 22:04
#17
Og hvis der er 100% overlap smides den nyeste væk
22. september 2003 - 22:05
#18
*g* Se nu ligner det noget.... Det tror jeg godt jeg kan lave. Jeg prøver lige.
22. september 2003 - 22:09
#19
I dit eksempel a a b b a a a b b a & b b a a a b b a a a er der 2 mulige løsninger: a a b b a a a b b a a a b b a a a a a b b a a a b b a a a Den sidste er den korrekte (længst overlap)
22. september 2003 - 22:10
#20
Jeg sidder iøvrigt og storsmiler, for jeg vidste allerede inden jeg postede denne at det ville "tænde" dig.
22. september 2003 - 22:36
#21
Det er jo svært at sige nej til sådan noget.... Jeg ved ikke om det er det mest elegante, men her er et forsøg du kan lege med: @array1= ('a','b','b','a','a','a','b','b','a','a'); @array2= ('b','b','a','a','a','b','b','a','a','a'); $found=0; $i=0; $j=0; while (!$found && $i<=$#array1) { $mismatch=0; $j=0; while (!$mismatch && $j<=$#array2 && $i+$j<=$#array1) { if ($array1[$i+$j] ne $array2[$j]) { $mismatch=1; } else { $j++; } } if ($mismatch) { $i++; } else { $found=1; } } @array3=@array1; if ($found) { for($j=0;$j<=$#array2;$j++) { $array3[$i+$j]=$array2[$j]; } } else { splice @array3,$#array3+1,0,@array2; } print join(",",@array3); print "\n";
22. september 2003 - 22:39
#22
Den nederste stump kan selvfølgelig være: @array3=@array1; if ($found) { splice @array3,$i,$#array3,@array2; } else { splice @array3,$#array3+1,0,@array2; }
22. september 2003 - 22:43
#23
Den ser rigtig god ud! Såvidt jeg kan se fungerer den efter hensigten!!!!!!!!!!!!! Jeg er en glad julegris!!!!!!!!!!!!!!! Se så at smide et svar, for du slipper ikke for at få point!
22. september 2003 - 22:47
#24
Jeg har testet den på en kravlegårsversion, imorgen får den sin rette plads, og du kommer med i min aftenbøn!
22. september 2003 - 22:48
#25
Du bør slette $j=0; i linie 5 - det ser grimt ud ;))
23. september 2003 - 23:00
#26
Grundet strømafbrydelsen blev det ikke idag at produktet blev født, men jeg glæder mig.
23. september 2003 - 23:02
#27
Lad høre hvis det virker. Perl er sjovest med strøm på. Så os jyder har det sjovere end jer sjællændere...
Kurser inden for grundlæggende programmering