in reply to Re^2: Combine line segments to form a single line
in thread Combine line segments to form a single line
#!/usr/bin/perl use warnings; use strict; my @AoA = ( # [11,29, 10,25], [15,35, 11,29], [15,15, 11,21], [10,25, 11,21], [15,35, 21,39], [25,40, 21,39], [21,11, 25,10], [15,15, 21,11], [35,35, 29,39], [29,39, 25,40], [35,15, 29,11], [25,10, 29,11], [40,25, 39,29], [35,35, 39,29], [39,21, 40,25], [35,15, 39,21], ); my @line = @{ shift @AoA }; LINE: while (@AoA) { for my $index (0 .. $#AoA) { for my $indices ( [0, 1, -2, -1, 0, 0 + @line], [2, 3, -2, -1, 2, 0 + @line], [0, 1, 0, 1, 0, 0], [2, 3, 0, 1, 2, 0], ) { if ($AoA[$index][$indices->[0]] == $line[$indices->[2]] && $AoA[$index][$indices->[1]] == $line[$indices->[3]]) { my $new = splice @AoA, $index, 1; splice @$new, $indices->[4], 2; splice @line, $indices->[5], 0, @$new; next LINE } } } die "No solution for @line.\n"; } print "@line\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Combine line segments to form a single line
by bangor (Monk) on Jan 13, 2014 at 15:23 UTC | |
by choroba (Cardinal) on Jan 13, 2014 at 15:44 UTC |