Задача «Камень, ножницы,
бумага»
Задача 1.
Камень, ножницы, бумага.
Оценка 25 баллов.
Камень,
ножницы, бумага — популярная детская игра на руках, изобретенная в Китае и
известная во многих странах мира.
Игроки
считают вслух «Камень … Ножницы … Бумага… Раз… Два… Три», одновременно качая
кулаками. На счет «Три» они одновременно показывают при помощи пальцев один из
трех знаков: камень, ножницы или бумагу.
Победитель
определяется по следующим правилам:
- Камень побеждает ножницы
(«камень затупляет или ломает ножницы»)
- Ножницы побеждают бумагу
(«ножницы разрезают бумагу»)
- Бумага побеждает камень
(«бумага заворачивает камень»)
- Если игроки показали одинаковый
знак, то засчитывается ничья и игра переигрывается.
В
классическом варианте в игру играют вдвоем, однако возможна игра большего
количества участников.
Материал из Википедии — свободной энкиклопедии.
При игре в
«Камень, ножницы, бумага» втроем выигрывает игрок, победивший обоих
своих соперников, если такого игрока нет, то засчитывается ничья.
Напишите
программу,
определяющую кто выигрывает в игре для трех игроков.
Формат
входных данных
С клавиатуры
вводятся три числа a,b,c (1<=a,b,c<=3) — информация о знаках, показанных
первым, вторым и третьим игроком соответственно. Информация о знаке кодируется
следующим образом 1 означает камень, 2 — ножницы, 3 — бумагу.
Формат
выходных данных
На экран
вывести номер победившего игрока или 0 в случае ничьей.
Пример
входных и выходных данных
Ввод
|
Вывод
|
1
2
3
|
0
|
1
1
2
|
0
|
2
1
2
|
2
|
Решение:
Var
a: array [1..3] of integer;
i: integer;
Ind, Ind2: integer;
zn1, zn2: integer;
Begin
cls;
Writeln('Камень - 1');
Writeln('Ножницы - 2');
Writeln('Бумага - 3');
Writeln('Введите код хода первого игрока: ');
Readln(a[1]);
Writeln('Введите код хода второго игрока: ');
Readln(a[2]);
Writeln('Введите код хода третьего игрока: ');
Readln(a[3]);
// Находим
if (((a[1]=a[2]) and (a[2]=a[3])) or ((a[1]<>a[2]) and (a[2]<>a[3]) and (a[1]<>a[3]))) then
begin
Writeln('0'); exit
end;
// Найдем индекс того, у которого единственный вариант
if a[1]=a[2] then
begin
ind:=3;
ind2:=1;
end;
if a[2]=a[3] then
begin
ind:=1;
ind2:=2;
end;
if a[1]=a[3] then
begin
ind:=2;
ind2:=1;
end;
zn1:=a[Ind];
zn2:=a[ind2];
// Находим победителя
if (zn1=1) and (zn2=2) then
writeln(ind)
else if (zn1=2) and (zn2=3) then
Writeln(Ind)
else if (zn1=3) and (zn2=1) then
Writeln(Ind)
else
writeln(0);
end.
|