Задания по программированию для 2015б

Задание в классе, 1 апреля

Все задачи отсюда и вот эта задача.

Кодирование информации

Чтение и запись файла по байтам.

Применение LaTeX

(Хозяйке на заметку: шпаргалка по LaTex.)

Ваш год:

В этом файле найдите задачи для 8-го класса вашего года, а в этом файле — задачи для 10-го класса вашего года.

Создайте LaTeX-овский файл с условиями этих задач.

Результат прислать М. Э. на почту. Причём, возможно, всем будет удобнее, если вы создадите документ на сайте Papeeria или ShareLaTeX, и пришлёте М. Э. просто ссылку на него. Но, внимание, тогда, оказывается, нужно, зайти на этот сервис не анонимно, а залогинившись и специально отметить этот документ как публичный, а не приватный.

Работа в классе и дома: алгоритмы Форда-Беллмана и Флойда

Домашнее задание «DFS + Dijkstra»

Волновой алгоритм

Задачи на волновой алгоритм

Анализ текста

Прочитать файл romeo_and_juliet.txt и вывести результат частотного анализа слов в тексте.

Задание на 11 апреля и ближайшее время

Пишем стратегию для игры: максимизируем счет в игре SquareRemover!

Метод симуляции отжига

С помощью метода симуляции отжига (текст-1, текст-2) расставить на доске n×n n ферзей так, чтобы ни один из них не бил другого. Программа должна работать для n=20, а лучше и для n=50.

Сортировка слиянием

  1. Реализовать метод сортировки слиянием.
  2. Вынести в отдельный метод процедуру слияния двух отсортированных кусков массива, идущих один сразу после другого:
    /**
     * В массиве array в слить отсотированные интервалы from..middle и middle..to
     * в отсортированный интервал from..to
     */
    void mergeSortedParts(int[] array, int from, int middle, int to) {
        // Ваш код здесь
    }
    
  3. Понять и реализовать следующий алгоритм (сортировка слиянием естественных последовательностей):
    • Разбить массив на неубывающие куски (например, 2,3,9,5,6,6 — на 2,3,9 и 5,6,6)
    • Если такой кусок один, но работа закончена.
    • Иначе слить первый неубывающий кусок со вторым, третий с четвертым и так далее (возможно, один кусок останется нетронутым, если их было нечетное число).
    • Перейти к первому пункту.

    При реализации этого алгоритма использовать метод из задания 2.

Пример буферизации изображений

Applet2015b.java

Свой лэйаут-менеджер (29 ноября)

Задача: разобраться, как устроен лэйаут-менеджер.

Имеющиеся материалы: статья на русском языке.

В этой статье есть примеры разных лэйаут-менеджеров — не стесняйтесь копировать их в Эклипс, запускать, менять, баловаться и даже издеваться над этими примерами!

Наконец, в этой статье описан самодельный лэйаут-менеджер. На основе его вам будет несложно создать свой — в этом и заключается ваше задание:

  1. Сделать RandomLayoutManager, который располагает каждый компонент в произвольное место внутри окошка (возможно перекрываясь с предыдущими компонентами).
  2. Сделать ClockLayoutManager, который располагает все компоненты по кругу, с шагом в 30 градусов (как цифры на часах).
  3. Сделать свой лэйаут-менеджер, который делает что-то более изощренное, чем предыдущие два.

Д/з «Исследование булевой функции»;

Д/з «Булевы функции»;

Д/з «Перевод между системами счисления»;

Игра на чекбоксах

Написать игру на прямоугольном поле из чекбоксов.

Например, такую:

В начале поле заполняется произвольным образом (каждый чекбокс либо выбран, либо нет, с вероятностью 50%).

При нажатии на любой чекбокс, содержащий его крестик (его строка + его столбец) инвертируется (выбранные становятся невыбранными и наоборот).

Если все чекбоксы стали выбранными, игрок выиграл, не забудьте его поздравить с этим.

Задание для работы в классе — 24 апреля

Задание на два урока, не запутайтесь в двух ссылках:

Решать и сдавать в любом порядке.

Кто справится со всеми пятью задачами (получает пятёрку, конечно, и) может решать остальные задачи из любого из этих двух наборов. Тогда примите к сведению: «n-разрядный двоичный дополнительный код» (эта фраза есть в некоторых задачах) — это то, что мы на уроке называли «знаковые целые числа, под которые отведены n бит». Например, стандартный тип int в Java — это «32-разрядный двоичный дополнительный код».