## gencols: techniques

For scripts to aid with computation or simulation in cellular automata.

### gencols: techniques

Though gencols is probably one of the first search programs for Conway's Game of Life,
it's still one of the most useful tools for exploring it.

I'd like to share some of my experience of working with gencols.

EDIT: It seems that the idea with a game doesn't really work out, so I'll just share my insights about gencols one after another.
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

Example #1
Q: Find all unique collisions of a glider with each of standard spaceships, that don't destroy the spaceship and leave something behind.
A:
./gencols -pat obj/glider.list obj/allss_n.list -nph 2 -tc 30 33 -gen 200 -del2 -filt ap -geq 1

"-nph 2" refers to the phases of each spaceship, we need just two, because spaceships are glide-symmetric, and we've already got all four gliders (and there are two pairs of symmetric patterns). "-tc 30 33" is because glider period is 4. "-del2" means, that we should be able to delete the second pattern in the place where it would be after 199 generations (gencols starts generation numbering with 1), if there were no collision. "-filt ap" means that we're looking for both periodic and aperiodic patterns. A periodic pattern is anything that repeats itself with an optional shift in up to 4 generations. Everything else is considered aperiodic. E. g. empty pattern, block, blinker, pulsar, glider and a spaceship are considered periodic, but r-pentamino, domino, a glider and a blinker and a pentadecathlon are considered aperiodic. One needs to specify "-filt ap", because otherwise gencols will also include those pattern, where deletion of the second pattern failed.

There is a way to change the maximum oscillator period detected by gencols, if you want to hunt for pentadecathlons, for instance.
--- a/output.c+++ b/output.c@@ -62,7 +62,7 @@ int gen,resultafter,delpat1,delpat2,synch,genresult,pat1offset,pat2offset,phase;          } #endif -#define MAXOSCTEST 4+#define MAXOSCTEST 30          removefailed=0;          if (countpat(tmp,tgen)              ==countpat(pat1gen,tgen)+countpat(pat2gen,tgen)@@ -158,7 +158,7 @@ int maxmove=0;             if (removefailed && !strchr(filterstring,'f') ) return;             if (per== -1 && !strchr(filterstring,'n') ) return;             if (per>MAXOSCTEST && !strchr(filterstring,'a') ) return;-            if (per>=1 && per <=4 && !strchr(filterstring,'p') &&+            if (per>=1 && per <= MAXOSCTEST && !strchr(filterstring,'p') &&                 !strchr(filterstring,'0'+per)                 && (maxmove!=1 || !strchr(filterstring,'g'))                 && (maxmove!=2 || !strchr(filterstring,'s'))) return;

The last parameter, "-geq 1" instructs gencols to display only those results that have 1 or more cells. This number refers to the number of all cells after all removals that may have taken place (in our case, removal of the spaceship).
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

How would you search with gencols for all interactions of two pies on blinker tracks that do not destroy the pies?
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

I would create two following pattern files:

pi.life
..*..*..*................***.................*..*..*................***..............*.*****.**

pi_g136.life
..***..............*.*****.**........***.................*..*..*................***

Then I would run gencols with:
./gencols -pat pi.life pi.life -nph 45 -tc 2 91 -gen 136 -test1 pi_g136.life -test2 pi_g136.life -genafter 50 -filt ap >result.col
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

Does the last version of gencols run on win7 64 bit?

Hartmut
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

I don't know about Windows, but I had to do some adjustments in order to make it work on my 64-bit Mac.

