{{tag>codingame power of thor}}
# [codingame] Power of Thor
SOLVE IT
토르의 망치, Mjöllnir 는 모든 힘을 잃었다.... 망치의 힘을 되찾기 위해 힘의 빛으로 안내해 줄 수 있겠는가?
''주제: 조건문 (if...).''
이 퍼즐은 과거 라그나로크 컨테스트에 제안되었던 시리즈중의 첫번째이다. 망치의 힘을 되찾게 되면, 다음 퍼즐로 건너가서 "토르 대 거인"에서 거인을 물리쳐라“. 더욱 어려울것이다.
# 프로그램
가로 40, 세로 18의 맵에서 움직인다. 토르는 지도위 임의의 지점에서 시작할 것이고, 최대한 빨리 힘의 빛에 도착해야 한다.
각 턴에서, 어느 방향으로 이동할지 다음 경우중에서 결정해야 한다.
* N (North)
* NE (North-East)
* E (East)
* SE (South-East)
* S (South)
* SW (South-West)
* W (West)
* NW (North-West)
## 승리조건
힘의 빛에 도달하면 당신이 승리한다.
## 패배 조건:
* 토르가 맵 밖으로 나간다.
* 힘의 빛에 도달하기 위한 에너지가 더 이상 남아있지 않다
# 기본 코드
select(STDOUT); $| = 1; # DO NOT REMOVE
# Auto-generated code below aims at helping you parse
# the standard input according to the problem statement.
# LX: the X position of the light of power
# LY: the Y position of the light of power
# TX: Thor's starting X position
# TY: Thor's starting Y position
chomp($tokens=);
($LX, $LY, $TX, $TY) = split(/ /,$tokens);
# game loop
while (1) {
chomp($E = ); # The level of Thor's remaining energy, representing the number of moves he can still make.
# Write an action using print
# To debug: print STDERR "Debug messages...\n";
print "SE\n"; # A single line providing the move to be made: N NE E SE S SW W or NW
}
# 코드작성
select(STDOUT); $| = 1; # DO NOT REMOVE
# Auto-generated code below aims at helping you parse
# the standard input according to the problem statement.
# LX: the X position of the light of power
# LY: the Y position of the light of power
# TX: Thor's starting X position
# TY: Thor's starting Y position
chomp($tokens=);
($LX, $LY, $TX, $TY) = split(/ /,$tokens);
$x = $LX - $TX;
$y = $LY - $TY;
# game loop
while (1) {
chomp($E = ); # The level of Thor's remaining energy, representing the number of moves he can still make.
# Write an action using print
# To debug: print STDERR "Debug messages...\n";
print STDERR "energy:",$E,"\n";
print STDERR "X:",$x,"\tY:",$y,"\n";
if ($x > 0) {
if ($y > 0) {
$d = "SE";
$x--;
$y--;
}
elsif ($y < 0) {
$d = "NE";
$x--;
$y++;
}
else{
$d = "E";
$x--;
}
}
elsif ($x < 0) {
if ($y > 0) {
$d = "SW";
$x++;
$y--;
}
elsif ($y < 0) {
$d = "NW";
$x++;
$y++;
}
else{
$d = "W";
$x++;
}
}
else{
if ($y > 0) {
$d = "S";
$y--;
}
elsif ($y < 0) {
$d = "N";
$y++;
}
}
print $d,"\n"; # A single line providing the move to be made: N NE E SE S SW W or NW
}
# if문 줄이기
select(STDOUT); $| = 1; # DO NOT REMOVE
chomp($tokens=);
($LX, $LY, $TX, $TY) = split(/ /,$tokens);
$x = $LX - $TX;
$y = $LY - $TY;
# game loop
while (1) {
chomp($E = ); # The level of Thor's remaining energy, representing the number of moves he can still make.
$d ="";
if ($y > 0) {$d.="S";$y--}
elsif ($y < 0) {$d.="N";$y++}
if ($x > 0) {$d.="E";$x--}
elsif ($x < 0) {$d.="W";$x++};
print $d,"\n"; # A single line providing the move to be made: N NE E SE S SW W or NW
}