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 баллов. Поскольку вы пока что не распределены по преподавателям, вы можете присылать скрипт любому из нас (Евгений Служаев evgentu@gmail.com, Семен Прошев s-proshev@ya.ru). Не стесняйтесь задавать вопросы, на предстоящей паре обсудим сложности, если таковые возникли. 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 <номер шага> <название планеты> ... Пример: 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 баллов.