SRL Archive - SRL Old School RuneScape

Strange Box Solver


DannyRS

2013-03-22 01:06:03

Ok so I see we don't have one yet, I'm curious, how was it solved before?

Looking through the scar and early srl revisions, the solver just seems to call some plugin,

But what was the prefered method for solving it inside the plugin? Wizzup and WT said somewhere in the archive about it needing high memory, so I'm guessing bitmaps?

Seems to be a rather common random, so I'd like to get it solvable again :p

Anyone any ideas / experience on what to try next time I get a box to test?

Le Jingle

2013-03-22 02:11:52

I think this is an old version of what you're talking about?:

function GetBoxSide: Integer;
var
Side, x, y: Integer;
begin
Side := BitmapFromString(181, 181, '');
repeat
wait(100);
if FindColorTolerance(x, y, 16579837, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 215, 352, 215, 5) then continue;
if FindColorTolerance(x, y, 12764106, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 215, 352, 215, 5) then continue;
Break;
until False;
CopyClientToBitmap(Side, 172, 45, 352, 225);
Result := Side;
end;

And I attached the file here too.
I think there oculd be better ways to get a rotating object like that, no?
iirc Coh3n made a TRotateObject type in the current antirandoms folder

DannyRS

2013-03-22 09:44:32

@Le Jingle,

Yea thats what I'm talking about, but what on earth is that doing haha? It just seems to get a bitmap of a side, then it calls "process picture" then frees the bitmap and clicks an answer? I don't understand how it's supposed to get the number or the shape

Ashaman88

2013-03-22 09:50:48

Maybe do something with counting colors? I guess first you would need to be able to tell when the box is completely facing you to get the best view of it.

DannyRS

2013-03-22 09:58:42

From: Ashaman88
Maybe do something with counting colors? I guess first you would need to be able to tell when the box is completely facing you to get the best view of it.


Yeh I'm going to have a play around when I get another box, see how different the numbers are from each other, it's not like testing will be much of a problem eh :p plenty of those damn things in 5min

Ashaman88

2013-03-22 10:05:11

From: DannyRS
Yeh I'm going to have a play around when I get another box, see how different the numbers are from each other, it's not like testing will be much of a problem eh :p plenty of those damn things in 5min


haha true, but I don't think they add more while the spiny screen is open

DannyRS

2013-03-22 10:10:44

From: Ashaman88
haha true, but I don't think they add more while the spiny screen is open


Yeh you can keep the screen open to avoid getting em, but if you take too long, then exit without solving, you get another one :p but if I just keep thieving for like 5min after getting, I'm sure I'll have plenty

Ashaman88

2013-03-22 10:27:55

From: DannyRS
Yeh you can keep the screen open to avoid getting em, but if you take too long, then exit without solving, you get another one :p but if I just keep thieving for like 5min after getting, I'm sure I'll have plenty


haha nice. PS yes the compass alignment is the most annoying thing ever.

DannyRS

2013-03-22 19:37:30

Ok, got tpa's like this (smartgfx debug), now time to think what to do with them after haha :p


Olly

2013-03-22 19:38:56

use the converted plugin? that used to work fine back in old times.

DannyRS

2013-03-22 19:39:54

From: Ollybest
use the converted plugin? that used to work fine back in old times.


which one, whats the name?

Olly

2013-03-22 19:45:14

From: DannyRS
which one, whats the name?


http://villavu.com/forum/showthread.php?t=97151&p=1179064#post1179064

DannyRS

2013-03-22 20:31:23

From: Ollybest
http://villavu.com/forum/showthread.php?t=97151&p=1179064#post1179064


Tried it, doesn't seem to work :/

Gets the question fine, but doesn't get any further, any ideas?

Ashaman88

2013-03-26 22:30:03

From: DannyRS
Tried it, doesn't seem to work :/

Gets the question fine, but doesn't get any further, any ideas?


Yeah running into the same issue - and the maths on those functions is cray cray may take awhile to figure out what it's doing :)

DannyRS

2013-03-27 22:04:37

From: Ashaman88
Yeah running into the same issue - and the maths on those functions is cray cray may take awhile to figure out what it's doing :)


Been really busy with family crap past few days, the plugin checks the bitmap line by line and finds the edges, then works out the verts of the shapes roughly,

I think it's just to do with the bitmaps being handled differently in scar and Simba, I don't think I have the math skills to fix it :D maybe with printing out the results from the plugin, we could change the expected vars of the shapes for it to work, needs alot of work tho :p

Ashaman88

2013-03-28 08:28:03

From: DannyRS
Been really busy with family crap past few days, the plugin checks the bitmap line by line and finds the edges, then works out the verts of the shapes roughly,

I think it's just to do with the bitmaps being handled differently in scar and Simba, I don't think I have the math skills to fix it :D maybe with printing out the results from the plugin, we could change the expected vars of the shapes for it to work, needs alot of work tho :p


Well Borrowing stuff from that function, I now have she shapes working 95% atm. Tonight I'll finish the shape detection and see how hard the numbers are

Justin

2013-03-28 08:30:22

From: Ashaman88
Well Borrowing stuff from that function, I now have she shapes working 95% atm. Tonight I'll finish the shape detection and see how hard the numbers are


Like a boss, amazing work :)

Ashaman88

2013-03-28 22:38:55

From: Justin
Like a boss, amazing work :)


Thanks ;) Ok Shapes are pretty much 100%. Numbers are harder to deal with, but working on those now

Ashaman88

2013-03-30 08:10:48

amaaagaaah

Found a box, solving...
Question is:
Which shape has number 0
Length of Full White ATPA: 18
Length of Shape: 7239
Length of OutterBox: 873
We think the shape is: Circle
Length of Brown Shape: 165
Length of White TPA in Brown: 276
We think the number is: 2
Length of Full White ATPA: 18
Length of Shape: 7170
Length of OutterBox: 878
We think the shape is: Circle
Length of Brown Shape: 161
Length of White TPA in Brown: 175
We think the number is: 8
Length of Full White ATPA: 25
Length of Shape: 6973
Length of OutterBox: 867
We think the shape is: Circle
Length of Brown Shape: 171
Length of White TPA in Brown: 174
We think the number is: 1
Length of Full White ATPA: 18
Length of Shape: 7190
Length of OutterBox: 1298
We think the shape is: Circle
Length of Brown Shape: 160
Length of White TPA in Brown: 220
We think the number is: 0
Answer is Circle
******** SOLVED BOX RANDOM ********


still needs a lot of work, but at least it solve it once haha

Justin

2013-03-30 08:15:54

From: Ashaman88
amaaagaaah

Found a box, solving...
Question is:
Which shape has number 0
Length of Full White ATPA: 18
Length of Shape: 7239
Length of OutterBox: 873
We think the shape is: Circle
Length of Brown Shape: 165
Length of White TPA in Brown: 276
We think the number is: 2
Length of Full White ATPA: 18
Length of Shape: 7170
Length of OutterBox: 878
We think the shape is: Circle
Length of Brown Shape: 161
Length of White TPA in Brown: 175
We think the number is: 8
Length of Full White ATPA: 25
Length of Shape: 6973
Length of OutterBox: 867
We think the shape is: Circle
Length of Brown Shape: 171
Length of White TPA in Brown: 174
We think the number is: 1
Length of Full White ATPA: 18
Length of Shape: 7190
Length of OutterBox: 1298
We think the shape is: Circle
Length of Brown Shape: 160
Length of White TPA in Brown: 220
We think the number is: 0
Answer is Circle
******** SOLVED BOX RANDOM ********


still needs a lot of work, but at least it solve it once haha


Omggg amazing Asha!

Olly

2013-03-30 10:53:45

From: Ashaman88
amaaagaaah

Found a box, solving...
Question is:
Which shape has number 0
Length of Full White ATPA: 18
Length of Shape: 7239
Length of OutterBox: 873
We think the shape is: Circle
Length of Brown Shape: 165
Length of White TPA in Brown: 276
We think the number is: 2
Length of Full White ATPA: 18
Length of Shape: 7170
Length of OutterBox: 878
We think the shape is: Circle
Length of Brown Shape: 161
Length of White TPA in Brown: 175
We think the number is: 8
Length of Full White ATPA: 25
Length of Shape: 6973
Length of OutterBox: 867
We think the shape is: Circle
Length of Brown Shape: 171
Length of White TPA in Brown: 174
We think the number is: 1
Length of Full White ATPA: 18
Length of Shape: 7190
Length of OutterBox: 1298
We think the shape is: Circle
Length of Brown Shape: 160
Length of White TPA in Brown: 220
We think the number is: 0
Answer is Circle
******** SOLVED BOX RANDOM ********


still needs a lot of work, but at least it solve it once haha


How much of the plugin did you copy? im pretty sure it did some crazy stuff like convert 3d to 2d.

Ashaman88

2013-03-30 11:13:24

From: Ollybest
How much of the plugin did you copy? im pretty sure it did some crazy stuff like convert 3d to 2d.


None of it…the plugin wouldn't detect anything when I tried to use it :/ And the maths were too intense so I decided to do it my own way :P

Olly

2013-03-30 14:05:17

From: Ashaman88
None of it…the plugin wouldn't detect anything when I tried to use it :/ And the maths were too intense so I decided to do it my own way :P


Gets the shape fine for me, not the number but that might be because im getting the shape from a youtube video.

program new;


const
W = 133;
H = 97;
var
a, c: array[0..W] of array [0..H] of Integer;
b: array[0..W] of array [0..H] of Boolean;
xs, ys, xe, ye: integer;
area: integer;
color, newcolor: integer;
dx: TIntegerArray;
dy: TIntegerArray;


procedure dfs1(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 7 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs1(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

procedure dfs(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

function GoodColor(col: integer): boolean;
begin
if ((col > 12000000) and (col < 13000000)) or ((col > 16000000) and (col < 17000000)) then
result := true
else
result := false;
end;

function Simplify: boolean;
var
i, j: integer;
x, y: integer;
max, col: integer;
begin
max := 0;
area := 0;
c := a;
for i := 0 to W do
for j := 0 to H do begin
if (not b[i][j]) and GoodColor(a[i][j]) then begin
area := 0;
color := a[i][j];
newcolor := color;
dfs(i, j);
end;
if (area > max) then begin
max := area;
col := color;
x := i;
y := j;
end;
end;

result := false;
if max < 40 then exit;
result := true;

// FillChar(b, SizeOf(b), 0);
color := a[x][y];
newcolor := clRed;
dfs(x, y);

newcolor := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
color := a[i][j];
dfs(i, j);
end;
color := 0;

// FillChar(b, SizeOf(b), 0);
dfs(0, 0);
area := max;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if a[i][j] = 0 then
inc(area);
a[i][j] := clred;
if c[i][j] <> col then
c[i][j] := clred
else
c[i][j] := 0;
end
else
c[i][j] := 0;

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 1); decex(ys, 1); incex(xe, 1); incex(ye, 1);
end;

function GetShape: string;
var
i, j, ii, jj, d: integer;
more, less: integer;
max, min: integer;
d1, d2: extended;
x, y: integer;
vertexes: integer;
begin
// FillChar(b, SizeOf(b), 0);

//Getting the center of the shape
x := 0;
y := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
x := x + i;
y := y + j;
end;

x := x div area;
y := y div area;

a[x][y] := clGreen;

//Painting the border in white
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = 0 then
a[i][j] := clwhite;

d := 30;
max := 0;
min := 1000000;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
//For each point of the border, checking how many points of the border
//in a circle with radius d are closer to center and how much are
//further
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj]=clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more);
end;
if more - less > max then
max := more - less;
if more - less < min then
min := more - less;
end;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj] = clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more)
end;
if more - less < -10 then
a[i][j] := clpurple;
end;

// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clpurple then
for d := 0 to 7 do
b[i + dx[d]][j + dy[d]] := true;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

if max > 80 then begin
result := 'Star';
exit;
end;
if min > -20 then begin
result := 'Circle';
exit;
end;

//Counting how much vertexes we have...
// fillchar(b, sizeof(b), 0);
color := clpurple;
newcolor := clpurple;
vertexes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 36 then
inc(vertexes);
end;

case vertexes of
3: result := 'Triangle';
4: result := 'Square';
5: result := 'Pentagon'
else
result := 'Circle';
end;
end;

procedure count(var inside, outside: integer; x1, y1, x2, y2: integer);
var
x, y, dx, dy, d, d1: extended;
begin
inside := 0;
outside := 0;
// fillchar(b, sizeof(b), 0);
d := sqrt(sqr(x1 - x2) + sqr(y1 - y2));
dx := (x2 - x1)/d;
dy := (y2 - y1)/d;
x := x1;
y := y1;
x2 := round(x);
y2 := round(y);
repeat
if not b[x2][y2] then begin
b[x2][y2] := true;
if a[x2][y2] = 0 then
inc(outside)
else
inc(inside);
end;
x := x + dx;
y := y + dy;
// a[x2, y2] := clwhite;
x2 := round(x);
y2 := round(y);
d1 := sqrt(sqr(x - x1) + sqr(y - y1));
until d1 > d;
end;

procedure dfs2(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][y] := True;
exit;
end;
inc(area);
b[x][ y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if ((a[x + dx[d]][y + dy[d]] = color) or (a[x + dx[d]][y + dy[d]] = clwhite)) and (not b[x + dx[d]][y + dy[d]]) then
dfs2(x + dx[d], y + dy[d], xs, ys, dist);
end;

procedure dfs3(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][ y] := True;
exit;
end;
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if not b[x + dx[d]][ y + dy[d]] then
dfs3(x + dx[d], y + dy[d], xs, ys, dist);
end;

function GetNumber: integer;
var
i, j, parts, d, holes: integer;
i1, j1: integer;
x, y, xp, yp, xh, yh: integer;
inside, outside: integer;
max: extended;
_1or7: boolean;
begin
a := c;
// fillchar(b, sizeof(b), 0);
color := clred;
newcolor := clred;
parts := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clred) and (not b[i][j]) then begin
area := 0;
dfs(i, j);
if area < 4 then
c[i][j] := 1
else begin
if area > 40 then begin
x := i;
y := j;
end
else begin
xp := i;
yp := j;
end;
inc(parts);
end;
end;

if parts = 0 then begin
result := -1;
exit;
end;
//fillchar(b, sizeof(b), 0);

newcolor := 0;
for i := xs to xe do
for j := ys to ye do
if c[i][j] = 1 then
dfs(i, j);

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if a[i][j] = clred then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 3); decex(ys, 3); incex(xe, 3); incex(ye, 3);

// fillchar(b,sizeof(b), 0);
newcolor := 0;

if parts > 1 then begin
area := 0;
dfs(xp, yp);
xp := 0; yp := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xp, i);
incex(yp, j);
b[i][j] := false;
end;
xp := xp div area;
yp := yp div area;
a[xp][yp] := clgreen;
end;

// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
c[i][j] := clred;
for d := 0 to 3 do
c[i + dx[d]][j + dy[d]] := clred;
end;
a := c;
// fillchar(c, sizeof(c), 0);
if parts > 1 then
a[xp][ yp] := clgreen;
color := 0;
newcolor := 0;
dfs(0, 0);
holes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = 0) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 1 then begin
inc(holes);
xh := i;
yh := j;
end
else
c[i][j] := 1;
end;

result := -1;

if holes >= 2 then begin
result := 8;
exit;
end;

//0, 4, 6 or 9
if holes = 1 then begin
// fillchar(b, sizeof(b), 0);
area := 0;
dfs1(xh, yh);
xh := 0; yh := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xh, i);
incex(yh, j);
b[i][j] := false;
end;
xh := xh div area;
yh := yh div area;
a[xh][yh] := clgreen;

if parts > 1 then begin //6 or 9
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
if max < sqrt(sqr(xp - i) + sqr(yp - j)) then
max := sqrt(sqr(xp - i) + sqr(yp - j));
if sqrt(sqr(xh - xp) + sqr(yh - yp)) < max/2 then
result := 6
else
result := 9;
exit;
end;

//now 0 or 4
if area > 10 then
result := 0
else
result := 4;
exit;
end;
if parts > 1 then begin
result := 9;
exit;
end;
//here goes 1, 2, 3, 5, 7
//separating 1 and 7 from other numbers
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for i1 := xs to xe do
for j1 := ys to ye do
if a[i1][j1] = clred then
if sqrt(sqr(i1 - i) + sqr(j1 - j)) > max then begin
max := sqrt(sqr(i1 - i) + sqr(j1 - j));
x := i;
y := j;
xp := i1;
yp := j1;
end;
count(inside, outside, x, y, xp, yp);
if outside = 0 then
_1or7 := true
else
_1or7 := false;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = 0 then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = clred then begin
a[i][j] := clwhite;
break;
end;

d := 10;
color := 0;
// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
for i1 := i - d - 1 to i + d + 1 do
for j1 := j - d - 1 to j + d + 1 do
b[i][j] := false;
dfs2(i, j, i, j, d);
area := 0;
dfs3(i, j, i, j, d);
if area < 100 then
c[i][j] := clpurple
end;
// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if c[i][j] = clpurple then begin
a[i][j] := clpurple;
for d := 0 to 7 do
b[i + dx[d]][ j + dy[d]] := true;
end;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

// fillchar(b, sizeof(b), 0);
parts := 0;
outside := 0;

color := clpurple;
newcolor := clpurple;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
inc(outside);
if area > 15 then
inc(parts);
end;

if _1or7 then
if parts <= 2 then
result := 1
else
result := 7
else
if outside >= 5 then
result := 5
else if parts = 3 then
result := 2
else if parts = 2 then
result := 3;
{ result := parts + 1000*outside;}
end;

procedure initVars();
begin
setLength(dx, 7);

dx := [0, -1, 0, 1, -1, 1, 1, -1];

setLength(dy, 7);
dy := [-1, 0, 1, 0, 1, -1, 1, -1];
end;

procedure ProcessPicture(var BMP:TMufasaBitmap; var shape: string; var number: Integer; debug: Integer);
var
i, j : Integer;

begin
initVars;
for i := 0 to W do
for j := 0 to H do
a[i][j] := BMP.FastGetPixel(i,j);


//First, lets find the largest area of one color, thats close to white
//this should be our shape to recognize
//we will also fill the spaces inside the shape
if not Simplify then begin
shape := 'unknown';
number := -1;
exit;
end;
//Now, recognizing the shape :)
shape := GetShape;

if (debug = 1) or (debug = 3) then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);

number := GetNumber;

if debug = 2 then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);
if debug = 3 then
for i := 0 to W do
for j := 0 to H do
if a[i][ j] <> 0 then
BMP.FastSetPixel(i,j,not a[i][j]);
end;


