Skip to content

h4cksaw32/CellularDecay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

CellularDecay

This is a simple cellular automata program that takes a grid of cells decays them.

How it works

Each cell is evaluated based on how many neighbors it has within a square area. If the number of neighbors fall below a certain threshold, the cell dies (becomes blank). This process repeats throughout the whole grid until there are no cells left to kill (or if deaths go below a certain amount).

How to use

There are several options to control how the cells decay. Look inside the code files for more details.
Each branch is the code ported to a different language. I might add more if I revisit this small project. The main branch is written in Python(3.14), which is the original language I wrote it in.
Feel free to submit pull requests of your own ports, or extra features.

Extra features

This library can also print all iterations to a folder (including neighbor counts for each of them if you choose to).

Examples

Single-type

Settings:

threshold = 4
radius = 1
minDelta = 1
discriminate = false

Initial map:

XXXXXXXXXX XXX   XX  X X X  X   
  X  XX    X XXXX XX  XXXXXXXX X
  XXX XXXXXXXX  XXXXX  XXXXXXXXX
  X X X X X  XX XXXX XXXXX  X  X
X  X  XXXXXXXX XX XXXXXXXX XXX X
X XX  XX XX XXXXXX XXX XXXXX   X
XXX XX   XXXXXXXXXXXXXXX XXXX XX
  XXX    XXXXXXX XXX XXXXXXXX  X
 XXXX  XXXXXXXXXX    XXXX  XXXXX
X X XXXXXXXX   XXX X XX XX XXXXX
 XXXXXXX X   XX XXX XX    XX  XX
X XXXX   XXXXXX XX XXXXX XX  XX 
 X X  X XX X XXXXXX XXXXXXX XXXX
XX XXX X   XXXXXXX XXXXX  X X XX
X XXX  X    XXXXXXX       X  XXX
 XX XXX   XXX X XXX  X XX XXX XX
XXX  XXXXXXX XXXXX  XXX  X  XX X
  X X  X X XX XXX X X XXXXXXXXXX
 XXX  XXXXX XXXXXXXXX XXXXX XXXX
 X XXXXXXXXXXX XX  XX XXXXXXX XX
X XX XXXXXXXX XXXXX XX X  X XX X
 XXX XX XX X XX  XXX XXX X  XXXX
XXX XXXX X  XXX  X XXXX  XXXXX X
XXXXX XXXX  XX XX  XXXX X X XXXX
X XXX XXXXX X  XXX XXX  XXX  XXX
XXXXX XXXXXXXXX XX XX  XX XX XXX
 XXXX XXXX X   XX XXXXXXX X XXXX
XXXXXXXX X XXXX XX X  XXX XXXX X
XXX XX XX XX   X X X XXXXXXXX X 
 XX XXX XXXXXXXXXXXXXX  XXXXXXXX
 X X XXXXXX X X XXXX XXX   XXXX 
XX XXXX  XXXXX XXXXX XXX XXX XX 

Mid-decay (20th iteration):

                                
                  XX            
                 XXXX  XX       
                XXXX XXXXX      
               XX XXXXXXXX      
            XXXXXX XXX XXXXX    
          XXXXXXXXXXXXXX XXXX   
         XXXXXXX XXX XXXXXXXX   
       XXXXXXXXXX    XXXX  XXXX 
    XXXXXXXX   XXX   XX     XXXX
   XXXXX        XXX XX        XX
   XXX          XX XXXX      XX 
   X         XXXXXX XXX      XXX
   XX       XXXXXX XXX        XX
   XX       XXXXXXX           XX
    XXX   XXX X XXX           XX
     XXXXXXX XXXXX          XX X
       X X XX XXX X    XXXXXXXXX
      XXXXX XXXXXXXX  XXXXX XXXX
     XXXXXXXXX XX  XX XXXXXXX X 
     XXXXXXXX   XXX XX X    XX  
     XX XX       XXX XX     XX  
    XXXX X         XXXX     XX  
   XX XXXX         XXXX     XXX 
  XXX XXXXX         XX       XXX
 XXXX XXXXX                  XXX
 XXXX XXXX                  XXX 
  XXXXXX                   XXX  
    XX                    XXX   
                           X    
                                
                                