The diff is against https://github.com/codeholic/gencols so I'm not sure whether it works for the original gencols.
diff --git a/Makefile b/Makefileindex 398275a..7e5419f 100644--- a/Makefile+++ b/Makefile@@ -1,5 +1,5 @@ CC = gcc-CFLAGS = -O3+CFLAGS = -O3 -m64 all:   gencols makematrix makepatlist diff --git a/boxes.c b/boxes.cindex 69aa457..f702dec 100644--- a/boxes.c+++ b/boxes.c@@ -15,7 +15,7 @@ #include <stdio.h> #include <limits.h>-#include <malloc.h>+//#include <malloc.h> #include "defs.h" diff --git a/defs.h b/defs.hindex 1983696..9a24cbf 100644--- a/defs.h+++ b/defs.h@@ -36,7 +36,7 @@ typedef struct {    int maxc,maxr;  } TORUS; -typedef unsigned long cellseg;+typedef unsigned int cellseg; #define WORDLEN 32 #define URBIT 0diff --git a/lists.c b/lists.cindex 4a178d5..8dd1151 100644--- a/lists.c+++ b/lists.c@@ -14,7 +14,7 @@ #include <stdio.h> #include <limits.h>-#include <malloc.h>+//#include <malloc.h> #include "defs.h" #define HASHMULT 1999diff --git a/makematrix.c b/makematrix.cindex d446f0b..2850ca5 100644--- a/makematrix.c+++ b/makematrix.c@@ -14,7 +14,7 @@ #include <stdio.h> #include <limits.h>-#include <malloc.h>+//#include <malloc.h> #include "defs.h" char inpline[MAXPATLEN];diff --git a/makepatlist.c b/makepatlist.cindex 6f84742..fb792ec 100644--- a/makepatlist.c+++ b/makepatlist.c@@ -15,7 +15,7 @@ #include <stdio.h> #include <limits.h>-#include <malloc.h>+//#include <malloc.h> #include "defs.h" char inpline[MAXPATLEN];diff --git a/output.c b/output.cindex 222e3f8..8c9cec4 100644--- a/output.c+++ b/output.c@@ -15,7 +15,7 @@ #include <stdio.h> #include <limits.h>-#include <malloc.h>+//#include <malloc.h> #include "defs.h" char filterstring[MAXLINE]="apnf";
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

I don't have a C compiler on my current machine.

HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

Google search for "gcc windows" returns http://www.mingw.org/ as the first link. (I haven't tried it myself, but people at stackoverflow also recommend it.)
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

My (windows) version of gencols doesn't find any files, no matter where I start it from.

What could be the reason? Does windows understand the extension *.life?

@codeholic: Could you run the pi search you proposed and tell me if there are any interesting results additionally to those already used in the caterpillar recipe?

Thanks for any help,
Hartmut
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

HartmutHolzwart wrote:My (windows) version of gencols doesn't find any files, no matter where I start it from.

What could be the reason? Does windows understand the extension *.life?

Windows shouldn't care what a file is named, and I've never had any trouble with .life files on my Windows laptop.

Have you tried something radical, like moving the gencols executable to a folder right under the root directory -- C:\temp, let's say -- and specifying the full path in the call to gencols?

.\gencols -pat C:\temp\pi.life C:\temp\pi.life -nph 45 -tc 2 91 -gen 136 -test1 C:\temp\pi_g136.life -test2 C:\temp\pi_g136.life -genafter 50 -filt ap > C:\temp\result.col

[The backslashes are Windows-specific -- most other OSes treat those as escape characters. Forward slashes should also work, though, as in codeholic's original. I recommended C:/temp because Windows is very strange in another way -- it's unpredictable about handling long file names, or filenames with spaces in them, especially when running simple old code.]

It's also worth actually running "cmd" (instead of relying on batch files -- just in case that's what you're doing), manually switching to the gencols directory, and running a "dir" to make sure that everything is really there and the names are all exactly correct.

I mention this only because Windows has always had a very nasty habit of hiding file extensions -- I have to turn off that "feature" immediately whenever I move to a new system. So it's perfectly possible to create your pi.life files in a text editor, and have Windows report that they're called plain old "pi.life". But when you check the directory listing, they're "pi.life.txt" ...!

-- Just trying to come up with a theory here. Otherwise I don't see why gencols couldn't find a file in the same directory as the executable.

dvgrn
Moderator

Posts: 5327
Joined: May 17th, 2009, 11:00 pm

### Re: gencols: techniques

So it's most liekly no 64 bit problem?

I use teh version that Paul Tooke uploaded es .exe in this forum.
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

HartmutHolzwart wrote:So it's most liekly no 64 bit problem?