function getBox: TMufasaBitmap;
begin
// result := GetMufasaBitmap(BitmapFromString(104, 101, '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'));

result := GetMufasaBitmap(BitmapFromString(134, 98, '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'));

end;


procedure test;
var
res_shape: string;
res_number, i: integer;
b: TMufasaBitmap;
begin
b := getBox;

ProcessPicture(b, res_shape, res_number, i);

writeln(res_shape);
writeln(res_number);
end;


begin
test;
end.

Ashaman88

2013-03-30 14:42:47

From: Ollybest
Gets the shape fine for me, not the number but that might be because im getting the shape from a youtube video.

program new;


const
W = 133;
H = 97;
var
a, c: array[0..W] of array [0..H] of Integer;
b: array[0..W] of array [0..H] of Boolean;
xs, ys, xe, ye: integer;
area: integer;
color, newcolor: integer;
dx: TIntegerArray;
dy: TIntegerArray;


procedure dfs1(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 7 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs1(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

procedure dfs(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

function GoodColor(col: integer): boolean;
begin
if ((col > 12000000) and (col < 13000000)) or ((col > 16000000) and (col < 17000000)) then
result := true
else
result := false;
end;

function Simplify: boolean;
var
i, j: integer;
x, y: integer;
max, col: integer;
begin
max := 0;
area := 0;
c := a;
for i := 0 to W do
for j := 0 to H do begin
if (not b[i][j]) and GoodColor(a[i][j]) then begin
area := 0;
color := a[i][j];
newcolor := color;
dfs(i, j);
end;
if (area > max) then begin
max := area;
col := color;
x := i;
y := j;
end;
end;

result := false;
if max < 40 then exit;
result := true;

// FillChar(b, SizeOf(b), 0);
color := a[x][y];
newcolor := clRed;
dfs(x, y);

newcolor := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
color := a[i][j];
dfs(i, j);
end;
color := 0;

// FillChar(b, SizeOf(b), 0);
dfs(0, 0);
area := max;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if a[i][j] = 0 then
inc(area);
a[i][j] := clred;
if c[i][j] <> col then
c[i][j] := clred
else
c[i][j] := 0;
end
else
c[i][j] := 0;

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 1); decex(ys, 1); incex(xe, 1); incex(ye, 1);
end;

function GetShape: string;
var
i, j, ii, jj, d: integer;
more, less: integer;
max, min: integer;
d1, d2: extended;
x, y: integer;
vertexes: integer;
begin
// FillChar(b, SizeOf(b), 0);

//Getting the center of the shape
x := 0;
y := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
x := x + i;
y := y + j;
end;

x := x div area;
y := y div area;

a[x][y] := clGreen;

//Painting the border in white
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = 0 then
a[i][j] := clwhite;

d := 30;
max := 0;
min := 1000000;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
//For each point of the border, checking how many points of the border
//in a circle with radius d are closer to center and how much are
//further
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj]=clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more);
end;
if more - less > max then
max := more - less;
if more - less < min then
min := more - less;
end;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj] = clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more)
end;
if more - less < -10 then
a[i][j] := clpurple;
end;

// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clpurple then
for d := 0 to 7 do
b[i + dx[d]][j + dy[d]] := true;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

if max > 80 then begin
result := 'Star';
exit;
end;
if min > -20 then begin
result := 'Circle';
exit;
end;

//Counting how much vertexes we have...
// fillchar(b, sizeof(b), 0);
color := clpurple;
newcolor := clpurple;
vertexes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 36 then
inc(vertexes);
end;

case vertexes of
3: result := 'Triangle';
4: result := 'Square';
5: result := 'Pentagon'
else
result := 'Circle';
end;
end;

procedure count(var inside, outside: integer; x1, y1, x2, y2: integer);
var
x, y, dx, dy, d, d1: extended;
begin
inside := 0;
outside := 0;
// fillchar(b, sizeof(b), 0);
d := sqrt(sqr(x1 - x2) + sqr(y1 - y2));
dx := (x2 - x1)/d;
dy := (y2 - y1)/d;
x := x1;
y := y1;
x2 := round(x);
y2 := round(y);
repeat
if not b[x2][y2] then begin
b[x2][y2] := true;
if a[x2][y2] = 0 then
inc(outside)
else
inc(inside);
end;
x := x + dx;
y := y + dy;
// a[x2, y2] := clwhite;
x2 := round(x);
y2 := round(y);
d1 := sqrt(sqr(x - x1) + sqr(y - y1));
until d1 > d;
end;

procedure dfs2(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][y] := True;
exit;
end;
inc(area);
b[x][ y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if ((a[x + dx[d]][y + dy[d]] = color) or (a[x + dx[d]][y + dy[d]] = clwhite)) and (not b[x + dx[d]][y + dy[d]]) then
dfs2(x + dx[d], y + dy[d], xs, ys, dist);
end;

procedure dfs3(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][ y] := True;
exit;
end;
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if not b[x + dx[d]][ y + dy[d]] then
dfs3(x + dx[d], y + dy[d], xs, ys, dist);
end;

function GetNumber: integer;
var
i, j, parts, d, holes: integer;
i1, j1: integer;
x, y, xp, yp, xh, yh: integer;
inside, outside: integer;
max: extended;
_1or7: boolean;
begin
a := c;
// fillchar(b, sizeof(b), 0);
color := clred;
newcolor := clred;
parts := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clred) and (not b[i][j]) then begin
area := 0;
dfs(i, j);
if area < 4 then
c[i][j] := 1
else begin
if area > 40 then begin
x := i;
y := j;
end
else begin
xp := i;
yp := j;
end;
inc(parts);
end;
end;

if parts = 0 then begin
result := -1;
exit;
end;
//fillchar(b, sizeof(b), 0);

newcolor := 0;
for i := xs to xe do
for j := ys to ye do
if c[i][j] = 1 then
dfs(i, j);

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if a[i][j] = clred then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 3); decex(ys, 3); incex(xe, 3); incex(ye, 3);

// fillchar(b,sizeof(b), 0);
newcolor := 0;

if parts > 1 then begin
area := 0;
dfs(xp, yp);
xp := 0; yp := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xp, i);
incex(yp, j);
b[i][j] := false;
end;
xp := xp div area;
yp := yp div area;
a[xp][yp] := clgreen;
end;

// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
c[i][j] := clred;
for d := 0 to 3 do
c[i + dx[d]][j + dy[d]] := clred;
end;
a := c;
// fillchar(c, sizeof(c), 0);
if parts > 1 then
a[xp][ yp] := clgreen;
color := 0;
newcolor := 0;
dfs(0, 0);
holes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = 0) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 1 then begin
inc(holes);
xh := i;
yh := j;
end
else
c[i][j] := 1;
end;

result := -1;

if holes >= 2 then begin
result := 8;
exit;
end;

//0, 4, 6 or 9
if holes = 1 then begin
// fillchar(b, sizeof(b), 0);
area := 0;
dfs1(xh, yh);
xh := 0; yh := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xh, i);
incex(yh, j);
b[i][j] := false;
end;
xh := xh div area;
yh := yh div area;
a[xh][yh] := clgreen;

if parts > 1 then begin //6 or 9
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
if max < sqrt(sqr(xp - i) + sqr(yp - j)) then
max := sqrt(sqr(xp - i) + sqr(yp - j));
if sqrt(sqr(xh - xp) + sqr(yh - yp)) < max/2 then
result := 6
else
result := 9;
exit;
end;

//now 0 or 4
if area > 10 then
result := 0
else
result := 4;
exit;
end;
if parts > 1 then begin
result := 9;
exit;
end;
//here goes 1, 2, 3, 5, 7
//separating 1 and 7 from other numbers
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for i1 := xs to xe do
for j1 := ys to ye do
if a[i1][j1] = clred then
if sqrt(sqr(i1 - i) + sqr(j1 - j)) > max then begin
max := sqrt(sqr(i1 - i) + sqr(j1 - j));
x := i;
y := j;
xp := i1;
yp := j1;
end;
count(inside, outside, x, y, xp, yp);
if outside = 0 then
_1or7 := true
else
_1or7 := false;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = 0 then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = clred then begin
a[i][j] := clwhite;
break;
end;

d := 10;
color := 0;
// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
for i1 := i - d - 1 to i + d + 1 do
for j1 := j - d - 1 to j + d + 1 do
b[i][j] := false;
dfs2(i, j, i, j, d);
area := 0;
dfs3(i, j, i, j, d);
if area < 100 then
c[i][j] := clpurple
end;
// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if c[i][j] = clpurple then begin
a[i][j] := clpurple;
for d := 0 to 7 do
b[i + dx[d]][ j + dy[d]] := true;
end;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

// fillchar(b, sizeof(b), 0);
parts := 0;
outside := 0;

color := clpurple;
newcolor := clpurple;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
inc(outside);
if area > 15 then
inc(parts);
end;

if _1or7 then
if parts <= 2 then
result := 1
else
result := 7
else
if outside >= 5 then
result := 5
else if parts = 3 then
result := 2
else if parts = 2 then
result := 3;
{ result := parts + 1000*outside;}
end;

procedure initVars();
begin
setLength(dx, 7);

dx := [0, -1, 0, 1, -1, 1, 1, -1];

setLength(dy, 7);
dy := [-1, 0, 1, 0, 1, -1, 1, -1];
end;

procedure ProcessPicture(var BMP:TMufasaBitmap; var shape: string; var number: Integer; debug: Integer);
var
i, j : Integer;

begin
initVars;
for i := 0 to W do
for j := 0 to H do
a[i][j] := BMP.FastGetPixel(i,j);


//First, lets find the largest area of one color, thats close to white
//this should be our shape to recognize
//we will also fill the spaces inside the shape
if not Simplify then begin
shape := 'unknown';
number := -1;
exit;
end;
//Now, recognizing the shape :)
shape := GetShape;

if (debug = 1) or (debug = 3) then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);

number := GetNumber;

if debug = 2 then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);
if debug = 3 then
for i := 0 to W do
for j := 0 to H do
if a[i][ j] <> 0 then
BMP.FastSetPixel(i,j,not a[i][j]);
end;


function getBox: TMufasaBitmap;
begin
// result := GetMufasaBitmap(BitmapFromString(104, 101, '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'));

