Može ovako:
Code:
crtaj_dijamant(13, 15);
sub crtaj_dijamant
{
($sirina, $visina) = @_;
$x_sredina = int($sirina / 2);
$y_sredina = int($visina / 2);
$k1 = ($y_sredina - 0) / (0 - $x_sredina);
$k4 = $k1;
$k3 = $k2 = -$k1;
# Pomak po y osi prave paralelne datoj (rastojanje izmedju njih je 0,5):
$pomak = 0.5 * sqrt(1 + $k2*$k2);
$n1 = 0 - $k1 * $x_sredina - $pomak;
$n2 = 0 - $k2 * $x_sredina - $pomak;
$n3 = $visina-1 - $k3 * $x_sredina + $pomak;
$n4 = $visina-1 - $k4 * $x_sredina + $pomak;
for ($y=0; $y<$visina; $y++) {
for ($x=0; $x<$sirina; $x++) {
if ( ( $y >= $k1 * $x + $n1 ) &&
( $y >= $k2 * $x + $n2 ) &&
( $y <= $k3 * $x + $n3 ) &&
( $y <= $k4 * $x + $n4 ) ) {
print "*";
} else {
print " ";
}
}
print "\n";
}
}
Budući da je problem bio u algoritmu mislim da ova tema više odgovara forumu "Art of Programming".