|
|||||||||||||||||||||||||||
"Thomas D" <sslug@sslug> writes:
> Jeg har set http://lipsum.com/ hvorpå der er en Lorem Ipsum generator
> skrevet i perl.
> Er der nogen af jer der kan forklare hvordan den er lavet?
Der er flere måder at lave det på.
En måde at gøre det på kan groft skitseres ved:
#!perl
# FOO markerer hhv ingenting i begyndelsen og slutningen.
use constant FOO = <something>;
# analyser data som man prøver at genererer. Det kan være
# H.C. Andersens værker eller forskellige Lorem Ipsum'er
sub tokenize { ... }
@tokens = (tokenize $inddata, FOO, FOO);
while (@tokens) {
($a, $b $c) = $b, $c, shift @tokens;
$hash{$a}{$b}{$c}++
}
# Generer ny version:
($a, $b, $c) = (undef, undef, undef);
do {
print $a;
($a, $b) = $b, $c;
@nexts = ();
push @nexts, ($_) x $hash{$a}{$b}{$_} for keys $hash{$a}{$b};
$c = $nexts[rand @nexts];
} until (undefined $a);
__END__
Slutbetingelsen skal ændres så den ikek bliver af en tilfældig længde
og selve måden at gøre ting på kan optimeres meget, men ideen skulle
være synlig.
Man kan varierer lidt på hvor lange tupler man vil arbejde med. For
korte tupler giver for rodet tekst og for langee tupler låser sig for
meget fast på tekster der indgår i ens originalmateriale.
Afsnit, sætninger og lignende kan også håndteres specielt.
For at se resultatet på mere menneskelæsligt tekst kan man se på Per
Abrahamsens Mark Ove Kvæde <http://www.dina.dk/~abraham/mok/>, som jeg
mener er baseret på ovenstående principper.
--
Peter Makholm | Yes, you can fight it, but in the end the ultimate
sslug@sslug | goal of life is to have fun
http://hacking.dk | -- Linus Torvalds
|
||||||||||||||
|
||||||||||||||