result := GetMufasaBitmap(BitmapFromString(134, 98, 'meJzUvQdzI+eZLvpHbtWte05t7e65Z3cty1aanDjkMOdMgEQgco6NRncD6EbOOTJPUJYlOazlbEuyJMuyJUuWbK+yRpOYSRCRuO/X4IxG8tir0XrL56Le6gJBEOF7vvd5n+dLHJZ6/Qs/puLP0OnvWvyPK8gFjiI0yKcHeI5+HtXHtXZNmEb41IiAHJgxtw7Jeqd07SOKPq52RGhW4UG1NaQlI0ZbzGSPWRxxCx3F6QhuD5FMmPHE3YGkx5dg3GGbw2ennEFnIOIMxj2RdCBRiOYXkwtLmeWV3Pl8dC4XmyskFvLJxbnUykLmwmL24lzukWTukVDmEV/iAhNaID1ZsyOupcJqIqiyBuCO1h6FUFNhJRGE0JABiY4gnAHM5pVqMbjKdBYT6VYaiVmFER6RaXG4r8cZnPbpLLRQadJTbi0E6dGSPvhzDRlSkxE1GVXdCiqiosIobEEU9gCEwhZEQUUg4DnwfIM9jtljJjzooKOpxOJ87kI+tQBRyC2GQgmCclNMkHInrK407sqJ9L7Occ2Y2NE7Yx0VO+nok7HFHzGxp+zhx0dmXdDmA0ImMP8j/9wP6eS3p+TBMbEXsOieInomrT1Tll6OpZeLDfKwgRnTEN/YPioVaBmhnoFmsbjTdKhg82dxVwJzREy2oMURppwx2h1jXFGnO+r2xNzeqMcdcbkCLsbncnhykdRcND0fyywmcovJueU0QmQpu5KPz2chYgvp+EI6tgSRiC5Go0vOQB5en/Smzc64wRGBRlNZfQqLB+6bmBiE3h5W4l4J5oJQ4G4t5kgVlvJLD8P10W99TyBVmQjG6nDjdo/DE0zmlw24De6LlTqLza3DbHrSqSNd+tsQURFhJRm+DY4III7CFlTfRKSJzu2IGB0J1FswH04GEonFucLFXHIeIpMqpFIFyu6l7H6HB3VXwp3V2uJn+iXnRrXtE8ZhkUPrWHAmn2GiT1vclwCR3mmie5qaVAY56jBHEWwfw3q51DCfHuLbAI7ucWPvlAlSo5ejH53FJCavyOjyJFcIf1rvCOltAaszRrqjNk/S4U8yvqTDG3O4og4mZHcESJuHsDohnLQ3FIjl03Pn51eW84vL+fmV7MJSbmExszCfni+kF7OphcXCpUL+Qja9EovNh0IFjzftdCbtTFxtdqoxl9qKWgzezkSHzUwEc0bhKtQQEyKdhvDOPfKdH7381s9+/Yfnnn/t5d/8fq/aqOw34FqqNVQ6s85kxSlGptKvXHocHv/5i7967Klvj3P48Dj81kg6ARQD6W6CoqICKjJ0gAgLh4qFQ0sFm6G23QERCAOdBEQ0Zq+J8MWTi/nCxXRiLpOcT8ez84Vlh91H2nxObwKzhyBNMHd2Vu8bEZFDs7YBAdU1ZeGqAnIsOyH2dIxbhmdpAKUHqGnK0jmJARB9XByA6BzTdU8YRvg4V+4Q6lx6R8JIx4101OSMWlwx3B2FINxRoCbSGWpebc6QwxkEOGhn0OuPB/yJaCgdj6YziRzAsZBZWMgv5lL5XDafjmfyuXn4FfSfWDQXT87NLTxCe6KJzAq8lNURhlyz0jED4dPijFBlhEajgwkL44ew+aK+RP7Kxt6NnepWpVHc/1xs7laq+42t3TJcIZQagxmnDGarXKVbXLm0sb1XqqLH1zZ3I/G0Wo9Bmkg0ZrsvrsGdOsqvsYegy2kdMbHFr3OmDM6UxZcT6GiZ2aWyeKyehMYeVDuCGkdYS0fUAAGd0NoTGlscuE5vj+qtQQ3mgj6Zya4szF+CnjafXYYul4jmgC4Iymcm/TgTI/15I5Pq4miGxVT7hKGLg50bM3ZNWpu5MC52DsyQPVNYx5ixbVjbM2kc5FomRBRP6ZIZA2o8aiBjUCNYAkxARlhdEdwZtjiDFjqAO/wIBQRBGMLpRuHyRCAS8QJEKpFLJ/MQuVQBAlLYG4ik8vOFhZXcwnIyO59dOJ8qrEQyC/5Y3mTzQrpBX7XQEcKb1OIekQafVRqsTq/NG6QDkdXt0k6lUdo/iGKlsVWswhV6PkS5jn6E1i7XGjt71WbLi6RKk4XErDatAbv06JPwSLFcX4fnwStU0TN/+NMXYpkFeI9ZDWb1xBSEFyDQuZIAx6SSEpncJlcKcyWgE5LuhMRgNzijOmdEQfrFwJM45EtMTcUkZn8TEa01qLW47c5IMr2Un7uQhtzPLM+nFtOxvM8bgzTBKB/ORAlfxuhMDs6a+vnmLg4E1jFh7uGQCJQpon3E1DNhGpzBx2cdXKlTqHZJ9B6dNWKh08B4pCdHutJWZ9zmTVOeJNQmwhUh6BBgYbH7gJCBISElnUzQ64kGA8loJIuAgGxNLTQjk16EyLGRys4DvYdz89HcfDBT8CcLdn8MdwYMdjfGBJQ4DUUWc4VkJjtHYZQYqLmHv/XCa288+vS3dRbCSNjWtosbuyVozc1iucymwO1RZ4NNkAo0daWO7ksVWq3BotKaIMKx9F7lc3+yW6pXWX57+fV3Vh7/jgp3cpQWqcVn9ueEJo+cDEOyQIJY3EngRswRJj0xiYmGNNExUTnhk0JGQI7QKYU1rKGiOlsEENFZvZDm4cRcOrcMX38hvbSQWszEC0Ff3E77rXaf1Rmm/GlAhKtxtE+oe3kYIAIc1Tdtax+zdI1buifwSaFNpPFq8LiZzhJMmnCmSGeKcqUpV5J0JmwQrrjdnbC72RrhijYzAggK2CkcSMaCqXgoDYkJzAl5ms8s5bLLycQc4AKRTC+kMovp7FIGPmFuOXf+MdwN8sxhor2UPwp3VARtdgV4KpPVGxUbiCmplgokXvvTxx+sFa9sV3f2Gx+vbhqt9jGuAPJir95olgnIiGJ5Hxp/a6u0u1utVBr1OgrUwhXU/+FXqxu7mNVuxEg11AuMfPSJZ5q/3dmrrW/t3cLl/Y+vwitvVRuvv3vlD9eKfL1dYHLxjG6DL6uxRyflmIEOAxx6wq22MCrCa3LHje5EExG9K21wZeVERG1Dkg/UDhQjnAm5Q2nQL9AVIUEWIV/ic5FginGFCBoQCZG+hNEVlxKB1lHZgNAKiIC+6p9xtI2YO0bNkxKvmcpYHFncnrHYk7gN0TgEQUdIJko5I3Y2HEwY2IlxASPFvL6EP5AKhjKRcHZ57uL5wsWV/IWF3MocYAEZkVhIJSE1llLppURyIQofJlYIRXK+cMYTzqgsDsIHRBrXkC4QOZQvhrtCYh1O+iL+9FwgM//ci69+tL673Whs1xsAx4fXd967snm6fUCsMkMU641SvbFZRNedYuPDj9c+/Gj16rWdjz5ee/mVN7/19A8UKpPRbDOYKBCcoLeFIpVWb7VYGe6M5FvPPFetNy5f2YArRJllrVJpH0CBhIJX/v1Hq2IzQ4TyajqCheYEmEdBBA3O2AhfJTc4QCmpMdrqSwEiwFpCIy3CfFBKlFRMYPAAIiAJABGQHxY6aPdEA7EsdMX5xOJyank+uZCMZEFz2pkA4Q5BCwD7aZhoF1c9MIsDIgN8GyBybhSDBBnkUjbXHElnLFQCI8IWwk84/GxRiEL72xwBi9VlxmjGGfa4oz5vPBRMRyO5ZGI+C4oijd4LshJikRWxi/nzC/mL83OXoLQBlwIcAATjjRFMECjUQII1mRfpiCmJzh3Nm+x+gcIIOuc7P/7lw9/63ierO6g6Nxob5fp2rbFbbVzdLAEuq+UGE8yNTCuAEB555iff/uHLT33v+e/84KVY5oJYhvUOzAwM8rjTSuGsXijSKpRmaH+9kQRQpHI9XE2YHSecEpkuFMl8/we/eOXVNwGOSq3x6dVNuLO2tgOI7Ow1/vTxdaMj4EovDgg0Rm+KZ3KZAnlo+dD8Y4//+/OZxSdkKguISb4KFxrskCBQ3IHWQABILEEFGdXYoQaBIQoZHSEzNBodcAYTwAxNRCBNoJT4fXEgFkAE2EDHBA2u+ISC7EWlBAPK6uFQXZNEP5ca4JBmIoZTMcKeALUJKDjZ0gw+Aso08BL0NBvlQUAEM/FwLhWbyyQAC9bE5S5kgulsKJML5XKRAniKPAtTLrvi86Xc3gQYEyBVzBEwUF5oT43FDdrAE51XGGlAR2G0ffu5F976j8uo57PFGkpuud5k+FodVeFGaukpiyeno6ICtYMjtgxPa7mzWEe/cHxaxxGYhBKrSEaKxNZZES6RkjIlIVdiOgNltjBGs0OuNMNVrbVCaPXkrFgrkujgkXA07/bGLz78DKQJEN3G5u7uXsNscystjMBA6lxxgcWlYuK9Qv38Uz9crTdu7DaubNRfe+NdvcUJDS7BnFLcA8RlcGdkREhmDRvduVuIgD6HnmakPA5fFBCZi4N2WV7JLANxBYNxxgM+MUR4IjqH3+COAaadXH0HB+vkEO0T1gEeDZWdKwWpHKMcUYcjRjMxQMHh9NntbpvN5Xb6o+Ek1IXlhYeBiyAgL3KppWab5zLn57LnV/IXlzPnwWsnQ/mgN+liIhTlt5BetZFWmRiwEgCEjgwY7WEzHcWYmJEKgKP3hLKfrpZWd+qAxcfXNgGL7TIif+ir19eK0IHXN8uv/Ootkcw4xjdwFfSMkumd0g1yDWMCy6QQm1XRAhklUjokKsesnJqexTg8AwSXbzBanEod0JRLocUVKgyuKg2uNdlA5xgsNIClMVIAkFhh5AmUcpWJdvlJu0ttJJQmm47ymj0JvTMmsrghCk88d73a2ATIyognEdHVGr99+4No4TxPaZ7V28yepMmdBs8CDQuIyK1BJRnSM1EdKGSrC5o9AdI3gRBZSq+AWwTz3kSE9IT1dq8ejJU31zGp6eZaOidwKOvDAs8A1w6shZw1VAc2QC+FgqlYOJOM5bOJOdDSTTqCYgGVAsQDeIcYRGYhkT+fnr8Ujy+Ew3mvP2VnYmZb0ED6QdWrKD/ke1O0K6mAHPdr7SD5chZnXKzE0oULm3v767u1Zl40BS08sltBnu7DT7YvPfIDmdw2MakRSuwTAqpv0jw1ax/nk2Ktb4yPTwmtozMGkZoRKG18mZUnxXkyTCCz8GVmvsQo1xIm0m0mXCojpdITUHpkakwHWJjtIHEBFPitVGUGCwKgwHNEKkSbGgsN0k5D+eVWr9DgUJJ+GQ66N/zJRglYdGuvUqnVGo39tfXVYhE6UeMnP38xv/TwtETnTSxDQdczSRBdSkdCxqIjp0LgH7VMGGT8hcWnltKox4IxSSbzTk+QoD12bwQKqIZw05HFaQU9PEOMTNtHZujOIcsI3wkB8tXlDIE8Az3QFEgZdgQAopA4iHQ4i0woiKW5C6n5C5HckhteP5LB7SHCFjJTISNracFhqe0hlSMssvoh8Tk6h8mXtUeXQOxNiLCuYYFUjXcNjEPnZFGobZVrpQaqHbv1xkfXti898Rxv1tw3KJEoXAp1YHDUMMK1TgkdIlVgmGsBXKYEhETjESodA+OKCb5eoMDFGlKiIcUaXKYnoZ3HZ6R6nIGmHuWKubMquK/FHHypDn6l0BNwR6qxyHVWeFBpICVqDOhFYbbJjTaobgItCZ8f92fgCingCGVUmO3DK6vVBtz2a9W9RgPhUtsrNaAj7ZZf+c07kO9gHkGSASIKe1xGRUVkSEIGZbYwNALQwtL8EwuplXxiqZBdhgZ0eUN2oCBfiPJGjDaf3V8QaV2jM9YJHj3MtXcN4x1DJh21BBUnEs6k46hYx2MFiFuFeyF7fgl4qXAJCAqYKpFaDMULdCAJDhHEkgKjjUTAYPVrLX6wtErcq6ICKDWcMYUtKIXyx0T7+eqeSWnfpPTI2ZGpWX33IJcrUk7yJGKNYbOyD1hc3ymtlmpzl55UmuydA7z+URkXEmHGwpkhRDKPVBPgCMlJvnV02sSXOaZF+IzYOsk3zirgQe3AhHiII56e1TSVmEhukGssz7/yepMGP7yy/unqDpTujWIdvLmJYGQas0Jn0ZopuDK+KBCI3EgAIgqTna/CuApMgbtBXGkdYXuoADqWcIWNpBNM0FZxD9KkVN7buH6DxQcVuyurxZ1a44+XdyakFh1CJAY5IoHKQgYVNxEpZB+eSyw1EYF+7gvGaI8fEIH6DkYbfLcaCwIinFlmYJLsGSX6Jgh78CmwD6CcoWSDiAIWgkgkFpPJpUxqOZteKaB6ccHrjtPOCGEPmEmvjnBDxmlsXq0tIDO41GYvOCNwrDpHDOAAmgIsJlXW9gnxqMR4bkw4PqvtHZuV6WykKz4wOTvMFR8928MRqzDa9+0fv/D8a2+1DozBgz1j/J5h4dCkanLaPAmI8EjerGOMY+IKrWIVDVVDpLBByZjk68c56lj6ojuYc/tTc8uPvfDK765t7JVYEYsChEF5fw24Zr9xe2zv1X7+4q+yc8sU7RmdnNGZrGKlDhocuqvKbJ+RGaCDIeLC3Do6oib8kPKgmpqgXNsATm1AsuzXERy7RTRWAwr8xk5jtdRYrTW0jjj4d6AsGYsIIi5H2OSIxONLufgiIALlGMgnFE25A2HaGyJdQZuXHS62JcAPckXO3jEc4BgXuCj/E+nUYj53vpC/UMhdnF94ojD3WCZ7KZ5YDofnfL6My5VgmJjJ7DJibgPugUoBklvvCOnoMHxyDRE22ONGJqWn4+B2x6WWc+OiYz2Tp4em+3nKs4PTEyJN5xB3jCd/571rIGgzy493j/ImZ9VjfAVHrJ2YVR5p7embEg1MibgyE2fW1Dks7hmST4tsQrl7YhrjiwnQVByhUSgnpoV6kRwPxhd/8vPfQsWBBtku7m/u1EAPAATQ4Js7pbXN3e1ipViu32bMa6wx3L81cgKP/PQXv3z2u895/GGeWIFKCcGYbF7gLrHeBliYmNiswSnSO4x01OpJgDF0hTOrxQakGzIvtTq8EThNqCig0j9aq1kDWXD3alsEKrvcGoCAO8DegEgwmE9G53KpZUAEqnAsmfNH4oAI4QwA1ZhsIQuT4iucnFm6ZxTrnyQBFBU+h1tdblckFs2n0yvRxEoovhwML3n8OcaVsdExgoriZJB0JHBHFDAF1aSzRdC4NDtroLUn5HiIp2GGhMbWEfGRzslvtvTfc6LrZN9Uxzi/c5TXNymY5Mvfv7wKffjaZgW+18IT3++dkAzxVae6x/s54tYBbvswr29K0j7E7x2XTUut0xJiaEo/No3JNB4oK3qTSyg2Tk0rHa7oH/706V65ce1GsVprwJ3tYnWP1ckH0TiIBmq3Glxr+/vlUqV5hcdr1Xrzt5vb2/DI5StXP7h81R9NAY8BKFOzKqXZ4UksQnYY6TioEcyVwj0pldUHxcKXWs6tPFFhUa6wmuTqVnWr1vjd+zcAO91fQMTpSsTC84AIWOYMO44UjqWcviDJeF3BFAZVmEmrTCHQLb3jZnAiPWN4P8cmnFWLJTq10qLXO6xkxExFwJ7gVNRqixP2OG4HLOIGa1hPhsEXaND7hiVW/6zZO2NwdXA1LWOywz0z97eN3dc6erRrqmWY3zEhbhvmdY3xwQB2DIxbbO4K2z/36khMvrdee/uT3RGRvm2I3zEm5KvJgWll75RsiKcdmdF1j0rP9c/2jMrHeRhfSuiMzCTkkp586+0PK6zXXl1HAyBozASIaKe0u1Os1/ahkSH2oeXLZXSvXt8DlbR/8Chcizs7LGIIj0qpBL+tVYCHUPNeW9+CjAPJ99R3fyI3UDNSk9RAQ69T4n6LN6smIzLMTwbmx0QY1Ep/LA8V6vpm6YMrmzv1xrtXtih/GrhObwcBHAKRpiB8EHAHfoTeS9ojoVAByD8FJjG7lC0sxZJZQIRy+sBC4kwIpxNme3KIa+qfwgY4VgClfcQkkeplcqNGhWu1NqMloLcEb4WODQ0eVGFAVjEwa7i/AIQJZvPUsOgbrWMPdfMP9QgO9/GP9QtO9PNP9E4f65443jV29NzAqa6hQ6fOOf0xgGN1YwcaEBjm+l7jj9cqUAqPdk4OCw2Tcqx9RDQi0A/zdb1TivZBYWsfH4irf1IJ6EDtHh7lLSxfevuP7wOgG9ulZi5Uqo3SXrWJwsGtOarVLLpA9tVKpbSHSL9eQ3Hw1P1aBeFVLZea13od/Q2AcvXGZpEV4Y8/+8NxvgJslJ4KKiw+OebFvXmjMwMkoHMkxUYPJFE8twJYQECChLMroPZ5Sgs4RzR7QnyGCNAIIGKlQoEgkM+FJiL5+ZV4KufyBkFxuYMJyhmx0FHSne+f1A9wLIBI9xg2rQhK5SalGpfJABqzSucy4hGdOQiBO1JGKq7Gw7i3oKFiYpNvQkp0TqlPD0Kl4B3tnoHUuK9r5lD/7JF+wfEB4fE+3ql+HvR8oKOHTnUOTgj0Fju05OrG7o3VzTpbcD/dbkAeDfB13RxlD0fZNSnvmVAMTKv7OErIkc5hEaiyMZ4aonOIn11+HI0rsgE0BQFt3IzPsLjZ2l8p0GWnVN7YPpAB0P9ffu3t5YefVZoYUEoys0dkcBOBBaHOq6QSejpF+lIGyhtML21UGt//xa9tvgT86IrkMDoIoCgtLiODJjot7iRIHRUGttRLuxKJ5Ep+7lI2v5JIFxLJbDydsVK02x9h/Akj6ad9c3oq2TGsGeaRg1yij0PKlZjRTKtUuFhikihsGqPfYAkbiSggoiNjQp1rSk6d6hOc6OEd7uQ+eG7yofapI13TJ/oEJ4dEx4bF/3Jm+H+fHDjUzT3ZN3O8Z/JM7+TJjqHW7pG2ruFoogA8s7VbQUMie1VgrdN9UwI90zIkBFBmVPb2UWn7sHhaQYzNGtsGZsaFuu4RAVR58BfQCYss10Elrdb3IYCdbt3+FnAcIALwgrloCoAKK9g2dvcTuQu0PwOVF9JEgYdw74LKlpw1eEAYK62eGTWaTNGSHpCdFEgmOqgnPRrc6QoXMGeU8mWcsUWoRGqLX2fx2pyJSHwpm78Abi6RzidTuWQ6wzi94N9pTxRstd2bM9qT/Rzj4AzeNWHumbQqlFaCDGi0NqnUIpg1y9W0iYhgtjgEMBVHTh7r5h7umHzoZhzqnDrSzT3RO4OSYkzyr61DX28bOdzLPdo9cbJ78lw/t7V3/ERrr90VbjJ/c9h8Z6/26ht/ONPPATHWNirmqqhzo+L+GU33hKytn9/SMy3TO062j3DFWncku11tfHh9HcilhOA4iNvwqP+XsbgNEfblAHGA/tYkC3zy6xtl3B7QWNwWJqm2hgAXhTWssAbMnqSK8oOFNDoCgALYGb7cEEjOP/vDF65u1UB9me1huclptEVxZ0qHBwgm7o/OJ7JoMiKZKaTS+VQmGwrH7YzXzgSsjiDlSWHONEdm75829XHxPq5VoSZB3AIuarVNKDTJFJQJD2G2qIlEYkOgZe4/O3x2VHJ2TNwyIj4zMntyQHC8h3ukc+rBjvFjQ4IHeydPjwlPDkEFGW8dmjnVMfTNQy2R5Hy52vj02hYooirrEd58+/3WnuH+aXnHpGREbOgYl7YOzwJZdY2I+XKLWEMdbx189ocvfrK6g4ZWqvsAx+YegHkAR+2z7PjPGvkuro1yFUm15p+CEivu7m1v7UDcwuWnL74OxEJ6siZ7XGLyqm1RgzOpY6Ig/ulYHtLE4U/86MXfXN+p77Bi+P2r2+99uqMn/AhHix+cGlQKZzAHDZKCyp6bz2XnsplcNlOw0W7C5kGz2M447snIsMDAjHmQR/ZPE2qdXarAZ2eNRqNLIsEUCkJv9kG66a1B0p8FcQW9+kgP52jv1LG+6WN9HCjfwE7HuoC7xk+O8B7smzgzyj85OHm6f6J1YOr42Z6zHYN/eO/K5na9AuJ/r3FjrfTTF389MinsHeO1jUxPKbDOSXHnmKiPIwcZPMrXdA0L2vu5r77x7o2tMmie1a3tvXqtAgKptlfer0FUGnUIAOUzffuXbvsH6vdLXptJ8Tkwb4u1dSgwjT+8e1VlYgxWvz/zMBhAAeYRmt1S3KMivCrcCdkBJX6z3Hj38mqRrfhw3+EHBGMGKqIjkOKyeZK+aC6ZWczlF/IIlPxcYd7p8llJFzAJzkQt7rTekRwTEd2T5p4pixn3zkpMQqHBYHAqFQRkitbAKA2MFvdavWmTO8HT2Y70TEIc7p4AajrGBhDUid7JUyPc+7oGTg1NHu8bPdk9fLy9f0qg+N4PX1hdB73fKJbQTARYOajy4zPScYFyXKLt5opbBrhjIl33mGhgUnri3MjQlPTXv3sPnlaGblaC3NqvNmq7NTCU1QqKejNuwXFnRPZvNvJdxT4SDLVydb9W+wIe22vrTU6DHN/ea/z4+dcFKkJDJ4TWgM6TVpB+qZkx0n4tzjz8re+hsWuQlOxo9k6t8cHVYu+oBKMTWioMsg3aHNxHIr1QmFsCLAosIv5AhLA5ESJ0xOyMY+4sT+3qHDcCInYmBsQll1shlEoruBKoKQqdTW/1gn5Q2wJqR7BtUtQyJjg1yD3aM360awz0LVTwMwOTR3tHHuweODU8cap/9NzQxLG2nlmZHuBYWwc+aGztQIKU55ef6B2eAdvOkxtbh7lDQvkAV9IzIZya1XUO8bqH+a+9+SGkBjhicAi7lXKxssuCgyACRMqNehkhAjChcYzP4XJ7E9YPikL1bgJMSQX1gPqBeWnU0FuViwAS3N/b2q6UkauEfgXx+h+vFJ78Cd/iM/pzs5gLLZNwh9WYw+6NbJf3S+y4yvWtKiByZaOeXvgWWghBhUF6mWxB2hePp+bn5pfn5xbm8nkAJRFPo1kPF+CF8ghktgKPDvEpYC1XIGuyePQGWiDUyeUWg4FWaii5ltJZvSDnRCZa44wAL50Y5B7qHnvg3OCDbUNH20dP93JahmYe7Bp6qHv45MD4mf7RKbG8vXfoxJlz5y8+CZ9/aw+JycL5p+871nGsdWh4RjU0o+BI9eDTO0ZmpkSaCaGqZ5T3znvXrq2VoYxW2GUk0K571WKxvAFVvYpG6A9yhE2cL/bw2zTw3eXIrZcCOOqsqL75ErVbsV8uVvfAZjaKu+Wdncpuqb5ebPz63bUpjUPrTkmsXsybkltccqONQMwTXCuiJ+zW0OjK2g4qQAKFBY1vsFO9Nm88kpoDP7IwvziXKxTS2bl0wUl70ZwgEzaQfsKXA8vDlbuG+Da7O0Y4/CKJzmxhQAlDyFQWidYqM9Gg9NT2kNYZU7tiJ4Z5D4D16506Ozz7wNnhk8gMch/o4j7QMdUyxOsZ5x06eaZnYPDEqdNnWjuOt3T++89+Fco/cn/LUMeE/N5TAyMic+eEDDJrnK/uGxeNzMiGuZIf/PxX7OevNkcn6o3bW6bKXj8PwRd56s8F8F+/HTyt/nm59edP+Nyr3cQaPuTVvcZTP/kNCHgFtDOTMDqTcqsXcFFgzjffu7rJrh/bKkEXauyUa8F4To17TTR4E7TwL5BeiGcXw7F0NplbzM5fyC+l/HFQz4wTLWxAE/Te7KTY1j1uRIOQNq/OSEIoVAiOJiJSo0OGu1W2oIaJKuhwB1/1QOfEkb5psHgQxzo5J3v5h7pFXzsz3jIoaO0ds9qZC5cuPfzIpQuPPgL9Ib3yhD2y+M+HOo70CE4Py8C/DAoME7N6kMd8OXayffCXr70NcFy+sd2Eo/pZ49wkkDu02B2brnZb/HUlVvuzuIsbfMgbxcabH24YHBGQwSoyBLioKCSJFRa0JPL6buOD61ugEgGRK6s3fv+n9+QGmvDmSX9eTfrMTCiSW1pYfvT84sWV7MLDucWMP+6z+z1MmHQEgdms3qyWSg5wMLs3ZbH7KIdPo7fejojEYJdaXEoqoHKEpbYAR2872j9zqIcDYvj0AP9IO9SR2fvaQX3Ngo699/CZxQsXi+W9BksvQKpXdvbHJRj4F4DjcDf/1MBs24gIxJVYQx463fXr339QZFeAlFhf9tcQ+RJ9/kvkyF/C5e4Q2WGH5n726z/IMTfmSgAotvACZIrOFtIQ3m//+KWd5jdCBbEOd0DZinROodahtQVIX8KXyGfyK4uFZUDkfGY+F0wGmZDXGaHokNkeAsVltKeHuCbQZjZXlGKCeqNNqcblahwQAdcs1ttATsgJn5yd8pDZg+1cJXiQB1pHTvXzIEfODokhQSAFTnZzDp/p+u5zP0B1sQpiqXF9u7JRafzf/3r0wfYJMPj3nh5uHREDa40K1Ge6Rl7/4yfbLN9u7u2X643PU9Z/BZHbHv5rT/6qiDSAkRAo2/UGE8pA+7CLtwNoFIvw20OFSbH++dfe+fDa5lYV4fLep2vP//pPgdQlldVnZCImOmh1hmLJueXFi0vZxZX0XCGcjnpigIjNGbIwIVBcJkdqSkRZ6ZgrkAbiwki3SmOVs6AAIhItJTHRUosbQEHz5kyUo7EhV9jNOdI5eaqX1zIoahlV3HduonWQJ9XjO6VyuVJa3VirsrO0j33nJ2cG+GAt7zs7BpT1L0e64GlQzV949a1mdtzYrDQTZLe8fydEvkxd+M8g+uJr/Hmm3MUNPmGJTQEoFu98eN3mS6DVsDY0iiUxMgCK1ZNYeeJ726wrefa5X4B5BPM7I7MCamQgg3IkXoAciUfTgMhCojAXziUDKR+7KJFwRcx01BFcUpjC4PrBVBopLzh6pZZQaKxSNS5SW9AUNhCXyQmgqG1BLR2RWwMtQ0KgrAfbRs/0C071Cc6OKe9vHe8cFWgwGxIw+zUomtt7JfjMLT1jRzomHmwbgye0jUoAnVNdE1Dum3BANW+ufLiVIP9VRPYP1G/95lh9/aYT/Pwr3Y7I3SEOr7a7h2Z4oWrDJ//ZS6/Pqi2YMwyV3UhHUQ+nw5A4kcLD8w8/I9EROsJNuBImW8hgC+nsQTD4VlcknJjLZZcXM8tzscJCtJCN5Pxoc0eE8sTYtV4Jgy2lJ8OkO0k4Y4CISkfeQkSkJuD1ZUaGndwPaR1h8O9jEuxk38xD58ZO9M5A3HNy8KFz48c7RpzBxJUbq5Aj8LHf//iTq5ulvinJqb6ZlqFZgONI59TgjOp42xBgcX2z1FyaVblVQb6IyO1Nd+eWv2N8Zkbqn18P/EX1+3mtdXe3/VJ5r87WbvgW+ZVH6WAaWpKvJkl/Fuo74AL5AjVFR/ntvjS4bJXZJTc5DfYg5olidJByhRPJhcXMSi6aX0jMF+JzAW/M6YnYfXF4jtoSsDJ5dodUlAnmzbagQkdCmgAiEiglagKIC9QCvCDoN0BETYWlmLfJWke7OMd7piF6OMruUd7V9R22SZG03yyWhUrT6Z4JyIszg0J4zqFzY8fah8GDbBTrtya+N3crzclWuP5tEGHn2UtNQ1c/WIz9F3D5aojsNzU5+1aN9Z29zcq+SI1BzwcIeCoCaj30XgAF6r4tkOFIjSYymF18KrP0JO6Oa+0+iyviDmZSmeX5zEo2nF+IL8wnFwARtzdK+2NGm88dXnRHzj/UOg66y+yIG6kg5YwBKHyJHhBRGRxyvV1pYHRWH37wXkk9HW8bFQNxfaNl+Oyw6JtnhjrHRB1D3Btbe01EPr16FfoPE0yBizw7JDzcMQlXqCD/eM+hP368Wvm8Zf6i4/uLANwBEcgxlGbsX26u7zbY6akba+UimNMi609LaFUkuM49tDC7zO4dQQ16Y20N/qhcq9S/IiJNo7S/W65c3yz+9Je/BYICvrJ607gnBdUEGgoC1NfDz/7s+Vf/sFVpXNtuAEBAbuBKpFoqGp+fy15Au/xi8+dzF+cyS4BIc5G2gQiR7vz/uOe0UOdUW0MWZxx0lwF3QY6IlZhUDclCSJSERE0ZyICW8JvsMTChY2IzsiQ90yf7eCCfTnWPt/WNo2VXpdLO3i583Gef+9HJjqGucfGDrSMd49JDrUOQL13D3Df/4+Omyr0Tk9w1IhDFnQpErYJaqFpq1KpoPmV9D40sAS43tuolVj/slg7osVg5wLBcre4hgv0KiFRuIdKcbYcGf/oHL8woMCWYQSYGsgoSJHPh2TfeXwOdXGTni1eLDXswa2A3iEF1CMcWs6kLmeg8WoPKIuL3R0nGS7lDmC1spVP/42stgzxo8nmbL+/wpUkmrMMYkcI8KzGJZZhQbJriaRR6GnNEoOKorGiNIhBXy4gYcDndy3nodBfU8RubO/A1a2i4o/H0v//gn+89cqaPC3UE+AqS6FTncHbp4WLtTqMf/3kj3MFBQwCdV/YOFNPlD1fXrxe3txskHRuZVrZ0T07ytUNT0r4R3uCE4ONrkEMIAOjVV1dRgkDnuVlN7g6RemW3iQg72lNr6q5fvv4nntICDhESAdSXzERnLzy9yYrkUg3IuXF9Z98dn0NjxYTXAoLKGU8nVrKxhfnE4lL2fCG9GAzGaXcAEAHda6Zix7qFJ3uEzvhFgyNGoq0iMTPphRwRiAwiqVkgMk5wFJApAJ+RRFskdI5Y77QaEDnewwVq+tcHTr79wSfFKvqQQAiXr12nnL6zveP3n+4DS/hP9589Nyy4/0T7wqUnt/Yqf20g/a4QqbPYo2HbRnm3gdYbVhtud7xnWCTW0iA4e0clk0KdREP2TwhDyXl2Td1+hR0JuVVKIE3u/sNUWaeIpgaQ6Ko01or1H77wmkBphlICKUD500oL447mr27Xr++gJN0pN9b2GpHCRTB3SqtHaXJiZDAeW87GluaTILpW8qmFSCTl8ocoTwAyCLPHhmeJf36om6ugldYQeHkQxrg9INcSAIdcgUullmm+VqYk9JgHEEFpQoakFt/JAcGZQcEQXwXe8M0/vo8+KLuQ4INPLh9vae8amTnZPQnqF9IEanrnEOep7zwHX+HPGvnLeMDaHRGpotFZ4I4GWqhabfzx9x+1t49K1PTZfkHPhGJ4WjMuMEzN6uUGqn+M11xit12qVm5Wgt1SsYz47m4RQTkJkrJUr+1Wqs0ceen1P4q1VtwZNlBeqM4Gm8cdya6X0K/2KkhmgOhxhDJmV8zgQDMmVnskEl7IxJcXUivzqaVccj4Zz/pDMYcniPbsuNJDs7Z/eqD7vtNjaN0FBb4yTNAhvcWpUpMKJRqil8lwlYpS6WkjETJQEWAtzJs9NyFvHREdOtu//Ni3S/sHo6mQI6+98buHTp092T7SNSU9DOZxePZE5yhPpl8vlqt3gOOrI7ILxrh60L6QJgqxaWZa3TMsGeTqNNaIUEPz5ET3mEhucPSNC2zuCBrYuYF2jsJfgPSustbpLhFBbw8JsldG36XCrliGZn/ld/8hM1CUNw6gaCw0RvtiuaUdVMjKaE1UBSEiM9nR9B8ZsDBJaMZAoJCJrSymLs4lF/PxuXQqF4omHWiddoj2Zbs45uN94v/5jTY5iGFnHHLE5oLSHzKBkFbgchmO5rC0DrXOocV8zTF/gzM5pbKBW7z3WNujz3x/r4YmxDe3gTgbJ1vODk7NtHRPnB6YPt7FheIOqFnoAHz+7d3dzw9i/DVcbtb6v4gIPFzaaUD5gDT5j7c/HRvkc6YUVjpdePRHb18ur1cbm9WGK7pwqmO0d4w/Ni1545130YD/fuPmPAsI77vz7A3WAleq5Uqt1kRkF/Ku2nj1rffgC8oNpMnmNVAui8ObmV9BE1ibxb1yY32rAogwkVxz+RCaWLT4fb5CNn5+KX0JHaoQB884F4mn0VpHOsT4c63jhqFZ+//1L2ePtE/bAzmbN273JRhfErP6pDJMLDFpdXa9gdboaVDCKswHGhjSRO2In+rnfeN4x49e/M0n1zegRsCHXN3aHuMKWnrB0XO+drznUPvEIF93vGPoxdfe2imVS+w45F8Yob0DIre65W3Xg1/Bm9VAUO2CAG7s7TXMJreAr8Px4FYZAQHxh49314po4vtb3/8lCMhpiW5oUvjHD66gre61OlsManfPWmiRXqlSgUBjXMW9YhVNVK3t7j/5vZ9BmpjsfrRbB3eEEtkKO+SyW6qD+gREfv7q7yUmGuSxwuKzOOJubz4ZB5V1Cep7Jl6Yyy6kklmXN0gxQcaX7hfQLSPG1jHzPcfGDfa42Q4lJskEshabH7lFJaY12iUKs0xjVZmQNwGUwbyryQjUnWMdEx0j/K7h6UGOUKDQnBscPT0w/mD70DfaRg73844PCA53jrX2j++Ua6xQKd6dL9u/mSr7t34GqoH+WWNnFRtsaUAKMxhd6ejmL57/7tp2baNYRbvnWAG8AUq42jAREY7Q2Nk3/YuXf19i9Q/bXF+FtW5T6QdfBMQKOLHChWdA/SpxP1QKCxNKFFbQkuNyZWO3tLePNlRu1hpQ+kV6Bzorg0mpjF63fy6XezSfuVRILS1mFxcyc8lYwu0JkA53D48+M2LumrIfaReNCzF0qgaDtm9bHUGQwTI1ptRZRUoTe6gIrcU9aLmpjT08hAj/26FO4OphrvxoWy+kxune0YfaB1omRPd3TT3Yy/t6y3Db2CxQK3BardzUjXc5VNWkt5tzfHWESJWdf6/d2N1q0jgwtpGIDI5rLPbY1dWtrb0iJCya+K4hvEAOXXzspxy+ub2X/4uX3gaY0Bqwvw0i7HYSdgfx0qPfU6ETPFBHVWMuTziDlnyXK1C2imy5Wa80xBoSHB9aqUuElWYf7S8k049kMhcBkaXs4lJ6LhNNeDweinF2cKiWUWxA4OwYMx5tmyQ8KbAeZvaoGUgThRYXK4xos5IWVxgcGosbSgl7ogtCZExo+vqR9vuOdZzuHGofmOwem3mwtffU8Myxfv6hXt7Zcdk/fPPktc1KsVS+OU/+t0Fkpwq6DW0g/XS9CB7NHVqY5Jvufaj9N797p1zfb6YPIFKsojT5zg9e4whM7X28zyFSq9+9FP+LiCTnH+Np7ICIyZk2kP5gYg7lThXR4noJgQLlDhAhvWlgIXS8jyVg82TD8QvJ1PkcmyOASC6e8ri9DrevbcJ6dsQ8JHAOTZP3nRjkiDHCmQLRBdoYCg1Q1qxML1GDhcfRoIqJ0TTrOxmBGJnRRnMP/+njze/9+JenO/oPt3QOTIsfOjd0uItzdlx+vI/3zZM90CZoBc7BRO1dIlL/HCKNm4js7ZcrYCj2kR2ALDCR4a5+kd7sM5iJ1fWNg13tLHHllp5B+x1uIlJiEWluOvgbIvLIMz8R6MA+hI1MChxEIn8ebY6oIWq9so5y+cp2FTqzzhYyOhIaKqq2hqxM0hOYj8WXAJGFzAIgUkhmfF4/VJOz4xjUkX4uNTRDnOrif+NEL+5Mme3hJiIWcItyk1yNAyJSNPDoUJk8aG0YGYEExOnEj194c30brVG4srYLHPL7D6/d39INVuUbpwfbRiUPnOr9jw+vr97YuK2m3yUi9TsgUkKrSBrNHXNbpcbc8tPt3TP8WUPvwOiHH3/y/kefvvXOB79758Pf/eFTpcE1NKmAOtJ+q478NyDyyVrV6s9DjkjNPpneHs0ssadJoBzZKtfgQ66WGtB0UGUgRwCR5uiuzZ0JRuYz6SWo7PPpwlwmFw5FvIFI+yTePob1TVr7p7A+jv4f7jklM7gxOtE8Kcvmiis0VgU7kyXTkAgUvRMUl44IG22xaZH51dc/qNw89QLk/ku/ffv4uYG2IWHLgPBQ2/jR1tEbG2iBzd7mVmP/Lnn7L1R2trjvox0gLDs1F73E04+0d030D41/7ev39g6MrFx6PJVZ3i0j4rLYDyr7Cy+/WWLPFvibIwL8SQbnIEcAEYWRziw83MyR9e2dZrdBlkSPLIneFpOxGw2AZzBb1BfMAyK5zPxcurCQK6SSaV8w2j1N9M2QfZMWQGSEj99/ZqRzRIbRSUgTyp1wB3Mqg6OJiERlFasJmY5Rmr2ACFp4qbb//Je/B0RW1/f29upQzt6/vHrPQ6c6R4RnB/ido9J/vOfkp9egijZKm8Umef2tENncK4KORQP7yA01bqzX333/+nvvfXJjbX1tc7dYQYdCXLmx9/7lbU8oPy3Ud/ZzESLsGqQmIl/BIP4lRFaLDdCfChwdmKazegsrjzfXdSPND8Z5t7xRbgRTK+AQITskJi9wF/CM3hp0BbKpW4gU5gv5BTDv/QL7mIgZ5BIDHMvQDNY7pfvm8SGTI2WiIuB1/JEFjYlBK7hYRCBkWjsQl8EaxmxxIHC9ybUGWVBDwxrQI25s7H7z8Jlz/dzDbaOHW8d6x2XDkxI0fFJhleLd3j7nV/ZvFvfa1bUbTaGABkbqjc3tOvR8sGNoT8ROEW32KaLH13fqAJaJ8EzP6jr7p1545XcVdlt6nV3l+zdEZKva0NNARzFwBFDBgbVK7PktaMnB1u6Vte0rm5UfPP/6MF8DT4AcMdFJOeaFiuz0Z5LppXR6Ls8isriwEgrHe2bIYYF9ZIYa4ZGnuyX906b/dX9n36Sa8c+rTR4LFfJF5jR6h0xplaoJpd4uVpHTEpNUS0NtIpm0TEFdvQqy+6DpPr22JlEZwSm39fNbB4Rne2fauiaB+jeu79z9POodEflsE0m9cdtsC7sOv7mIt1Y/WEeNPFqlEYjmODzFK795B63r2603J7Aq5SoC5e4RqX62dahWKe3t7qEp0fVS48kf/XpaaSf8c5gjDOr35Vd/+8LLr0BcePwptRGX6qwGe5AK5AAOrQOdxwXmRWvxQ12Aj5fJL84VFvO5Qj43n0rne3lUz5RlXOAYnSYHuPjAtKWlTwKgmGwJjdlPudKB6KLB7FKoSUgQuZaSqSmhHJfrGKBBMxnFiXC5jGaLgErQqvJG4/FnvnestQ98ypFzY+2Dwr5R0bUbewcjX18Nkdt++AIit3Bp7rLa3NiBZ62xG4iaoLz02ltTfKk7kPz42uZ2EU1ZfnrlBkE6UBX6SjmCdjjWm9+kVqvAy6DxRqgj55/9BeQIOAJgLT3OSORqi5UwWwmtyWKxoWPujI7QjIbUQWW3xwARhTWgwQMWR9gXziSz8+wibYRIJlVoGze1DevGZqj+cfPELNM/bZ2SMv/z384KlQ7KlSWdKbsraSH8ap1dIrdAmsg1NomaAkTQsYT2hNES+N1bH8BnLO2VNzc34bM+8ey/Hz3b2z7E/9qRznNDoqMtw95wYWOjtrtb/Spje1+uoT6bxoJyzmbB1m7lzXfeHeMKOAIJlJcSe5QWIPLb19+652vf2AZGq9z9uBY724X2MKIeUduvVav1/SYiwFoWTx41tZGGOvLR5WsA1vX1jV+89Cu7O4DOc/OlDM4YGBY9k1TbouioTzwAvs8ZSIaTuXRuPps/QGRU6paYEkpjQq6PzWrCI0LH+Kzj6LmZk508IC5AxEwEKEdEb3JKFTiEUmNT6WmllpFpacqZgXyJJBaQ1oKPWq8WS6VLTz59pLXnZPfkvSf7zvQLDrcMC5VW0ByIVf4b4Pjstn8whgigXL+xAX35+z/82bFTrR9cuV5i1yChyrK198nHV9wu337lK6xGOUCkUiqxWxoPNrjDi7/57nWOgtDZEwo8yBHpwSEi5bm90xyQvLq+A7QGnXXxWz9SkmEFEUKIsKc/AZWR7og3lkIHJRbm8tkFQIRvTvjz/055HmGCT+psi0N8W+eofoCD/b/f7JSoGVdgAUqJwxmHNEH7sBS4Qk01EREpKSjuMr0Do3yoiqH5EeTMP76+NjwjOdU7eaRz8v6zIye6pxUmDzpTsXrXautLI3HAbvslhPrW5i680RNPPjM4MkHSrg8ufwrNcmNzp7m9HZ64V6xUirXa3c/rNlkLEEE7T28iAoZo8ZHvQp+XW4JaW8zhz7z21ntoAWRxb2Nnd227CJBdXi+9+MZ7Ar1dgvksgTl0nKAtoiFDOspvoQN0IBJNZbNz801EZoxRQMTue8wTfUZqSrcOoy0MHAlztJXb2s2zubLASw5nAtLEjLkVUN8VVpXWrtDQswpSafZhTMzpT92cm4MmQYbI4gkdah8+2ssF836yj3e0c/Lp5166vIoOSPzvgePm8D6QJ3h4dmxArTEYMaLC9tLy/oHWu7V/Z3dt9yvUNZaq9uuIuMrNdwSB8Mn1rezyU2Z3GnIEEFGaGMiNzZ1S/aYaLLKTVkykIDY7IUG0TBIQ0bAnFWtJNMNFeQLoOC4o7iwi04aIwblMB55w+J/o4VCn+jQTEhcQ1yjP8sCxfrHSbsKDNjrGuFOULaTWULMSs0xJAHcBIiINbUanOMbfeOddVo7WVnc2bxSLgMg9pzsO93JbJ+TnJuT/eP/Z3IVnd1gJdJctcNts+B0G7/e/gEgVpBXbM2rNLaUNNPa+XSo3EQHLViyVK+V6/dZw2d0jckC8By+xD4nwznuXTbagyOgyQ+9lUoHk8m4NLXmqseoXTWzVGu9dXhfpKKgjQoMLnUlrj2kdMbAwKsKrsTI44/HHoLwvIUSS830CqmfSqiMWpPrUmQE9+PdxqbtjzDAqsN57dKBvVOYMzFnsMacvC9yl0toEIqNUalGpKMBFICN1eEBvcWfmL6xt76B336+vlqtche6+sz0PdY59o3X01KDwwbaxi99+Ecpf5c6L5f7K1787RJD0LdXZjez7oEuhudizf9EEU3NoER5BmVT7gvf8srfPbxNGN3Cjv/39u1yxgV3ZHuarbZ9uVPbYvldmvy/ImSvrJTVG2/xZszOpQIdCBEEAAyJaexTtB7GgM0A8kXR2Dh3WkUvOT0rdgzP21j5d3xQ1NEMDIgNQSqbMU3JXz5TugbNjjsgyFAJ3ZN4ZzDk8SSAupdKqkGIGPSMQYnZHSq1lcnOPNdfEru/t3yjWP9oone6feOjcMFod0cU53j1zdlD6xvsbzfnf1c2teuNgW3q5WPrzOZP/bMnQHZrqi5OMf/2lvuSU8p3eqAS6oVxmV3yhsQKgLGco0zzbDWeiWtz56RrqBldvbKBVgntIhn3vp68ZyIDNl5cZXGKDs3mghN4eNTEJdJSB2aXFvXZfOpk9v5i7UIjPDc+gg3+7xvDOUQs6mXzS2jtNnBs3jEronhnzA21T41Ic9+b1ZJgO5KyOMJp/V+BqhdWkZ5RyG2YO6HTOTP7RK2vVaxvVl9/409G23mPn+o609bcOoR3ux3umT/byT/aLvv3zN4v7jY+vXjuYHq8fnJ6BxkH+rBmbz/k/7ba7vYV8eq22s4eWfrH7dxoSrRXgAGOoNNkZf+Kjqxurm8ViGe1W2Cg31ssNf/IiRiegAaFjwx21xQ9htEVvPQg/kp5sNHVhKXt+Pj7XM2Ea4jkgO84OGdtHTAPTtq4pS9uYfkBADgitR7v5Xz/Zbw8vzepouy9jsvp1RkYmw3QaQq+xKeWUQe+h7HEz7uNLjEKZkfJEO0e4Z/vGWgem2oZ5HRNioKxjXdP3nR772uGunX20L6zCejoQhwdDGX/WY/+PRaSOFrOgD9octrq2VX7up78SqS0WOmJ1xuQG6scvvHZrefnlG9uQID965Y9Sk7uZFyprwIw2m0TgDlzReThUWGHxwY8Wd9oXXZxLLy8k5numsG4OPiRg2kZMgAig0zFh7pzEemesPdOWc+Oqf3qwQ2LyglSzMkkzFcLJABAXIAJpYtS7Z6b1EhlhxDxak4vxpWV6UmW2n+oaOt4x9FDrwPHO8a5JOcgtIK4zfTOB5PwmaI8qcgPIVrPZUf//T44g8VCtNkcJNnfRbguN2Y45Akwgq8GdM1L9L197u3neWnPFIyACTQ1YACjo0GwqLDN7cE8GLXuzRQxQSqgw/BZ+BKScgXwmgVYCT0iZ9gkje8Ap2TVuAT8CiPTzqG4uwKEfFOCQJie6ZxyhRZM9RrmSUN/RQggNIZWaJRJcraJJWwxyBNLH5op7YwWHPwkfr2NkZkJiONI+fN+p3q+f6EUHboyI7j185tK3vr25V9utoAMW0IEzYFLK+3dCZP+/y+H/F27Nyg6CDcRts81FShPOBI2UF2p3InehuWtsj91sDNdf/vZdqPXQ+JAI6OxZOi7HvHCF+2hjNYuRmj0EFS1fdCZSsbn51KIEi3RxzB1Tln6BHZzIsMCOUkboAERaR3WjIns/D/vn+ztxb8Fkjzt8ebsraaWCeqNdIjVrNDSAIlfaJHIc/Z8Lb6p59AGQ53a98cLr754dnB7kKduG+P/r/rOtg7wjLd08mQrNO+9WtnYre6xf26/csRx/hVWg/+03qCCsbT84ROW1N95WGwkj4SKYoM5Crzz67NouOhR0jz2NDe57E8uYKwUJAkUcaB8SARJEYnQ1EUEHm6N/3BBu3jfbw7Fofi6zpGOyQyKynWPqF9q6Jsyjs/QgD+2q7uFaQXH18YgBnvWeY0MjAgvuTNs8WcIRdXnTBOVTqJAGFoowvdGDTkVjolBKfvj86zd2GpsVhMhmteFLLT7U0nP0HLsYe0zYNjDR0jP805d+0zzEr8oCsbO99wVNe2s48e/Y+He8Hcg2tky8+MpvHC6/TGNGoFhpg9V58YnvgtDdKqOKf2OrDAymxNxWf15i9oAZFANx0XGTKyWz+A7+pwkb4EqQMQH/bvWFQrl8etnkyU+pnV1cYz+faB/Vj4mYEaEDoAHFBdzVPm6CKn+iR/LNU2OEpwCpaSQCvkje4YoqtQSQlUJlF8vQSlQd5vKE8kbSf327AfHx6t5WrfGHj9d6xwWnukc7h6cBmpMdQ+cGJ/snBNe3kWgvlm8Oo37OGnw2xvt3bPw73sD0be+ikYf3Prys1mMY4dCZrEKZ1kQwOsyG27yh5Lw7lA4m5tLzl/SEW0MGZg1OA5OYUdsAC2h5+BH35QAItHaFDKnZ/zSEzpEjgiqLJxDK5rIrttiKOTDfPWPsF+C9HEs/B5WS2OKP+NpY818wAIl1TZjuPz3VO6XT22JGdKwEWn0HiIhlGPhEkRQDC2+hQvqb9R3SZIc9Tbp5ONhDLR3tgxNoZV3v+LH2wa6RmWOtvc0p7zI7zVS/OehXQbMNCJ5StfwVVrj9DW+7aAXmZ7diEbj2YOR/fauo0hr1JnxWoiBsjN5MyFT65jpGCMBCoSdIZ4hwR9E6xtvS4a8HeBML6Q1HcmpbxBKYExq9/XzztMI9JrQrrVlX4mlb+CnM8/C0Ktw6bOzjWo91iY518mSYH7yngfKCygXmnJVjCjUlV5EQgAUUdzMRAFr79VsfNRG5vlP/ZL0YLSw+eLr1ZFff4faBM/0cIDGRBn/4ye9fWUUnYKP/iVC5vbijtbVfdV3u3+ZWrR4IvQo6fRncfr1UKjXh+PTa2suv/lapMah1YD88AA3gsnT+kWah/3R1B4r7yuPfmVVhCiN9V4ig01NJbyCUkZldRKAAqdQ/o+/jGkcFtvDcc4BIZOEnVv/jHFWkc4rsn7H3T1v/4d5zYqMX96RIXwJjAqQ7IlbiCh0anJeqSImSAEQoJm7EfcH44k4Fuafm4fzXtovuaPRYRxcY+WPdEye6Ju491m6y+UrsxN/m5t7tlqS+XzuYD6r/3fQvtH8Tl1vQoLkG9ojal159nS+Sm612k4U0YoRKoy0sLq2BFL75r2rWi4gW5i48w54qc3DE6JcJQMREBdz+VHO20R4qcBVUS59kYNriiDxhYs5jnkeGha7eaWZcGoI7UFP+7ehI24gU92fIYMriDjuCSZXZIdOQgIhCa5+VWSBNSDoG3AVIeUJZ6C0fXtu8vL4NoHzrB98/dLbteO9Y66jwUPvIyc7xk+eGI6mlTz5F/+MAuKpJXPVqFR16ySKyV9r5eyHSvO3s7NyCo8FS1k+ff1mqNql0ZolCK1fplFpdrjC3tYMG/5vDJsin76Eaiuaw2AT58ogAfCZb0O6OucJZJphDftwe75syjAhI4CjwiYBCy4Cpm0P381zDIs/ZYd0gn/h/vnbK4kvr6YAjkqL8UTBHzVlFjdEplpMylR3Dg5jVb7J4aHfsN2++i7oNOnBgu9TYT6+sdEyI0M7rAf6RcyN946KHjrfvFBsbW5UbN7b2iremWW8fPPy73cB6VNjzTre2tpopc/X6jVm5Tq7FlFqT2x8ZGp1MpNJoaK5avaWHS+ygBEhNf2KJ9GfRGR22LxvosE1HCGo0VKJAcsHmSZKe7Cgf40iYll5lP5fqnLB2T9r6ZlxHu7TdHEf7JA7e5N+O9/dyVWZvzOD0AyKkO6oyOICyEHEpbSIZodW7rFTIZPFK2UP70apOdqnbje0N6PpHu8YGhMZT/byj7eODU7KznWNyNV6tH1T2Cjrh7GDlfK1e/vsiUi6XD1KDXeqwvr6+sLTMFcpNlAudIWPGg6EYWmLEZtBeudKsMmgqpNoIpBYNZEBN+O8KERXkCB022nxzy49lFx71xRYwe0ys844JqP4pnCsP9HDAlTBdU44TvYaWIayP7+ieMvVM6/7lcIfK5pVbHVZfxOoMYVRAqXOI5LhEQQEoai1jIQKQJownrtWTP/nFS+y6vuLl1Subtcpv3r/xv492f+P0wLnh2TM9U4dO9dx7/0kHE1hf22sOp6yvrjYRKaGV239PRErsrXkfdNdjjz2mUKkNuIN0BY2Y3eUP1Vkl3LhZdIC7AJFPrm/5ouhoUy0O3jx6t4gY6LCOcCdyC8sPP5Vffkxn9UbyT/dOGHsmTGBJusdRjrSPU8Oz/rPDlnOj5jER3cvR33d6qGNCbHKFjbTfZPM6vDGtmeYKtVBHABqlFtSgj/FmjFavwxOXarG1nXKRTZNrxdLVcuOnb/x/lX33dxvnueZ/sj/dPbt7NpuNHTuWrMYisZPoIHrvfVAGwAxmBoNBbwTBKopilVjErmLFdtwSe725ufE9ceJsYss3cVwkF1WKnSL3HQwtOze+Z8/yPOc7AEgQwDzfW54P3/e+n7G7T89J6ttVAoWtpUvZ2CzM5vvvP9zh+rNwx5x3nvzgIff/18/B3+N7P0++txTwPQV68I/PffLtaeKnZVRfef0Nn9+PU3EugvRUh/Zq1VmfrvNzIuXzOw/Oj82CDAnEctFkFaT6/x8j8Uo41euLZcdnZ1nMzI9ML0aSg15soEMWBEnCU2NSc0piyTTLoo3CAHvbGNc4U80i58lmdWVkEQwzXz1PpXNUiu2XavNEXUHaYI84kIQzkETJHvgDSBvmrv7iIbzbh1tfbh785d7Bex8/4Kl9Z4WmF5tkZ7u0EOI7JMYTDQI7Qk7NXQOrv313m62tt3f4YLPWi21nFz7v08/O7Q79QRxd0ifsQtne1j6XUT/97c7Bk6393e2Dnc0n2xv7W1sHO3tcqDpgM1tulxe7G5Zr/rLL1osGAfvWu/8yMbMwMDZp9Xo9KKo3msbHJp6wm1BY1h4+2tzaesJtQ/rki/vDY/MOPwUKmkwPeaN5Z5jtb+WtgWtn6eEalFAVf3oISQ16mX43XXVSFVusZMWLNjwPahFleifmgJEZwIWZK1FmIJq6CJddbCBFelJsort0VBe4L0Oi25KGiC/REwJVpJnvtPtykXgvcEEyyXSpEojFLW7UGYhbvIQdSQSIHsgToulBEK1GH3n52hv3IS18cvin21sn21THmuQw8pRusJR2ma1JZARqxFr3sXre6OVr97cPv7i/zxUXqjGys1fz14/XN7jL/nB9/fCHKmEepQPc1+pPuIt9+JSUPXb9bG+Hxe724c42e9V3v77/Fesht7fZQPDk8N6DbbbU897h13e3P/r4DpEo+CKUJ4ybkYA9EIjS9MTUFET8vdpeLzDnzR22oCDQ8dmd9ULvqNmFE+n+ePY8ghf9sXIwXv2PGPEl+gD/7ldgJkGmL5zsn5ibA4CZXLi8SGbP06XLQfoCiHewCKGBalPhAmOinu9rlqJgNTxlWKTBOqVIc5c133sJJVNYIlGoDsSSBWDE5iOcwQQw4gxlwqDu6WosM2BCqFTf+BcbB7/58+c/rePLLWhDl+7ZM7zObts5nk6i9bWKDTyZpVNqbOapjtV1vnCm49fv32IF5vr+xhZbUfyg1vuD8yyslD/SKQf/MB7Zw/7GNoxbjx5z1S83H6+zc/rw+9uGAXDhWRF69/797/ZGPjl8tP7kf/3v3xdKw2iEMVh9OJ21uv2xVBZnGDKd8gdD8wuLh7WOMFyzv6/uboAtg3WY3GGdFY2l2OPPYCDw2SOZIba8f6L3qVPysi1iv0Mt4+31J6oBpi+Y7A8BElVwd5NzC5Pz8xOzV0ZnlvL9l2O5cSBFaiT4GrZzYocGb1FEO5S4UE8r7WmVIyM3QeiPvlCnDGClRL4Xo5OpQoXOVUClGhxhuz8OjOhtODDiwwohqoJnBz2xbHFkRmkPdcitz5zuooqjPSNz//TjM81CXZvEePKc8Gynoktm6JIaTzXxm/mKulbh62+zX/3UFAE7+7kv7yAn42q//300+IfIsFNLpMGt7OweHh58v3T8d4tmB7uPtzbuPoJE9fCLr++B9IOp/vKr74yMzsoUZr3RU2vxmfFHiAiVINNpncXsj4QjMSIYiU5dZre+w5PAL957vNc7PGnxRiFH8kUztgDN1pVl+jx4IZwehAv+7+hg+/aS5adLvtyq71MgkA/EyxPzS+NzC+Nzixdnl89PXw8mBujyJa072aEM8fUxkTlxRuABM+FrqU4Fxq4M62JyE3WqSf9iY3d5aAJPZiEhBP0OalFnC4Hl2hDK4qF8kRxX8xZItwXjJj/5fCOvS2597kznm7/5MzilP3z8tRtlnj/d3iHRAhEilRnkiUhhPNch6ZSohN06sUwNLuL+N3cOuI5FkA/X9r0dcAUFfhD7tf5tB0ctFWqb6A+31x9vPnwE2pO1tc3NnS3O3NivObha8fc39t/7/S0UT3YrLXK1TWfyGs1ejw+zOvxhPB4hyFxP+fY3X/3pL7dUOn2EiButriurN+6u767vHY5dXnaFSG8kATkSfHCrPx5LDwEjdjQNQeE7AfgtF0gNYEEsqApE21CsFMAK/mgerhh4GG8kNTG3AqTAODa7Orn4Siw7QuYuevBeiRET6nGZPdkkC0msaZkjJ7dl1Y58lzws1uJ8WeiZ4/x0ZYTIlP14kkhXsESP2Y2ZnJjNS8JLqEwhIjWYKF70Ylks1UcWh3lq+7On2wanloGOjz57CON6be3L6Appbch/+i8/4Um1QoW+S6zkS9VihV6q0PJ4vL98fOvw24YIgPt3vzma9j+Ip3bAlf6HNGB3/7uDWk/YUiobwEHt9m6tidvvb31hdKEmR8iJxEy2AHcuAycyTg9qd/vLfYPsGRCg8/BgfXvz4799isboQJTU2d3eMOkOkzYE80RpBE/pXBE7XM9Y3oTQrmguXNt2wi1YHS3z1rhg+xkRZeAiTPaE8VIwkg+iWZAMXoRxIXG4gBCLJ+fWJudXJ2ZXWUau3KyOL7F92XIXrKGCyIiJTJTOV0r0X8uOvNwz9rqPuCjRkXxlVKIlWkVOk5eI5/ujDNsWPFk8j0TToBbtHgLSYL0t7I+yJb8sCBWKl0NMj9TkO35OYPPH1ms1Q+483INgcfvBDmiR197+7fTC1Z+dbGzqEHQIu6UqfStP3M4TKzWG4ydOBkIoiOLHm1tcrgXBhUtK/xH730b5rdpmIMBXXz7a260VDt4//Oab7ffe+/Ctt/713Xc/ePvt91+6+Q6e6NXZwyY3ZnRGlEafEyGt7ojZHrTY/G5f5K+f3tk5quVysLG9uXvIFlj+5T//zuYLR5k8cKF3Bf2xNNBh91PWAPsxQRXq3LgTz8YKF9gF9niJqxzor5X6CZHFIFEIxQoImgL4Q0kkyPj9CQShEV/c66WMdtQZJFlGahifWxudWb3y0i8TpQtMdQpNDYvNWIc6HM5OF8deBUbKF19T2HN8NQFm0iVDpfpYI18XLw6zFVoy/bneMZypwAuBWpQqHRhVBl4gFQStBG8GoQpgJh0yQ6tILTe6iUwvcMGt1X+zcfC4dsbzd//nVrn//AunGtr4EmCEL1W2dEkE3ZoT9S2BaHxwdPrh1sEWV5dv/4fx1QO2ehG7uLRxAPjTrdt9Q1MXxhYrfVO9A7M0M2AwhqXdTr0hbDBGxDKn0hAyukl3KK22BCH91ttRsxNVGV2vv/2bW3/9/Kjv0tb2+sYGt4H23hbb6vfW5/cQjPHhDBJLusO0wYUG40WQ245adTiyfAFN99nCGQjTQESwBo4OlCgCHeFYwekhXF7S4yGBBeACEERoP0IDI64QNTF/9TssXLu89mrPhVkIx0ThosxOyh1Jng5Hs5eBkcLIq0h8UqJn2mURngKDNPg///ScwhpiyqNAPZM/j9EVt5+Gl2NrqgTiYCxOP43XelOy5Q6SlTapDlDfLvnxsYYzbcLVV391xMvB4V++hEvILhTfubeuMdnBTBraBC0CZbtYL1BYTzWJTpwV6B1hZ5A2uqJKEwITW2dHYQRINE6tLQSjwRnRWINmD96t86jMAaHC2SWxdYptMm1Aog6qDFG9hQKY7SmHJ2/3ZDRWXO8kbH5GoHKI1Wyd1cHx+dv32CIqG7UjvbtHO0W39g9YRv7ti7vz138RIDLAAozJ8nAs2+/B2F6iIbq2bEIUAFxjslCigtJsX0K4OEgk4wokHF4SdLTNiRktIbALNJTyAimuWMifCAeTPi8FRurHsywRV9a4cXrlxuTi9aHJhXQ/WzTVHmEdF1+P8w2UPlC1R86rnEW+igTIjSmVNXWsSdUkthC5C3hqMJYciKf6g+E0sO9w415/3FljJJqoACMwW0D7mAPUzxo6Xmjs1LnQFqHqWGO7wuxevPnGB/92G0i5t33IteQDjv71gw/D8Vxdu/xn5ySgJTtVLtAv7QpHq8QK9ifW+SWmYCNP36F0tklt8NtuY0ioR1q77SJ9QGaJwCg1Qbru46sDCjNucCX1TobtqGhNWFw5qztvtKcN9qTaHNM5YgoTCklO78js377ZhJeGt7HJnb+uKZuP//b5+ubup7fvvPLGL23eiCNIIhjk9oUIXQ6DU2Lr+WcRgq33G05UwslqhGGbwvjwnDuShljvQOIAiBEwVwG+QAJwVGrGF3c6MLstEvAnkkxfuTyWKl6ACTy+sDa+sMKNM2s3LswuTCxeHZxahAsYzgwLDGFg5Fx3EKSi0JjsUJNtslinkhJpGZEuLtBHfnSKj2UvhOi+dHkc7JFJD3h9JABhGWEPk4Ljqr3JHpgzlgCtdoYbBeq6LsXJFjHYyzmB8kfH682+SHFo/M76HlyNT75+9KBWXPrB3uHNt/8wOHOTr0GeqRf+9+MdbIlapadT7RFo/SJjsE3m7FC54ZF2pUtsCPF1SKvMKTaibXJXS7cDxtZud7vcKzcTQg2qtFLgZsVazOjKGJxplTlu9eQUhqjVQzuQ5Psfffm4tl8aws4XD7Ye7R1+tQ7y/ZArCL9y7ed0Ku9EImgsE4mXYkwV/DNKlcARwXwDVQiGAHfBFoAIrjCjt4ajqnE+8FFH4E58aPRet4+kEpVMdpBJVql4GcZ0YcQPT8cKE4urE0sr3Dhz9fqF2flLq9cnlm7EyyPR3Ijaw/B0mMBEsQmwPtGpobpUcRYKslUWVThTzzWrlHYKS51n8hdxqhcYCUfSwWDC74+7a4wEsFyI7SjKZh3R7LDKFT3DU4lNPr7OfbxZdKZT3izVPlvfdrypq1WiHb9ydR0y0lqRhIdPDu/vHyps2D89e3btjd999OXe8MzPYf6rncQ5kbld7pRbowIt0m0Ot8kccBv+EmhSOmN8rZ+nQbrUPkC73CUxokoLpnNSPIWvU+ax+TIWT4p1YsawO5gVKdzJwujjPTbrgxwDTPXu1gHEC65Ww92N/VSpP8YU2bLhWIpiK5L1QDiAkUj2gR6E2240ybbpxHKeUBLMwQpOu1a4z8laBO2vAean93vIFs4n80NUqorTbCXGTGkE7gLXTGnMEyuzdCwvcePk0tLE4iIwMr12szp5BYSknxkUmnCegWhXx5oVeLuGFujTQkNGpEsL9QmRMS42U881yEFXhmI9udJ4NJpLQuCIsBu6PF623QzbOANyjNp2Cw+kf0yfzBY5KzGc7FAda5G0K21NUkODUNMoVAp1rlOtov954tw773/40e2HD/YP33nvIxD5gN/+8VPQcoD722zZQzzZa0NIeBxCDPh/CB8wtktNnQobeDaxHmkSGes6lXy1EyRbunc8nhtK91yks0Oj01c/+uQeWzJlkz2i+ODxYaY8Lte4RyaWNmvrNmAgMCVAl37w18+mFq9ZYcZXRqhMP2SSwIIvmA6Ec5FYGSMrUaIHRIQnkIDrz0ZMHwVOCe7CCHfNjqjJivrAVyBEMBiPRJIxMhdPlOhUJZFmK5jBvwVEE8UQlaMLA0l4lcIQlh1xRIssHTVMLi+OX5m7vLp8afXq5MqNsaWXIrlBsmdKi2Q7tGwVgrPdEWCEr2OX6HmqhECf6tIRYmviZLtZYgCZeIGg++LxSjrdT8ayAaS2YRuh2KkC4p1muzNjxYsuqsw3BE7xtS1KR71A3yA0HGuVnuap2hSWnzbyOpVW8Gkn2kQCnf385ZXjDe0v1rctXH11s7ao8tnXjx9usx0lPvzkqz//9cvLizcqQxMnGtoFMn1Dq9DuxyGL0zrDizd+ObX40vnppcUbr//6/Y/uQS5XS8AebbPrh1wlVXa32C679SKRGTSYA9Xh6VuffgOu8m93H95Z35pcXMXSRRAahYFxyBNAUgXJnihdJVODZKIfuABe3Ajj9NIQIIAFey134vYbcBsPIImCCUngGbgUcTKfiBcZpieZ7k1m+5hcP5Wt4qkeCEbRVE+6OproHTH68VOd7Hbcn56VT64scZhaWRqdvQyMTK+sTS6tXVy8kRuZjZUm/MkLIgvN9hDXUHxjmqdNNklxQJcmwdPHGyQ+9pusk0IqPYJixWx2mGF6aarwlBGYQt5onj1ZHyuZIjk3XXWQlTqxuUFqrTX9YcEzIM83ibq0LrAaeGNgMifau5851cyTKLx+9LPbX3OFGjiwB5OfHO0JgfHDjz/53R/+5A9FRd0qqcqosbi5BJir375VOzIAKm//27Lbe/u7tVUydi19c/Pwz7e+jmJZqxNlu8E+2hmamvFipDOMAyN0sd8aICBfAg2OpYddaNaJJB0Qd1ykyxP3+ZMAp5uy2LAA+IEAA+kTBGvwUeC3CaJA0z2FTB8gn65mUr3JZCWR7KGYMsGUwTSoXB/Tcx5Nlfl6x08a259r5rUobfVCa7PcB1yMrx6RMjp7aXp54dLqKjAyMrtyYeFmODWUrM7BNa9tpWNk9rzElGqVE+1KqtuWa9eSJwXublsCHJfCGC5Up3GylEr1MXSpxggOjMD84VZU3HjJhhWcVMVH97OlUMXmMwLD8Vb5qU71OYm5SWp5poFXJ9Cc7FTUC7XH27obBIq6Fl6UStaO6h8VCmaPE9bOeIJg4x7ZrJVAefCYXRKhM0Wj3bOxf3j30QY8wOWuj3e2udNqW7vbu0/2jtaFD/dBZdx7sAv8VvrH/ShNJUvJYp8HJXK9w7F0CRRHkMhABDd7YkZnDKK/J5gBr8XtTzPbwgC4ARYBQo+NFyEmjGVjVIlOVJhUDclqPF4GXhJ0L8P0JVL9YI9MdojOD4NCqe9S/ddj5+r4OoktDBOyXeeVuQixCRcbiYnVlbHVFRgn1pbHl69MrS6OL14ZnbsytXx97uovhieX6dxIqjzFV/iVFlqiJ1q7gzJbqlWJtalwvokBUjTePDgumTGaLk34Qsme6kS+OBQjMkiAQAIkJBgWJwa+CyV73LFiLZT0u2LFF1vljUJDm9x+qkNVz9fVfYvTAhZs8ziB5pn6To0bHV+4cf3Nf156+Vez116bXXv15lu/mb/2GmDxxhtrr7x9/bV3l2++NTF/bfDiTKdUYfUFICJ/+WD960cb9zbYr/ce7uw82t3lvlzeZNuO333vj3984913X37zV+/8ywfXX3lnZvFmpjSczA+EiSw4eXD1ThcGaYkPoWDmB/0pv4/xuuNuJ2i6GAQFmGmhcAKNMD4/EQgnPH4CnkWlKgAyVY6l2Ir9ZKYCrilCVVKFsWRurGfwSoisNgstZ3nm0+16gRbladEuXbhDFwW067F2Hd6pwwWaCGSGYzVGWKwtT6wsTK5dAUYuzs9fWrk2d/Xl0amldGk0QvaKVD7IT7qAFytjCVex/Gwge6nbmQdSWpWRThXaLHbgqSEy1Q9pQzo/QMbzQTTuRWJcvgfONoizG+zZ7ZRMnxPLt0jMoPmaxaa6TjUwUv89Rk5+i+dbJM+dE57okD/byP/x6fZnG3jPnuk82doNEbxFYjzH15zlqVtE+o5us0BhEyptcoPTT9B3Hu3c23nyuBagP7+/+fqvfzs6uwChYXoJMsmlwsBoNFXwRuOOIG5DMGeQCJFZlMqBM0GxFEx14AJENChokAlogAkhSdTHBD10wE36fbEQGvcheDjK4EQGo7LpQn8iV+VCA7u4lyxjqRKeLscyPSAei4NzKitxokn1fIPsZIvudIexQQD5Obt9F9Chwdu0eJuGaNOSbVoK4kK3iQySg0DEU0yuLgIjE0sL4wsLMytX59d+fnF6udg/mciNBInebi3KVwVlprgdG2D6V4jqciAzo/SWgRGZla7rMEm1ASI1CGqdyVTZnho42Dhud2Hgu5AwW1SQq+EMbtkRziisYWDkTJcG8B8x0iS31Il0LXIL+DFwaI1ifS3KaFvllk415FReqRGR6r0ijQtEN6BDZmqV6R1oAhQoCDe6NJSujqGJojNEIXgKImmYKYUT+UA8G4pn4UaEzkeorBelPCHS7o5wy4y+IIXhOTScgujscuIg4kBWBxE6FEwGQnH4UGAgOJXnIgIYV6IwAM6Nyg4kIYmtjELKBPrdHqK1LuwnJ3hn2o0ghdqknk5ZwBIodZtpoS7Wqca6NHiHhgCAoGivARRfpm+ld/TmUzom1pamry6zjCxfgbxrdvXa7Or18ZmVwdFZYATkhsZCwD+XmSm6ZyE9dLV3+k0kdQkohoyLr43ylIFjjd04048nwISrkFSQ8QLYCDCCgDyJpBx+ij1VlKgC7GjaFc2BmZxsV3J01P+91+JwvEP+Qls3EAF0nOGrG0S6kx3yOr66Q2UX6D1Ah7hGh1jrVllDBi+hcuLgDwM0e+gylOwH+cPutq2JU1CpAG65Ixhne5pHmZI/mkCJNNABo9OLQTQBXlw+3GIP1wpQ45BBBYNJDMtDDplM9ueKI/nKBToDRsH2PghTRVAl7Im2/DAIdpufkRoDHVJrA097ul15olVp9KXb5T5QpmZ/ESA1gpLyAilABws1AXYBjLAqTxvnaylXpD9emJlgueCwdOkaBJR5YGR6dXl2be3yMrssPHZ5OVcZJ9NDEXpA46RNSCHdvxrvXeyZfN0cHW6QhkTmRJc6LLMQz50RqYxoqX8aVA/7nukeX+0IPLgCH8rYfARW+8YkRFVcaCac7BfpfJyB1P0QaqRonmdPYWtO8dX1Yv3ZbtMLNT/2Ylv3WbEeSJHbUY0zClw4YEqTZSdWiuTG7NGKGS2Y/FkbWvSSvWhyyB+v+mJlMEyzP2HyUAY3bnBG9Y6w3oY4fGGbGw1hjAvBYLR5og4fDsIWjBqLl2hQIrlhCMegDWN0hUhV6dwg2+GILfo6wHYMKY1RuZGGDs2ZdvXpVvWZTl2LyM4u3VgJnSfZIQ8I9XiL2NfaHQDTkFsZI1LuNifY1Vo1wdOQAD7LBQeqS87uKZ1aZemAcWptaeYllpHJlYWZ66tz19aml5amFlZmlm+MX17FmN7S0LzYENJ5UmpXWuXOapGy0l3s1Mcl5kTNGMONfMvxRkmqNAZaDBiJJXpCkTSQAmAXHr2xEAmCqOKPlRC8iGWGjL54S7e1jqf9QUYAL3YqXuiUN0gMQMpJnqq+ZiytCis4Lp7WpUdIL1XrxE2V3JDBgt3F+gKJUQ8xFEqNRjNjaHLEjVXMgbTJy+jdlN5JGN2kM5D0RtJIJANmG46xe9qdvijA6gqBsfgjTJTKM4XhIxTPM8WRROE8WAEAMuF44XwsN0QWLnhjRZEWqevQ/LcX2tq63cACBGWtO6lzphVWWqiNtskDUlOcp44CF5mBtezgVZGeaJOFAAINKTiig+LoEOhokS6usKU6FOHptSXgYrqGuZdWJ1fmp1fm56+vLVy7emlxcWZpdfHGy6DFQLcyhVGtkxBqQ00SLxeYzkpD4LXYE0CmOLwH8GkNnXofVkwWL0KIx+M9EaIIH5xd3qm1BvCF0yGijETzYCmRFNvAUWTwn+7SfJ+F+u/hnMx8WqxrlBohxP+kkX9GqBUYvHYsE0pV/YkervU20MGusjK9gUQ1kr7ojFRdWK8zWkGIAW+s6ggVjK6405+yeuMWN2n3UQgKLGTYCA4e1RlyeSKBCA3WgdNFyLWADkh6I7XtheDlorVWL3iWPYlD5EcgIVG7YifaFP/jROePXuw41qyQWWLmQE5qwiWGmFCDdakiPEWEa1gs0MaU9nS3NalwZND0dHXqjb7pNyPpabGB4hgBCLUUALjgAE8Um+j/CzMNUY8='));

