123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import argparse
- import logging
- import numpy as np
- from random import randint
-
- logging.basicConfig(level=logging.DEBUG,
- format="%(created)d %(asctime)s:%(module)s(%(lineno)d):%(levelname)s:%(message)s %(relativeCreated)dms")
- logger = logging.getLogger(__name__)
- logger.debug('Logger started')
-
- from . import turmit, rpnlib
- from .turmit import Turmit
-
- parser = argparse.ArgumentParser(description='Genetic Turmit Evolver')
-
- parser.add_argument('--list-op', action='store_const', default=False,
- const=True)
- parser.add_argument('--list-var', action='store_const', default=False,
- const=True)
- parser.add_argument('--rand-sym', '-r', action='store_const', default=False,
- const=True)
-
-
- args = parser.parse_args()
-
- if args.list_op:
- for i,(op, desc) in enumerate(rpnlib._op_list.items()):
- print('#%02X %7s%s' % (i, op.upper(), desc[0].__doc__))
- exit(0)
- elif args.list_var:
- print([op.upper() for op in rpnlib._op_list.keys()])
- exit(0)
- elif args.rand_sym:
- for _ in range(10):
- print(rpnlib.RpnSymbol.random())
- exit(0)
-
- x = 512
- y = 512
- nb_turmit = 10
- steps = 1024
-
- img = [[(0,0,0) for _ in range(x)] for _ in range(y)]
-
- prog = rpnlib.RpnExpr.random(10)
- prog.append(rpnlib.RpnSymbol.rand_op())
-
- turmits = [Turmit(prog=prog) for _ in range(nb_turmit)]
- turmits_color = [(randint(0,255), randint(0,255), randint(0,255))
- for _ in range(nb_turmit)]
- turmits_pos = [(randint(0,y-1), randint(0,x-1)) for _ in range(nb_turmit)]
-
- import time
-
- print(str(prog))
- start = time.time()
- for step in range(steps):
- for i in range(nb_turmit):
- ty, tx = turmits_pos[i]
- r,g,b = img[ty][tx]
- turmit = turmits[i]
- tdir = turmit(x=tx,y=ty,r=r,g=g,b=b) % 8
-
- img[ty][tx] = turmits_color[i]
-
- if tdir == 0 or tdir == 4 or tdir == 5:
- tx += 1
- if tdir == 1 or tdir == 4 or tdir == 6:
- ty += 1
- if tdir == 2 or tdir == 6 or tdir == 7:
- if tx == 0:
- tx = x -1
- else:
- tx -= 1
- if tdir == 3 or tdir == 5 or tdir == 7:
- if ty == 0:
- ty = y - 1
- else:
- ty -= 1
- tx %= x
- ty %= y
- #print('Turmit #%d dir:%d x:%d y:%d prog="%s"' % (i, tdir, tx, ty,
- # str(turmit._prog)))
- turmits_pos[i] = (ty,tx)
- if step % 100 == 0:
- print('%d/%d' % (step, steps))
- stop = time.time()
- print('Exec %d steps in %.2fs : %.4fs/step' % (steps, stop - start,
- (stop - start) / steps))
- from .fractdim import *
- I = rgb2gray(np.array(img))
- print(fractal_dimension(I))
-
- import scipy.misc
- scipy.misc.imsave('/tmp/GTE.jpg', img)
- print('saved to : /tmp/GTE.jpg')
- print()
-
-
|