Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


courses:high_performance_computing:coroutines

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

courses:high_performance_computing:coroutines [2019/12/09 00:34]
kel created
courses:high_performance_computing:coroutines [2019/12/11 11:24] (current)
odoronin
Line 1: Line 1:
 ====== Coroutines ====== ====== Coroutines ======
 +
 +Ваша задача - реализовать [[https://​en.wikipedia.org/​wiki/​Conway%27s_Game_of_Life|Conway'​s Game of Life]], с использованием Kotlin корутин и каналов.
 +  - Для хранения состояния игрового поля реализуйте immutable класс Grid. Экземпляр этого класса,​ хранящий текущее состояние будет разделяться между всеми корутинами.
 +  - Расчет нового состояния игрового поля должен выполняться набором корутин,​ выполняющихся параллельно в некотором пуле потоков. Каждая корутина должна обрабатывать свою облаcть поля и генерировать область с новым состоянием. Количество корутин должно быть пропорционально количеству логических процессоров в системе (например,​ по 2 корутине на процессор).
 +  - Расчитанное состояние каждая корутина должна сохранять в некоторый канал, из которого затем оно будет извлекаться читателем,​ формирующим новое состояние игрового поля в виде нового экзепляра Grid. Таким образом,​ ваше решение будет реализовывать паттерн fan-in.
 +  - Программа должна считывать параметры из стандартного потока ввода, выполнять моделирование и выводить полученное состояние в стандартный поток вывода.
 +===== Формат ввода =====
 +
 +Первая строка ввода содержит целые числа **W**, **H**, **I** (**1 <= W, H <= 10^5**; **1 <= I <= 100**), ширину и высоту игрового поля и количество итераций соответственно,​ и символ **'​R'​** или **'​I'​** (без кавычек),​ разделенные одним символом пробела. Если в первой строке указан символ **'​R'​**,​ это означает,​ что начальное состояние игры должно генерироваться случайным образом,​ в противном случае,​ следующие **H** строк содержат начальное состояние игрового поля. Каждая строка состоит из **W** символов **'​*'​** или **'​.'​** (без кавычек). Символ **"​*"​** означает,​ что клетка занята,​ **'​.'​** - пуста.
 +===== Формат вывода =====
 +
 +Выведите состояние игрового поля после **I** итераций в том же формате:​ в виде **H** строк по **W** символов в каждой.
 +===== Пример 1 =====
 +
 +<file bash>
 +10 5 18 R
 +</​file>​
 +Необходимо вывести состояние игрового поля размером 10 * 5, после выполнения 18 итераций,​ с начальным состоянием,​ сгенерированным случайным образом.
 +===== Пример 2 =====
 +
 +<file bash>
 +6 3 10 I
 +*..**.
 +.*.*..
 +....**
 +</​file>​
 +Необходимо вывести состояние игрового поля размером 6 * 3, после выполнения 10 итераций,​ с начальным состоянием,​ заданным явно в потоке ввода.
courses/high_performance_computing/coroutines.txt · Last modified: 2019/12/11 11:24 by odoronin