# Genuary2026_CrazyAutomata

# CellularPoetry

For the 9th Prompt of **Genuary2026 : Crazy Cellular Automata,** ***CellularPoetry*** rules are coded in **Python.** Where poems are made from various cellular rule sets to make the images come to life and give restrictions to the poet.

### Poem

```python
Achieving Every Assumption covered in Aerial Areas, Calculating Creative endeavours endlessly

Futuristic Foresight fading away, consistency constantly evaporating, Pleasure Pausing, 
Intermission Awaits

Fulfilling any hypothesis unhidden around airborne dreamscapes, Arriving and Pollinating Plots
```

## Cell & Cellular Output for Poem 1

### Cells

```python
[1 1 1 1 0 0 0 0 0 1 1]
[0 0 1 1 1 0 1 0 0 1 1]
```

### Cellular Automata Outputs

```python
vowel vowel vowel consonant vowel vowel vowel consonant consonant vowel vowel
consonant consonant consonant vowel consonant consonant vowel consonant consonant vowel vowel
synonym synonym synonym antonym synonym synonym switch switch switch switch switch
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768082142946/2b11bc1a-b0f7-43c4-b012-1ea9d1e8ebe1.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768082152067/cec04a66-2146-44f8-b9e1-298f7102e851.png align="center")

## Cell & Cellular Output for Poem 2

```python
Seeing, Strolling, Swimming and Actions and Abbreviations may make no sense

Admiring all aspects profoundly with deliberate intentions, isolating and intertwining insights

Blinded, rushing, drowning plus efforts plus thoughts, freeing negating sparsely ignorance


Without Aspirations, Ambition,  Emotions, Interactions, Internalizing, instructions,  
Openness, Observing, Unity, Union

Emitting overdosing amounts of Thoughts with flowing concern, capturing the aspiring influences

With considerations mounting beyond connections, communication, explanations, freeing gazes, 
Relatable Sequences?
```

### Cells

```python
[1 0 0 1 1 0 1 1 0 0 0]
[1 1 0 0 0 1 1 1 1 1 1]
[0 1 0 1 1 1 1 1 1 1 1]
[1 1 1 1 0 0 0 0 0 1 1]
```

### Cellular Automata Outputs

```python
consonant consonant consonant vowel vowel vowel vowel consonant consonant consonant consonant
vowel vowel vowel consonant consonant consonant vowel vowel vowel vowel vowel
antonym antonym antonym synonym synonym synonym switch antonym antonym antonym antonym
consonant vowel vowel vowel vowel vowel vowel vowel vowel vowel vowel
vowel vowel vowel vowel consonant consonant consonant consonant consonant vowel vowel
antonym switch switch switch synonym synonym synonym synonym synonym switch switch
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768082063027/95129b0c-f935-4cee-98b3-dfd0d700c863.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768082071215/cb8fef54-b8e9-41fd-99dd-b347105294fb.png align="center")

## More Images

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768083207017/947982d6-1982-4821-8368-5137e503127f.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768083213095/ef6460c6-d85c-4b15-90f6-fd2c37bed10b.png align="center")

## Rule Sets

Follows the traditional Neighbourhood model asscoiated with Cellular Automata but with the addition of the second rule, **CellularPoetry** plays with the concept of what happens if a cell met their doppelganger that occupies the same spot as them.

* ### 0’s are Vowels and 1’s are Constants
    

```python
#My Rule ??
'''
000 = 1
001 = 1
010 = 0
011 = 1
100 = 1
101 = 0
110 = 0
111 = 0
'''

#Rule 30
'''
000 = 0
001 = 1
010 = 1
011 = 1
100 = 1
101 = 0
110 = 0
111 = 0
```

* ### Rule 2 : For Synonyms , Antonyms & Switches
    

```python
'''
00 = 1
01 = Synonym of word from 0
10 = Antonym of word from 1
11 = 0
'''
```

## Python Code