Not too likely. I have a 64-bit Windows machine, and I just set up gencols as I suggested and ran the search as codeholic suggested. Results are attached -- I haven't looked to see if they're the right results, though...

I'm using the version of gencols that I compiled and posted last year -- I haven't tried Paul Tooke's version, but probably I should, just to see if there's some strange incompatibility (with the new -rule command-line parameter he added, maybe?) You got your copy from this link, I take it?
Attachments
result.zip
results for gencols pi-climber collision search

dvgrn
Moderator

Posts: 5327
Joined: May 17th, 2009, 11:00 pm

### Re: gencols: techniques

you were completely correct! I created a txt file!

Many thanks,
Hartmut
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

As for 32 ./. 64

I found out the hard way, that the original version of gencols does *not* work correctly when compiled for 64 bits.

I recompiled with -m32 and ... tada ... the "example #1" posted by codeholic in this thread suddenly worked.
oblique

Posts: 122
Joined: July 16th, 2013, 1:30 pm

### Re: gencols: techniques

Found under the gencols pi collision results:

x = 60, y = 105, rule = B3/S232$40b3o16$9b3o29bo$41bo$41bo3$40b3o$9b3o27bo3bo$9b3o27b2ob2o$9b3o$7bo5bo$5b3o5b3o16bo17bo$b3o6bo6b3o10b3o3b2o7b2o3b3o$bo7b3o7bo9bo4bo2bo7bo2bo4bo$b3o2bob2ob2obo2b3o9bo3bo15bo3bo$6b4ob4o14bo5b4o5b4o5bo$4b2ob2o3b2ob2o13b2o4b2o7b2o4b2o$32b3o13b3o$5b2o7b2o17b2o13b2o$6b2o5b2o19bo3bo5bo3bo$7bo5bo$35bo2bo5bo2bo$36bobo5bobo2$9b3o29bo$41bo$41bo14$10bo19bobo$10bo22bo$10bo22bo6b3o$30bo2bo$31b3o14$9b3o22$32b2o$32b3o$31bob2o$31b3o$32bo! HartmutHolzwart Posts: 414 Joined: June 27th, 2009, 10:58 am Location: Germany ### Re: gencols: techniques You can find all of them by fgrep '(4,' result.col | ./makematrix -space 200 >result.life Ivan Fomichev codeholic Moderator Posts: 1141 Joined: September 13th, 2011, 8:23 am Location: Hamburg, Germany ### Re: gencols: techniques The interesting thing is that this produces a downward LWSS... Probably of no use but curious. HartmutHolzwart Posts: 414 Joined: June 27th, 2009, 10:58 am Location: Germany ### Re: gencols: techniques HartmutHolzwart wrote:The interesting thing is that this produces a downward LWSS... Probably of no use but curious. Actually there is a very good use for it, namely a glider filter. For backward rakes: ./gencols -pat obj/lwss_s.life obj/glider_se.life -nph 4 -tc 20 23 -gen 100 -del1 -filt p -leq 0 | ./makematrix #P 0 0............*.*............*............*............*..*...*........***.*.*..**.#P 50 0...........*.*...........*..*........*...*.......*..*.***.......***.#P 100 0............*.*............*............*............*..*.*.*........***..**..*. For forward rakes: ./gencols -pat obj/lwss_s.life obj/glider_ne.life -nph 4 -tc 20 23 -gen 100 -del1 -filt p -leq 0 | ./makematrix #P 0 0 ...........*.*...........*...........*...........*..*...........***..........**..**.*.#P 50 0............*.*............*............*............*..*............***................*..**.*.*. Ivan Fomichev codeholic Moderator Posts: 1141 Joined: September 13th, 2011, 8:23 am Location: Hamburg, Germany ### Re: gencols: techniques how would I search for pi collisions that cleanly delete the blinkers behind the pies? HartmutHolzwart Posts: 414 Joined: June 27th, 2009, 10:58 am Location: Germany ### Re: gencols: techniques I replaced pi_g136.life with ..***..............*.*****.** and ran the same search ./gencols -pat pi.life pi.life -nph 45 -tc 2 91 -gen 136 -test1 pi_g136.life -test2 pi_g136.life -genafter 50 -filt ap >result.col Then I sorted results by population and took some first ones: sort -nk3 result.col | head -30 | ./makematrix -space 200 >result.life Here is the result (duplicates removed): x = 239, y = 483, rule = B3/S232bo199bo$2bo199bo$2bo199bo4$225bo$28b3o194bo$225bo10$b3o197b3o5$29bo$29bo194b3o$29bo9$2bo199bo$2bo199bo$2bo199bo4$225bo$28b3o194bo$225bo10$b3o197b3o5$29bo$29bo194b3o$29bo4$225bo$29bo194b3o$2bo26bo172bo20bo3bo$b3o24bobo170b3o21bo$2ob2o195b2ob2o16bo3bo3bo$25b2ob3ob2o182b2o3bo7bo3b2o$22bob2obo3bob2obo179b2o3bob5obo3b2o$21b5obo3bob5o177bo6bob3obo6bo$22b2o2bo5bo2b2o179b2o15b2o$26b2o3b2o183b5o9b5o$21bo2bo2bo3bo2bo2bo182bo9bo$26bobobobo186bo2b2o3b2o2bo$22bo3b2o3b2o3bo182b2ob2o3b2ob2o$26bo5bo187bo2bo3bo2bo$25bo7bo187b2o5b2o123$202bo$202bo$202bo10$223b3o6$201b3o10$224bo$224bo$224bo4$202bo$202bo$202bo10$223b3o6$201b3o10$224bo$224bo$224bo$202bo$201b3o$200b2ob2o9$223b3o$222bo3bo$222b2ob2o122$2bo199bo$2bo199bo$2bo199bo4$224bo$224bo$224bo3$29bo$29bo$29bo5$b3o197b3o6$223b3o5$28b3o5$2bo199bo$2bo199bo$2bo199bo4$224bo$224bo$224bo3$29bo$29bo$29bo5$b3o197b3o2$224bo$223bobo$222bo3bo$222bo3bo4$223b3o$220bob5obo$28b3o189b9o$221bo5bo$2bo199bo$b3o197b3o$2ob2o195b2ob2o$213b2o19b2o$28b3o182bo2bob4o5b4obo2bo$28b3o183bo2bob5ob5obo2bo$28b3o186bo3b3ob3o3bo$26bo5bo179bo7bo7bo7bo$24b3o5b3o175b2o6bob4ob4obo6b2o$20b3o6bo6b3o171bo6bobob3ob3obobo6bo$20bo7b3o7bo172b3o21b3o$20b3o2bob2ob2obo2b3o173b2o21b2o$25b4ob4o179bo21bo$23b2ob2o3b2ob2o2$24b2o7b2o$25b2o5b2o$26bo5bo!

