0)
Вам предлагается познакомиться с гипотезой Коллатца (https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0_%D0%9A%D0%BE%D0%BB%D0%BB%D0%B0%D1%82%D1%86%D0%B0), а именно -- написать описанный в википедии алгоритм и для любых чисел проверить, что в итоге получается 1.
Это задание на неделю (дедлайн 08.10.2015, 23.59), его стоимость 5 баллов. Поскольку вы пока что не распределены по преподавателям, вы можете присылать скрипт любому из нас (Евгений Служаев [email protected], Семен Прошев [email protected]).
Не стесняйтесь задавать вопросы, на предстоящей паре обсудим сложности, если таковые возникли.
1)
Новое домашнее задание связано с умножением матриц: https://ru.wikipedia.org/wiki/Умножение_матриц.
Программе на вход даются два файла: a.txt и b.txt.
В каждом из них строки из целых чисел, каждая строка соответствует строке матрицы, числа разделены пробелом.
Нужно:
- прочитать файлы;
- проверить, что это действительно матрицы, т.е. во всех строках одинаковое количество чисел;
- проверить, что их действительно можно перемножить, т.е. количество столбцов в одной равно количеству строк в другой;
- выполнить умножение;
- записать результат в файл c.txt в том же формате, что в исходных файлах.
Стоимость задания: 10 баллов, дедлайн: 19.10.2015, 23:59.
Бонус:
Проверить соответствие входных файлов описанному формату, т.е. что каждая строка является именно последовательностью целых чисел, разделенных пробелом.
Стоимость: 5 баллов.
PS. Моя группа: формулировка задания в письме имеет больший приоритет, напоминаю про тему письма вида "PP, Фамилия Имя".
2)
В текстовом файле chat.txt записан лог чата между 3-мя пользователями: Alice, Bob и Carol.
Каждое сообщение записано на отдельной строке в формате: “User: message”, где User - это одно из имен пользователей, состоящее из цифр и букв латинского алфавита, message - сообщение пользователя.
Необходимо написать программу, которая запишет в файл alice.txt все сообщения пользователя Alice (в том же порядке, что и в исходном файле, каждое на отдельной строке), и аналогично в файлы bob.txt и carol.txt сообщения пользователей Bob и Carol.
Например, файл chat.txt выглядит как:
Alice: Hello!
Bob: Hello, Alice!
Carol: Hello, Alice and Bob!
Alice: =)
Тогда после выполнения программы выходные файлы должны выглядеть следующим образом:
alice.txt:
Hello!
=)
bob.txt:
Hello, Alice!
carol.txt:
Hello, Alice and Bob!
Стоимость: 10 баллов
Бонус: решить ту же задачу с произвольным, неизвестным заранее списком пользователей.
Стоимость: 5 баллов
Дедлайн: 31.10.2015, 23.59
3)
Требуется написать программу, которая считывает текст из входного файла text.txt, считает количество вхождений для каждого из слов, присутствующих в тексте, и выводит результат в файл stat.txt в порядке от наиболее часто встречающихся слов к наименее в формате:
word_1 count_1
word_2 count_2
…
word_n count_n
В текстовом файле могут присутствовать большие и маленькие буквы латинского алфавита, а также знаки препинания (‘,’, ‘.’, ‘;’, ‘:’, ‘-‘), скобки (‘(‘, ‘)’), кавычки (‘“‘), апострофы (‘’’), пробелы, табулирование и переносы строк. Учтите, что программа должна слова “Word” и “word” считать одинаковыми, и конечно знаки препинания не должны входить в слова.
Бонус: если у двух слов одинаковое количество вхождений, нужно выводить их в лексикографическом порядке.
Стоимость такая же, 10 и 5 баллов, дедлайн 16.11.2015, 23:59.
4)
Требуется реализовать гравитационное поле в двумерном пространстве с тремя планетами, а именно дописать недостающую функциональность в следующий класс:
class GravField:
__def __init__(self, p1, p2, p3):
____# p1, p2, p3 - экземпляры класса Planet (см. ниже)
____...
__def run(self, start_values, steps)
____# start_values - словарь вида: имя планеты -> список из начальных x, y, vx, vy;
____# steps - количество шагов моделирования, шаг времени выбираете сами
____...
После вызова метода run должно начинаться моделирование гравитационного взаимодействия и вывод координат и скоростей планет на каждом шаге в следующем виде:
step <номер шага>
<название планеты> <vx> <vy> <x> <y>
...
Пример:
step 100
earth 100.5 200.5 5.5 6.9
mars 5.7 6.1 3.1 20.6
Моделирование должно происходить примерно следующим образом: рассматриваем планеты попарно, считаем для каждой пары силу притяжения, обновляем координаты и скорости планет, переходим к следующей паре.
class Planet:
__def __init__(self, name, m):
____# name - имя, m - масса планеты
____...
Координаты вводятся в астрономических единицах, масса в 10^24 кг, скорость в км/с.
Бонус: Визуализация. Рекомендуется встроенная библиотека turtle.
Стоимости обычные, срок - 30.11.2015, 23.59.
5)
В последнем домашнем задании необходимо реализовать программу с GUI, которая бы отображала график введеного полинома.
Полином имеет вид a ± b * x ^ 1 ± c * x ^ 2 ± d * x ^ 3 + .... и вводится в текстовое поле вашего приложения, все коэффициенты - целые числа.
Дедлайн - 20.12.2015, 23.59. Стоимость - 10 баллов.
Comments