![見出し画像](https://assets.st-note.com/production/uploads/images/101012842/rectangle_large_type_2_f30de1bfc4ef57d17d4b4dd49cd8f92d.png?width=800)
Sky Technology lab: Question 4 解答
京大の Question 4 です。
C言語を用いました。
#include <stdio.h>
typedef struct P2D
{
int x,y;
} p2d;
p2d jump(int x, int y)
{
p2d r;
double p,q,rate;
if(x == 0)
{
r.x = x + 1 ;
r.y = y - 2 ;
}else if(y == 0)
{
r.x = x - 2 ;
r.y = y + 1 ;
}else if(x == y)
{
r.x = x - 2 ;
r.y = y - 1 ;
}else
{
p = x ;
q = y ;
rate = q / p ;
if(rate > 0 && rate < 1 ) // 0 < theta < pi/4
{
r.x = x - 2 ;
r.y = y - 1 ;
}else if(rate > 1) // pi/4 < theta < pi/2
{
r.x = x - 1 ;
r.y = y - 2 ;
}else if(rate < 0 && rate > -1) // - pi/4 < theta < 0
{
r.x = x - 2 ;
r.y = y + 1 ;
}else // pi/2 < theta < 3pi/4
{
r.x = x + 1 ;
r.y = y - 2 ;
}
}
return r ;
}
int vjump(int x, int y)
{
int j;
if(x == 0 && y == 0)
{
j = 0 ;
}else if(x == 0 && y == 1)
{
j = 3 ;
}else if(x == 0 && y == 2)
{
j = 2 ;
}else if(x == 0 && y == 3)
{
j = 3 ;
}else if(x == 1 && y == 0)
{
j = 3 ;
}else if(x == 1 && y == 1)
{
j = 2 ;
}else if(x == 1 && y == 2)
{
j = 1 ;
}else if(x == 1 && y == 3)
{
j = 2 ;
}else if(x == 2 && y == 0)
{
j = 2 ;
}else if(x == 2 && y == 1)
{
j = 1 ;
}else if(x == 2 && y == 2)
{
j = 4 ;
}else if(x == 2 && y == 3)
{
j = 3 ;
}else if(x == 3 && y == 0)
{
j = 3 ;
}else if(x == 3 && y == 1)
{
j = 2 ;
}else if(x == 3 && y == 2)
{
j = 3 ;
}else if(x == 3 && y == 3)
{
j = 2 ;
}
return j ;
}
int main()
{
int x,y ;
p2d r;
int i;
i = 0 ;
scanf("%d %d",&x,&y);
if(x < 0) // r.x = abs(x) ;
{
r.x = x * (-1) ;
}else
{
r.x = x ;
}
if(y < 0) // r.y = abs(y) ;
{
r.y = y * (-1) ;
}else
{
r.y = y ;
}
while(r.x > 3 || r.y > 3)
{
if(r.x == 4 && r.y == 3)
{
r.x = r.x - 1 ;
r.y = r.y - 2 ;
}else if(r.x == 3 && r.y == 4)
{
r.x = r.x - 2 ;
r.y = r.y - 1 ;
}else
{
r = jump(r.x,r.y) ;
}
i = i + 1 ;
}
i = i + vjump(r.x,r.y) ;
printf("%d\n",i);
return 0;
-----
動け!タイムライン
動物園か水族館にいきたいですね。