From 4bea68faa549c6725c4af9c94a3565d5bd78729a Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Sun, 26 Dec 2010 16:59:19 +0000 Subject: string length may depend on direction --- lib/GridFiller/Status.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/GridFiller/Status.pm') diff --git a/lib/GridFiller/Status.pm b/lib/GridFiller/Status.pm index bf5e9e6..bccb20f 100644 --- a/lib/GridFiller/Status.pm +++ b/lib/GridFiller/Status.pm @@ -62,8 +62,8 @@ sub _build_words_to_use { given ($mode) { when ('random') { return [ shuffle uniq @$words ] } when ('given') { return [ uniq @$words ] } - when ('longest') { return [ sort {$l->($b) <=> $l->($a)} uniq @$words ] } - when ('shortest') { return [ sort {$l->($a) <=> $l->($b)} uniq @$words ] } + when ('longest') { return [ sort {$l->($b,$HORIZONTAL) <=> $l->($a,$HORIZONTAL)} uniq @$words ] } + when ('shortest') { return [ sort {$l->($a,$HORIZONTAL) <=> $l->($b,$HORIZONTAL)} uniq @$words ] } default { croak "Unknown mode $mode" } } } @@ -87,12 +87,12 @@ sub place_word_at { $self->log->debug("Marking <$word> occupied at ${x}:${y} ($dir)"); if ($dir == $HORIZONTAL) { - for my $i (0..$self->length->($word)+$space-1) { + for my $i (0..$self->length->($word,$dir)+$space-1) { $self->_mark_occupied($x+$i,$y); } } elsif ($dir == $VERTICAL) { - for my $i (0..$self->length->($word)+$space-1) { + for my $i (0..$self->length->($word,$dir)+$space-1) { $self->_mark_occupied($x,$y+$i); } } -- cgit v1.2.3