В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
dasha50052
dasha50052
05.11.2020 10:37 •  Информатика

Ним-3 v2.0 Написать программу на python, соблюдающую данные условия
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Игра ним для двух игроков с тремя кучами и без ограничения на количество забираемых камней.
Напишите программу с «искусственным интеллектом» (ИИ), которая играет против пользователя и выигрывает, если может. Исходное количество камней в кучах задаёт пользователь, программа всегда ходит первой. Выигрывает забравший последний камень, и при окончании игры нужно объявить победителя.
Алгоритм игры выглядит следующим образом:

Сначала пользователь вводит количества камней в кучах (натуральные числа, каждое на новой строке).
Затем первый ход делает программа и выводит через пробел пять чисел: из какой кучи взяты камни; сколько камней взято; сколько камней осталось в кучах, сначала в первой, затем во второй, а потом и в третьей
Затем ход делает пользователь: вводит на отдельных строках номер кучи и количество камней, которые он хочет взять.
Если ход некорректный, например, пользователь пытается взять камней больше, чем есть в куче, программа должна вывести: Некорректный ход: и ожидать нового ввода пользователя.
После каждого корректного хода игрока или ИИ нужно выводить пять чисел, как и после первого хода ИИ.
Если выигрывает игрок, то надо вывести фразу: Вы выиграли!, а если ИИ – фразу: ИИ выиграл!
Все сообщения программы должны строго соответствовать условию.

Формат ввода
Для старта игры вводятся три натуральных числа.
Пример диалога игры:

2
2
2
1 2 0 2 2
1
2
Некорректный ход: 1 2
1
0
Некорректный ход: 1 0
2
1
2 1 0 1 2
3 1 0 1 1
2
1
2 1 0 0 1
3 1 0 0 0
ИИ выиграл!

Показать ответ
Ответ:
BorzikovaLiza5
BorzikovaLiza5
09.02.2022 10:54
Задание 1

Нам нужно найти наибольшее число x, при котором данное выражение ложно. Когда оно вообще ложно?

В данном логическом выражении используется дизъюнкция (ИЛИ), которая ложна только в одном случае - это когда оба выражения ложны. Когда же выражения ложны? Рассмотрим же их. В обоих выражениях фигурирует отрицание. То есть, выражение в скобках должны быть истинным. Объясняю:

НЕ (истина) = ложь

А это значит, что условие (x < 10) и (число чётное) должны выполняться. Нам нужно найти наибольшее чётное число. Это не может быть 10, поскольку знак неравенства строгий, следовательно, ближайшее наибольшее чётное число - это 8.

ответ

8

Задание 2

Для данного выражения требуется выполнение следующих условий:

НЕ (x < 7) должно быть ложным, то есть (x < 7) должно быть истинным(x < 6) должно быть ложным

Второе выражение мы можем преобразовать так:

(x ≥ 6). Почему 6 включительно? Потому что, подставив шестёрку в исходное выражение получим: 6 < 6 - ложь. Итого наше выражение имеет вид:

НЕ (x < 7) или (x ≥ 6). Нужно найти наибольшее число, при котором выражение ложно. Это число: 6.

ответ

6

Задание 3

Такое же, как и 2

Задание 4

Решается абсолютно также, как и 2. Дизъюнкция - значит в обеих частях выражения должна быть ложь. Когда ложь получается в двух выражениях? Рассмотрим эти случаи:

НЕ (x < 6) ложно тогда, когда (x < 6) истинно(x < 5) ложно тогда, когда (x ≥ 5)

Итого:

НЕ (x < 6) ИЛИ (x ≥ 5)

ответ

5

0,0(0 оценок)
Ответ:
Aelly
Aelly
06.01.2020 01:49
Program pr;
uses crt;

Var mas:array[1..1000, 1..1000] of integer;
N,M,i,j,k:integer;

Begin
Writeln('Введите размер матрицы N*M');
Write('N = ');
readln(N);
Write('M = ');
readln(M);

if (M>1000) or (N>1000) or (M<1) or (N<1)
then  
Writeln('Ошибка, указанные значения выходят за пределы матрицы')   else   
        Begin      
 Writeln('Введите элементы матрицы');      

k:=0; 
 for i:=1 to N do     
  for j:=1 to M do     
    Begin     
      readln(mas[i,j]);       
      if (mas[i,j] mod 2 = 0) then k:=k+1;     
    end; 
  
    Writeln();   
    Writeln('Исходная матрица');
   
   for i:=1 to N do   
     Begin     
       for j:=1 to M do     
          Begin     
             Write(mas[i,j], ' ')     
           end;     
      Writeln();   
     end;         

Writeln();   
Writeln('Количество четных элементов = ',k);      
 end;

readln;
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота