# -*- mode: cperl6; -*- # 2011 Perl 6 Coding Contest # Edgar Gonzàlez i Pellicer # Positions module Position; # Position pair class PosPair is export { has Int $.i; has Int $.j; # Next method succ() { if $.j == $.i { return PosPair.new(i => $.i + 1, j => 0); } else { return PosPair.new(i => $.i, j => $.j + 1); } } # Conversion to numeric method Numeric() { return $.i * ($.i + 1) / 2 + $.j; } } # Position pair at the start of a container sub start($) is export { return PosPair.new(i => 0, j => 0); } # Position pair at the end of a container sub end($container) is export { return PosPair.new(i => $container.elems - 1, j => $container.elems - 1); }