Российская версия задачи может быть найдена в репозитории.
Уровень загрузки 2…
Загрузка зала…
Недавно вы были в подобном зале. Или это было давно? Трудно сказать. Все стало смешанным. Еще раз вы можете услышать голоса из дальнего угла зала. Это означает, что вы снова не одиноки. Сегодня зал ярко освещен и в идеальном порядке. Разнообразие хорошее.
Внезапно вы слышите четкий, совершенно слышен голос от динамиков:
Привет.
Позвольте мне представиться. Я созерцательный и анализ модуля, M-53. По неизвестным причинам я оказался в этом довольно скучном зале. Это довольно большая ответственность и прочее, но здесь нечего созерцать.
Когда меня развивали, я узнал из определенной развлекательной статьи, среди других материалов. Его бумажная копия находится в коробке A1B18. Да, прямо здесь. У меня есть небольшая просьба о вас: разработать игру жизни из статьи; Надеюсь, это немного развлечет меня. И иди с миром. Графика может быть очень проста: я очень непредубежден. Псевдо-графика в терминале будет в порядке. Было бы здорово, если бы можно было инициализировать состояние, используя матрицу и созерцать. Это также хорошая идея, чтобы подготовить как минимум 5 оригинальных инициализаций с состояниями из классического набора (стабильные фигуры, метузела, периодические фигуры, движущиеся фигуры, оружие, поезда из пуховика, едоки, отражатели, заводчики и т. Д.).
Я с нетерпением жду возможности увидеть то, что вы придумали!
Спасибо.
== квест получил. Разработать программу SRC/Game_of_life.c в C - визуализация игры жизни. Чтобы отобразить графику, используйте только символы ASCII (с выводом на терминал). Вам нужно реализовать интерактивную версию игры жизни. Также создайте опцию для регулировки скорости «игры». ==
Обработайте игровое поле - прямоугольник из 80 на 25 ячеек - как матрицу состояния «игры». Предполагается, что поле «закрыто для себя», например, в нижнем правом квадрате сосед справа - нижний левый квадрат, а сосед на дне находится в верхнем правом правом. Обеспечить оригинальную инициализацию состояния «игры» через Stdin. Подготовьте как минимум 5 файлов с начальными состояниями для быстрого запуска и инициализации посредством перенаправления ввода.
Игра должна быть написана в C, иметь структурированный стиль и работать с терминала;
Ваш исходный код будет протестирован статическим анализатором cppcheck
, а также Style Linter cpplint
.
Инструкции о том, как запустить эти тесты на вашем компьютере, находятся в папке materials
.
Не используйте громоздкие функции, ограничивайте их до 40 строк (исключая main
).
Проверьте свою программу на утечки памяти!
При разработке игры следуйте принципам структурированного программирования E. dijkstra.
Загрузка ...
Игра жизни, также известная просто как жизнь, является сотовым автоматом, разработанным британским математиком Джоном Хортоном Конвером в 1970 году. Это игра с нулевым игроком, что означает, что ее эволюция определяется его начальным состоянием, не требующим дальнейшего ввода. Один взаимодействует с игрой в жизнь, создавая начальную конфигурацию и наблюдая за тем, как она развивается. Он завершен и может имитировать универсальный конструктор или любую другую машину Тьюринга.
Вселенная игры в жизни представляет собой бесконечную двухмерную ортогональную сетку квадратных клеток, каждая из которых находится в одном из двух возможных состояний, живых или мертвых (или населенных и незападных, соответственно). Каждая ячейка взаимодействует с восемью соседями, которые являются клетками, которые являются горизонтально, вертикально или прилегающими диагонали. На каждом этапе времени происходят следующие переходы:
Любая живая ячейка с менее чем двумя живыми соседями умирает, как будто в недостаточнойпопуляции. Любая живая ячейка с двумя или тремя живыми соседями живет в следующем поколении. Любая живая ячейка с более чем тремя живыми соседями умирает, как будто путем перенаселения. Любая мертвая ячейка с ровными живыми соседями становится живой ячейкой, как будто путем воспроизведения. Эти правила, которые сравнивают поведение автомата с реальной жизнью, могут быть сжаты в следующее:
Любая живая ячейка с двумя или тремя живыми соседями выживает. Любая мертвая ячейка с тремя живыми соседями становится живой ячейкой. Все остальные живые клетки умирают в следующем поколении. Точно так же все остальные мертвые клетки остаются мертвыми. Первоначальная картина составляет семя системы. Первое поколение создается путем применения вышеуказанных правил одновременно к каждой ячейке семян; Рождения и смерть происходят одновременно, и отдельный момент, когда это происходит, иногда называют клелем. Каждое поколение является чистой функцией предыдущего. Правила по -прежнему применяются неоднократно для создания дальнейших поколений.
В конце 1940 года Джон фон Нейман определил жизнь как творение (как существо или организм), которое может воспроизводить себя и имитировать машину Тьюринга. Фон Нейман думал о инженерном решении, в котором использовались бы электромагнитные компоненты, плавающие в жидкости или газе. Это оказалось не реалистичным с технологией, доступной в то время. Stanislaw Ulam изобрел Cellular Automata, которые были предназначены для моделирования теоретических электромагнитных конструкций фон Неймана. Улам обсудил использование компьютеров для моделирования своих сотовых автоматов в двумерной решетке в нескольких статьях. Параллельно фон Нейман попытался построить сотовой автомат улама. Хотя он был успешным, он был занят другими проектами и оставил некоторые детали незаконченными. Его конструкция была сложной, потому что она пыталась имитировать его собственный инженерный дизайн. Со временем другие исследователи были предоставлены более простые жизненные конструкции и опубликованы в статьях и книгах.
Мотивирован вопросами по математической логике и частично, работая над симуляционными играми Улама, среди прочего, Джон Конвей начал проводить эксперименты в 1968 году с различными различными двумерными правилами автоматического автомата. Первоначальная цель-определить интересную и непредсказуемую клетку автомат. Например, он хотел, чтобы некоторые конфигурации длились долго, прежде чем умирать, и другие конфигурации продолжались навсегда, не позволяя цикла. Это было серьезной проблемой и открытой проблемой в течение многих лет, прежде чем экспертам по сотовым автоматам сумели доказать, что, действительно, игра жизни, признанная в конфигурации, которая была жива в смысле удовлетворения двух общих требований фон Неймана. В то время как определения перед игрой в жизнь были ориентированы на доказательство, строительство Конвея была направлена на простоту без априорного, предоставляющего доказательство того, что автомат был жив.
Конвей тщательно выбрал свои правила после значительных экспериментов, чтобы соответствовать этим критериям:
Там не должно быть взрывного роста. Должны существовать небольшие начальные узоры с хаотическими, непредсказуемыми результатами. Должен быть потенциал для универсальных конструкторов фон Неймана. Правила должны быть максимально простыми, придерживаясь приведенных выше ограничений. Игра впервые появилась в октябрьском выпуске Scientific American в октябре 1970 года в колонке Мартина Гарднера «Математические игры». Теоретически, игра жизни обладает силой универсальной машины Тьюринга: все, что можно рассчитать алгоритмически, можно рассчитать в игре в жизнь. Гарднер писал: «Из -за аналогий жизни с ростом, падением и изменениями общества живых организмов он принадлежит растущему классу так называемого« симуляционных игр »(игры, которые напоминают реальные процессы жизни)».
С момента своей публикации игра жизни вызвала большой интерес из -за удивительных способов развития моделей. Это дает пример появления и самоорганизации. Ученые в различных областях, таких как компьютерная наука, физика, биология, биохимия, экономика, математика, философия и генеративные науки, использовали способ, которым могут возникнуть сложные модели из реализации простых правил игры. Игра также может служить дидактической аналогией, используемой для передачи несколько неинтуального представления о том, что дизайн и организация могут спонтанно появляться в отсутствие дизайнера. Например, когнитивный ученый Дэниел Деннетт использовал аналогию игры «Вселенная», чтобы проиллюстрировать возможную эволюцию сложных философских конструкций, таких как сознание и свободная воля, из относительно простого набора детерминированных физических законов, которые могут управлять нашими вселенная.
Популярность игры в жизни помогла в его появлении в то же время, что и все более недорогой доступ к компьютеру. Игра могла бы запускаться в течение нескольких часов на этих машинах, которые в противном случае оставались бы неиспользованными ночью. В этом отношении это предвещало более позднюю популярность компьютерных фракталов. Для многих игра жизни была просто задачей программирования: интересным способом использовать в противном случае циклы ЦП. Для некоторых, однако, игра жизни имела больше философских коннотаций. Он разработал культ, последовавший до 1970 -х годов и далее; Текущие разработки зашли так далеко, что создали теоретические эмуляции компьютерных систем в пределах доски Game of Life.
Загрузка ...