Главная » Файлы » Файлы

Задача "Кубик Рубика". Паскаль
06.01.2011, 12:52

Кубик Рубика.

Входной файл: rubik.in

Выходной файл: rubik.out

Время выполнения:  1 секунда

Каждая грань собранного кубика Рубика имеет свою окраску. Если кубик расположить так, что сверху будет грань белого цвета, а справа синего, то снизу окажется грань желтого цвета, слева - зеленого, спереди оранжевого, а сзади - красного. Кубик можно наклонить в одну из четырех сторон и, продолжив движение, поставить на соответствующую грань. Такое действие назовем перекатом. Например, если сначала сверху была грань белого цвета, а справа синего, то после одного переката вправо сверху будет зеленая грань, справа белая, и т.д.

Обозначим направление перекатов:

F - вперед В - назад, L - влево, R - вправо.

Необходимо по заданному начальному положению кубика Рубика, заданному направлению и количеству перекатов определить, какая грань окажется сверху.

Во входном файле в первой строке записаны две заглавные латинские буквы - первые буквы цветов верхней и правой граней. Во второй строке направление и через пробел N - количество перекатов (1<=N<=10500).

В выходной файл вывести одну заглавную латинскую букву -обозначение цвета верхней грани после выполнения перекатов.

Примеры

 

rubik.in

rubik.out

1

WB

G

 

R1

 

2

WB

W

 

F4

 

 Решение:


program kub;
type cor=record
v,p,z,l,r,n:char;
end;
var Wcor,Gcor,Rcor,Bcor,Ocor,Ycor,Cori:cor;
nap,V,R,buf:char;
N:longint;
begin
Cori.v:='W';
cori.z:='R';
cori.p:='O';
Cori.l:='G';
cori.r:='B';
cori.n:='Y';
readln(V,R);
readln(nap,N)
case V of
Cori.l:begin buf:=cori.l; cori.l:=cori.n; cori.n:=cori.r;cori.r:=cori.v;cori.v:=buf end;
Cori.r:begin buf:=cori.r; cori.r:=cori.n; cori.n:=cori.l;cori.l:=cori.v;cori.v:=buf end;
Cori.p:begin buf:=cori.p; cori.p:=cori.n; cori.n:=cori.z;cori.z:=cori.v;cori.v:=buf end;
Cori.z:begin buf:=cori.z; cori.z:=cori.n; cori.n:=cori.p;cori.p:=cori.v;cori.v:=buf end;
Cori.n:begin buf:=cori.l; cori.l:=cori.r; cori.r:=buf;buf:=cori.v;cori.v:=cori.n;cori.n:=buf end;
end;
while R<>cori.r do
begin
buf:=cori.l; cori.l:=cori.p; cori.p:=cori.r;cori.r:=cori.z;cori.z:=buf
end;
case N mod 4 of
0:writeln(cori.v);
2:writeln(cori.n);
1:case nap of
'F':writeln(cori.P);
'B':writeln(cori.Z);
'L':writeln(cori.L);
'R':writeln(cori.R);
end;
3: case nap of
'F':writeln(cori.Z);
'B':writeln(cori.P);
'L':writeln(cori.R);
'R':writeln(cori.L);
end;
END;
END.

Категория: Файлы | Добавил: pascal
Просмотров: 2230 | Загрузок: 0 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Виджеты на сайт