end;


procedure test;
var
res_shape: string;
res_number, i: integer;
b: TMufasaBitmap;
begin
b := getBox;

ProcessPicture(b, res_shape, res_number, i);

writeln(res_shape);
writeln(res_number);
end;


begin
test;
end.


What the heck haha it wasn't returning anything for me… I'll live test it


Edit: only says circle and -1 for me everytime… and no circles on that box :/

Ashaman88

2013-03-30 21:04:36

olly can you try it out with rd? I can't get it to work.


but for my version I'm at about a 50% solve rate, and it eventually solves all the boxes

Olly

2013-03-31 01:09:25

From: Ashaman88
olly can you try it out with rd? I can't get it to work.


but for my version I'm at about a 50% solve rate, and it eventually solves all the boxes


rd?

Ashaman88

2013-03-31 08:21:17

From: Ollybest
rd?


Some kind of auto correct maybe? Haha oops I meant rs - a live test

Olly

2013-03-31 11:56:37

From: Ashaman88
Some kind of auto correct maybe? Haha oops I meant rs - a live test


I don't have an account with a strange box, nor do i want to try and get one if you have any pictures send them over i can test them fine.

Ashaman88

2013-03-31 13:53:41

From: Ollybest
I don't have an account with a strange box, nor do i want to try and get one if you have any pictures send them over i can test them fine.


