座標系での規則的な移動

paizaのAランクレベルアップ問題「座標系での規則的な移動」
けっこ~コードをかんがえるのがむずかしかったぁ~・・

1つもifやループをつかわずにけ~さんだけでできたぞぉo(*^▽^*)o~♪

checkIOってサイトでやったSquare Spiralってもんだいににてますd(^-^)ネ!

my @cordb = (
    [-1, 1], [1, 1], [1, -1], [-1, 1]
);
my @direc = (
    [ 1, 0], [0, -1], [-1, 0], [0, 1]
);

my $input_line = ;
chomp $input_line;
my ($x, $y, $N) = split(/ /, $input_line);
$circuit = int((sqrt($N) + 1) / 2);

$pos_of_c = $N - ($circuit * 2 - 1) ** 2;
$pos_of_d = int($pos_of_c / ($circuit * 2));
$pos_of_e = $pos_of_c % ($circuit * 2);

$oy = $y + $cordb[$pos_of_d][0] * $circuit + $direc[$pos_of_d][0] * ($pos_of_e + 1);
$ox = $x + $cordb[$pos_of_d][1] * $circuit + $direc[$pos_of_d][1] * ($pos_of_e + 1);

print $ox.' '.$oy."\n";

コメント☆

アイコン: (未実装)

トラックバック


トップページへ