Загрузка...

python cellular automaton

Thread in Python created by WORDIS May 10, 2020. (bumped May 10, 2020) 606 views

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

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

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

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

    print(generation("1001000101111100000101111001011011101101101111110111110000000000000011000001011001100011111101001001"))

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

    Вот мой код но он не работает помогите пожалуйста, не могу найти ошибку
    Code
    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])
     
  2. 1mNotS0rr1
    1mNotS0rr1 May 11, 2020 Banned 119 May 26, 2018
    Бля сложна пизда за косарь минимум тут кто согласится этой парашей страдать
     
  3. Молодость
    Ну а где import numpy?
    The post was merged to previous May 11, 2020
    И да, когда запускаешь прошу - пишет же место ошибки, не понимаю, какие тогда проблемы? Может ты отступы не так ставил...
     
    1. Foxegon
      Молодость, Помню когда из-за отступов чуть не проебался с экзаменом
      Спасибо нормальной училке
    2. WORDIS Topic starter
      Молодость, Эм бл, это и так понятно, но ошибки не вызывает, и бл пока модер полдня тему постил я уже все решил
Top
Loading...