I can shoot you a pm with the account info of one that has them - just don't solve all the boxes please :). Let me know if that sounds good

Olly

2013-03-31 13:55:29

From: Ashaman88
I can shoot you a pm with the account info of one that has them - just don't solve all the boxes please :). Let me know if that sounds good


Go for it, its easy enough to spawn boxes once you get low anyway :p

Ashaman88

2013-04-03 15:26:25

From: Ollybest
Go for it, its easy enough to spawn boxes once you get low anyway :p


Olly and I couldn't get the old one working.. Here is what I have so far, more tweaking is required (or coming up with a better method). Just call solvebox in your testing

//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- ? Box Routines --//
//-----------------------------------------------------------------//
// * function FindBox: Boolean; // * by WT-Fakawi
// * function GambleBox: Boolean; // * by WT-Fakawi
// * function GetBoxSide: Integer; // * by pups
// * function GetQuestion(var num: Integer; var shape: string): Integer; // * by pups
// * function OpenBox: Boolean; // * by pups
// * function SolveBox: Boolean; // * by pups

{$I SRL-OSR/SRL/misc/Debug.Simba}
{$I SRL-OSR/SRL/misc/SmartGraphics.Simba}
var
NumberBounds: TBox;

const
DebugBox=false;

{*******************************************************************************
function GambleNewBox: Boolean;
by: WT-Fakawi
Description: A random box clicker. Will try to solve the box ONCE, by a random click
@ any of the three answers. THIS IS NOT A BOXSOLVER, JUST A BOXCLICKER!
*******************************************************************************}

