1차원 단원 자동
9288 단어 Python
1차원 장치 자동 설치
자동양고기를 조사할 기회가 생겨서 실시해 봤어요.
비망록으로 삼다
그때 참고한 사이트는 여기.입니다.
pygame 드로잉이나 부분 수정 코드를 사용합니다.
소스 코드는 다음과 같습니다.
cellular_automaton.py# coding:utf-8
import pygame
def dec2bin(n):
# 10進数を2進数の01リストに変換
bit_list = []
for i in range(8):
bit_list.append(n % 2)
n = int(n // 2)
return bit_list
def ca(width, height, rulenum):
# 1次元セルオートマトンの図を描画
results = []
# 初期状態設定
first_row = [0] * width
list_id = int(width // 2)
first_row[list_id] = 1
results.append(first_row)
# ルールの番号を2進数に変換
rule = dec2bin(rulenum)
for i in range(height - 1):
old_row = results[-1]
new_row = []
for j in range(width):
# 前後のインデックスの状態を参照し次のループの状態を決定する。
n = int(4 * old_row[(j-1) % width] + 2 * old_row[j] + old_row[(j+1) % width])
new_row.append(rule[n])
results.append(new_row)
return results
if __name__ == "__main__":
width = 300
height = 100
rule_num = 150 # ここのルールを255までの値で指定することで様々なパターンが出力されます。
pygame.init()
screen = pygame.display.set_mode((width*2, height*2))
pygame.display.set_caption("Cellular Automaton {}".format(rule_num))
results = ca(width, height, rule_num)
screen.fill((0, 0, 0,))
for i in range(len(results)):
for j in range(len(results[i])):
if results[i][j] == 0:
pygame.draw.rect(screen, (255, 255, 255), (j*2, i*2, 2, 2))
else:
pass
pygame.display.update()
# 一時的に処理を停止する。
pygame.time.wait(10000)
# 制作したイメージをPNGに変換し保存。cellular_automaton.pyと同じディレクトリにimgが出力される。
pygame.image.save(screen, 'pic.png')
이렇게 출력합니다.
앞으로도 2차원, 3차원을 실시하고 싶다.
Reference
이 문제에 관하여(1차원 단원 자동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kkttm530/items/09faffe6b3de2daf54b1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# coding:utf-8
import pygame
def dec2bin(n):
# 10進数を2進数の01リストに変換
bit_list = []
for i in range(8):
bit_list.append(n % 2)
n = int(n // 2)
return bit_list
def ca(width, height, rulenum):
# 1次元セルオートマトンの図を描画
results = []
# 初期状態設定
first_row = [0] * width
list_id = int(width // 2)
first_row[list_id] = 1
results.append(first_row)
# ルールの番号を2進数に変換
rule = dec2bin(rulenum)
for i in range(height - 1):
old_row = results[-1]
new_row = []
for j in range(width):
# 前後のインデックスの状態を参照し次のループの状態を決定する。
n = int(4 * old_row[(j-1) % width] + 2 * old_row[j] + old_row[(j+1) % width])
new_row.append(rule[n])
results.append(new_row)
return results
if __name__ == "__main__":
width = 300
height = 100
rule_num = 150 # ここのルールを255までの値で指定することで様々なパターンが出力されます。
pygame.init()
screen = pygame.display.set_mode((width*2, height*2))
pygame.display.set_caption("Cellular Automaton {}".format(rule_num))
results = ca(width, height, rule_num)
screen.fill((0, 0, 0,))
for i in range(len(results)):
for j in range(len(results[i])):
if results[i][j] == 0:
pygame.draw.rect(screen, (255, 255, 255), (j*2, i*2, 2, 2))
else:
pass
pygame.display.update()
# 一時的に処理を停止する。
pygame.time.wait(10000)
# 制作したイメージをPNGに変換し保存。cellular_automaton.pyと同じディレクトリにimgが出力される。
pygame.image.save(screen, 'pic.png')
Reference
이 문제에 관하여(1차원 단원 자동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kkttm530/items/09faffe6b3de2daf54b1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)