Probably it would make sense to increase -genafter a little bit in this case. It might be interesting also to analyse results of this search to find reactions that change the distance between pi tracks.
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

... this doesn't show all solutions! There are some pi rakes, where the glider collides with one of the blinker trails to clenly destroy it. The en cap of teh caterpillar uses one of these.

The question is whether there is a shorter end cap for the caterpillar.

One more complex idea would be a double pi trail that creates a blinker trail on which a pi travels the sdestroy the two original trails.
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

is there a possibility to filter out the blinker trails of a specific width in the gencols results?
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

HartmutHolzwart wrote:is there a possibility to filter out the blinker trails of a specific width in the gencols results?

I believe there is no trivial way. Usually I write quick-and-dirty Golly scripts for tasks like this. I've written a bunch of utility functions, that appeared to be quite useful, such as finding a subpattern. In this particular case I would probably find all blinkers, compare their x-coordinates pairwise and write the results in a file.
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

### Re: gencols: techniques

again I seem to be too dumb to use gencols!

How would I find all ways of stacking two 17c/45 pies on the same trail?
HartmutHolzwart

Posts: 414
Joined: June 27th, 2009, 10:58 am
Location: Germany

### Re: gencols: techniques

It seems an overkill to use gencols in this case, but why not...

pi.life
..*..*..*................***.................*..*..*................***..............*.*****.**