Final result (58 iterations):

                                
                  XX            
                 XXXX  XX       
                XXXX XXXXX      
               XX XXXXXXXX      
            XXXXXX XXX XXXX     
          XXXXXXXXXXXXXX XX     
         XXXXXXX XXX XXXXX      
       XXXXXXXXXX    XXXX       
    XXXXXXXX   XXX   XX         
   XXXXX        XXX XX          
   XXX          XX XXXX         
   X         XXXXXX XXX         
   XX       XXXXXX XXX          
   XX       XXXXXXX             
    XXX   XXX X XXX             
     XXXXXXX XXXXX              
       X X XX XXX X             
      XXXXX XXXXXXXX            
     XXXXXXXXX XX  XX           
     XXXXXXXX   XXX XX          
     XX XX       XXX XX         
    XXXX X         XXXX         
   XX XXXX         XXXX         
  XXX XXXXX         XX          
 XXXX XXXXX                     
 XXXX XXXX                      
  XXXXXX                        
    XX                          
                                
                                
                                

Multiple types

This example only detects neighbors of the same type. Settings:

threshold = 7
radius = 2
minDelta = 1
discriminate = true

Initial map:

ZZXYZZXYXXYXXZXZXZXXZYZZXYXYZZXY
XZXYYXYZZZZYXYZZZZZZZYYYYYZZXXXX
YYYXZYZYZZYYZZXZYXZZYXYXXZXXXYYX
ZZYZYYZXZZXYYZYYXYYZZYZXXXZYYYYY
XZZXZXXXXXYYXXZXXZXZXYZXZZYYZYXY
XXYXYZYXXYZZYYYZZXXZYZYYYZXYZZYX
XYZYZXXXZZZXZZZZZYXXYZZXYXXXZZXX
XZYYYZXZZZXXYXXXXZXXYXZXYXZYYXXY
XXXZZXXXYZZXZZZYXXYXZXYYXXZZZZYY
YXXYXYYZXXYXYXZXYZXXZXZYYXXYXZZX
YXZZZXZYYZZXYYZYZYYYYYXZZXZYZYYZ
XYXZZYXYZXZZYXZYZYYYYXZYYZYYZXYZ
ZZXXXYYZXZYXZXXXZYZYZYYYYXYZZZYY
XXXZXZXYXXZZYYXXXXYXZZYYZYYYZYXX
XYXYZXYZXXXZYZZZXYZXZXZYZYYZZYZX
XZXYZZXZZYYYXXYZZXZXYXYYXZXZYZZX
ZZYZYXXYXYYYXYZXXXZYYYZXZYXZZXXZ
ZXYXZXXZYYYZXXYZXYZYZZZZXYXXYYZX
XYZXYYZZXYZXXYZZXYYXYYYXZYZZYZZZ
YXXXXXZXXZZZYYXXYYYYYZZYZZXZYZXZ
ZZYXXZYYZXXZXYXZYZXXXXZZZZXZXZYX
YYZYZXXXXXZXYYYXZZXYZXYXXZXXXZXY
XXZXZZXZYZYZZXXZYYZXZZZXZZZXYZYZ
ZYYXYZYZZYZXXZXZZZZZZZZZYYXYXZYX
ZYXXXXXXYZYZYYYYXXXZXZZZYZZYZZYX
XYXZYZXXXXYXXZYYYXXZXZZXXZZXZYZX
XZZYZYYXXZZYYXYYXXZYXXXXXZYXYYXY
XXYZZYZXXYZZZYZXYXXZYYZYZXXXXZZX
ZYYYYZZZYXYYZZXXZXZYZXYXXZXZZZZX
XZYZXZXYXYXZXXYYXXZYYZYYZZZXXXZZ
XXYXXYYXYXZXYZYXZZZZZZXXZXYYZXYX
ZYYZXXXZZXZZYXXXZXXZXXXXZZZXYXXY

Mid-decay (7th iteration):

                                
                                
                                
                                
                                
                                
     XXX                        
      X                         
                                
                                
                 YYYYY          
                 YYYY  YY       
  XXX            Y Y YYYY       
  X X X           Y   YY Y      
     X  X              Y        
      X  YYY          Y         
     X   YYY                Z   
     XX  YY                     
   X                    Z ZZ Z  
   XXX                  ZZ Z    
                      ZZZZ Z    
                    Z    Z      
                    ZZZ ZZ      
                   ZZZZZ        
       X           Z ZZZ        
      XXXX           ZZ         
       XX                       
       XX                       
                                
                                
                                
                                

Final result (15 iterations):

                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                 YYY            
                 YYY            
                 Y Y            
                                
                                
         YYY                    
         YYY                    
         YY                     
                                
                                
                                
                    Z           
                    ZZZ         
                   ZZZZZ        
                   Z ZZZ        
                     ZZ         
                                
                                
                                
                                
                                
                                

About

A simple cellular automata library that decays cells based on surrounding tiles.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages