Загрузка...

Клеточный автомат python

Тема в разделе Python создана пользователем WORDIS 10 май 2020. (поднята 10 май 2020) 604 просмотра

  1. WORDIS
    WORDIS Автор темы 10 май 2020 Я не верю в бога - я пытаюсь им стать 73 7 апр 2020
    [IMG]
    На рисунке показано несколько поколений одномерного клеточного автомата. У каждой клетки только два соседа — слева и справа, а поле представляет собой бесконечную полосу клеток (правый сосед последней клетки – это первая клетка, а левый сосед первой клетки – последняя). Эволюция идёт сверху вниз: первое поколение приведено в верхней строчке, второе — во второй сверху и т.д.

    Правило эволюции дано в верхней части рисунка. Цвет каждой ячейки текущего поколения определяется сочетанием цветов трёх соседних ячеек предыдущего поколения, расположенных над ней: непосредственно сверху и по диагоналям (сверху-слева и сверху-справа).

    Всего возможны восемь разных «триплетов», порождающих в следующем поколении либо закрашенную ячейку (1), либо пустую (0). Это дает 256 возможных правил эволюции. В этой задаче используется правило номер 30.

    Используя библиотеку numpy, напишите функцию generation(line), которая вычисляет и возвращает десятое поколение клеточного автомата по правилу 30.
    Формат ввода
    Тестирующая система будет вызывать вашу функцию, например, так:

    print(generation("1001000101111100000101111001011011101101101111110111110000000000000011000001011001100011111101001001"))

    Ожидаемый результат
    0101100010011111110000011100001111101000010100111101101011001111110010110000011001000001100001100001
    Вывод
    1010010001100100100000001000000100101111010111001000110001110010011010100000001101111101000000111010

    Вот мой код но он не работает помогите пожалуйста, не могу найти ошибку
    Код
    def generation(line):
    a =[list(line), [], [], [], [], [], [], [], [], []]
    for j in range(len(a) - 1):
    for i in range(len(a[j])):
    if i == 0:
    if a[j][0] == '1' or a[j][1] == '1':
    a[j + 1].append('1')
    else:
    a[j + 1].append('0')
    elif len(a[j]) - 1 == i:
    if (a[j][-1] == '1' and a[j][-2] == '0') or a[j][-1] == '0' and a[j][-2] == '0':
    a[j + 1].append('1')
    else:
    a[j + 1].append('0')
    else:
    if (a[j][i - 1] == '1' and a[j][i] == '0' and a[j][i + 1] == '0') or \
    (a[j][i - 1] == '0' and a[j][i] == '1' and a[j][i + 1] == '1') or \
    (a[j][i - 1] == '0' and a[j][i] == '1' and a[j][i + 1] == '0') or \
    (a[j][i - 1] == '0' and a[j][i] == '0' and a[j][i + 1] == '1'):
    a[j + 1].append('1')
    else:
    a[j + 1].append('0')
    return ''.join(a[-1])
     
    10 май 2020 Изменено
  2. 1mNotS0rr1
    1mNotS0rr1 11 май 2020 Заблокирован(а) 119 26 май 2018
    Бля сложна пизда за косарь минимум тут кто согласится этой парашей страдать
     
  3. Молодость
    Молодость 11 май 2020 14 856 14 авг 2019
    Ну а где import numpy?
    --- Сообщение объединено с предыдущим 11 май 2020
    И да, когда запускаешь прошу - пишет же место ошибки, не понимаю, какие тогда проблемы? Может ты отступы не так ставил...
     
    1. Foxegon
      Молодость, Помню когда из-за отступов чуть не проебался с экзаменом
      Спасибо нормальной училке
    2. WORDIS Автор темы
      Молодость, Эм бл, это и так понятно, но ошибки не вызывает, и бл пока модер полдня тему постил я уже все решил
Top
Загрузка...