pi_g136.life
..***..............*.*****.**

pi2.life
.....................................................*.*****.**

pi2_g136.life
..*.*****.**

./gencols -pat pi2.life pi.life -nph 90 -tc 30 35 -gen 136 -test1 pi2_g136.life -test2 pi_g136.life -filt ap >result.col

Here are the results:
x = 429, y = 373, rule = B3/S239b3o97b3o97b3o96b3o97b3o16$10bo99bo99bo98bo99bo$10bo99bo99bo98bo99bo$10bo99bo99bo98bo99bo16$9b3o97b3o97b3o96b3o97b3o7$308b3o97b3o$109b3o97b3o197bo$9b3o198bo97bobo96b2ob2o$10bo98bobo194bo5bo91b11o$104b3o2bobo2b3o188b3obob3o87b2o4bobobo4b2o$4b3o7b3o185b2ob11ob2o82b3obo7bob3o83bo5bo3bo5bo$3bobo3b3o3bobo84b2o3bob3obo3b2o83b2ob2obobobob2ob2o81bobo4bobobo4bobo82bo15bo$3bo13bo84bo4bo5bo4bo82bo4bo7bo4bo87bobobo90b2ob3o3b3ob2o$3b2ob2o5b2ob2o84b2o2b2o5b2o2b2o83bo3bob2ob2obo3bo82b4o2b5o2b4o87bo2bobo2bo$5bo3bobo3bo91bo5bo90b2o2bo3bo2b2o85b2o4bobo4b2o88b2obobob2o$5b3o5b3o89b3o5b3o88b2ob2o3b2ob2o85b5o5b5o88b2o5b2o$105b2o7b2o188b3o5b3o90b3o3b3o4$104bo11bo86b2o11b2o82bo17bo$3b3o3b3o3b3o85bobo3b3o3bobo83bo3bo3b3o3bo3bo80bo2b2o3b3o3b2o2bo82b2o5b3o5b2o$o2b3o9b3o2bo79bob2obo9bob2obo79b2o3bo9bo3b2o81b3o9b3o83bo3bo9bo3bo$o19bo79bo3bo11bo3bo79b2ob2o11b2ob2o79bo17bo82bobo11bobo$o19bo79bo19bo179bo17bo5$7bobobobo$9bobo$6bo2bobo2bo$6bo7bo2$10bo99bo99bo98bo99bo$9b3o97b3o97b3o96b3o97b3o$8b2ob2o95b2ob2o95b2ob2o94b2ob2o95b2ob2o28$8b3o98b3o98b3o98b3o98b3o16$9bo100bo100bo100bo100bo$9bo100bo100bo100bo100bo$9bo100bo100bo100bo100bo16$8b3o98b3o98b3o98b3o98b3o3$413bo$211bo100bo99b3o$110bo99bobo97b2ob2o96bo3bo$8b3o98b3o98bobo97b2ob2o96b2ob2o$8b3o97bo3bo97bobo$8b3o99bo$6bo5bo93bo3bo3bo193bo7bo87bo17bo$4b3o5b3o86b2o3bo7bo3b2o82b2o2b3o5b3o2b2o81b3o2bo9bo2b3o79b4o2b2o7b2o2b4o$3o6bo6b3o82b2o3bob5obo3b2o81bobo2b2o7b2o2bobo79b2o3bobo7bobo3b2o77bob3o2b2o7b2o2b3obo$o7b3o7bo81bo6bob3obo6bo79b2o6bo5bo6b2o77b2ob2o3bo7bo3b2ob2o75b3o3b2o2bo5bo2b2o3b3o$3o2bob2ob2obo2b3o82b2o15b2o81b2ob3o9b3ob2o79b2ob6o5b6ob2o77bo5bo2bo5bo2bo5bo$5b4ob4o87b5o9b5o82b3o2bo7bo2b3o81bo2bo13bo2bo79b5o3bo5bo3b5o$3b2ob2o3b2ob2o89bo9bo87bo3b2o5b2o3bo83b2o15b2o81b2ob2o11b2ob2o$104bo2b2o3b2o2bo87b2o2b2o3b2o2b2o85bo4bo5bo4bo83bo2bo11bo2bo$4b2o7b2o89b2ob2o3b2ob2o87bo2b2obobob2o2bo85bo3bo7bo3bo84b2o13b2o$5b2o5b2o91bo2bo3bo2bo89bo2b2o3b2o2bo88bo3bo3bo3bo$6bo5bo93b2o5b2o91b3o5b3o90b3o5b3o91bo7bo$307b2o7b2o91bo7bo3$8b3o98b3o98b3o98b3o98b3o13$9bo100bo100bo100bo100bo$8b3o98b3o98b3o98b3o98b3o$7b2ob2o96b2ob2o96b2ob2o96b2ob2o96b2ob2o28$13b3o96b3o97b3o98b3o97b3o16$14bo98bo99bo100bo99bo$14bo98bo99bo100bo99bo$14bo98bo99bo100bo99bo13$414bo$314bo98b3o$212b3o98b3o96bo3bo$13b3o96b3o97b3o96b2obob2o93bobobobo$113bo97bobobo95b2o3b2o92b3o3b3o$13bobo95b2ob2o94b2o3b2o94bobobobo92b2o5b2o$13bobo95b2ob2o94b3ob3o97bo96bo2bo2bo$12bo3bo193b3ob3o92b3o5b3o90b2obobob2o$12bo3bo93bo5bo93bo5bo92b3o5b3o91b2o3b2o$12b2ob2o93b3ob3o93b2o3b2o93bobo3bobo$210b2o3b2o92b3o5b3o$207bo11bo88b3o7b3o88bo9bo$105b4o9b4o85b2o9b2o90bo7bo90bo9bo$10bo7bo85b5o9b5o79b2o5bo7bo5b2o78bo21bo77bo4b3o7b3o4bo$2bob6obo5bob6obo75bob5o9b5obo76bob4o13b4obo76bobo3b2o9b2o3bobo76b2o3b2o9b2o3b2o$3ob6o9b6ob3o71b2o8b2o3b2o8b2o75bob4o3bo3bo3b4obo78b2o3b2o2bo3bo2b2o3b2o78b2obobobo5bobobob2o$2bo2bo2b5o3b5o2bo2bo73b2o7bo2bobo2bo7b2o73bobo3b2o4bobo4b2o3bobo75b3o3b2obobobobob2o3b3o77b2ob2o3b2ob2o3b2ob2o$2bobo4bobo5bobo4bobo74bo7b3o3b3o7bo74b2o7bobo3bobo7b2o73b5o3bo11bo3b5o75b2o2bo4bobo4bo2b2o$3bo21bo76b2o19b2o75b2obo5b3o3b3o5bob2o74b4o4b2ob2ob2ob2o4b4o72b2o2b3o2bo3bobo3bo2b3o2b2o$4b3obo11bob3o77b2o19b2o77bobo17bobo77b2obo5bo5bo5bob2o74b3obo3bo2bo3bo2bo3bob3o$5b3o13b3o80bo17bo80bo19bo79b2o19b2o76b3o6bo5bo6b3o$403bo21bo5$13b3o96b3o97b3o98b3o97b3o13$14bo98bo99bo100bo99bo$13b3o96b3o97b3o98b3o97b3o$12b2ob2o94b2ob2o95b2ob2o96b2ob2o95b2ob2o28$13b3o16$14bo$14bo$14bo12$14bo$13bobo$12bo3bo$12bo3bo4$13b3o$10bob5obo$10b9o$11bo5bo4$3b2o19b2o$3bo2bob4o5b4obo2bo$4bo2bob5ob5obo2bo$7bo3b3ob3o3bo$2bo7bo7bo7bo$2o6bob4ob4obo6b2o$o6bobob3ob3obobo6bo$b3o21b3o$2b2o21b2o$3bo21bo4$13b3o13$14bo$13b3o\$12b2ob2o!
Ivan Fomichev

codeholic
Moderator

Posts: 1141
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

Next