Задача «Камень, ножницы, бумага»
Задача 1.
Камень, ножницы, бумага.
Оценка 25 баллов.
Камень, ножницы, бумага — популярная детская игра на руках, изобретенная в Китае и известная во многих странах мира.
Игроки считают вслух «Камень … Ножницы … Бумага… Раз… Два… Три», одновременно качая кулаками. На счет «Три» они одновременно показывают при помощи пальцев один из трех знаков: камень, ножницы или бумагу.
Победитель определяется по следующим правилам:
- Камень побеждает ножницы («камень затупляет или ломает ножницы»)
- Ножницы побеждают бумагу («ножницы разрезают бумагу»)
- Бумага побеждает камень («бумага заворачивает камень»)
- Если игроки показали одинаковый знак, то засчитывается ничья и игра переигрывается.
В классическом варианте в игру играют вдвоем, однако возможна игра большего количества участников.
Материал из Википедии — свободной энкиклопедии.
При игре в «Камень, ножницы, бумага» втроем выигрывает игрок, победивший обоих своих соперников, если такого игрока нет, то засчитывается ничья.
Напишите программу, определяющую кто выигрывает в игре для трех игроков.
Формат входных данных
С клавиатуры вводятся три числа a,b,c (1<=a,b,c<=3) — информация о знаках, показанных первым, вторым и третьим игроком соответственно. Информация о знаке кодируется следующим образом 1 означает камень, 2 — ножницы, 3 — бумагу.
Формат выходных данных
На экран вывести номер победившего игрока или 0 в случае ничьей.
Пример входных и выходных данных
Ввод |
Вывод |
1 |
0 |
1 |
0 |
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.