Code: Select all
import golly as g
class Rail:
def __init__(self, x, y):
self.x = x
self.y = y
def PlaceBlocks(self, length, addDerbis, dx):
if not addDerbis:
dx = 1
if not addDerbis:
rl = g.parse("10$28b2o114b2o114b2o114b2o114b2o114b2o$28b2o114b2o114b2o114b2o114b2o114b2o!", 0, 0, 1, 0, 0,1)
else:
rl = g.parse("9$16bo$15bobo$15bobo$16bo3$21b2o$20bo2bo$21b2o2$53b2o114b2o114b2o114b2o114b2o114b2o$53b2o114b2o114b2o114b2o114b2o114b2o!", -25, -9, dx, 0, 0,1)
delta = 0
if dx == -1:
delta = 637 + 50
for i in xrange(0, length):
g.putcells(rl, self.x + delta, self.y)
self.y += 31
def PlaceDownDerbis(self, dx):
downPtrn = "10$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o30$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o29$53b2o$53b3o107b2o114b2o114b2o114b2o$53b3o107b2o114b2o114b2o114b2o107b2o$55bo564bobo$45b2o4b2o568b2o6b2o$45b2o4bob3o565b2o6b2o$52b4o561bobobo$52b2o564b2o$618bob2o4bobo$627b2o$627bo3$56bo$55bobo$43b2o12bo573b2o$43b2o11bo574b2o7$47b2o578b2o$47b2o578b2o8$163b2o114b2o114b2o114b2o$163b2o114b2o114b2o114b2o2$10bo$9bobo43b2o562b2o$9bobo43b2o562b2o$10bo2$510b3o$15b2o491bo3b2o$14bo2bo492bobo$15b2o489b4o2b2o5bo4b2o$160bo344b2o5b2o2bob3o3bobo$159bobo344bobo3b2o2b2o4bo3bo$158b2ob2o344b2o7b5o4b2o$159bob2o354bo2bo$156b2o2b3o359bo$161bo$160bo$159b2o$164b2o$164b2o$47b2o114b2o346b2o114b2o$47b2o114bo347b2o114b2o3$65b2o87bo$64b2o88bobo$66bo87b2o3$279b2o114b2o129bo$279b2o114b2o130bo$525b3o$10bo$9bobo43b2o98b2o362b2o98b2o$9bobo43b2o98b2o362b2o98b2o$10bo86bobo$98b2o$98bo$15b2o$14bo2bo554bobo$15b2o555b2o$573bo10$47b2o114b2o346b2o114b2o$47b2o114b2o346b2o114b2o$125b2o$124b2o$126bo6$392bobo$391bo$10bo274bo102bob3obo2b2o$9bobo43b2o98b2o129b2o100bo2bo5b2o120b2o98b2o$9bobo43b2o98b2o230bo131b2o98b2o$10bo270b3o102b3obo$276b3o3bo2bo100bo$283b3o99b3ob3o$15b2o267bo101bo3bo$14bo2bo369b3o$15b2o371bo3$275b2o122b2o$275b2o122b2o7$47b2o114b2o20b2o92b2o114b2o114b2o114b2o$47b2o114b2o19b2o93b2o114b2o114b2o114b2o$186bo6$225bo$226b2o$225b2o2$10bo233bo$9bobo43b2o98b2o86bo43b2o98b2o130b2o98b2o$9bobo43b2o98b2o86b3o41b2o98b2o54bobo73b2o98b2o$10bo432b2o$444bo$436bo$15b2o420bo$14bo2bo417b3o$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o$94bo$94bobo$94b2o2$321bo$322b2o262bo$321b2o264bo$585b3o2$349bo$10bo336b2o$9bobo43b2o230b2o59b2o37b2o230b2o$9bobo43b2o230b2o98b2o230b2o$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo43b2o230b2o98b2o230b2o$9bobo43b2o230b2o98b2o230b2o$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo275b2o98b2o$9bobo275b2o98b2o$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o3$381bo$382b2o$381b2o3$289bo$287b2o$287b2o$10bo$9bobo277bo97b2o$9bobo275b2o98b2o$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o11$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o11$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o10$53bo$52b3o108b2o114b2o114b2o114b2o114b2o$51bob2o108b2o114b2o114b2o114b2o114b2o2$45b2o5bo2b2o$45b2o5b2ob2o$52b2o7$10bo45bo$9bobo42bo2bo$9bobo31b2o9bobo$10bo32b2o10bo3$15b2o$14bo2bo$15b2o2$47b2o$47b2o8$163b2o114b2o114b2o114b2o$163b2o114b2o114b2o114b2o107b2o$618bo2bo$620bo8b2o$55b2o560bo2bo8b2o$55b2o560b2o2bo$627bo$619b3o3bobo$626b2o3$5bo$3b2o5bo$4b2o3bobo$9bobo619b2o$10bo620b2o3$15b2o$14bo2bo$15b2o2$47b2o578b2o$47b2o578b2o5$5b2o$5bobo$5bo$163b2o114b2o114b2o114b2o$163b2o114b2o114b2o114b2o3$55b2o562b2o38bo$55b2o41bo520b2o37b3o$96bobo558bo3bo$97b2o559b2obo$659b2o$510b3o$508b2ob2o8bo139bo$507bo6bo5b4o135bo2bo$10bo496bo5b2o2bob4obo132bobob2o$9bobo147b3o345b2o7bo7b2o$9bobo147bobo352bobo3bob3o132bobo$10bo146bo3bo347bo4bo2bobo2b2o134bo$157bob2o2bo347b2o$157bo3bo$15b2o142b2o$14bo2bo147bo$15b2o142bo5bo$159bo4bo449b2o$47b2o113b3o346b2o100bobo11b2o$47b2o462b2o102bo11b2o3$65b2o87bobo$65bobo86b2o$65bo89bo3$279b2o114b2o127bobo$279b2o114b2o128b2o$525bo2$55b2o98b2o362b2o98b2o$55b2o98b2o362b2o98b2o4$573bo$573bobo$573b2o$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo536b2o$15b2o536bobo$555bo$47b2o114b2o346b2o114b2o$47b2o114b2o346b2o114b2o$125b2o$125bobo$125bo6$392b2o$392b3o$284bobo102b2o2b2o2b2o$55b2o98b2o129bo101b3o6b2o120b2o98b2o$55b2o98b2o125bo3bo100bo3bo127b2o98b2o$277bo4bo104b3o$277bo4bo2bo100bo4bo$277bo5b3o100b2ob2o$386bo3bo$387b3o2$10bo$9bobo$9bobo263b2o122b2o$10bo264b2o122b2o2$494b2o$15b2o476bobo$14bo2bo477bo$15b2o2$47b2o114b2o20b2o92b2o114b2o114b2o114b2o$47b2o114b2o20bobo91b2o114b2o114b2o114b2o$185bo6$226bo$224bobo$225b2o2$245bo$55b2o186b2o42b2o98b2o55bo74b2o98b2o$55b2o187b2o41b2o98b2o55bobo72b2o98b2o$444b2o2$435bo$436b2o$435b2o2$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o$94bobo$94b2o$95bo2$322bo$320bobo261bobo$321b2o262b2o$585bo2$348bo$348bobo$55b2o230b2o59b2o37b2o230b2o$55b2o230b2o98b2o230b2o7$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o12$55b2o230b2o98b2o230b2o$55b2o230b2o98b2o230b2o7$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o12$287b2o98b2o$287b2o98b2o7$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o3$382bo$380bobo$381b2o3$288bo$288bobo$288b2o$288bo$287b2o98b2o$287b2o98b2o7$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o20$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o20$10bo$9bobo$9bobo$10bo3$15b2o$14bo2bo$15b2o2$47b2o114b2o114b2o114b2o114b2o114b2o$47b2o114b2o114b2o114b2o114b2o114b2o!"
rl = g.parse(downPtrn, -19, 0, dx, 0, 0, 1)
delta = 0
if dx == -1:
delta = 675
#rl = g.evolve(rl, self.state)
g.putcells(rl, self.x + delta, self.y)
self.y += 29 * 31 - 2 * 9
def PlaceUp(self, dx, iters):
upPtrn = "4$61bo$60bobo$60bobo$61bo3$66b2o$65bo2bo$66b2o2$98b2o114b2o114b2o114b2o114b2o114b2o$98b2o114b2o114b2o114b2o114b2o114b2o12$689b2o$690b2o$689bo6$61bo$60bobo$60bobo$61bo3$66b2o$65bo2bo$66b2o2$98b2o114b2o114b2o114b2o114b2o114b2o$98b2o114b2o114b2o114b2o114b2o114b2o10$629b2o$630b2o$629bo2$102bo$101b3o$100b2o2bo$101b2obo$98b2ob2o$99bo5bo$61bo37bo4bo$60bobo37bo2bo$60bobo38bo$61bo44bo$107bo$105b3o$66b2o$65bo2bo$66b2o2$214b2o114b2o114b2o114b2o$214b2o114b2o114b2o114b2o$681bo$675bo5bo$106b2o566bo5b3o$106b2o566bobo$674b2o4b3o$669b3o9bo2$569b2o$570b2o$569bo3$682b2o$682b2o6$61bo$60bobo35b2o578b2o$60bobo35b2o578b2o$61bo7$214b2o114b2o114b2o114b2o$214b2o114b2o114b2o114b2o147bo$712b2o$711b2o$106b2o562b2o$106b2o562b2o$711b2o$509b2o199bobo$510b2o200bo$509bo10$206bobo$206bo2bo$61bo143bo3b2o$60bobo35b2o105bo472b2o$60bobo35b2o578b2o$61bo143bo2b3o358b3o$205b2o361bo3bo$207b3o428bo$207b3o357bo70bobo$568b5o65b2o$571bo2$330b2o114b2o$330b2o114b2o2$216b2o342b2o$106b2o98b2o8b2o342b2o8b2o79b2o17b2o$106b2o98b2o9bo231b2o119b2o78bobo17b2o$218bo231b2o200bo$217b2o230bo$216b3o$216b2o$222bo337bo$559bobo$561b2o$558b2obo$558bo2bo$559b2o6$61bo$60bobo35b2o66bo47b2o346b2o114b2o$60bobo35b2o67bo46b2o346b2o114b2o$61bo103b3o5$446bo$447bo$446bo$331bo113b3o$330b5obo109b2o143b2o$330bo2bo3bo51b2o54b2ob2o140bobo$106b2o98b2o128bo53b2o57bo120b2o20bo77b2o$106b2o98b2o122b3o2bo53bo53bo3bo2bo119b2o98b2o$331bo4b2o4b2o98bobo2b2obo$336b2o7bo95bo4bo3b2o$335bo9b3o94bobo3b2o$337bo4b2o4bo94bob2obo$341bob3o3bo97bo$322b2o17bo4bobo$318bo3bobo16bo2bo$316b2o14bo10bo$322bo3bo123b2o$318b3ob2ob2o2b2o119b2o$329b2o$325bo2b3o$325bo$326b2o$310bo$61bo246b2o199bo$60bobo35b2o114b2o93b2o19b2o114b2o61bobo50b2o114b2o$60bobo35b2o114b2o114b2o114b2o61b2o51b2o114b2o$61bo209bo$272bo199bo$270b3o200b2o$472b2o4$531b2o$329b2o199bobo$330b2o200bo$329bo$106b2o98b2o130b2o98b2o130b2o98b2o$106b2o98b2o130b2o98b2o130b2o98b2o9$359bo$357bobo261bobo$358b2o262b2o$622bo$152bo$150b2o261bo$151b2o260bobo$61bo351b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo516bo$578bobo$578b2o9$106b2o230b2o98b2o130b2o98b2o$106b2o230b2o98b2o130b2o98b2o16$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo11$106b2o230b2o98b2o230b2o$106b2o230b2o98b2o230b2o16$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo11$338b2o98b2o$338b2o98b2o7$419bo$417bobo$418b2o3$353bo$353bobo$353b2o2$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo11$338b2o98b2o$338b2o98b2o16$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo28$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo28$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo28$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo28$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo28$61bo$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o114b2o$61bo10$675bo$674bobo$673b2ob2o$674bob2o$671b2o2b3o$676bo$675bo$674b2o$679b2o$679b2o$678b2o$678bo3$669bo$669bobo$669b2o2$61bo$60bobo35b2o114b2o114b2o114b2o114b2o$60bobo35b2o114b2o114b2o114b2o114b2o$61bo2$670b2o$670b2o4$98bo$96bob2o8bo$95b3o2bo7b3o$94b2ob5o2bo2bo3bo$95bob2o5b3o4bo$96b6o2b3obob2o$97b4o3b2o3bo7$98b2o578b2o$98b2o578b2o7$61bo50bo$60bobo50bo100b2o114b2o114b2o114b2o$60bobo48b3o100b2o114b2o114b2o114b2o$61bo2$106b2o562b2o$106b2o562b2o17$98b2o578b2o$98b2o578b2o7$214b2o$213bo116b2o114b2o$213bo116b2o114b2o$562b3o3bo$213b2ob2o344bo2b4o$106b2o106b2ob2o344bo2b3o101b2o$106b2o103bo3bo2bo343b3o105b2o$210b2o2b3obo352b2o$209b2o2bo4b2o347b10o102b2o$210b3obob3o351bo3b4o100bobo$211b4ob2o349bo2bo2bo4b3o99bo$214b2o352bo8b4o$554bo18b4o3bo$549bo4b2o6b2o10b3o$549bobo3b2o8bo$218b2o329bobo2b2obo7bo$218b2o335b4obo$551b2o8b3o$557b4o$558b2o$559bo$541bo$541bobo$98b2o114b2o325b2o19b2o114b2o$98b2o114b2o346b2o114b2o$609bo$241bo367bobo$242bo366b2o$240b3o4$330b2o114b2o$330b2o114b2o3$106b2o98b2o362b2o98b2o$106b2o98b2o362b2o47b2o49b2o$618bobo$620bo7$589bobo$590b2o$590bo2$334bo$182bo150b3o$180b2o150bo2b2o$181b2o149bo$98b2o114b2o117bo105bo122b2o114b2o$98b2o114b2o121bo100b3o121b2o114b2o$335bobo103bo$336b2o101b2o$440bo2$172bo$173bo$171b3o4$448b2o109b2o$106b2o98b2o130b2o98b2o8b2o108bobo9b2o98b2o$106b2o98b2o130b2o98b2o120bo9b2o98b2o5$450bo$449b3o$448b2ob2o$447b3o$448bob2o$449b2o$450bo6$98b2o114b2o114b2o114b2o114b2o114b2o$98b2o114b2o114b2o114b2o114b2o114b2o9$499b2o$498bobo$500bo$106b2o98b2o130b2o98b2o230b2o$106b2o98b2o130b2o98b2o230b2o17$98b2o114b2o114b2o114b2o114b2o114b2o$98b2o114b2o114b2o114b2o114b2o114b2o12$106b2o230b2o98b2o230b2o$106b2o230b2o98b2o230b2o7$649bobo$650b2o$650bo2$385bo$122bo262bobo$120b2o263b2o$121b2o2$397bo$98b2o114b2o114b2o63bobo48b2o114b2o114b2o$98b2o114b2o114b2o64b2o48b2o114b2o114b2o12$106b2o230b2o98b2o230b2o$106b2o230b2o98b2o230b2o17$98b2o114b2o114b2o114b2o114b2o114b2o$98b2o114b2o114b2o114b2o114b2o114b2o12$338b2o98b2o$338b2o98b2o17$98b2o114b2o114b2o114b2o114b2o114b2o$98b2o114b2o114b2o114b2o114b2o114b2o!"
rl = g.parse(upPtrn, -70, -4, dx, 0, 0, 1)
delta = 0
if dx == -1:
delta = 777
rl = g.evolve(rl, iters)
g.putcells(rl, self.x + delta, self.y)
self.y += 27 * 31 - 2 * 9
def PlaceFixer(self):
fixPtrn = "5$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o30$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o29$13bo$12b3o108b2o114b2o114b2o114b2o114b2o$11bob2o108b2o114b2o114b2o114b2o114b2o2$5b2o5bo2b2o$5b2o5b2ob2o$12b2o7$16bo$14bo2bo$3b2o9bobo$3b2o10bo7$7b2o$7b2o8$123b2o114b2o114b2o114b2o$123b2o114b2o114b2o114b2o107b2o$578bo2bo$580bo8b2o$15b2o560bo2bo8b2o$15b2o560b2o2bo$587bo$579b3o3bobo$586b2o6$591b2o$591b2o7$7b2o578b2o$7b2o578b2o8$123b2o114b2o114b2o114b2o$123b2o114b2o114b2o114b2o3$15b2o562b2o38bo$15b2o41bo520b2o37b3o$56bobo558bo3bo$57b2o559b2obo$619b2o$470b3o$468b2ob2o8bo139bo$467bo6bo5b4o135bo2bo$467bo5b2o2bob4obo132bobob2o$119b3o345b2o7bo7b2o$119bobo352bobo3bob3o132bobo$117bo3bo347bo4bo2bobo2b2o134bo$117bob2o2bo347b2o$117bo3bo$119b2o$125bo$119bo5bo$119bo4bo449b2o$7b2o113b3o346b2o100bobo11b2o$7b2o462b2o102bo11b2o3$25b2o87bobo$25bobo86b2o$25bo89bo3$239b2o114b2o127bobo$239b2o114b2o128b2o$485bo2$15b2o98b2o362b2o98b2o$15b2o98b2o362b2o98b2o4$533bo$533bobo$533b2o8$514b2o$513bobo$515bo$7b2o114b2o346b2o114b2o$7b2o114b2o346b2o114b2o$85b2o$85bobo$85bo6$352b2o$352b3o$244bobo102b2o2b2o2b2o$15b2o98b2o129bo101b3o6b2o120b2o98b2o$15b2o98b2o125bo3bo100bo3bo127b2o98b2o$237bo4bo104b3o$237bo4bo2bo100bo4bo$237bo5b3o100b2ob2o$346bo3bo$347b3o4$235b2o122b2o$235b2o122b2o2$454b2o$453bobo$455bo3$7b2o114b2o20b2o92b2o114b2o114b2o114b2o$7b2o114b2o20bobo91b2o114b2o114b2o114b2o$145bo6$186bo$184bobo$185b2o2$205bo$15b2o186b2o42b2o98b2o55bo74b2o98b2o$15b2o187b2o41b2o98b2o55bobo72b2o98b2o$404b2o2$395bo$396b2o$395b2o12$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o$54bobo$54b2o$55bo2$282bo$280bobo261bobo$281b2o262b2o$545bo2$308bo$308bobo$15b2o230b2o59b2o37b2o230b2o$15b2o230b2o98b2o230b2o17$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o12$15b2o230b2o98b2o230b2o$15b2o230b2o98b2o230b2o17$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o12$247b2o98b2o$247b2o98b2o17$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o3$342bo$340bobo$341b2o3$248bo$248bobo$248b2o$248bo$247b2o98b2o$247b2o98b2o17$7b2o114b2o114b2o114b2o114b2o114b2o$7b2o114b2o114b2o114b2o114b2o114b2o!"
rl = g.parse(fixPtrn, 21, 5, 1, 0, 0, 1)
g.putcells(rl, self.x, self.y)
self.y += 13 * 31 - 9
def PlaceDerbis(self, dx):
gen = "3$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o30$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o29$60b2o$60b3o107b2o114b2o114b2o114b2o$60b3o107b2o114b2o114b2o114b2o107b2o$62bo563bobo$52b2o4b2o566b3o7b2o$52b2o4bob3o561b5o7b2o$59b4o561b2o$59b2o564b2obo4bo$627bo6b2o$627bo5b2o4$63bo$62bobo$50b2o12bo573b2o$50b2o11bo574b2o7$54b2o578b2o$54b2o578b2o8$170b2o114b2o114b2o114b2o$170b2o114b2o114b2o114b2o2$17bo$16bobo43b2o562b2o37b3o$16bobo43b2o562b2o37b3o$17bo646bo3bo$665b2obo$518bo146b3o$22b2o492b2obo147bo$21bo2bo490b2o2b2o6b2o$22b2o490bo4bobo4bo3bo134bo3bo$167bo345b2o5b3o3bo4b2o132bob3o$166bobo345b2o4b2ob2obo5bo134bo$165b2ob2o345bo7b2o3b2o2bo132bo$166bob2o350bobo5b2obo133bo$163b2o2b3o$168bo$167bo$166b2o$171b2o$171b2o448b2o$54b2o114b2o346b2o102b2o10b2o$54b2o114bo347b2o101bo12b2o3$72b2o87bo$71b2o88bobo$73bo87b2o3$286b2o114b2o129bo$286b2o114b2o127bobo$532b2o$17bo$16bobo43b2o98b2o362b2o98b2o$16bobo43b2o98b2o362b2o98b2o$17bo86bobo$105b2o$105bo$22b2o557bo$21bo2bo554b2o$22b2o556b2o8$561b2o$562b2o$561bo$54b2o114b2o346b2o114b2o$54b2o114b2o346b2o114b2o$132b2o$131b2o$133bo6$399bobo$398bo$17bo274bo102bob3obo2b2o$16bobo43b2o98b2o129b2o100bo2bo5b2o120b2o98b2o$16bobo43b2o98b2o230bo131b2o98b2o$17bo270b3o102b3obo$283b3o3bo2bo100bo$290b3o99b3ob3o$22b2o267bo101bo3bo$21bo2bo369b3o$22b2o371bo3$282b2o122b2o$282b2o122b2o2$501b2o$502b2o$501bo3$54b2o114b2o20b2o92b2o114b2o114b2o114b2o$54b2o114b2o19b2o93b2o114b2o114b2o114b2o$193bo6$232bo$233b2o$232b2o2$17bo233bo$16bobo43b2o98b2o86bo43b2o98b2o56bo73b2o98b2o$16bobo43b2o98b2o86b3o41b2o98b2o54b2o74b2o98b2o$17bo433b2o2$443bo$22b2o420bo$21bo2bo417b3o$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o$101bo$101bobo$101b2o2$328bo$329b2o262bo$328b2o261bobo$592b2o2$356bo$17bo336b2o$16bobo43b2o230b2o59b2o37b2o230b2o$16bobo43b2o230b2o98b2o230b2o$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo43b2o230b2o98b2o230b2o$16bobo43b2o230b2o98b2o230b2o$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo275b2o98b2o$16bobo275b2o98b2o$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o3$388bo$389b2o$388b2o3$296bo$294b2o$294b2o$17bo$16bobo277bo97b2o$16bobo275b2o98b2o$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o11$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o11$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o10$60bo$59b3o108b2o114b2o114b2o114b2o114b2o$58bob2o108b2o114b2o114b2o114b2o114b2o2$52b2o5bo2b2o$52b2o5b2ob2o$59b2o7$17bo45bo$16bobo42bo2bo$16bobo31b2o9bobo$17bo32b2o10bo3$22b2o$21bo2bo$22b2o2$54b2o$54b2o8$170b2o114b2o114b2o114b2o114b2o$170b2o114b2o114b2o114b2o107b2o5b2o$625bo2bo$627bo8b2o$62b2o560bo2bo8b2o$62b2o560b2o2bo$634bo$626b3o3bobo$633b2o3$12bo$10b2o5bo$11b2o3bobo$16bobo619b2o$17bo620b2o3$22b2o$21bo2bo$22b2o2$54b2o578b2o$54b2o578b2o5$12b2o$12bobo$12bo$170b2o114b2o114b2o114b2o$170b2o114b2o114b2o114b2o3$62b2o562b2o38bo$62b2o41bo520b2o37b3o$103bobo558bo3bo$104b2o559b2obo$666b2o$517b3o$515b2ob2o8bo139bo$514bo6bo5b4o135bo2bo$17bo496bo5b2o2bob4obo132bobob2o$16bobo147b3o345b2o7bo7b2o$16bobo147bobo352bobo3bob3o132bobo$17bo146bo3bo347bo4bo2bobo2b2o134bo$164bob2o2bo347b2o$164bo3bo$22b2o142b2o$21bo2bo147bo$22b2o142bo5bo$166bo4bo449b2o$54b2o113b3o346b2o100bobo11b2o$54b2o462b2o102bo11b2o3$72b2o87bobo$72bobo86b2o$72bo89bo3$286b2o114b2o127bobo$286b2o114b2o128b2o$532bo2$62b2o98b2o362b2o98b2o$62b2o98b2o362b2o98b2o4$580bo$580bobo$580b2o$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo536b2o$22b2o536bobo$562bo$54b2o114b2o346b2o114b2o$54b2o114b2o346b2o114b2o$132b2o$132bobo$132bo6$399b2o$399b3o$291bobo102b2o2b2o2b2o$62b2o98b2o129bo101b3o6b2o120b2o98b2o$62b2o98b2o125bo3bo100bo3bo127b2o98b2o$284bo4bo104b3o$284bo4bo2bo100bo4bo$284bo5b3o100b2ob2o$393bo3bo$394b3o2$17bo$16bobo$16bobo263b2o122b2o$17bo264b2o122b2o2$501b2o$22b2o476bobo$21bo2bo477bo$22b2o2$54b2o114b2o20b2o92b2o114b2o114b2o114b2o$54b2o114b2o20bobo91b2o114b2o114b2o114b2o$192bo6$233bo$231bobo$232b2o2$252bo$62b2o186b2o42b2o98b2o55bo74b2o98b2o$62b2o187b2o41b2o98b2o55bobo72b2o98b2o$451b2o2$442bo$443b2o$442b2o2$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o2$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o$101bobo$101b2o$102bo2$329bo$327bobo261bobo$328b2o262b2o$592bo2$355bo$355bobo$62b2o230b2o59b2o37b2o230b2o$62b2o230b2o98b2o230b2o7$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o2$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o12$62b2o230b2o98b2o230b2o$62b2o230b2o98b2o230b2o7$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o2$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o12$294b2o98b2o$294b2o98b2o7$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o2$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o3$389bo$387bobo$388b2o3$295bo$295bobo$295b2o$295bo$294b2o98b2o$294b2o98b2o7$17bo$16bobo$16bobo$17bo3$22b2o$21bo2bo$22b2o2$54b2o114b2o114b2o114b2o114b2o114b2o$54b2o114b2o114b2o114b2o114b2o114b2o!"
rl = g.parse(gen, -26, 7, dx, 0, 0, 1)
delta = 0
if dx == -1:
delta = 777 - 117 + 29
g.putcells(rl, self.x + delta, self.y)
self.y += 27 * 31 - 2 * 9
def PlaceDown(self, dx):
downPtrn = "11$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o30$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o30$133b2o114b2o114b2o114b2o114b2o$18bobo112b2o114b2o114b2o114b2o114b2o$15b2o2bo4bo$15bobo6b2o$14b2obo2bo4b2o$14b2o9b2o$16b2obob5o$21bo2bo$21bo2bo$33bo$8b2o22bo2bo$33b3o$12bo20b3o$3bo$3bo4bo3b2o$4bobo5bobo$6bobo4b2o$7b2o4b2o$8bo2b3o$11b3o3$17b2o$17b2o8$133b2o114b2o114b2o114b2o$133b2o114b2o114b2o114b2o114bobo$595b2obob2o$598bo3bo$25b2o571bo3bo$25b2o565bo6bo2bo$591b2o5bo2bo$590bo2bo3b3o$591b2o3bo4bo$592bo3bo3b2o$597b2obo4$601b2o$601b2o$46bobo$47b2o$47bo4$17b2o578b2o$17b2o578b2o8$133b2o114b2o114b2o114b2o$133b2o114b2o114b2o114b2o3$25b2o562b2o$25b2o562b2o15$564bo$562b2o$17b2o544b2o32b2o$17b2o578b2o8$249b2o114b2o$127b3o119b2o114b2o121b2o$127bo360bo2bo$127b2obo4b2o342b2o8bo$25b2o101bobo4b2o342b2o8bo2bo96b2o$25b2o102b2o357bo2b2o96b2o$126b2o354bo$124b2o3bo352bobo3b3o$129b3o350b2o$125b3o$127bo$125b3o$125b3o$126bo$137b2o338b2o$56bo80b2o338b2o$55b2o$55bobo5$17b2o114b2o346b2o114b2o$17b2o114b2o346b2o114b2o8$249b2o114b2o$249b2o2$365b2o$25b2o98b2o232b3obob2o122b2o98b2o$25b2o98b2o231bob2ob3o6bo116b2o98b2o$249bo3bo104b2obo2b2o6bo$242bo4b2obo3bo103bo2bo4b2o3bo$241bo5b2obo3bo97b3o5bobo2b3o$241bo3b4ob2o2bo93bo3bobo5bo4bobo$174bobo63bo4bo2b2o4bo3b2o5bo82bo3bo$175b2o63b5o7bo2bo2b3o3b2o82bo4b2o8b2o9b3o$175bo64bo3bo8b3o2bo2bo4bo87bo7b3o5b3o4b2o$116bo124bobo10bob6o100b3o4b2o2b3ob2o$106bobo6b2o117bo7b2o11b5obo96bo8b2o8b2o$107b2o6bobo116bobo18b3o2b3ob2o92bo8bo2b2o2b3o58bo$107bo126b2o24b2o2bo94bo7bo3bo4bo56b2o$262b3o103b3o3bo59b2o2$263b2o2b2o117bo$384bobo$385b2o$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o11$85bo$25b2o57bo40b2o130b2o98b2o130b2o98b2o$25b2o57b3o38b2o130b2o98b2o130b2o98b2o3$270bobo$271b2o263bo$271bo262bobo$176bo358b2o$175b2o$175bobo160bobo$338b2o$339bo3$504bo$502b2o$503b2o2$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o12$25b2o230b2o98b2o130b2o98b2o$25b2o230b2o98b2o130b2o98b2o17$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o12$25b2o230b2o98b2o230b2o$25b2o230b2o98b2o230b2o17$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o8$26b2o$28bo$26bo2bo$26bobo$26b2o229b2o98b2o$26b2o229b2o98b2o$330bobo$331b2o$331bo3$278bobo$278b2o$279bo9$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o12$257b2o98b2o$257b2o98b2o17$17b2o114b2o114b2o114b2o114b2o114b2o$17b2o114b2o114b2o114b2o114b2o114b2o!"
rl = g.parse(downPtrn, 11, -1, dx, 0, 0, 1)
delta = 0
if dx == -1:
delta = 615
g.putcells(rl, self.x + delta, self.y)
self.y += 13 * 31 - 9
class RailManager:
def __init__(self, x, y):
self.rail = Rail(x,y)
def Up(self, dx, iters):
self.rail.PlaceDerbis(dx)
self.rail.PlaceUp(dx, iters)
def Down(self, dx):
self.rail.PlaceDown(dx)
def Fix(self, num):
for i in xrange(0, num):
self.rail.PlaceFixer()
def AddRail(self, num):
self.rail.PlaceBlocks(num, False, 1)
class LifeWriter:
def WriteInt(self, x, y, i):
if i == 0:
self.WriteBool(x, y, False)
while(i > 0):
self.WriteBool(x, y, i % 2 == 1)
i = (i - i%2) / 2
if i % 2 == 0:
x -= 14
else:
x -= 6
def WriteBool(self, x, y, isTrue):
if isTrue:
self.PlaceLine(x, y)
else:
self.PlaceLine(x, y)
self.PlaceLine(x + 8, y)
self.Place(x + 4, y)
self.Place(x + 4, y + 9)
def Place(self, x, y):
b = g.parse("2o$2o!", 0, 0, 1, 0, 0, 1)
g.putcells(b, x, y, 1,0,0,1)
def PlaceLine(self, x, y):
self.Place(x, y)
self.Place(x, y + 3)
self.Place(x, y + 6)
self.Place(x, y + 9)
def SolveDX(dx):
for i in xrange(0, 100):
for j in xrange(13 * i,1000):
dy = (31 * j - 9 * i) / 2
if (31 * j - 9 * i) == (2 * dx):
return [[j, i],[0,55,644 + dy]]
if (31 * j - 9 * i) == 2 * (dx - 1):
return [[j, i],[0,82,643 + dy]]
if (31 * j - 9 * i) == 2 * (dx - 16):
return [[j, i],[1,53,660 + dy]]
return -1
def SolveDY(targetY, selfDY, initDY):
for i in xrange(0, 31):
if (9 * i + targetY) % 31 == (initDY+selfDY)%31:
return i
def PlaceSingleRail(rl, dist, dy):
a = SolveDX(dist)
y = SolveDY(dy, rl.rail.y, a[1][2])
rl.Fix(y)
rl.Down(1)
rl.Fix(a[0][1])
rl.AddRail(a[0][0] - 13 * a[0][1])
rl.AddRail(a[1][0])
rl.Up(1, a[1][1])
def Place6Rail(rl, dy):
d = 1738
#for d in xrange(1700, 5000):
fail = False
for i in xrange(0, 6):
a = SolveDX(d + 116 * i)
if a == -1:
fail = True
break
if not fail:
g.show(str(d))
for i in xrange(0, 6):
PlaceSingleRail(rl, (5 - i) * 116 + d, dy)
return
dx = 0
j = 0
i = 55
rl = RailManager(dx,0)
rl.AddRail(4000)
Place6Rail(rl, 17)
dx += 5000
'''
writer = LifeWriter()
useful = [(0,51),(0,55),(0,75),(0,79),(0,82),(1,48),(1,53),(1,56),(1,65),(1,74),(1,77),(1,82)]
for pair in useful:
j = pair[0]
i = pair[1]
rl = RailManager(dx,0)
rl.AddRail(130)
rl.Down(1)
rl.AddRail(20 + j)
rl.Up(1, i)
writer.WriteInt(dx + 100, -100, i)
writer.WriteInt(dx + 100, -150, j)
dx += 3500
'''