Sha256: bb6ba243e970116f321489313ea6a3c39c1f6c36db5a072657321f0d8943b216

Contents?: true

Size: 1.08 KB

Versions: 323

Compression:

Stored size: 1.08 KB

Contents

package Example;
use strict;
use warnings;

sub new {
    my ($class, %data) = @_;

    my $self = bless \%data, $class;

	$self->{white} //= [0, 3];
	$self->{black} //= [7, 3];

    foreach my $c (@{ $self->{white} }, @{ $self->{black} }) {
       die "ArgumentError" if $c < 0 or $c > 7 or $c != int($c);
    }

    die "ArgumentError" if
        $self->{white}[0] == $self->{black}[0] and
        $self->{white}[1] == $self->{black}[1];

	return $self;
}

sub white {
    my ($self) = @_;
    $self->{white};
}

sub black {
    my ($self) = @_;
    $self->{black};
}

sub to_string {
    my ($self) = @_;
    my @board;
	push @board, [('O') x 8] for 1..8;
	$board[$self->white->[0]][$self->white->[1]] = 'W';
	$board[$self->black->[0]][$self->black->[1]] = 'B';

	return join '',
        map { "$_\n" }
		map { join ' ', @$_ } @board
}

sub can_attack {
	my ($self) = @_;

	return 1 if $self->white->[0] == $self->black->[0];
	return 1 if $self->white->[1] == $self->black->[1];
	return 1 if
		abs($self->white->[0] - $self->black->[0]) ==
		abs($self->white->[1] - $self->black->[1]);

	return;
}

1;

Version data entries

323 entries across 323 versions & 1 rubygems

Version Path
trackler-2.2.1.105 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.104 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.103 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.102 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.101 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.100 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.99 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.98 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.97 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.96 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.95 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.94 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.93 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.92 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.91 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.90 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.89 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.88 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.87 tracks/perl5/exercises/queen-attack/Example.pm
trackler-2.2.1.86 tracks/perl5/exercises/queen-attack/Example.pm