function GambleBox: Boolean;
var
xb, yb, Choise: Integer;
begin
//if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
Mouse(xb, yb, 0, 0, True);
Wait(2000);
Choise:= Random(3);
TakeScreen('Gambling box Choise - '+IntToStr(Choise));
case Choise of
0: Mouse(145, 295, 4, 4, True);
1: Mouse(270, 295, 4, 4, True);
2: Mouse(381, 295, 4, 4, True);
end;
IdleTime(4000, 2000, 1.0);
// if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
WriteLn('Box Missed');
// NOnewboxes := NOnewboxes + 1;
Result := False;
repeat
Logout;
until (not (LoggedIn));
Exit;
end
//else
begin
WriteLn('Box solved');
// newboxes := newboxes + 1;
Result := True;
end;
end;
end;

{*******************************************************************************
function OpenBox: Boolean;
by: pups fixed by Cheesehunk.
Description: Opens the box.
*******************************************************************************}

function OpenBox : Boolean;
var
x, y, i,BoxDTM : Integer;
begin
Result := False;
GameTab(Tab_Inv);
Wait(100 + Random(50));
BoxDTM:=DTMFromString('mwQAAAHic42RgYHBiYmAwQ8J+SNgZiN2A+BlQ3QMGCP0GiO8C8SMo/wMU97W0AElGvNiIgTDAbwIEwwEAyPkMaQ==');
if FindDTM(BoxDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
for i := 0 to 9 do
begin
if (GetColor(487, 39) = 13567) and (GetColor(350, 295) = 2304814) then
begin
Result := True;
Exit;
end;
Wait(500);
end;
end;
freedtm(boxdtm);
end;

Function GetNumber: Integer;
Var
CTS,X,Y,ZeroDTM,OneDTM,TwoDTM,ThreeDTM,FourDTM,FiveDTM,SixDTM,SevenDTM,EightDTM,NineDTM: Integer;
MidBox: TPoint;
TPA,TPA1,TPA2,TPAW: TPointArray;
ATPA: T2DPointArray;
BrownBox: TBox;
afound: Extended;
Begin
Result:=-1
CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.05, 0.31);
MidBox:=MiddleBox(IntToBox(NumberBounds.X1+5, NumberBounds.Y1+5, NumberBounds.X2-5, NumberBounds.Y2-5));
FindColorsSpiralTolerance(MidBox.X, MidBox.Y, TPA, 6187391, NumberBounds.X1, NumberBounds.Y1, NumberBounds.X2, NumberBounds.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

ATPA:=FloodFillTPA(TPA);

If Length(ATPA)=0 Then
Begin
Writeln('No brown found');
Exit;
End;

{Good} ZeroDTM := DTMFromString('mEQIAAHicvc1BCoMwEAXQiRZR1FLUjdfwKJ7Aa3gfsaWViOjxDPSH/K1mpYHHTH4mSS0iT+VkEEMED/Y2e0HKXIGwz6GAkux8ALu4mRASqOCHSMOXJu5n1pHePLfZQprzK2xk9x/eGViNMaf6rvXyvdHgn6upGxyuP2gVUcs=');
{Good} OneDTM := DTMFromString('mggAAAHicY2NgYGBigABmIGaBshmBmA+IuaFYCirOAcT1mXEMf//8AWMQG4aNgHLYMBMODAEARdcMkQ==');
{Good} TwoDTM := DTMFromString('mOwIAAHicvc3dCoJAEIbhUSNEtL9T78JL8Qq8hbQgo8Sf6K6Xepe+TjoI6sCFh4+Z3dnJzSwKzEIsECPDBomsZIdU/Lul+mtsJdOMv/P/GhzxsNeOiRzQfRhxU/a44ogaDQ7YK084o5V3fdH8XZxzf2ur8icF++YSzOjLeQJzJ1Aa');
{Good} ThreeDTM := DTMFromString('mJgIAAHicvc1RCoJAEMbxNUWCSkJ86hgexRN0Dc/SgykmahKeL9zwL35Pgj704MKPmZ2dmb0ZY67O7CyBnODDg4uD4lEiuahvev+xb4CFUT3El2uFGg1eKJHjiUwK1SvFQvk006HFW3tKzT7wQa+6tfYv6T3ZtOyP+WsPzk7WzwgAalmq');
{Good} FourDTM := DTMFromString('mJgIAAHicvc7vCkFBEIfh2dtwGW6IK5A7UChaVv6FuEHppCTi1J7Ou/nRKfniw9l6mp1pZnYbZnbHRTHHA0/do+pn5bnym2YyHHFSz1XzRYW5VwyYYIQ+vGrLijnW2OOALTaqLTDFGAP0MNSeGVbYpT/HaKHb/uI7rU98S3nq/0eTt+rgavL7lIw5ZyI=');
{Good} FiveDTM := DTMFromString('mOwIAAHicvc1dCoJAFIbhMxBhJAWSUdYqWof3LaOVGBphYj8LzQZ8B7/rCAIHHs7P8M3szGzmzBZIsMYGmRv2Uxg+lLcNfeAwQazsSlLssVW/xBwROqI3XHFBqT7sWjzxwh21NJrD/UNzrVyjekahWurtCqdj/jPv/V8O/DcWN6IvpwdBgFTL');
SixDTM := DTMFromString('mJgIAAHicvczBCoJAEMbx2YiwotRLBx+rJ/AZPFltKGJZHXrhWOi/8F21Tg78mN3hmynMbOPMtkix03uFtXr0IWd0hwWWmu+RS6b9RLmgnTg/4Ma3Q487BrTwuOKMWryyMffECw/NGlyUq3Qj5t7qIYS/nMrjT1P7c5WbyXh9AZtZTSk=');
{Good} SevenDTM := DTMFromString('m/AEAAHictc3dCYAgFAVg26I5mqgRWqQJCooIkoiIaLL+qNDoXDg+1ksofBw5XjVUSq1wwg0WLjjY7zAzXe86sXFO9gvPDd8yVEJBNbTQwwQjVOwlG9DUkcwOkEHO1OzlfprEn6y1v0T4w6fAs7f1AM9jZhg=');
{Good} EightDTM := DTMFromString('megIAAHicxc1NCoMwEAXgSQSFCtWFaw/Rc3TvMTxCS9H6S1s8bRHS+gbeIhuldGPgI8nMyyQXkS98QIyIpZiOdICZuQDniLWUEt5D9nSGZvXNm7tlX2UwoNZ6etJzByM1UFHt7Zp7wIs5ffMknXOHG1zgChPzzrmflMX5L2vzTvh7D2Yn22sBgURdPw==');
NineDTM := DTMFromString('mUAIAAHick2FgYGBmhGAmIGYFYkEg5oKyGYD4LwME/wZiFqg6NqgaHiDmA2IBKM0N1Q+iORgh6v8B9f0A4l8MEDMrgXQdENdAcRkQF0NxCRBXQMWrgLgJCTeg6auC6i0C4gIkDOJXQ/W0gdz+5w8KzgvzIgqj6yMWGwHtpCdmpDPGBwCan1l1');

If DebugBox Then
Begin
DebugATPABounds(ATPA);
Writeln('Length of Brown Shape: '+ToStr(Length(ATPA[0])));
End;

BrownBox:=GetTPABounds(ATPA[0]);

FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
TPAW:=CombineTPA(TPA1,TPA2);


If DebugBox Then
Writeln('Length of White TPA in Brown: '+ToStr(Length(TPAW)));

If Result=-1 Then
If findDTMrotated(EightDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),130,400) And InRange(Length(TPAW),200,450) Then
Result:=8;

