#!/usr/bin/perl

# odleglosc_manhattan( @p )
#   Oblicza odleglosc Manhattan pomiedzy dwoma
# punktami o d wymiarow, dla ktorych istnieje 2 * d wspolrzednych.  Dla przykladu,
# para punktow trojwymiarowych powinna byc przekazana do tej procedury
# jako ( $x0, $y0, $z0, $x1, $y1, $z1 ).

sub odleglosc_manhattan {
    my @p = @_;                 # Wspolrzedne punktow.
    my $d = @p / 2;             # Liczba wymiarow.

    my $S = 0;                  # Suma kwadratow.
    my @p0 = splice @p, 0, $d;  # Uzyskanie punktu startowego.

    for ( my $i = 0; $i < $d; $i++ ) {
        my $di = $p0[ $i ] - $p[ $i ];  # Roznica...
        $S += abs $di;                  # ...zsumowanie absolutnej wartosci.
    }

    return $S;
}

print manhattan_distance( 3, 4, 10, 12 ); 
