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

brute force suche



<< >> 6 Einträge, 1 Seite
Resys
 2004-12-13 17:45
#49961 #49961
User since
2004-12-13
2 Artikel
BenutzerIn
[default_avatar]
hey

ich bräuchte hilfe zu einem script welches aus einer eingegeben buchstaben folge wie z.b.

asfhasöhgasohgatestsnöfajsöaslgjaöö

eine eingebenen folge

z.b.
test

findet und mir die stelle angibt in der diese startet ... und zwar so , dass er er am anfang startet und die vorhandene zeichenkette mit dem eingegeben suchwort vergleicht und fals es keine übereinstimmung gibt ein schritt weiter geht aber auf jeden fall bis zum ende geht und dann die stelle mit übereinstimmungen anzeigt also z.b.
asfh = test --> sfha = test --> bis er ne übereinstimmung gefunden hat .
danke schonmal für die hilfe
Relais
 2004-12-13 17:56
#49962 #49962
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
perldoc -f index

Quote
index STR,SUBSTR,POSITION
index STR,SUBSTR
The index function searches for one string within
another, but without the wildcard-like behavior of
a full regular-expression pattern match. It
returns the position of the first occurrence of
SUBSTR in STR at or after POSITION. If POSITION
is omitted, starts searching from the beginning of
the string. The return value is based at 0 (or
whatever you've set the $[ variable to--but don't
do that). If the substring is not found, returns
one less than the base, ordinarily "-1".
\n\n

<!--EDIT|Relais|1102953435-->
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
Resys
 2004-12-13 18:06
#49963 #49963
User since
2004-12-13
2 Artikel
BenutzerIn
[default_avatar]
thx für die schnelle antwort ...
klar das wäre eine möglichkeit aber es geht mir hier bei mehr um das prinzip an sich und eine funktion die so vorrangeht ...
ich hatte da an eine funktion gedacht die beide strings buchstabe für buchstabe in ein array läd und dann vergleicht und zwar von der stelle 0 - [ (länge des arrays(eingabe) ) - (länge des arrays (suchwort) ] und jedes mal wenn sie kein übereinstimmung in allen buchstaben gefunden hat um eine position weitergeht bis sie am ende ist . klar ist das umständlich aber es geht mir halt um diesen algorithmus , nur weiß ich echt nicht wie ich es realisieren soll .
esskar
 2004-12-13 18:15
#49964 #49964
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub indexex
{
my ($str, $substr, $position) = @_;

my $start = $position || 0;
my $len = length $str;
my $sublen = length $substr;
my @retval = ();

return @retval unless $sublen;
while($start + $sublen < $len)
{
if(substr($str, $start, $sublen))
{
push @retval, $start;
}
$start++;
}

return @retval;
}
Crian
 2004-12-13 18:16
#49965 #49965
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Mach Dir einfach Arrays aus Deinen Worten (um Geschwindigkeit gehts jawohl eh nicht, wenn Du nicht index() nehmen willst). Dann ist der Zugriff einfach.

perldoc -f split

Code: (dl )
my @wort1 = split //, $erstes_wort;


und im Array @wort1 sind die Buchstaben Deines ersten Wortes.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Strat
 2004-12-14 00:09
#49966 #49966
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
witzig finde ich auch folgendes:

Code (perl): (dl )
1
2
my $word = "abcde";
my @list = split(/(\Q$word\E)/, $string);

dann hat man eine liste, die nach $word aufgesplittet ist, aber $word noch als element enthalten ist... die antwort passt aber wohl eher nicht so ganz zur frage, fuerchte ich...\n\n

<!--EDIT|Strat|1102975823-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 6 Einträge, 1 Seite



View all threads created 2004-12-13 17:45.