If Result=-1 Then
If findDTMrotated(NineDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),160,440) And InRange(Length(TPAW),300,600) Then
Result:=9;

If Result=-1 Then
If findDTMrotated(SixDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),160,440) And InRange(Length(TPAW),300,600) Then
Result:=6;

If Result=-1 Then
If findDTMrotated(FourDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),130,300) And InRange(Length(TPAW),200,450) Then
Result:=4;

If Result=-1 Then
If findDTMrotated(FiveDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),230,300) And InRange(Length(TPAW),340,900) Then
Result:=5;

If Result=-1 Then
If findDTMrotated(TwoDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) Then
Result:=2;

If Result=-1 Then
If findDTMrotated(ZeroDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),140,215) And InRange(Length(TPAW),160,300) Then
Result:=0;

If Result=-1 Then
If findDTMrotated(ThreeDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),140,220) And InRange(Length(TPAW),300,550) Then
Result:=3;

If Result=-1 Then
If findDTMrotated(SevenDTM, x, y, BrownBox.X1-4, BrownBox.Y1-4, BrownBox.X2+4, BrownBox.Y2+4,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),140,220) And InRange(Length(TPAW),200,550) Then
Result:=7;

If Result=-1 Then
If findDTMrotated(OneDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) Or (InRange(Length(ATPA[0]),85,130) And InRange(Length(TPAW),0,100)) Then
Result:=1;


SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(TPAW,0);
FreeDTM(ZeroDTM);
FreeDTM(OneDTM);
FreeDTM(TwoDTM);
FreeDTM(ThreeDTM);
FreeDTM(FourDTM);
FreeDTM(FiveDTM);
FreeDTM(SixDTM);
FreeDTM(SevenDTM);
FreeDTM(EightDTM);
FreeDTM(NineDTM);

Writeln('We think the number is: '+ToStr(Result));
End;

Function GetShape: String;
Var
CTS: Integer;
TPA,TPA1,TPA2, TPAB: TPointArray;
ATPA,ATPAB: T2DPointArray;
WhiteBox: TBox;
Begin
Result:='';
FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, 172, 45, 352, 225, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, 172, 45, 352, 225, 5);
TPA:=CombineTPA(TPA1,TPA2);

ATPA:=FloodFillTPA(TPA);
SortATPASize(ATPA,True);
If DebugBox Then
Writeln('Length of Full White ATPA: '+ToStr(Length(ATPA)));
If Length(ATPA)=0 Then
Begin
Writeln('No white found');
Exit;
End;

If DebugBox Then
DebugATPABounds(ATPA);

CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

WhiteBox:=GetTPABounds(ATPA[0]);
NumberBounds:=WhiteBox;

