[quote=Dubu,13.09.2003, 09:59][quote=eisbeer,12.09.2003, 16:14]
[...]
Mir gefällt Ishkas Ansatz am besten, würde ihn aber noch verallgemeinern:
[code]s/(.+)\1{3,}/$1/s
Das ersetzt eine beliebige Folge von Zeichen, die mehr als dreimal wiederholt wird, durch eine einzelne dieser Folgen. Das heißt:
"Hallo Leser!"
# wird zu
"Hallo Leser!"
blablablablablablabla
# wird zu
bla
Stillleben
# bleibt
Stillleben
[/quote]
Verallgemeinern, ok - aber ich würd mehr als drei Zeichen durch dreinmal dasselbe ersetzen, denn wenn sich jemand vertippt, dann wird aus og. Stilllleben ein Stileben. Und jetzt hab ich noch ein Fragezeichen ins Matching eingebaut, damit nicht !!!!!!...!! drei !!! als Muster erkannt werden und dann neun stehenbleiben oder so.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}