Schrift
[thread]11125[/thread]

daten verschieben/vergleichen

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
bmxy
 2008-01-10 20:38
#104576 #104576
User since
2008-01-10
7 Artikel
BenutzerIn
[default_avatar]
i,

hab ein problem, hoff ihr könnt mir weiterhelfen.


Also hab in einer datei eine folge von zahlen. Diese zahlen wiederholen sich ständig. Beispiel:

1 1 1 1 0 0 0 5 1 1 1 1 0 0 0 5 1 1 1 1 0 0 0 5 1 1 1 1 0 0 0 5 ......

in einer anderen datei hab ivh wieder eine folge von zahlen. Dies sind (fast immer) identisch mit denen in der 1ten datei, aber jedoch verschoben Beispiel:

1 1 1 0 0 0 5 1 1 1 1 0 0 0 5 1 1 1 1 0 0 0 5 1 1 1 1 0 0 0 5 1


nun möchte ich herrausfinden um wieviele stellen die zwei zahlenfolgen verschoben sind. Ziel ist es dass ich die beiden gleich anfangen also hier 1 1 1 1 0 0 0 5 ....


wie kann ich des am besten machen? Mit regulären ausdrücke? In array einlesen und dann funktionen benutzen (welche??)?


Wäre für hilfe dankbar.


Mit freundlichen Grüßen

bmxy

p.s
hab grad vorher als gast versucht was zu schreiben, hat aber anscheinend nicht funktioniert (ist mitlerweile 1 1/2 h her). falls doch könnt ihr meine gast frage gerne löschen. danke
pq
 2008-01-10 21:52
#104582 #104582
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
bmxy+2008-01-10 19:38:11--
p.s
hab grad vorher als gast versucht was zu schreiben, hat aber anscheinend nicht funktioniert

doch, hat es, aber (wie auch auf der bestätigungsseite stand) gast-threads müssen erst
freigegeben werden (spam-vermeidung).
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bmxy
 2008-01-10 21:58
#104584 #104584
User since
2008-01-10
7 Artikel
BenutzerIn
[default_avatar]
Quote
doch, hat es, aber (wie auch auf der bestätigungsseite stand) gast-threads müssen erst
freigegeben werden (spam-vermeidung).

sorry dachte da ist was schiefgegangen da es so lange gedauert hat.

aber wegen meinem problem, hat jemand ne idee/ einen vorschlag.
styx-cc
 2008-01-10 22:00
#104585 #104585
User since
2006-05-20
533 Artikel
BenutzerIn

user image
das ganze ist einfach nur um eins nach links verschoben!?
Pörl.
bmxy
 2008-01-10 22:10
#104590 #104590
User since
2008-01-10
7 Artikel
BenutzerIn
[default_avatar]
ja in dem fall schon. kann aber auch sein dass es um mehr als 1 oder sogar garnicht verschoben ist. man muss also erst rausbekommen um wieviel es vorschoben ist.
pq
 2008-01-10 22:13
#104591 #104591
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
zum problem: es wäre noch nützlich zu wissen, ob denn das ende schon gleich ist oder nicht,
und ob du weisst, in welche richtung es verschoben ist.
wenn z.b. der 2. string kürzer ist, könntest du ihn einfach auf den ersten matchen lassen
Code (perl): (dl )
1
2
3
if ($x =~ m/$y/) {
    print $-[0]; # position des treffers
}
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bmxy
 2008-01-10 22:24
#104594 #104594
User since
2008-01-10
7 Artikel
BenutzerIn
[default_avatar]
Quote
ob denn das ende schon gleich ist

nein dass weiß ich leider nicht.

Quote
und ob du weisst, in welche richtung es verschoben ist.

er wird immer so verschoben wie im beispiel. also nur in diese richtung.


die 1te datenreihe ist besteht eigentlich nur aus einem muster in dem fall nur aus 1 1 1 1 0 0 0 5
der 2 besteht auch aus diesem teilstück dass mehrmals hintereinander kommt und verschoben sein kann
renee
 2008-01-11 15:01
#104620 #104620
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn es ja immer nur vorne Elemente fehlen, ist es doch relativ einfach:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @array = qw(1 1 1 0 0 0 5 );
my @check = qw(1 1 1 1 0 0 0 5);

print Dumper \@check,\@array;

my $kuerzer = $#check - $#array;
print "\@array ist um $kuerzer Element(e) kuerzer\n";
unshift @array, @check[0..($kuerzer-1)];

print Dumper \@check,\@array;
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/
betterworld
 2008-01-11 19:42
#104630 #104630
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Hmm, renees Lösung setzt nun aber voraus, dass das Ende gleich ist, und bmxy sagte, dass man das nicht voraussetzen kann, oder verstehe ich das falsch?

Sind denn beide Dateien gleich lang? Wenn ja, müssten ja die Elemente, die bei der einen Datei vorne fehlen, bei der zweiten dann hinten fehlen.

Oder sind beide Dateien komplett unterschiedlich lang?

In den beiden Fällen wird es wohl erst mal das Problem sein, die Periodenlänge überhaupt herauszufinden.
renee
 2008-01-12 15:42
#104641 #104641
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
er hat nur was davon geschrieben, dass die Daten "verschoben" sind - und das auch nur in eine Richtung...
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/
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2008-01-10 20:38.