Задание 1. Задача о Ханойской башне: переместить 5 дисков со стержня 1 на стержень 3, используя промежуточный стержень 2 и соблюдая законы

  1. Задача о Ханойской башне: переместить 5 дисков со стержня 1 на стержень 3, используя промежуточный стержень 2 и соблюдая законы:

1) диски можно перемещать с одного стержня на другой только по одному;

2) нельзя класть больший диск на меньший;

3) нельзя откладывать диски в сторону, при переносе дисков с одного стержня на другой можно использовать промежуточный третий стержень, на котором диски должны находиться тоже только в виде пирамиды, сужающейся кверху.

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

2. Дана нитка с нанизанными на неё 20 черными и красными шариками (10 черных и 10 красных) в произвольном порядке. Доступ к шарикам возможен только с двух краев. Переместить шарики на новую пустую нитку так, чтобы черные и красные шарики чередовались, используя третью вспомогательную нитку. Для хранения нитей с шариками использовать класс-коллекцию список. Доступ возможен только к первому или последнему элементу списка. Начальная нитка с шариками формируется случайным образом. Выводить в консоль последовательность действий при перемещении шариков и схематическое расположение шариков, например:

Начальная нить:

–R–B–B–B–R–R–R–B–R–R–B–B–R–B–B–B–R–R–B–R–,

Новая нить:

Промежуточная нить:

где R – красный шарик, B – черный шарик.

3. Задана символьная строка, в которой используются скобки трех видов (), [], {}. Определить верно ли расставлены скобки. Для хранения символов использовать список.

4. Напишите методы substraction(Set set1, Set set2) и simsubstraction (Set set1, Set set2), реализующие операции разности и симметрической разности двух множеств. Протестируйте работу этих методах на двух предварительно заполненных множествах. (Вам понадобится написать вспомогательный метод, выводящий все элементы множества в консоль).

Разностью множеств A–B называется множество всех тех и только тех элементов A, которые не содержатся в В. Симметрической разностью множеств А и В является множество всех тех и только тех элементов, которые принадлежат только одному из двух множеств А или В, но не обоим одновременно.

5. Напишите методы Cartesian_product(Set set1, Set set2) и Bulean(Set set1), реализующие операции декартового произведения двух множеств и определения булеана множества. Протестируйте работу этих методах на двух предварительно заполненных множествах. (Вам понадобится написать вспомогательный метод, выводящий все элементы новых множеств в консоль).

Декартово (прямое) произведение множеств A и B, обозначаемое – множество всех пар , таких, что , . Объект называется упорядоченной парой с первой компонентой a и второй компонентой b. Множество всех подмножеств множества А, или булеан множества А, обозначаемый – множество, состоящее из всех подмножеств множества А. Множество А, называется подмножеством множества B, если является частью множества В.

6. По конвейеру движутся детали (Д1, Д2, Д3) в произвольном порядке. Автомат формирует комплекты, состоящие из одной детали 1, 2, 3. При поступлении повторяющихся деталей они должны сбрасываться в бункер и отправляться в конец конвейера. Для преставления конвейера использовать класс-коллекцию очередь. Протестируйте работу автомата, формируя конвейер из 40 деталей, расположенных в произвольном порядке. Выводить в консоль последовательность действий при перемещении деталей и схематическое расположение деталей на конвейере, например:

–D1–D2–D2–D1–D1–D1–D3–…

Переместить D1 в готовый комплект

или

Сбросить D1 в бункер и поместить в конец конвейера

7. На шахматную доску 8х8 случайным образом ставятся 4 фигуры: ферзь, ладья, слон и конь – объекты типа ChessMan. Определить может ли какая-то фигура побить другую. Для хранения шахматных фигур использовать класс-коллекцию список. Ферзь бьет все фигуры стоящие с ним на одной вертикали, горизонтали или диагонали. Ладья бьет все фигуры стоящие с ней на одной вертикали или горизонтали. Слон бьет все фигуры стоящие с ним на одной диагонали. Конь бьет все фигуры, расположенные буквой «Г» относительно него. Протестировать работу программы, задав произвольно расположение фигур, путем ввода с клавиатуры или случайным образом. На экран должны выдаваться фигуры, которые могут побить друг друга и их координаты, например:

«Ферзь 4,4 бьет ладью 8,8»

или

«Никакая фигура не бьет другую».

8. Используя одну из коллекций реализовать руку игрока с картами в карточной игре. Учесть, что карты в руке можно переставлять местами, часть карт разыгрываются и соответственно из руки пропадают, если в руке игрока меньше 6 карт, то они добираются до 6. Для карт использовать объекты типа Card c двумя полями: стоимость и описание карты.

9. Официанты формируют список заказов на кухню, который постоянно пополняется. Заказы могут быть срочными и не срочными. Повара сначала должны выполнять срочные заказы, а затем любые – по желанию. На кухне работают три повара со специализациями: первые блюда, вторые блюда, десерт – т. е., первый повар основную часть работы уделяет первым блюдам, если они есть в списке и любым другим блюдам, если первых блюд в списке нет. Повар не приступает к выполнению нового блюда, даже если оно является его основным, пока не закончит старое. Программа должна рассортировать список заказов между ними так, чтобы загруженность поваров по времени была примерно одинакова. Использовать объекты типа Order с полями: (срочный; не срочный), (первые блюда, вторые блюда, десерт), (время выполнения заказа).

10. В стратегиях реального времени можно выделять группы из бойцов, единиц техники и т. д. Какую коллекцию можно использовать для создания такой группы, учитывая, что в группу можно добавлять и удалять элементы? Создать группу, в которую могут входить: герои, маги и простые бойцы. Сортировка внутри группы происходит следующим образом: сначала герои, затем маги и, наконец, простые бойцы. Внутри этих групп сортировка происходит по количеству здоровья члена группы. Использовать объект типа Unit c полями: герой (да, нет), маг (да, нет), количество здоровья. Протестировать работу программы, задав произвольно количество героев, магов и простых бойцов в группе. Программа должна выдавать список, упорядоченный указанным выше способом.

11. Какую коллекцию можно использовать для создания списка студентов группы университета? Создать группу, которая состоит из 20 студентов. Использовать объект типа Student c полями: ФИО, домашний адрес, телефон, оценки за последнюю сессию. Программа должна позволять выводить данные по отдельному студенту, по студентам, сдавшим экзамен на определенную оценку, вычислять среднюю успеваемость по определенному предмету или по всем предметам.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: