Winner Paulo Uribe (dm1)

2004-04-28 09:00:00 UTC

# UNlucky7s

Status: Passed
Results: 0.394%
CPU Time: 10.4728
Score: 6.3243
Submitted at: 2004-04-24 00:27:36 UTC
Scored at: 2004-04-24 00:28:46 UTC

Current Rank: 1502nd
Based on: InTheHunt4 (diff)
Basis for: UNlucky5s (diff)
Basis for: UNlucky7s_tweak1 (diff)
Basis for: its still the same (diff)

Code
```function  d  =     solver(map,n)
global    z1432;
map      =   map/sum(map(:))*n;
z1366    =  cell(1,8);
z1366{1}     =  map;
z1366{2}   =   map';
z1366{3}   =      z1152(map);
z1366{4}   =   z1152(map');
z1366{5}    =   z1846(map);
z1366{6}     =  z1846(map');
z1366{7}  =      z1846(z1366{3});
z1366{8}    =    z1846(z1366{4});

d    =      cell(1,40);
[d{:}]  =      deal(map);

z1620   =    inf*zeros(1,40);
z1056      =     1;z1432=1;
z1658=8;
z1664   =    0;
for  aaa=1
j  =    0;
for      i     =      1:z1658
d{j+i}   =     z1666(z1366{i},n,z1056);
z1620(i+j)   =    z1263(z1366{i},d{i+j},n);
if  z1620(i+j)    <     n/1000
r   =  z1620(i+j);
z1664   =  i+j;
break
end
end
if  z1620(i+j)    <  n/1000
r    =     z1620(i+j);
z1664   =     i+j;
break
end
j  =     8;
for     i      =     1:z1658
d{j+i}    =    z19142(z1366{i},n);
z1620(i+j)   =    z1263(z1366{i},d{i+j},n);
if  z1620(i+j)      <  n/1000
r   =   z1620(i+j);
z1664   =    i+j;
break
end
end
if   z1620(i+j)     <      n/1000
r    =      z1620(i+j);
z1664    =      i+j;
break
end
j     =   16;
for     i     =   1:z1658
d{j+i}  =  z19143(z1366{i},n);
z1620(i+j)      =    z1263(z1366{i},d{i+j},n);
if      z1620(i+j)  <      n/1000
r   =     z1620(i+j);
z1664      =   i+j;
break
end
end
if     z1620(i+j)      <  n/1000
r    =     z1620(i+j);
z1664      =      i+j;
break
end
j      =     24;
for     i  =     1:z1658
d{j+i}   =     z19144(z1366{i},n);
z1620(i+j)     =    z1263(z1366{i},d{i+j},n);
if    z1620(i+j)  <     n/1000
r    =     z1620(i+j);
z1664   =      i+j;
break
end
end
if     z1620(i+j)    <    n/1000
r    =      z1620(i+j);
z1664  =     i+j;
break
end
j      =    32;
for     i     =   1:z1658
d{j+i}   =     z19145(z1366{i},n);
z1620(i+j)   =      z1263(z1366{i},d{i+j},n);
if     z1620(i+j)    <  n/1000
r     =  z1620(i+j);
z1664    =   i+j;
break
end
end,end

if      z1664  ==    0
[r    z1664]      =      min(z1620);,end
switch     mod(z1664-1,8)+1;
case     1
d    =  d{z1664};
case    2
d    =   d{z1664}';
case      3
d   =  z1152(d{z1664});
case      4
d   =      z1152(d{z1664})';
case   5
d    =    z1846(d{z1664});
case      6
d   =      z1846(d{z1664})';
case    7
d      =   z1152(z1846(d{z1664}));
case    8
d   =    z1152(z1846(d{z1664}))';,end

d     =   z1857(map,  n,     d);

function    d   =      z1666(map,n,z1432)
s     =      size(map);
d   =   ones(s)*n;
z1031    =      1;
z1301     =     z1432;
i   =      s(1);
z1612  =      prod(s);
z1664     =   1:z1612;
z1311     =     reshape(z1664,s);
z1311(:,2:2:end)      =  z1152(z1311(:,2:2:end));
z1311  =    reshape(z1311,1,z1612);
z1343    =    floor((n-1)/2);
z1618   =    z1612;

for      z1664  =  1:z1612,
z16642     =    z1311(z1664);
if   (z1301)      <    abs(z1301-map(z16642))      |  z1618<=n-z1031            ,
if     z1031      ==    z1343,
z1031   =   z1031  +      1;
z1595    =      z1664;
break;
end
z1031     =   z1031     +  1;
z1301  =  z1432-map(z16642);
else
z1301   =      z1301    -   map(z16642);
end
z1618    =     z1618-1;
d(z16642)     =     z1031;,end
z1301     =  z1432;
for     z1664    =    z1612:-1:z1595
z16642      =   z1311(z1664);
if    (z1301)   <     abs(z1301-map(z16642))    |     z1618<=n-z1031               ,
if      z1031   ==    n-1,
break;
end
z1031  =    z1031     +   1;
z1301     =     z1432-map(z16642);
else
z1301    =    z1301  -   map(z16642);
end
z1618    =   z1618-1;
d(z16642)   =    z1031;,end

function     d  =   z19142(map,n),
a     =  size(map,1);
b   =    size(map,2);
d     =     zeros(a,b);
z1296    =  a*b;
upper   =    1;
lower   =    a;
z1475      =    1;
z1446  =    b;
z1139    =    1;

while   z1139      <=     z1296,
z1761   =  lower-upper;
d(upper:lower,z1475)  =   (z1139:z1139+z1761)';
z1139   =  z1139  +   z1761    +     1;
z1475    =     z1475  +      1;
if   z1139   >    z1296,     break;  end

z1761     =     z1446-z1475;
d(lower,z1475:z1446)   =      (z1139:z1139+z1761);
z1139      =   z1139    +      z1761      +      1;
lower    =    lower  -  1;
if  z1139      >      z1296,  break;     end

z1761      =      lower-upper;
d(lower:-1:upper,z1446)      =  (z1139:z1139+z1761)';
z1139      =    z1139     +      z1761    +    1;
z1446  =  z1446   -     1;
if    z1139      >    z1296,    break;     end

z1761    =   z1446-z1475;
d(upper,z1446:-1:z1475)    =    (z1139:z1139+z1761);
z1139   =  z1139   +    z1761     +  1;
upper   =     upper  +     1;
if   z1139  >      z1296,    break;    end,end

z1311  =  zeros(1,z1296);
for      z1664   =      1:z1296,
z1311(d(z1664))    =   z1664;,end
d(:)  =   n;

global    z1432;
z1031    =      1;
z1301      =      z1432;
i      =  size(map,1);
z1612     =      z1296;
z1343     =    floor((n-1)/2);
z1618   =    z1612;

for      z1664  =   1:length(z1311),
z16642  =    z1311(z1664);

if     (z1301)     <      abs(z1301-map(z16642))      |   z1618<=n-z1031           ,
if     z1031   ==   z1343,
z1031      =  z1031      +      1;
z1595     =  z1664;
break;
end
z1031      =  z1031     +      1;
z1301      =  z1432-map(z16642);
else
z1301  =  z1301   -   map(z16642);
end
z1618   =   z1618-1;
d(z16642)  =      z1031;,end
z1301     =      z1432;
for     z1664     =     length(z1311):-1:z1595
z16642      =     z1311(z1664);

if   (z1301)    <      abs(z1301-map(z16642))  |   z1618<=n-z1031               ,
if      z1031    ==  n-1,
break;
end
z1031      =      z1031    +   1;
z1301  =     z1432-map(z16642);
else
z1301   =    z1301  -      map(z16642);
end
z1618  =      z1618-1;
d(z16642)    =   z1031;,end

function     d   =      z19143(map,n),
a  =      size(map,1);
b     =    size(map,2);
d    =  zeros(a,b);
z1296      =    a*b;

z1139     =    1;
z1815     =      1;
z1428   =    a;
z1631   =    1;
z1268    =    1;
row    =   1;
col   =  1;
if     mod(b,2)     ==     0,
d(:,1)     =   (a:-1:1)';
z1139    =    z1139  +      a;
z1631      =     2;
col     =      2;
row  =  1;
,end
if      mod(a,2)     ==    1,
d(1,z1631:b)   =    z1139:z1139+b-z1631;
z1139     =   z1139+b+1-z1631;
z1268      =    -1;
row    =      2;
col  =    b;,end

while  z1139    <=  z1296,
while   z1139   <=  z1296
d(row,col)    =    z1139;
z1139  =     z1139     +     1;
row  =  row+1;
d(row,col)      =      z1139;
z1139      =    z1139  +   1;
if     (col     ==    z1631     &     z1268  ==     -1)  |  (col      ==   b    &      z1268  ==   1),     break;     end;
col    =  col      +   z1268;
d(row,col)   =  z1139;
z1139      =      z1139   +  1;
row      =     row-1;
d(row,col)      =    z1139;
z1139    =     z1139    +    1;
col   =  col      +  z1268;
end
row  =     row    +      1;
z1268  =   -z1268;,end
z1311  =    zeros(1,z1296);
for  z1664     =   1:z1296,
z1311(d(z1664))     =      z1664;,end
d(:)     =   n;

global    z1432;

z1031      =      1;
z1301      =  z1432;

i    =     size(map,1);
z1612     =      z1296;
z1343  =     floor((n-1)/2);
z1618   =   z1612;

for  z1664    =   1:length(z1311),
z16642  =  z1311(z1664);

if   (z1301)     <    abs(z1301-map(z16642))    |    z1618<=n-z1031             ,
if      z1031   ==    z1343,
z1031   =    z1031     +   1;
z1595   =    z1664;
break;
end
z1031      =    z1031     +    1;
z1301  =    z1432-map(z16642);
else
z1301  =    z1301  -    map(z16642);
end
z1618   =   z1618-1;
d(z16642)      =    z1031;,end
z1301     =      z1432;
for  z1664    =    length(z1311):-1:z1595
z16642     =  z1311(z1664);

if  (z1301)    <     abs(z1301-map(z16642))     |   z1618<=n-z1031              ,
if      z1031  ==   n-1,
break;
end
z1031     =   z1031  +    1;
z1301   =      z1432-map(z16642);
else
z1301  =    z1301     -      map(z16642);
end
z1618    =   z1618-1;
d(z16642)    =  z1031;,end

function      d    =  z19144(map,n),
a   =      size(map,1);
b    =   size(map,2);
d    =      zeros(a,b);
z1296   =    a*b;
z1139      =      1;
z1815    =  1;
z1428    =     a;
z1631  =    1;
z1268      =  1;
row  =   1;
col   =  1;
if     mod(b,2)   ==  0,
d(:,1)    =  (a:-1:1)';
z1139     =  z1139  +   a;
z1631  =      2;
col      =    2;
row    =  1;
,end

switch      mod(a,3)
case      1,
d(1,z1631:b)      =   z1139:z1139+b-z1631;
z1139  =     z1139+b+1-z1631;
z1268  =      -1;
row    =     2;
col  =   b;
case  2,
d(1,z1631:b)     =      z1139:z1139+b-z1631;
z1139   =  z1139+b+1-z1631;
d(2,z1631:b)  =     z1139+b-z1631:-1:z1139;
z1139   =   z1139+b+1-z1631;
row      =    3;
col   =     z1631;
,end

while      z1139   <=      z1296,
while      z1139  <=  z1296
d(row,col)   =     z1139;
z1139     =  z1139    +    1;
row     =   row+1;
d(row,col)    =   z1139;
z1139    =     z1139     +  1;
row      =   row+1;
d(row,col)   =  z1139;
z1139   =    z1139   +   1;
if     (col   ==    z1631      &    z1268      ==  -1)      |     (col   ==    b  &    z1268  ==    1),   break;  end;
col   =   col  +      z1268;
d(row,col)      =     z1139;
z1139  =    z1139  +  1;
row  =     row-1;
d(row,col)      =    z1139;
z1139   =   z1139  +     1;
row  =     row-1;
d(row,col)     =      z1139;
z1139    =     z1139      +   1;
col    =  col  +  z1268;
end
row      =   row    +     1;
z1268     =   -z1268;,end

z1311      =    zeros(1,z1296);
for   z1664  =   1:z1296,
z1311(d(z1664))  =  z1664;,end
d(:)      =    n;

global   z1432;

z1031     =      1;
z1301     =      z1432;

i      =    size(map,1);
z1612      =    z1296;
z1343     =     floor((n-1)/2);
z1618   =     z1612;

for      z1664  =      1:length(z1311),
z16642    =      z1311(z1664);

if      (z1301)     <     abs(z1301-map(z16642))   |    z1618<=n-z1031             ,
if  z1031      ==      z1343,
z1031      =  z1031  +  1;
z1595     =    z1664;
break;
end
z1031     =    z1031  +   1;
z1301    =  z1432-map(z16642);
else
z1301  =     z1301    -     map(z16642);
end
z1618      =   z1618-1;
d(z16642)   =     z1031;,end
z1301  =     z1432;
for  z1664  =     length(z1311):-1:z1595
z16642      =  z1311(z1664);

if     (z1301)   <   abs(z1301-map(z16642))      |    z1618<=n-z1031             ,
if    z1031      ==     n-1,
break;
end
z1031  =   z1031     +     1;
z1301   =     z1432-map(z16642);
else
z1301  =    z1301    -      map(z16642);
end
z1618  =    z1618-1;
d(z16642)     =      z1031;,end

function   d     =  z19145(map,n),
a      =     size(map,1);
b  =     size(map,2);
d   =      zeros(a,b);
z1296      =   a*b;
z1139   =     1;
z1815      =  1;
z1428   =   a;
z1631     =   1;
z1268    =  1;
row  =      1;
col      =   1;
if    mod(b,2)    ==    0,
d(:,1)    =      (a:-1:1)';
z1139    =    z1139   +   a;
z1631    =    2;
col   =      2;
row      =  1;
,end

switch     mod(a,4)
case     1,
d(1,z1631:b)   =     z1139:z1139+b-z1631;
z1139    =      z1139+b+1-z1631;
z1268      =   -1;
row      =     2;
col     =   b;
case      2,
d(1,z1631:b)      =      z1139:z1139+b-z1631;
z1139   =      z1139+b+1-z1631;
d(2,z1631:b)   =   z1139+b-z1631:-1:z1139;
z1139  =   z1139+b+1-z1631;
row  =     3;
col      =   z1631;
case     3,
d(1,z1631:b)    =    z1139:z1139+b-z1631;
z1139   =      z1139+b+1-z1631;
d(2,z1631:b)  =  z1139+b-z1631:-1:z1139;
z1139   =     z1139+b+1-z1631;
d(3,z1631:b)   =  z1139:z1139+b-z1631;
z1139   =   z1139+b+1-z1631;
row     =    4;
col      =  b;
z1268    =  -1;
,end

while      z1139   <=      z1296,
while  z1139     <=     z1296
d(row,col)    =      z1139;
z1139      =     z1139    +  1;
row      =  row+1;
d(row,col)    =  z1139;
z1139     =  z1139     +     1;
row   =     row+1;
d(row,col)  =     z1139;
z1139    =     z1139      +  1;
row     =  row+1;
d(row,col)      =  z1139;
z1139  =   z1139   +    1;
if     (col      ==    z1631      &     z1268      ==      -1)     |      (col      ==     b    &      z1268     ==     1),    break;      end;
col    =    col  +      z1268;
d(row,col)  =     z1139;
z1139     =  z1139    +     1;
row      =      row-1;
d(row,col)     =  z1139;
z1139  =     z1139   +  1;
row    =   row-1;
d(row,col)  =    z1139;
z1139   =   z1139   +  1;
row   =   row-1;
d(row,col)   =     z1139;
z1139     =  z1139    +    1;
col      =  col    +      z1268;
end
row      =    row     +    1;
z1268    =    -z1268;,end

z1311   =    zeros(1,z1296);
for    z1664   =      1:z1296,
z1311(d(z1664))     =     z1664;,end
d(:)     =      n;

global      z1432;

z1031     =   1;
z1301    =     z1432;

i  =  size(map,1);
z1612  =    z1296;
z1343   =    floor((n-1)/2);
z1618     =   z1612;

for  z1664    =    1:length(z1311),
z16642  =      z1311(z1664);
if    (z1301)   <      abs(z1301-map(z16642))   |      z1618<=n-z1031                ,
if   z1031      ==    z1343,
z1031     =   z1031    +   1;
z1595   =  z1664;
break;
end
z1031    =   z1031      +      1;
z1301    =  z1432-map(z16642);
else
z1301     =     z1301    -  map(z16642);
end
z1618  =    z1618-1;
d(z16642)      =      z1031;,end
z1301      =     z1432;
for    z1664    =     length(z1311):-1:z1595
z16642   =    z1311(z1664);

if     (z1301)      <  abs(z1301-map(z16642))    |  z1618<=n-z1031                ,
if     z1031     ==    n-1,
break;
end
z1031     =      z1031     +  1;
z1301    =   z1432-map(z16642);
else
z1301    =     z1301    -   map(z16642);
end
z1618    =      z1618-1;
d(z16642)   =     z1031;,end

function     d  =      z1857(map,n,d)
rand('state',7777);
z1862(n)   =     0;
for     i=1:n
z1862(i)      =    sum(sum(map(d==i)));,end
z1242   =     sum(z1862)  /   n;
z1323  =     sum(abs(z1862-z1242))  /    (     n     *  z1242     *    2    );

if    z1323  <     0.0025
return;,end
sq   =   2;
z1642     =  size(map,1);
z1608         =      size(map,2);
nl   =     1600;
pop      =    rand(3,nl);
z1905   =    0;
if     sq    >=    1
for   kk=1:nl
z1596   =    2    +      floor(     pop(1,kk)     *    (    z1642-2    )     );
z1891  =      2  +     floor(    pop(2,kk)   *     (   z1608-2    )      );
z1646  =  floor(   pop(3,kk)     *    4      +   1    );
z15962    =      z1596;
z18912      =    z1891;

if     z1646    ==  1
z15962    =  z1596   +  1;
end

if     z1646  ==   2
z15962  =    z1596      -      1;
end

if     z1646     ==   3
z18912     =  z1891     +   1;
end

if    z1646   ==      4
z18912    =   z1891    -      1;
end

z1433      =     z1905;

if     d(z15962,z18912)    ~=    d(z1596,z1891)
z1907            =      z1862(d(z1596,z1891));
z19072     =    z1862(d(z15962,z18912));

i1   =     d(z1596,      z1891);
i2      =  d(z15962,z18912);

if  z19072   >    z1907
d(z15962,z18912)      =   d(z1596,z1891);
if     ~z1194(d==i2)
d(z15962,z18912)  =      i2;
else
z1905     =     z1905  +  1;
z1862(i2)                                          =      z1862(i2)                                                               -      map(z15962,z18912);
z1862(d(z1596,   z1891))     =      z1862(d(z1596,     z1891))           +  map(z15962,z18912);

if    abs(z19072-z1907)     <     abs(  z1862(i2)   -   z1862(d(z1596,     z1891))      )

z1905  =    z1905  -      1;
d(z15962,z18912)   =    i2;
z1862(i2)                                                        =     z19072;
z1862(d(z1596,      z1891))           =  z1907;
end
end
else
d(z1596,z1891)   =      d(z15962,z18912);

if     ~z1194(d==i1)
d(z1596,z1891)   =     i1;
else
z1905  =     z1905      +  1;
z1862(d(z15962,z18912))    =     z1862(d(z15962,z18912))+  map(z1596,z1891);
z1862(i1)                                               =    z1862(i1)                                                        -     map(z1596,z1891);

if    abs(z19072-z1907)      <   abs(    z1862(i1)  -    z1862(d(z15962,      z18912))  )

z1905   =      z1905     -     1;
d(z1596,z1891)    =   i1;
z1862(i1)                                             =  z1907;
z1862(d(z15962,    z18912))       =     z19072;
end
end
end
end
end
end

function  tf      =   z1194(a)

[z1101,z1780]    =  find(a);
[a1,a2]  =  size(a);

if  isempty(z1101)
tf      =   0;
return,end

z1664  =   1;
while    (z1664     ~=  0)
r    =    z1101(z1664);
c     =     z1780(z1664);
z1664     =    z1664-1;
a(r,c)     =  0;
if   (r  >  1)  &     a(r-1,c)
z1664    =     z1664+1;
z1101(z1664)      =  r-1;
z1780(z1664)   =  c;
end
if    (r      <      a1)  &   a(r+1,c)
z1664   =  z1664+1;
z1101(z1664)     =    r+1;
z1780(z1664)    =    c;
end
if      (c     >   1)   &    a(r,c-1)
z1664     =     z1664+1;
z1101(z1664)  =   r;
z1780(z1664)    =  c-1;
end
if      (c    <    a2)      &     a(r,c+1)
z1664   =  z1664+1;
z1101(z1664)      =     r;
z1780(z1664)  =   c+1;
end,end

tf  =   ~max(a(:));

function  y  =  z1152(x)
[m,n]   =    size(x);
y  =   x(m:-1:1,:);

function      y    =     z1846(x)
[m,n]  =     size(x);
y    =    x(:,n:-1:1);

function     z1620   =     z1263(ma,in,n)
z1412  =     zeros(1,n);
for   i    =  1:numel(ma),
z1412(in(i))   =     z1412(in(i))     +    ma(i);
end

z1620     =     sum(abs(z1412-sum(z1412)/n));
end,end
```