From 242ab2d212b23121ba99f0d5b75eb7b3d25656c3 Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 23 Nov 2010 23:08:26 +0000 Subject: avoid colour runs --- lib/GridFiller.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/GridFiller.pm b/lib/GridFiller.pm index 4ab25ac..38bf7f6 100644 --- a/lib/GridFiller.pm +++ b/lib/GridFiller.pm @@ -217,9 +217,18 @@ sub _build_result { sub _find_colour_for { my ($self,$x,$y,$dir) = @_; - return $colourmap{$self->grid->[$y][$x]}->{$dir}->{ - ($dir == $HORIZONTAL) ? ($y % 2) : ($x % 2) - }; + my $parity = ($dir == $HORIZONTAL) ? ($y % 2) : ($x % 2); + + my $chosen = $colourmap{$self->grid->[$y][$x]}->{$dir}->{$parity}; + + # avoid colour runs + if ( ( $x>0 && $dir == $HORIZONTAL && $self->result->[$y][$x-1][0] == $chosen ) + or + ( $y>0 && $dir == $VERTICAL && $self->result->[$y-1][$x][0] == $chosen ) + ) { + $chosen = $colourmap{$self->grid->[$y][$x]}->{$dir}->{1-$parity}; + } + return $chosen; } } -- cgit v1.2.3