SetColorSpeed2Modifiers(0.05, 0.31);
FindColorsSpiralTolerance(MSCX, MSCY, TPAB, 6187391, WhiteBox.X1, WhiteBox.Y1, WhiteBox.X2, WhiteBox.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

SplitTPAWrap(TPAB,10,ATPAB);
SortATPASize(ATPAB,True);

If DebugBox Then
Begin
Writeln('Length of Shape: '+ToStr(Length(ATPA[0])));
Writeln('Length of OutterBox: '+ToStr(Length(ATPAB[0])));
End;

If InRange(Length(ATPA[0]),4280,4900) And InRange(Length(ATPA),9,20) And InRange(Length(ATPAB[0]),2700,5200) Then
Result:='Triangle';

If Result = '' Then
If InRange(Length(ATPA[0]),4801,6000) And InRange(Length(ATPA),8,15) And InRange(Length(ATPAB[0]),100,4600) Then
Result:='Square';

If Result = '' Then
If InRange(Length(ATPA[0]),3600,4580) And InRange(Length(ATPA),15,30) And InRange(Length(ATPAB[0]),7300,8700) Then
Result:='Star';

If Result = '' Then
If InRange(Length(ATPA[0]),6001,7900) And InRange(Length(ATPA),16,23) And InRange(Length(ATPAB[0]),200,2300) Then
Result:='Circle';

If Result = '' Then
Result:= 'Pentagon';

Writeln('We think the shape is: '+ToStr(Result));

SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(ATPAB,0);
SetLength(TPAB,0);
End;

{*******************************************************************************
function GetBoxSide: Integer;
by: pups
Description: Gets Box side and returns Bitmap
*******************************************************************************}

Procedure GetBoxSide;
var
X,Y: Integer;
begin
repeat
wait(100);
if FindColorTolerance(x, y, 16579837, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 215, 352, 215, 5) then continue;
if FindColorTolerance(x, y, 12764106, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 215, 352, 215, 5) then continue;
Break;
until False;
Freeze;
end;

{*******************************************************************************
function GetQuestion(var num: Integer; var shape: String): Integer;
by: pups
Description: Returns number and type.
*******************************************************************************}

function GetQuestion(var num: Integer; var shape: string): Integer;
var
x, y, i: Integer;
text: string;
begin
num := 10;
shape := '';
for i := 0 to 14 do
begin
case i of
0: text := '0'; //Zero
1: text := '1'; //One
2: text := '2'; //Two
3: text := '3'; //Three
4: text := '4'; //Four
5: text := '5'; //Five
6: text := '6'; //Six
7: text := '7'; //Seven
8: text := '8'; //Eight
9: text := '9'; //Nine
10: text := 'Circle'; //Circle
11: text := 'Triangle'; //Triangle
12: text := 'Square'; //Square
13: text := 'Star'; //Star
14: text := 'Pentagon'; //Pentagon
end;
if (FindText(x, y, Text, upchars07, 110, 250, 415, 275)) then
begin
Result := i;
if (i < 10) then
num := i;
if (i >= 10) then
shape := text;
Exit;
end;
end;
end;


{*******************************************************************************
function SolveBox: Boolean;
by: pups
Description: Solves the Box!
*******************************************************************************}

function SolveBox: Boolean;
var
st2: Integer;
shapeQ, shape, ans: string;
numQ, num: Integer;
x, y: Integer;
begin
while OpenBox do
begin
WriteLn('Found a box, solving...');
Wait(1000);
GetQuestion(numQ, shapeQ);
if (shapeQ = '') and (numQ = 10) then
exit;
WriteLn('Question is:');
if shapeQ = '' then
WriteLn('Which shape has number ' + IntToStr(numQ))
else
WriteLn('What number is the ' + shapeQ);
st2 := GetSystemTime;
repeat
GetBoxSide;
Shape:=GetShape;
Num:=GetNumber;
UnFreeze;
If DebugBox Then
Wait(2000) Else
if (num = numQ) or (shape = shapeQ) then
begin
if num = numQ then
ans := shape
else
ans := IntToStr(num);
WriteLn('Answer is ' + ans);
if FindText(x, y, ans, upchars07, 116, 286, 183, 311) then
Mouse(120, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 235, 286, 302, 311) then
Mouse(240, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 350, 286, 417, 311) then
Mouse(355, 290, 30, 10, True);
WriteLn('******** SOLVED BOX RANDOM ********');
Result := True;
Break;
end;
until GetSystemTime > st2 + 12000;
Wait(1500 + Random(1000));
end;
end;


edit: with this version I'm confident it can solve all boxes "eventually" ex, solved 5/11 of my boxes in a short test (stopped manually). Number and shape detection are both about 75-80% accurate.

edit2: tweaks a little. solved 10 boxes in 15mins…not bad

Ashaman88

2013-04-04 16:19:28

Bumpity

I'm ok with pushing this version, probably needs some more tweaks, but should eventually solve! Gimme feedbacks or better ideas

//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- ? Box Routines --//
//-----------------------------------------------------------------//
// * function GambleBox: Boolean; // * by WT-Fakawi
// * function GetBoxSide: Integer; // * by pups/Ashaman88
// * function GetQuestion(var num: Integer; var shape: string): Integer; // * by pups
// * function GetNumber: Integer; // * by Ashaman88
// * function GetShape: String; // * by Ashaman88
// * function OpenBox: Boolean; // * by Ashaman88
// * function SolveBox: Boolean; // * by Ashaman88

{$I SRL-OSR/SRL/misc/Debug.Simba}
{$I SRL-OSR/SRL/misc/SmartGraphics.Simba}
var
NumberBounds: TBox;

const
DebugBox=False;

{*******************************************************************************
function GambleNewBox: Boolean;
by: WT-Fakawi (left this in here just in case we want to guess)
Description: A random box clicker. Will try to solve the box ONCE, by a random click
@ any of the three answers. THIS IS NOT A BOXSOLVER, JUST A BOXCLICKER!
*******************************************************************************}

function GambleBox: Boolean;
var
xb, yb, Choise: Integer;
begin
//if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
Mouse(xb, yb, 0, 0, True);
Wait(2000);
Choise:= Random(3);
TakeScreen('Gambling box Choise - '+IntToStr(Choise));
case Choise of
0: Mouse(145, 295, 4, 4, True);
1: Mouse(270, 295, 4, 4, True);
2: Mouse(381, 295, 4, 4, True);
end;
IdleTime(4000, 2000, 1.0);
// if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
WriteLn('Box Missed');
// NOnewboxes := NOnewboxes + 1;
Result := False;
repeat
Logout;
until (not (LoggedIn));
Exit;
end
//else
begin
WriteLn('Box solved');
// newboxes := newboxes + 1;
Result := True;
end;
end;
end;

{*******************************************************************************
function OpenBox: Boolean;
by: Ashaman88
Description: Opens the box.
*******************************************************************************}

function OpenBox : Boolean;
var
x, y, i,BoxDTM : Integer;
begin
Result := False;
GameTab(Tab_Inv);
Wait(100 + Random(50));
BoxDTM:=DTMFromString('mwQAAAHic42RgYHBiYmAwQ8J+SNgZiN2A+BlQ3QMGCP0GiO8C8SMo/wMU97W0AElGvNiIgTDAbwIEwwEAyPkMaQ==');
if FindDTM(BoxDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
for i := 0 to 9 do
begin
if (GetColor(487, 39) = 13567) and (GetColor(350, 295) = 2304814) then
begin
Result := True;
Break;
end;
Wait(500);
end;
end;
freedtm(boxdtm);
end;

type
NumberRotate = record
Number, DTM, BMin, BMax, WMin, WMax: integer;
end;
NumberRotateArray = array of NumberRotate;

var
NumberArray: NumberRotateArray;

{*******************************************************************************
procedure LoadNumbers;
by: Ashaman88
Description: Loadsup all the numbers!
*******************************************************************************}

Procedure LoadNumbers;
Begin
If Length(NumberArray)<>0 Then
Exit;

SetLength(NumberArray,10);

with NumberArray[0] do {Good2}
begin
Number := 0;
DTM := DTMFromString('mYQMAAHic1c5bCsIwFIThExWr9YJ2F766D99dhptRRFREii0i7jDgBH8xFIX2TQMfpyQzaWZm1nNmiXvPvqQfhP2xjGRAtiudSEJ2iJDPZIoJ/VfP4KSFNudp1N8rdpJcLlIyc/aP9sycmTvZIu6G3hVlpR++C87uuFVyh+juNTb8w3tf22q5aKzJ/d/M9c5f5/5A7fUAGciE0g==');
BMin := 125;
BMax := 215;
WMin := 160;
WMax := 30;
end;

with NumberArray[1] do {Good}
begin
Number := 1;
DTM := DTMFromString('mggAAAHicY2NgYGBigABmIGaBshmBmA+IuaFYCirOAcT1mXEMf//8AWMQG4aNgHLYMBMODAEARdcMkQ==');
BMin := 85;
BMax := 130;
WMin := 0;
WMax := 100;
end;

with NumberArray[2] do {Good2}
begin
Number := 2;
DTM := DTMFromString('mygMAAHic1c5bCoJQFIXh43uWkdnNaAY9NKOG0Dyigkq7XyypqCkK/dESojepF4WP7dlu1z5dY4xjGVOGi6pUrHe/BBsFVVt9R72XouZraEgdnjLTLE/ffElnWzp3VNuqTWW6+t9XbnoOufsMcyywxh4RYhxwwgZLrLBFgCnGmOg90MwOR5xxwfVLLNHHrpt2hMp6ZQ4/3OUhSZL8bDToZ/KPnT3unkdWTmV7nhL4nss=');
BMin := 0;
BMax := 1000;
WMin := 0;
WMax := 1000;
end;

with NumberArray[3] do {Good2}
begin
Number := 3;
DTM := DTMFromString('mHgQAAHic3c/PDsFAEAbwGZTwOH0eF2cnT+EiJaJII0gJ4gn92/KNfomN7MVN2uSXndmd/drGIvIAUZGalmuB5Sllr1Rwzvi1412r73SDK+csowktaEMnwPYb+sm5MNu+QXlmGRHUKeKef29KKSwhgxVsIYc9Wb2BNc8zzs9ozt6yJjCihL3tL77yLfcAZ4/1JziS9TvO++9NmTkm59zfSQa9oGG/+xY6i/EvVaAV8fvzApQlvTI=');
BMin := 140;
BMax := 220;
WMin := 300;
WMax := 550;
end;

with NumberArray[4] do {Good2}
begin
Number := 4;
DTM := DTMFromString('mygMAAHic1c5dCoJAFAXga1ipRVnto4eWUguIVhG0loiIDEn7ISSjvQ11Bs7ALXrxoQcHPgauc49nLCKRJ9KliAJoQxN8aEGDt3vfhxhG0FPcPFa5HWa6HJ/ZdhZyb8Asa6i4rFDtv9A7hw1sYQd7SCClDE5whotyVbMjHLh7gwJKKjj7dqcHPKnkt4z/TtjJ9luzY8rOxhhZLWaVLefTj/sXm/0vE3SvI6+mqp033MCMjw==');
BMin := 130;
BMax := 300;
WMin := 200;
WMax := 450;
end;

with NumberArray[5] do {Good2}
begin
Number := 5;
DTM := DTMFromString('mXQQAAHic3c9dDsFAFAXg26pWikosRWIZ3i3DAhBpCFHx/x8RLJMMzo0jGk9Sb23ypbczp/fOVEXkAZYl4oBHDrlgw1009Mq9a8O35nLgQx4KpGtZcsljLoArfr/Jp58dk2FWc2X2878UqUQBZ+p5tmi5J60XtKZNrNb1OczgAMcY/d4xt4QpTCCCPoTQoZCzNDeiAXS534YmtJjtcU8zQxizp85YcfYJLnAGY0wijXrtL0nn/qKCe6WNlUKJnifIELAH');
BMin := 230;
BMax := 300;
WMin := 340;
WMax := 900;
end;

with NumberArray[6] do {Good2B}
begin
Number := 6;
DTM := DTMFromString('mSAQAAHic3c/bCgFRFAbgtYcijyOXbr2DZ5Gc0yTKYXI+xptw52GUGIxJ/t38w+QOd7Pra7da/9qHlIgklEgM4hT98EDmDEc40QXu4vUMZkR5XGxXcphxAzmHtT9jBO6KqHf+xjNs3n8IvMFm3z/XYa0zS1jBHKYwgQFY0IE2daEPY5gxv+A+Yq/HnJ4dMmtRk1rQABPqUIMyFCAPJaiyZ5I/azJfgSLkYA0b/kG/IZtJy363fdH1t4Lz//r3jiT+FCYqZH5ZT1UtpIA=');
BMin := 160;
BMax := 440;
WMin := 300;
WMax := 600;
end;

with NumberArray[7] do {Good2}
begin
Number := 7;
DTM := DTMFromString('mIgMAAHiczc5hCoJAEAXgtyoZQtfwAN2oI3SD0JCIEiuR8KjiRm/wBUu/8k+48LHsvGFmcwAjwQEJrWWldySQTPWYnGqe10sQ9A6aHbKa9dvMlDaaGe79OGJSSkUXaqiljp7UU0En5Td6KGv1rpVZz1U1y86aa3sOgUKZ7bp/7av3u1m893+x5d+WyC3Ub+cNI6GFkQ==');
BMin := 140;
BMax := 220;
WMin := 200;
WMax := 550;
end;

with NumberArray[8] do {Good2}
begin
Number := 8;
DTM := DTMFromString('mtQMAAHic1c7NCoJAFIbhMyJZVibeR5vuo313EAWVVKRUhEVdttA3+AZuhTYKD2eO52dmbmYDZxZJLEPX5CHnCCOZEBPOEX1BS8i87xvTNyXG1HyfiWPXTDKk5CkS3vGbCdhxULqzJh7lTMzlJg+5c76SV/KSZ6vua6UUuMiJPX7/FvvWPSV7K2LB/5y+jayZ87WPvKWu607y1fLvur5hoXf3jeuhTt8X9gh9aA==');
BMin := 130;
BMax := 400;
WMin := 200;
WMax := 450;
end;

with NumberArray[9] do {Good2}
begin
Number := 9;
DTM := DTMFromString('mdgMAAHic1c7NCgFRGMbxM4U0Jh8TwzVYWstOuQTltoTEyCShIffAzk15Tv5Tp0aysDH16z3zdOZ5p2uMqXjGVKUuAecyAvJQWtLkXJMG096JnDzkns3a0kFER0inz46SFFB0dvvOtDtW5iWWDTMmW2BJtpUdcy8nOctFrkjJj9xNZE3HTKaOOXnWn/CN7T7QlfL+uN9yxsP+R5PRIJe96/mFrLunf/0H3p/4/nkC/OhyWw==');
BMin := 160;
BMax := 440;
WMin := 300;
WMax := 600;
end;
End;

{*******************************************************************************
procedure FreeNumbers;
by: Ashaman88
Description: Frees the number dtms!
*******************************************************************************}

Procedure FreeNumbers;
Var
I: Integer;
Begin
for i := 0 to high(NumberArray) do
FreeDTM(NumberArray[i].DTM);
End;

{*******************************************************************************
function GetNumber: Integer;
by: Ashaman88.
Description: Gets the number on the side of the box.
*******************************************************************************}


function GetNumber: Integer;
var
i, maxScore, maxIndex: integer;
CTS,X,Y: Integer;
MidBox: TPoint;
TPA,TPA1,TPA2,TPAW: TPointArray;
ATPA: T2DPointArray;
BrownBox: TBox;
afound: Extended;
scores: TintegerArray;
begin
LoadNumbers;
setLength(scores, length(NumberArray));

CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.05, 0.31);
MidBox:=MiddleBox(IntToBox(NumberBounds.X1+5, NumberBounds.Y1+5, NumberBounds.X2-5, NumberBounds.Y2-5));
FindColorsSpiralTolerance(MidBox.X, MidBox.Y, TPA, 6187391, NumberBounds.X1, NumberBounds.Y1, NumberBounds.X2, NumberBounds.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

ATPA:=FloodFillTPA(TPA);

If Length(ATPA)=0 Then
Begin
Writeln('No brown found');
Exit;
End;

If DebugBox Then
Begin
DebugATPABounds(ATPA);
Writeln('Length of Brown Shape: '+ToStr(Length(ATPA[0])));
End;

BrownBox:=GetTPABounds(ATPA[0]);

FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
TPAW:=CombineTPA(TPA1,TPA2);


If DebugBox Then
Writeln('Length of White TPA in Brown: '+ToStr(Length(TPAW)));

// loop through fields, scoring each item
for i := 0 to high(NumberArray) do
begin
if inRange(Length(ATPA[0]), NumberArray[i].Bmin, NumberArray[i].BMax) then
scores[i] := scores[i] + 1;

if inRange(Length(TPAW), NumberArray[i].Wmin, NumberArray[i].WMax) then
scores[i] := scores[i] + 1;

If findDTMrotated(NumberArray[i].DTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) Then
scores[i] := scores[i] + 5;
end;

// get the item with the highest score
maxScore := -1;
maxIndex := -1;
for i := 0 to high(scores) do
if (scores[i] > maxScore) then
begin
maxScore := scores[i];
maxIndex := i;
end;

if maxindex<>-1 then
begin
writeln('NumberScan: '+ToStr(NumberArray[maxIndex].number) + ', with a score of ' + intToStr(scores[maxIndex]));

result := NumberArray[maxIndex].number;
end;

SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(TPAW,0);
end;

type
ShapeRotate = record
Shape: String;
SMin, SMax, WMin, WMax, BMin, BMax : integer;
end;
ShapeRotateArray = array of ShapeRotate;

var
ShapeArray: ShapeRotateArray;

{*******************************************************************************
procedure LoadShapes;
by: Ashaman88
Description: Loadsup all the shapes!
*******************************************************************************}

Procedure LoadShapes;
Begin
If Length(ShapeArray)<>0 Then
Exit;


SetLength(ShapeArray,5);

with ShapeArray[0] do {Good2}
begin
Shape := 'Triangle';
SMin := 10;
SMax := 13;
WMin := 4600;
WMax := 4900;
BMin := 3200;
BMax := 4500;
end;

with ShapeArray[1] do {Good2}
begin
Shape := 'Square';
SMin := 8;
SMax := 13;
WMin := 5000;
WMax := 5800;
BMin := 100;
BMax := 2500;
end;

with ShapeArray[2] do {Good2}
begin
Shape := 'Star';
SMin := 15;
SMax := 17;
WMin := 4100;
WMax := 4400;
BMin := 7500;
BMax := 8400;
end;

with ShapeArray[3] do {Good2}
begin
Shape := 'Circle';
SMin := 17;
SMax := 20;
WMin := 7000;
WMax := 7500;
BMin := 300;
BMax := 1300;
end;

with ShapeArray[4] do {Good}
begin
Shape := 'Pentagon';
SMin := 8;
SMax := 16;
WMin := 4400;
WMax := 4800;
BMin := 1600;
BMax := 2400;
end;
End;

{*******************************************************************************
function GetShape: String;
by: Ashaman88.
Description: Gets the shape on the side of the box.
*******************************************************************************}

Function GetShape: String;
Var
i, maxScore, maxIndex: integer;
CTS: Integer;
TPA,TPA1,TPA2, TPAB: TPointArray;
ATPA,ATPAB: T2DPointArray;
WhiteBox: TBox;
scores: TintegerArray;
Begin
LoadShapes;
setLength(scores, length(shapeArray));

Result:='';
FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, 172, 45, 352, 225, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, 172, 45, 352, 225, 5);
TPA:=CombineTPA(TPA1,TPA2);

ATPA:=FloodFillTPA(TPA);
SortATPASize(ATPA,True);
If DebugBox Then
Writeln('Length of Full White ATPA: '+ToStr(Length(ATPA)));
If Length(ATPA)=0 Then
Begin
Writeln('No white found');
Exit;
End;

If DebugBox Then
DebugATPABounds(ATPA);

CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

WhiteBox:=GetTPABounds(ATPA[0]);
NumberBounds:=WhiteBox;

SetColorSpeed2Modifiers(0.05, 0.31);
FindColorsSpiralTolerance(MSCX, MSCY, TPAB, 6187391, WhiteBox.X1, WhiteBox.Y1, WhiteBox.X2, WhiteBox.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

SplitTPAWrap(TPAB,10,ATPAB);
SortATPASize(ATPAB,True);

If DebugBox Then
Begin
Writeln('Length of Shape: '+ToStr(Length(ATPA[0])));
Writeln('Length of OutterBox: '+ToStr(Length(ATPAB[0])));
End;

// loop through fields, scoring each item
for i := 0 to high(ShapeArray) do
begin
if inRange(Length(ATPA[0]), ShapeArray[i].Wmin, ShapeArray[i].WMax) then
scores[i] := scores[i] + 2;

if inRange(Length(ATPAB[0]), ShapeArray[i].Bmin, ShapeArray[i].BMax) then
scores[i] := scores[i] + 1;

if inRange(Length(ATPA), ShapeArray[i].Smin, ShapeArray[i].SMax) then
scores[i] := scores[i] + 4;
end;

// get the item with the highest score
maxScore := -1;
maxIndex := -1;
for i := 0 to high(scores) do
if (scores[i] > maxScore) then
begin
maxScore := scores[i];
maxIndex := i;
end;

if maxindex<>-1 then
begin
writeln('ShapeScan: '+ShapeArray[maxIndex].shape + ', with a score of ' + intToStr(scores[maxIndex]));

result := ShapeArray[maxIndex].shape;
end;

SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(ATPAB,0);
SetLength(TPAB,0);
End;

{*******************************************************************************
function GetBoxSide: Integer;
by: pups/Ashaman88
Description: Gets Box side and freezes client
*******************************************************************************}

Procedure GetBoxSide;
var
X,Y: Integer;
begin
repeat
wait(100);
if FindColorTolerance(x, y, 16579837, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 215, 352, 215, 5) then continue;
if FindColorTolerance(x, y, 12764106, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 215, 352, 215, 5) then continue;
Break;
until False;
Freeze;
end;

{*******************************************************************************
function GetQuestion(var num: Integer; var shape: String): Integer;
by: pups
Description: Returns number and type.
*******************************************************************************}

function GetQuestion(var num: Integer; var shape: string): Integer;
var
x, y, i: Integer;
text: string;
begin
num := 10;
shape := '';
for i := 0 to 14 do
begin
case i of
0: text := '0'; //Zero
1: text := '1'; //One
2: text := '2'; //Two
3: text := '3'; //Three
4: text := '4'; //Four
5: text := '5'; //Five
6: text := '6'; //Six
7: text := '7'; //Seven
8: text := '8'; //Eight
9: text := '9'; //Nine
10: text := 'Circle'; //Circle
11: text := 'Triangle'; //Triangle
12: text := 'Square'; //Square
13: text := 'Star'; //Star
14: text := 'Pentagon'; //Pentagon
end;
if (FindText(x, y, Text, upchars07, 110, 250, 415, 275)) then
begin
Result := i;
if (i < 10) then
num := i;
if (i >= 10) then
shape := text;
Exit;
end;
end;
end;


{*******************************************************************************
function SolveBox: Boolean;
by: Ashaman88
Description: Solves the Box!
*******************************************************************************}

function SolveBox: Boolean;
var
st2: Integer;
shapeQ, shape, ans: string;
numQ, num: Integer;
x, y: Integer;
begin
while OpenBox do
begin
WriteLn('Found a box, solving...');
Wait(1000);
GetQuestion(numQ, shapeQ);
if (shapeQ = '') and (numQ = 10) then
exit;
WriteLn('Question is:');
if shapeQ = '' then
WriteLn('Which shape has number ' + IntToStr(numQ))
else
WriteLn('What number is the ' + shapeQ);
st2 := GetSystemTime;
repeat
GetBoxSide;
Shape:=GetShape;
Num:=GetNumber;
UnFreeze;
If DebugBox Then
Wait(2000) Else
if (num = numQ) or (shape = shapeQ) then
begin
if num = numQ then
ans := shape
else
ans := IntToStr(num);
WriteLn('Answer is ' + ans);
if FindText(x, y, ans, upchars07, 116, 286, 183, 311) then
Mouse(120, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 235, 286, 302, 311) then
Mouse(240, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 350, 286, 417, 311) then
Mouse(355, 290, 30, 10, True);
WriteLn('******** SOLVED BOX RANDOM ********');
Result := True;
Break;
end;
until GetSystemTime > st2 + 12000;
Wait(1500 + Random(1000));
end;
If Length(NumberArray)>0 Then
Begin
FreeNumbers;
SetLength(NumberArray,0);
End;
If Length(ShapeArray)>0 Then
SetLength(ShapeArray,0);
end;

Ashaman88

2013-04-04 20:49:30

I'm going to keep spamming this thread :P

If nobody else wants to test this bad boy out, imma submit it to the git for live testing and such. It works about 75-80% of the time for each question, and will always eventually get rid of all the boxes (starting with a full inv, takes about 15 mins to do 12 boxes down)

Justin

2013-04-05 09:35:42

From: Ashaman88
I'm going to keep spamming this thread :P

If nobody else wants to test this bad boy out, imma submit it to the git for live testing and such. It works about 75-80% of the time for each question, and will always eventually get rid of all the boxes (starting with a full inv, takes about 15 mins to do 12 boxes down)


I didn't notice you posted a solver, I'll give it a test next time I get a box!

Ashaman88

2013-04-05 09:57:19

From: Justin
I didn't notice you posted a solver, I'll give it a test next time I get a box!


I've got an account full inventory of them, wanna watch it work on it?

Ashaman88

2013-04-05 09:57:24

From: Justin
I didn't notice you posted a solver, I'll give it a test next time I get a box!


I've got an account full inventory of them, wanna watch it work on it?

Justin

2013-04-05 10:13:22

From: Ashaman88
I've got an account full inventory of them, wanna watch it work on it?


Sure, why not

Justin

2013-04-05 12:35:58

From: Ashaman88
I've got an account full inventory of them, wanna watch it work on it?


Failed some (Expected) but the success rate was higher then failure. Also having 28 boxes compared to starting with 1 would make the random be solved quicker.

I left 4 boxes unsolved in-case you want to replicate 28 for more testing. Overall, I'm quiet happy with the solver

Here's the output:


Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 9, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 8, with a score of 6
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 2
NumberScan: 6, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 9, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 6
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Star, with a score of 1
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 7, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 3
NumberScan: 4, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 6
NumberScan: 3, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 1
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 2
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
Answer is 4
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 1, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 0, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 9, with a score of 7
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 0
ShapeScan: Square, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 0, with a score of 6
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 6
NumberScan: 4, with a score of 7
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Square, with a score of 6
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 9, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 0, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
Which shape has number 8
ShapeScan: Square, with a score of 6
NumberScan: 8, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Successfully executed.
The following DTMs were not freed: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Ashaman88

2013-04-05 14:08:09

From: Justin
Failed some (Expected) but the success rate was higher then failure. Also having 28 boxes compared to starting with 1 would make the random be solved quicker.

I left 4 boxes unsolved in-case you want to replicate 28 for more testing. Overall, I'm quiet happy with the solver

Here's the output:


Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 9, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 8, with a score of 6
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 2
NumberScan: 6, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 9, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 6
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Star, with a score of 1
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 7, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 3
NumberScan: 4, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 6
NumberScan: 3, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 1
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 2
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
Answer is 4
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 1, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 0, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 9, with a score of 7
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 0
ShapeScan: Square, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 0, with a score of 6
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 6
NumberScan: 4, with a score of 7
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Square, with a score of 6
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 9, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 0, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
Which shape has number 8
ShapeScan: Square, with a score of 6
NumberScan: 8, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Successfully executed.
The following DTMs were not freed: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]


Great to hear :) How does one add a file to the git?

Le Jingle

2013-04-06 11:36:39

From: Ashaman88
Great to hear :) How does one add a file to the git?


I think you fork the latest update to the current OSR files, then, do the thingys in the pictures below b/c I got lazy trying to explain with words :p



Ashaman88

2013-04-06 12:26:19

Like a boss thanks lj, ill submit it today. Another random down!