```python
import numpy as np

C = np.random.randint(low=0, high=2, size=(5, 11))

print(C)


def PoetryPrep(x):
    #firstline = [1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0]
    
    x = x.tolist() #turs numpyarrat to list
    
    x = x + x[:2] #includes first 2 elements to wrap the list for the celluar automata rules
    

    neighbours = []

    for i in range(0, len(x)-1, 3):

    #range from the index i , with every 3 elements, the 3 different iterations assures that all neighbours get listed
        neighbours.append(x[i:i+3])
        neighbours.append( x[i+1:i+1+3])
        neighbours.append(x[i+1:i+1+3])


    neighbours.pop() #pop the last element

    return neighbours

def AutomataPoetry1(cells):
    
    AutomataVocab = []
    
    vowels = [[0,0,0],[1,0,1],[1,1,0],[1,1,1]]
    
    for i in range(0, len(cells)): #for every element
        
        if (cells[i] in vowels):
            AutomataVocab.append("vowel")
            #print(" vowel ")
        else:
            AutomataVocab.append("consonant")
            #print(" consonant ")
    print(*AutomataVocab)
    
    return AutomataVocab
    
    
def AutomataPoetry2(cells):
    
    AutomataVocab = []
    
    vowels = [[0,1,0],[1,0,0],[1,1,0],[1,1,1]]
    
    for i in range(0, len(cells)): #for every element
        
        if (cells[i] in vowels):
            AutomataVocab.append("vowel")
            #print(" vowel ")
        else:
            AutomataVocab.append("consonant")
            #print(" consonant ")
    
    print(*AutomataVocab)
    
    return AutomataVocab

def FinalAutomataCheck(poem1,poem2):

    AutomataFinale = []
    
    for i in range(0,len(poem1)):
        
        if( poem1[i] == poem2[i]):
            AutomataFinale.append("switch")
        elif( poem1[i] == "vowel" and poem2[i] == "consonant"):
            AutomataFinale.append("synonym")
        else:
            AutomataFinale.append("antonym")
            
    print(*AutomataFinale)
    
    #return AutomataFinale


FinalAutomataCheck(AutomataPoetry1(PoetryPrep(C[0])),AutomataPoetry2(PoetryPrep(C[1])))
```

### Data Visualization Code

```python
#NumberCheck

def PoetryPrep(x):
   
    
    #x = x.tolist() #turs numpyarrat to list
    
    x = x + x[:2] #includes first 2 elements to wrap the list for the celluar automata rules
    

    neighbours = []

    for i in range(0, len(x)-1, 3):

    #range from the index i , with every 3 elements, the 3 different iterations assures that all neighbours get listed
        neighbours.append(x[i:i+3])
        neighbours.append( x[i+1:i+1+3])
        neighbours.append(x[i+1:i+1+3])


    neighbours.pop() #pop the last element

    return neighbours

def AutomataPoetry1(cells):
    
    AutomataVocab = []
    
    vowels = [[0,0,0],[1,0,1],[1,1,0],[1,1,1]]
    
    for i in range(0, len(cells)): #for every element
        
        if (cells[i] in vowels):
            AutomataVocab.append(0)
            #print(" vowel ")
        else:
            AutomataVocab.append(1)
            #print(" consonant ")
    print(AutomataVocab)
    
    return AutomataVocab
    
    
def AutomataPoetry2(cells):
    
    AutomataVocab = []
    
    vowels = [[0,1,0],[1,0,0],[1,1,0],[1,1,1]]
    
    for i in range(0, len(cells)): #for every element
        
        if (cells[i] in vowels):
            AutomataVocab.append(0)
            #print(" vowel ")
        else:
            AutomataVocab.append(1)
            #print(" consonant ")
    
    print(AutomataVocab)
    
    return AutomataVocab

def FinalAutomataCheck(poem1,poem2):

    AutomataFinale = []
    
    for i in range(0,len(poem1)):
        
        if( poem1[i] == poem2[i]):
            AutomataFinale.append(10)
        elif( poem1[i] == 0 and poem2[i] == 1):
            AutomataFinale.append(2)
        else:
            AutomataFinale.append(-1)
            
    #print(*AutomataFinale)
    
    return AutomataFinale
```

```python
FinalAutomataCheck(AutomataPoetry1(PoetryPrep(d[0])),AutomataPoetry2(PoetryPrep(d[1])))
FinalAutomataCheck(AutomataPoetry1(PoetryPrep(d[2])),AutomataPoetry2(PoetryPrep(d[3])))
FinalAutomataCheck(AutomataPoetry1(PoetryPrep(d[4])),AutomataPoetry2(PoetryPrep(d[0])))

#Poem 1

plt.imshow(newMap, cmap='hot', interpolation='nearest')
plt.show()

plt.imshow(newMap, cmap='Blues')
plt.show()


#Poem 2
plt.imshow(newMap2, cmap='Oranges', interpolation='nearest')
plt.show()

plt.imshow(newMap2, cmap='bwr_r')
plt.show()
```
