first appearance - first appearance in lead - line
==========================================================================================================================================
          Yi Cao (23288) -           Yi Cao (25753) - function [solution,s] = solver(puzzle,list)
                         -       jan langer (22896) - 
  Tristrom Cooke (23128) -      the cyclist (23836) - rand('seed',1);
                         -       jan langer (22896) - 
     Brian Jones (24921) -      Brian Jones (24934) - list=list(:,end:-1:1);
                         -      Claus Still (25331) - global h iX iN col_selection blockmap rowmap colmap;
             sss (25107) -            Satya (25617) - h =  [1    4    7   28   31   34   55   58   61
             sss (25107) -            Satya (25617) -     2    5    8   29   32   35   56   59   62
             sss (25107) -            Satya (25617) -     3    6    9   30   33   36   57   60   63
             sss (25107) -            Satya (25617) -    10   13   16   37   40   43   64   67   70
             sss (25107) -            Satya (25617) -    11   14   17   38   41   44   65   68   71
             sss (25107) -            Satya (25617) -    12   15   18   39   42   45   66   69   72
             sss (25107) -            Satya (25617) -    19   22   25   46   49   52   73   76   79
             sss (25107) -            Satya (25617) -    20   23   26   47   50   53   74   77   80
             sss (25107) -            Satya (25617) -    21   24   27   48   51   54   75   78   81];
             sss (25107) -            Satya (25617) -   h1 =[ 1    10    19    28    37    46    55    64    73
           Satya (24803) -            Satya (25617) -      2    11    20    29    38    47    56    65    74
           Satya (24803) -            Satya (25617) -      3    12    21    30    39    48    57    66    75
           Satya (24803) -            Satya (25617) -      4    13    22    31    40    49    58    67    76
           Satya (24803) -            Satya (25617) -      5    14    23    32    41    50    59    68    77
           Satya (24803) -            Satya (25617) -      6    15    24    33    42    51    60    69    78
           Satya (24803) -            Satya (25617) -      7    16    25    34    43    52    61    70    79
           Satya (24803) -            Satya (25617) -      8    17    26    35    44    53    62    71    80
           Satya (24803) -            Satya (25617) -      9    18    27    36    45    54    63    72    81]; 
                         - Timothy Alderson (24946) - iX = uint8([h h1 h1']);
           Satya (25580) -            Satya (25617) - iN = [3 1 1 2 2 2 2 2 2 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  1 3 1 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  1 1 3 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 2 2 3 1 1 2 2 2 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 2 2 1 3 1 2 2 2 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 2 2 1 1 3 2 2 2 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
           Satya (25580) -            Satya (25617) -  2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3
           Satya (25580) -            Satya (25617) -  2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3
           Satya (25580) -            Satya (25617) -  2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
           Satya (25580) -            Satya (25617) -  1 2 2 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 1 2 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 2 1 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 1 2 2 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 1 2 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 2 1 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 1 2 2 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
           Satya (25580) -            Satya (25617) -  1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
           Satya (25580) -            Satya (25617) -  2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
           Satya (25580) -            Satya (25617) -  2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
           Satya (25580) -            Satya (25617) -  2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
           Satya (25580) -            Satya (25617) -  2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1
           Satya (25580) -            Satya (25617) -  2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2 1 2 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 2 2 2 3 1 1 2 2 2 3 3 3 1 2 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 2 2 2 1 3 1 2 2 2 3 3 3 2 1 2 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 2 2 2 1 1 3 2 2 2 3 3 3 2 2 1 3 3 3
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 1 2 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 1 3 1 3 3 3 3 3 3 2 1 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 2 2 1
           Satya (25580) -            Satya (25617) -  2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 3 1 1 2 2 2 2 2 2
           Satya (25580) -            Satya (25617) -  3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 1 3 1 2 2 2 2 2 2
           Satya (25580) -            Satya (25617) -  3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 1 1 3 2 2 2 2 2 2
           Satya (25580) -            Satya (25617) -  3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 3 3 3 2 2 2 3 1 1 2 2 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 3 3 3 2 2 2 1 3 1 2 2 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 3 3 3 2 2 2 1 1 3 2 2 2
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 1 2 2 3 3 3 3 3 3 1 2 2 2 2 2 2 2 2 3 1 1
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 1 3 1
           Satya (25580) -            Satya (25617) -  3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 2 1 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 1 1 3];
                         -       jan langer (22896) - 
Hannes Naudé & Cobus Pot -      the cyclist (23836) - col_selection = [[4 5 6 7 8 9];[7 8 9 7 8 9]];
             sss (25107) -            Satya (25617) - blockmap=[1     1     1     4     4     4     7     7     7
             sss (25107) -            Satya (25617) -      1     1     1     4     4     4     7     7     7
             sss (25107) -            Satya (25617) -      1     1     1     4     4     4     7     7     7
             sss (25107) -            Satya (25617) -      2     2     2     5     5     5     8     8     8
             sss (25107) -            Satya (25617) -      2     2     2     5     5     5     8     8     8
             sss (25107) -            Satya (25617) -      2     2     2     5     5     5     8     8     8
             sss (25107) -            Satya (25617) -      3     3     3     6     6     6     9     9     9
             sss (25107) -            Satya (25617) -      3     3     3     6     6     6     9     9     9
B. van den Broek (23429) -            Satya (25617) -      3     3     3     6     6     6     9     9     9];
             sss (25107) -            Satya (25617) - rowmap = [1     1     1     1     1     1     1     1     1
             sss (25107) -            Satya (25617) -      2     2     2     2     2     2     2     2     2
             sss (25107) -            Satya (25617) -      3     3     3     3     3     3     3     3     3
             sss (25107) -            Satya (25617) -      4     4     4     4     4     4     4     4     4
             sss (25107) -            Satya (25617) -      5     5     5     5     5     5     5     5     5
             sss (25107) -            Satya (25617) -      6     6     6     6     6     6     6     6     6
             sss (25107) -            Satya (25617) -      7     7     7     7     7     7     7     7     7
             sss (25107) -            Satya (25617) -      8     8     8     8     8     8     8     8     8
             sss (25107) -            Satya (25617) -      9     9     9     9     9     9     9     9     9];
             sss (25107) -            Satya (25617) - colmap = [1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9
             sss (25107) -            Satya (25617) -      1     2     3     4     5     6     7     8     9];
                         -       jan langer (22896) - 
                         -       jan langer (22896) - 
                         - Timothy Alderson (25181) - [solution,s]    =solverC(puzzle,list);                                                            
                         -     Stijn Helsen (25355) - if floor(s) == 19
                         -     Stijn Helsen (25355) - 	[sol2,s2]       =solverC(puzzle(:,end:-1:1),list);
    Stijn Helsen (25256) -     Stijn Helsen (25355) - 	if s2<s
    Stijn Helsen (25256) -     Stijn Helsen (25355) - 		solution=sol2(:,end:-1:1);
           Satya (25205) -     Stijn Helsen (25355) - 		s=s2;
                         -                          - 	end
                         -                          - end 
    Stijn Helsen (25256) -     Stijn Helsen (25355) - if s > 200
           Satya (25205) -     Stijn Helsen (25355) - 	[sol2,s2]       =solverC(puzzle(end:-1:1,:),list);
    Stijn Helsen (25256) -     Stijn Helsen (25355) - 	if s2<s
           Satya (25205) -     Stijn Helsen (25355) - 		solution=sol2(end:-1:1,:);
           Satya (25205) -     Stijn Helsen (25355) - 		s=s2;
                         -                          - 	end
                         -                          - end
                         -       jan langer (22896) - 
           Satya (25205) -     Stijn Helsen (25355) - [solution1,s2]  =improver3(puzzle,list,solution);
    Stijn Helsen (25256) -     Stijn Helsen (25355) - if s2<s
    Abhisek Ukil (24412) -     Stijn Helsen (25355) - 	solution=solution1;
           Satya (25205) -     Stijn Helsen (25355) - 	s=s2;
                         -                          - end     
    Stijn Helsen (25256) -     Stijn Helsen (25355) - if s>100
           Satya (25205) -     Stijn Helsen (25355) - 	[solution1,s2]  =improver3(puzzle,list,solution);
    Stijn Helsen (25256) -     Stijn Helsen (25355) - 	if s2<s
    Abhisek Ukil (24412) -     Stijn Helsen (25355) - 		solution=solution1;
                         -                          - 	end
                         -                          - end
                         -       jan langer (22896) - 
      Amr Tawfik (22956) -   Tristrom Cooke (25425) - flag=1;
                         -   Tristrom Cooke (25425) - while flag
                         -   Tristrom Cooke (25425) -   [solution,flag]=improver4(puzzle,list,solution);
                         -                          - end;
                         -       jan langer (22896) - 
Mike Bindschadler (22908 - Timothy Alderson (25181) - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                         -     Stijn Helsen (25137) - function [solution,s] = solverC(puzzle,list)
                         -     Niilo Sirola (24316) - NUMREPS = 25000;
                         -     Niilo Sirola (24301) - NUMTRIES1 = 200;
                         -     Niilo Sirola (24301) - NUMTRIES2 = 200;
                         -     Niilo Sirola (24316) - NUMTRIES3 = 300;
                         -       jan langer (22896) - 
                         -      Claus Still (25331) - global h iX iN col_selection blockmap rowmap colmap;
                         -       jan langer (22896) - 
    Niilo Sirola (24110) -     Niilo Sirola (24300) - free = puzzle==0;
                         -     Niilo Sirola (25577) - q = uint8(find(free)');
                         -     Stijn Helsen (23885) - missing = numel(q);
                         -     Niilo Sirola (24300) - lq = missing;
                         -     Stijn Helsen (23885) - list_count = numel(list);
Hannes Naude & Cobus Pot -      the cyclist (23836) - listO=list;
                         -    Guy Incognito (25497) - NUMRUNS = (list_count / 10)+10;
 Gerbert Myburgh (23240) -      the cyclist (23836) - % Calculate the average of all values available
 Gerbert Myburgh (23240) -      the cyclist (23836) - total_puzzle = sum(sum(puzzle));
 Gerbert Myburgh (23240) -      the cyclist (23836) - total_all = sum(list) + total_puzzle;
 Gerbert Myburgh (23240) -      the cyclist (23836) - total_count = (81 - missing) + list_count;
 Gerbert Myburgh (23240) -      the cyclist (23836) - average = total_all / total_count;
 Gerbert Myburgh (23240) -      the cyclist (23836) - target = average*9;
                         -     Stijn Helsen (23913) - bestscore2 = 1e10;
                         -     Niilo Sirola (24300) - bestscore = 1e10;
                         -      Claus Still (24377) - reruns=0;
                         -       jan langer (22896) - 
                         -     Stijn Helsen (24391) - index1v = ceil(rand(1,NUMREPS)*lq);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - index1v = q(index1v);
                         -     Niilo Sirola (25577) - index2v = mod((index1v+uint8(floor(rand(1,NUMREPS)*(lq-1)))),lq)+1;
Hannes Naudé & Cobus Pot -      the cyclist (23836) - index2v = q(index2v);
                         -       jan langer (22896) - 
             grn (24741) -              grn (25833) - id=1:9;
                         -       jan langer (22896) - 
                         -              grn (25833) - if target>600
                         -              grn (25833) -     idT=sum(free);
                         -              grn (25837) -     [tempT,id]=sort(idT,'descend');
                         -                          - end
                         -       jan langer (22896) - 
                         -      Claus Still (24377) - while reruns<3
                         -     Niilo Sirola (24300) - 	for run = 1:NUMRUNS
 Gerbert Myburgh (23240) -      the cyclist (23836) - 		% Fill in values to optimize the rows
                         -     Niilo Sirola (24300) - 		list = listO;
 Gerbert Myburgh (23240) -      the cyclist (23836) - 		list_left = list_count;
                         -       jan langer (22896) - 		solution = puzzle;
 Gerbert Myburgh (23240) -      the cyclist (23836) - 		% Fill in values to optimize the rows
                         -              grn (25833) - 		for r=id
             grn (24741) -              grn (25833) -         %for r = 1:9
 Gerbert Myburgh (23240) -     Niilo Sirola (24300) - 			% Fill in values for all empty spaces in this row
 Gerbert Myburgh (23240) -      the cyclist (23836) - 			for c = 1:9
                         -     Niilo Sirola (24140) - 				if free(r,c)
                         -     Stijn Helsen (23867) - 					list_index = ceil(rand*list_left);
                         -     Niilo Sirola (24300) - 					solution(r,c) = list(list_index);
                         -      Brian Jones (24934) - 					list(list_index)=[];
 Gerbert Myburgh (23240) -      the cyclist (23836) - 					list_left = list_left-1;
                         -                          - 				end
                         -                          - 			end
                         -      Brian Jones (24934) - 			list(end+1:list_count) = 1e10;
                         -     Stijn Helsen (24043) - 			if list_left
                         -     Niilo Sirola (24300) - 				%  Get row as close as possible to
                         -     Niilo Sirola (24300) - 				%  target value
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				row_total = sum(solution(r,:)) - target;
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				est_error = abs(row_total);
                         -     Niilo Sirola (24300) - 				tq = r + 9*(find(free(r,:))-1);
             zox (24854) -      the cyclist (24904) - 				indv = tq(ceil(rand(NUMTRIES1,1)*numel(tq)));
             zox (24978) -               CT (25905) - rt = rand(NUMTRIES1,1);
                         -     Niilo Sirola (24300) - 				for tries = 1:NUMTRIES1
                         -     Niilo Sirola (24300) - 					ind = indv(tries);
             zox (24978) -               CT (25905) - 					list_index = ceil(rt(tries)*list_left);
 Gerbert Myburgh (23240) -      the cyclist (23836) - 					list_value = list(list_index);
                         -     Niilo Sirola (24300) - 					delta = list_value - solution(ind);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 					new_est_error = abs(row_total + delta);
 Gerbert Myburgh (23240) -      the cyclist (23836) - 					if (new_est_error < est_error)
                         -     Niilo Sirola (24300) - 						row_total = row_total + delta;
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 						est_error = new_est_error;
                         -     Niilo Sirola (24300) - 						list(list_index) = solution(ind);
                         -     Niilo Sirola (24300) - 						solution(ind) = list_value;
                         -                          - 					end
                         -                          - 				end
                         -                          - 			end
                         -                          - 		end
                         -       jan langer (22896) - 	
                         -  Anders Björling (25781) - 		target = sum(sum(solution)) *0.11111111111111111111111;
                         -       jan langer (22896) - 		
Hannes Naudé & Cobus Pot -     Niilo Sirola (24300) - 		% Go about optimizing blocks without changing rows
                         -       jan langer (22896) -         
                         -               CT (25905) - 				cols_all_outside = 4:9;
                         -               CT (25905) - 				block = sum(sum(solution(1:3,1:3)));
                         -     Niilo Sirola (24300) -                 for tries = 1:NUMTRIES2         
                         -               CT (25905) -                   row        = ceil(rand*3);
                         -               CT (25905) -                   col_inside = ceil(rand*3);
                         -     Niilo Sirola (24140) -                   if free(row,col_inside)
              tt (24890) -    Guy Incognito (25124) -                     col_outside = cols_all_outside(ceil(rand*6));
                         -     Niilo Sirola (24140) -                     if free(row,col_outside)
              tt (24913) -    Guy Incognito (25124) -                       val_inside  = solution(row, col_inside);
                         -     Niilo Sirola (24300) -                       val_outside = solution(row, col_outside);
              tt (24913) -               PU (25478) -                       new_block   = block - val_inside + val_outside;
              tt (24890) -    Guy Incognito (25124) -                       if abs(new_block - target) < abs(block - target)
Hannes Naudé & Cobus Pot -      the cyclist (23836) -                         solution(row,col_outside) = val_inside;
              tt (24913) -    Guy Incognito (25124) -                         solution(row,col_inside)  = val_outside;
              tt (24913) -               PU (25478) -                         block                     = new_block;
                         -                          -                       end    
                         -                          -                     end
                         -                          -                   end
                         -                          -                 end
                         -       jan langer (22896) -                 
                         -               CT (25905) - 				cols_all_outside = [7 8 9 7 8 9];
                         -               CT (25905) - 				block = sum(sum(solution(1:3,4:6)));
                         -     Niilo Sirola (24300) -                 for tries = 1:NUMTRIES2         
                         -               CT (25905) -                   row        = ceil(rand*3);
                         -               CT (25905) -                   col_inside = 3 + ceil(rand*3);
                         -     Niilo Sirola (24140) -                   if free(row,col_inside)
              tt (24890) -    Guy Incognito (25124) -                     col_outside = cols_all_outside(ceil(rand*6));
                         -     Niilo Sirola (24140) -                     if free(row,col_outside)
              tt (24913) -    Guy Incognito (25124) -                       val_inside  = solution(row, col_inside);
                         -     Niilo Sirola (24300) -                       val_outside = solution(row, col_outside);
              tt (24913) -               PU (25478) -                       new_block   = block - val_inside + val_outside;
              tt (24890) -    Guy Incognito (25124) -                       if abs(new_block - target) < abs(block - target)
Hannes Naudé & Cobus Pot -      the cyclist (23836) -                         solution(row,col_outside) = val_inside;
              tt (24913) -    Guy Incognito (25124) -                         solution(row,col_inside)  = val_outside;
              tt (24913) -               PU (25478) -                         block                     = new_block;
                         -                          -                       end    
                         -                          -                     end
                         -                          -                   end
                         -                          -                 end
                         -       jan langer (22896) - 
                         -       jan langer (22896) - 
                         -       jan langer (22896) - 
                         -       jan langer (22896) -         
                         -       jan langer (22896) -         
                         -       jan langer (22896) -         
                         -       jan langer (22896) - 
                         -               CT (25905) - 				cols_all_outside = 4:9;
                         -               CT (25905) - 				block = sum(sum(solution(4:6,1:3)));
                         -     Niilo Sirola (24300) -                 for tries = 1:NUMTRIES2         
                         -               CT (25905) -                   row        = 3 + ceil(rand*3);
                         -               CT (25905) -                   col_inside = ceil(rand*3);
                         -     Niilo Sirola (24140) -                   if free(row,col_inside)
              tt (24890) -    Guy Incognito (25124) -                     col_outside = cols_all_outside(ceil(rand*6));
                         -     Niilo Sirola (24140) -                     if free(row,col_outside)
              tt (24913) -    Guy Incognito (25124) -                       val_inside  = solution(row, col_inside);
                         -     Niilo Sirola (24300) -                       val_outside = solution(row, col_outside);
              tt (24913) -               PU (25478) -                       new_block   = block - val_inside + val_outside;
              tt (24890) -    Guy Incognito (25124) -                       if abs(new_block - target) < abs(block - target)
Hannes Naudé & Cobus Pot -      the cyclist (23836) -                         solution(row,col_outside) = val_inside;
              tt (24913) -    Guy Incognito (25124) -                         solution(row,col_inside)  = val_outside;
              tt (24913) -               PU (25478) -                         block                     = new_block;
                         -                          -                       end    
                         -                          -                     end
                         -                          -                   end
                         -                          -                 end
                         -               CT (25905) - 				cols_all_outside = [7 8 9 7 8 9];
                         -               CT (25905) - 				block = sum(sum(solution(4:6,4:6)));
                         -       jan langer (22896) - 				
                         -     Niilo Sirola (24300) -                 for tries = 1:NUMTRIES2         
                         -               CT (25905) -                   row        = 3 + ceil(rand*3);
                         -               CT (25905) -                   col_inside = 3 + ceil(rand*3);
                         -     Niilo Sirola (24140) -                   if free(row,col_inside)
              tt (24890) -    Guy Incognito (25124) -                     col_outside = cols_all_outside(ceil(rand*6));
                         -     Niilo Sirola (24140) -                     if free(row,col_outside)
              tt (24913) -    Guy Incognito (25124) -                       val_inside  = solution(row, col_inside);
                         -     Niilo Sirola (24300) -                       val_outside = solution(row, col_outside);
              tt (24913) -               PU (25478) -                       new_block   = block - val_inside + val_outside;
              tt (24890) -    Guy Incognito (25124) -                       if abs(new_block - target) < abs(block - target)
Hannes Naudé & Cobus Pot -      the cyclist (23836) -                         solution(row,col_outside) = val_inside;
              tt (24913) -    Guy Incognito (25124) -                         solution(row,col_inside)  = val_outside;
              tt (24913) -               PU (25478) -                         block                     = new_block;
                         -                          -                       end    
                         -                          -                     end
                         -                          -                   end
                         -                          -                 end
                         -       jan langer (22896) - 
                         -       jan langer (22896) -         
                         -       jan langer (22896) -                 
                         -       jan langer (22896) -                 
                         -       jan langer (22896) - 
                         -               CT (25905) - 				cols_all_outside = 4:9;
                         -               CT (25905) - 				block = sum(sum(solution(7:9,1:3)));
                         -       jan langer (22896) - 				
                         -     Niilo Sirola (24300) -                 for tries = 1:NUMTRIES2         
                         -               CT (25905) -                   row        = 6 + ceil(rand*3);
                         -               CT (25905) -                   col_inside = ceil(rand*3);
                         -     Niilo Sirola (24140) -                   if free(row,col_inside)
              tt (24890) -    Guy Incognito (25124) -                     col_outside = cols_all_outside(ceil(rand*6));
                         -     Niilo Sirola (24140) -                     if free(row,col_outside)
              tt (24913) -    Guy Incognito (25124) -                       val_inside  = solution(row, col_inside);
                         -     Niilo Sirola (24300) -                       val_outside = solution(row, col_outside);
              tt (24913) -               PU (25478) -                       new_block   = block - val_inside + val_outside;
              tt (24890) -    Guy Incognito (25124) -                       if abs(new_block - target) < abs(block - target)
Hannes Naudé & Cobus Pot -      the cyclist (23836) -                         solution(row,col_outside) = val_inside;
              tt (24913) -    Guy Incognito (25124) -                         solution(row,col_inside)  = val_outside;
              tt (24913) -               PU (25478) -                         block                     = new_block;
                         -                          -                       end    
                         -                          -                     end
                         -                          -                   end
                         -                          -                 end
                         -       jan langer (22896) -                 
                         -               CT (25905) - 				cols_all_outside = [7 8 9 7 8 9];
                         -               CT (25905) - 				block = sum(sum(solution(7:9,4:6)));
                         -     Niilo Sirola (24300) -                 for tries = 1:NUMTRIES2         
                         -               CT (25905) -                   row        = 6 + ceil(rand*3);
                         -               CT (25905) -                   col_inside = 3 + ceil(rand*3);
                         -     Niilo Sirola (24140) -                   if free(row,col_inside)
              tt (24890) -    Guy Incognito (25124) -                     col_outside = cols_all_outside(ceil(rand*6));
                         -     Niilo Sirola (24140) -                     if free(row,col_outside)
              tt (24913) -    Guy Incognito (25124) -                       val_inside  = solution(row, col_inside);
                         -     Niilo Sirola (24300) -                       val_outside = solution(row, col_outside);
              tt (24913) -               PU (25478) -                       new_block   = block - val_inside + val_outside;
              tt (24890) -    Guy Incognito (25124) -                       if abs(new_block - target) < abs(block - target)
Hannes Naudé & Cobus Pot -      the cyclist (23836) -                         solution(row,col_outside) = val_inside;
              tt (24913) -    Guy Incognito (25124) -                         solution(row,col_inside)  = val_outside;
              tt (24913) -               PU (25478) -                         block                     = new_block;
                         -                          -                       end    
                         -                          -                     end
                         -                          -                   end
                         -                          -                 end
                         -       jan langer (22896) - 
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 		%Solve the columns without changing rows or blocks
                         -     Niilo Sirola (24300) - 		col_total = sum(solution) - target;
                         -     Niilo Sirola (24300) - 		for tries = 1:NUMTRIES3
    Niilo Sirola (24110) -     Niilo Sirola (24300) - 			el = q(ceil(rand*missing));
                         -     Niilo Sirola (24300) - 			col = colmap(el);
                         -     Niilo Sirola (24300) - 			row = el - 9*(col-1);
                         -     Stijn Helsen (23867) - 			col_swap = ceil(rand*3) + (ceil(col/3)-1)*3;
                         -     Niilo Sirola (24140) - 			if free(row,col_swap)
 Gerbert Myburgh (23240) -      the cyclist (23836) - 				value_swap = solution(row,col_swap);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				error = abs(col_total(col));
 Gerbert Myburgh (23240) -      the cyclist (23836) - 				value = solution(row,col);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				col_swap_total = col_total(col_swap);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				col_total_new = col_total(col) + value_swap - value;
 Gerbert Myburgh (23240) -      the cyclist (23836) - 				col_swap_total_new = col_swap_total + value - value_swap;
                         -     Niilo Sirola (24857) - 				error_total_new = abs(col_total_new) + abs(col_swap_total_new);
                         -     Niilo Sirola (24857) - 				if (error_total_new < error + abs(col_swap_total))
                         -     Niilo Sirola (24300) - 					solution(el) = value_swap;
                         -     Niilo Sirola (24300) - 					solution(row, col_swap) = value;
                         -     Niilo Sirola (24300) - 					col_total(col_swap) = col_swap_total_new;
                         -     Niilo Sirola (24300) - 					col_total(col) = col_total_new;
                         -                          - 				end
                         -                          - 			end
                         -                          - 		end
                         -       jan langer (22896) - 	
                         -     Stijn Helsen (23887) - 		sums  = sum(solution(iX));
                         -  Anders Björling (25781) - 		score = sum(abs(sum(sums)*0.03703703703703703703-sums));
                         -     Niilo Sirola (24300) - 		if score < bestscore
                         -     Niilo Sirola (24300) - 			bestinit = solution;
                         -     Niilo Sirola (24300) - 			bestscore = score;
                         -     Niilo Sirola (24300) - 			bestlist = list;
                         -                          - 		end
                         -       jan langer (22896) - 	
                         -     Niilo Sirola (24300) - 		solution = bestinit;
                         -     Niilo Sirola (24300) - 		list = bestlist;
                         -    major_blagger (24804) - 		sTemp = sum(solution);
                         -  Anders Björling (25781) - 		target = sum(sTemp) *0.11111111111111111111111;
                         -           Yi Cao (25753) - 		rowtotals = sum(solution,2)';
                         -    major_blagger (24804) - 		coltotals = sTemp;
                         -     Niilo Sirola (24300) - 		blocktotals = sum(solution(h));
                         -       jan langer (22896) - 		
    Niilo Sirola (24128) -     Niilo Sirola (24300) - 		if list_left ~= 0
                         -     Niilo Sirola (24300) - 			rep = 0;
     the cyclist (24774) -      the cyclist (25019) - 			for repl = 1:5000 %  blimey! loop unroll! (drumroll?)
                         -           Yi Cao (25753) - 				target3=target*3; %constant for loop 0-3
                         -     Niilo Sirola (24300) - 				% ----- loop 0,  do the first thing (loops 0-3 are the same)
                         -     Niilo Sirola (24300) - 				rep = rep + 1;
                         -     Niilo Sirola (24300) - 				index1 = index1v(rep);     index2 = index2v(rep);
                         -     Niilo Sirola (24300) - 				index1r = rowmap(index1);  index2r = rowmap(index2);
                         -     Niilo Sirola (24300) - 				index1c = colmap(index1);  index2c = colmap(index2);
                         -     Niilo Sirola (24300) - 				value1 = solution(index1); value2 = solution(index2);
                         -     Niilo Sirola (24300) - 				block1i = blockmap(index1);block2i = blockmap(index2);
                         -     Niilo Sirola (24300) - 				valdiff = value1-value2;
                         -           Yi Cao (25753) -                 nvd=iN(index1,index2)*valdiff;
                         -           Yi Cao (25753) - 				subtotal1_old = rowtotals(index1r) + coltotals(index1c) + blocktotals(block1i) - target3;
                         -           Yi Cao (25753) - 				subtotal2_old = rowtotals(index2r) + coltotals(index2c) + blocktotals(block2i) - target3;
                         -           Yi Cao (25753) - 				subscoret_old = abs(subtotal1_old) + abs(subtotal2_old);
                         -           Yi Cao (25753) - 				subscoret_new = abs(subtotal1_old-nvd) + abs(subtotal2_old+nvd); 
                         -  Anders Björling (25781) - 				if (subscoret_new - subscoret_old) < (rand*0.1666666667)
                         -     Stijn Helsen (24161) - 					solution(index1) = value2;
                         -     Stijn Helsen (24161) - 					solution(index2) = value1;
                         -     Niilo Sirola (24300) - 					% dont bother to compare if the rows/cols are the same..
                         -     Niilo Sirola (24300) - 					rowtotals(index1r) = rowtotals(index1r) - valdiff;
                         -     Niilo Sirola (24300) - 					rowtotals(index2r) = rowtotals(index2r) + valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index1c) = coltotals(index1c) - valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index2c) = coltotals(index2c) + valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block1i) = blocktotals(block1i) - valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block2i) = blocktotals(block2i) + valdiff;
                         -                          - 				end
                         -     Niilo Sirola (24300) - 				% ----- loop 1,  do the first thing
                         -     Niilo Sirola (24300) - 				rep = rep + 1;
                         -     Niilo Sirola (24300) - 				index1 = index1v(rep);     index2 = index2v(rep);
                         -     Niilo Sirola (24300) - 				index1r = rowmap(index1);  index2r = rowmap(index2);
                         -     Niilo Sirola (24300) - 				index1c = colmap(index1);  index2c = colmap(index2);
                         -     Niilo Sirola (24300) - 				value1 = solution(index1); value2 = solution(index2);
                         -     Niilo Sirola (24300) - 				block1i = blockmap(index1);block2i = blockmap(index2);
                         -     Niilo Sirola (24300) - 				valdiff = value1-value2;
                         -           Yi Cao (25753) -                 nvd=iN(index1,index2)*valdiff;
                         -           Yi Cao (25753) - 				subtotal1_old = rowtotals(index1r) + coltotals(index1c) + blocktotals(block1i) - target3;
                         -           Yi Cao (25753) - 				subtotal2_old = rowtotals(index2r) + coltotals(index2c) + blocktotals(block2i) - target3;
                         -           Yi Cao (25753) - 				subscoret_old = abs(subtotal1_old) + abs(subtotal2_old);
                         -           Yi Cao (25753) - 				subscoret_new = abs(subtotal1_old-nvd) + abs(subtotal2_old+nvd); 
                         -  Anders Björling (25781) - 				if (subscoret_new - subscoret_old) < (rand*0.1666666667)
                         -     Stijn Helsen (24161) - 					solution(index1) = value2;
                         -     Stijn Helsen (24161) - 					solution(index2) = value1;
                         -     Niilo Sirola (24300) - 					% dont bother to compare if the rows/cols are the same..
                         -     Niilo Sirola (24300) - 					rowtotals(index1r) = rowtotals(index1r) - valdiff;
                         -     Niilo Sirola (24300) - 					rowtotals(index2r) = rowtotals(index2r) + valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index1c) = coltotals(index1c) - valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index2c) = coltotals(index2c) + valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block1i) = blocktotals(block1i) - valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block2i) = blocktotals(block2i) + valdiff;
                         -                          - 				end
                         -     Niilo Sirola (24300) - 				% ----- loop 2,  do the first thing
                         -     Niilo Sirola (24300) - 				rep = rep + 1;
                         -     Niilo Sirola (24300) - 				index1 = index1v(rep);     index2 = index2v(rep);
                         -     Niilo Sirola (24300) - 				index1r = rowmap(index1);  index2r = rowmap(index2);
                         -     Niilo Sirola (24300) - 				index1c = colmap(index1);  index2c = colmap(index2);
                         -     Niilo Sirola (24300) - 				value1 = solution(index1); value2 = solution(index2);
                         -     Niilo Sirola (24300) - 				block1i = blockmap(index1);block2i = blockmap(index2);
                         -     Niilo Sirola (24300) - 				valdiff = value1-value2;
                         -           Yi Cao (25753) -                 nvd=iN(index1,index2)*valdiff;
                         -           Yi Cao (25753) - 				subtotal1_old = rowtotals(index1r) + coltotals(index1c) + blocktotals(block1i) - target3;
                         -           Yi Cao (25753) - 				subtotal2_old = rowtotals(index2r) + coltotals(index2c) + blocktotals(block2i) - target3;
                         -           Yi Cao (25753) - 				subscoret_old = abs(subtotal1_old) + abs(subtotal2_old);
                         -           Yi Cao (25753) - 				subscoret_new = abs(subtotal1_old-nvd) + abs(subtotal2_old+nvd); 
                         -  Anders Björling (25781) - 				if (subscoret_new - subscoret_old) < (rand*0.166666667)
                         -     Stijn Helsen (24161) - 					solution(index1) = value2;
                         -     Stijn Helsen (24161) - 					solution(index2) = value1;
                         -     Niilo Sirola (24300) - 					% dont bother to compare if the rows/cols are the same..
                         -     Niilo Sirola (24300) - 					rowtotals(index1r) = rowtotals(index1r) - valdiff;
                         -     Niilo Sirola (24300) - 					rowtotals(index2r) = rowtotals(index2r) + valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index1c) = coltotals(index1c) - valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index2c) = coltotals(index2c) + valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block1i) = blocktotals(block1i) - valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block2i) = blocktotals(block2i) + valdiff;
                         -                          - 				end
                         -     Niilo Sirola (24300) - 				% ----- loop 3,  do the first thing
                         -     Niilo Sirola (24300) - 				rep = rep + 1;
                         -     Niilo Sirola (24300) - 				index1 = index1v(rep);     index2 = index2v(rep);
                         -     Niilo Sirola (24300) - 				index1r = rowmap(index1);  index2r = rowmap(index2);
                         -     Niilo Sirola (24300) - 				index1c = colmap(index1);  index2c = colmap(index2);
                         -     Niilo Sirola (24300) - 				value1 = solution(index1); value2 = solution(index2);
                         -     Niilo Sirola (24300) - 				block1i = blockmap(index1);block2i = blockmap(index2);
                         -     Niilo Sirola (24300) - 				valdiff = value1-value2;
                         -           Yi Cao (25753) -                 nvd=iN(index1,index2)*valdiff;
                         -           Yi Cao (25753) - 				subtotal1_old = rowtotals(index1r) + coltotals(index1c) + blocktotals(block1i) - target3;
                         -           Yi Cao (25753) - 				subtotal2_old = rowtotals(index2r) + coltotals(index2c) + blocktotals(block2i) - target3;
                         -           Yi Cao (25753) - 				subscoret_old = abs(subtotal1_old) + abs(subtotal2_old);
                         -           Yi Cao (25753) - 				subscoret_new = abs(subtotal1_old-nvd) + abs(subtotal2_old+nvd); 
                         -  Anders Björling (25781) - 				if (subscoret_new - subscoret_old) < (rand*0.1666666667)
                         -     Stijn Helsen (24161) - 					solution(index1) = value2;
                         -     Stijn Helsen (24161) - 					solution(index2) = value1;
                         -     Niilo Sirola (24300) - 					% dont bother to compare if the rows/cols are the same..
                         -     Niilo Sirola (24300) - 					rowtotals(index1r) = rowtotals(index1r) - valdiff;
                         -     Niilo Sirola (24300) - 					rowtotals(index2r) = rowtotals(index2r) + valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index1c) = coltotals(index1c) - valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index2c) = coltotals(index2c) + valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block1i) = blocktotals(block1i) - valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block2i) = blocktotals(block2i) + valdiff;
                         -                          - 				end
                         -     Niilo Sirola (24300) - 				%------ loop 4, do the other thing
                         -     Niilo Sirola (24300) - 				rep = rep+1;
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				index1 = index1v(rep);
                         -     Niilo Sirola (24300) - 				index1r = rowmap(index1);
                         -     Niilo Sirola (24300) - 				index1c = colmap(index1);
                         -     Stijn Helsen (24161) - 				value1 = solution(index1);
                         -     Niilo Sirola (24300) - 				block1i = blockmap(index1);
                         -     Stijn Helsen (23867) - 				list_index = ceil(rand*list_left);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				replace = list(list_index);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 				subtotal1_old = rowtotals(index1r) + coltotals(index1c) + blocktotals(block1i);
                         -  Anders Björling (25781) -                 newtarg = target + (replace-value1) *0.11111111111111111111111;
        nathan q (25398) -         nathan q (25400) - 				score_diff = abs(subtotal1_old+3*(replace-value1-newtarg)) - abs(subtotal1_old - 3*target);
                         -         nathan q (25415) - 				if score_diff < 0.93*rand
                         -     Stijn Helsen (24161) - 					solution(index1) = replace;
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 					list(list_index) = value1;
        nathan q (25398) -         nathan q (25400) -                     delta=replace-value1;
        nathan q (25398) -         nathan q (25400) - 					rowtotals(index1r) = rowtotals(index1r) + delta;
        nathan q (25398) -         nathan q (25400) - 					coltotals(index1c) = coltotals(index1c) + delta;
        nathan q (25398) -         nathan q (25400) - 					blocktotals(block1i) = blocktotals(block1i) + delta;
        nathan q (25398) -         nathan q (25400) - 					target = newtarg;
                         -                          - 				end
                         -     Niilo Sirola (24300) - 				% ---- end loop
                         -                          - 			end
                         -       jan langer (22896) - 		
                         -     Niilo Sirola (24300) - 		else % (list_left == 0)
                         -       jan langer (22896) - 	
                         -     Niilo Sirola (24300) - 			% time for fresh random numbers...
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 			index1v = ceil(rand(NUMREPS,1)*lq);
Hannes Naudé & Cobus Pot -      the cyclist (23836) - 			index1v = q(index1v);
                         -       Amr Tawfik (25645) - 			sok=NUMREPS-350;
                         -           Yi Cao (25753) -             target3=target*3;   %constant target
                         -       Amr Tawfik (25645) - 			for rep = 1:sok
                         -     Niilo Sirola (24300) - 				% --- this is same as the "first thing" above
                         -     Niilo Sirola (24300) - 				index1 = index1v(rep);     index2 = index2v(rep);
                         -     Niilo Sirola (24300) - 				index1r = rowmap(index1);  index2r = rowmap(index2);
                         -     Niilo Sirola (24300) - 				index1c = colmap(index1);  index2c = colmap(index2);
                         -     Niilo Sirola (24300) - 				value1 = solution(index1); value2 = solution(index2);
                         -     Niilo Sirola (24300) - 				block1i = blockmap(index1);block2i = blockmap(index2);
                         -       jan langer (22896) - 				
                         -     Niilo Sirola (24300) - 				valdiff = value1-value2;
                         -           Yi Cao (25753) -                 nvd=iN(index1,index2)*valdiff;
                         -       jan langer (22896) - 
                         -           Yi Cao (25753) - 				subtotal1_old = rowtotals(index1r) + coltotals(index1c) + blocktotals(block1i) - target3;
                         -           Yi Cao (25753) - 				subtotal2_old = rowtotals(index2r) + coltotals(index2c) + blocktotals(block2i) - target3;
                         -           Yi Cao (25753) - 				subscoret_old = abs(subtotal1_old) + abs(subtotal2_old);
                         -           Yi Cao (25753) -                                 subscoret_new = abs(subtotal1_old-nvd) + abs(subtotal2_old+nvd); 
                         -       jan langer (22896) - 				
                         -  Anders Björling (25781) - 				if (subscoret_new - subscoret_old) < (rand*0.1666666667)
                         -     Stijn Helsen (24161) - 					solution(index1) = value2;
                         -     Stijn Helsen (24161) - 					solution(index2) = value1;
                         -     Niilo Sirola (24300) - 					% dont bother to compare if the rows/cols are the same..
                         -     Niilo Sirola (24300) - 					rowtotals(index1r) = rowtotals(index1r) - valdiff;
                         -     Niilo Sirola (24300) - 					rowtotals(index2r) = rowtotals(index2r) + valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index1c) = coltotals(index1c) - valdiff;
                         -     Niilo Sirola (24300) - 					coltotals(index2c) = coltotals(index2c) + valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block1i) = blocktotals(block1i) - valdiff;
                         -     Niilo Sirola (24300) - 					blocktotals(block2i) = blocktotals(block2i) + valdiff;
                         -                          - 				end
                         -       jan langer (22896) - 			
                         -                          - 			end
                         -                          - 		end
                         -     Niilo Sirola (24300) - 		% --- end the inner loop
                         -       jan langer (22896) - 		
                         -     Stijn Helsen (23887) - 		sums  = sum(solution(iX));
                         -  Anders Björling (25781) - 		score = sum(abs(sum(sums)*0.0370370370370370-sums));
                         -     Niilo Sirola (24300) - 		if score < bestscore2
                         -     Niilo Sirola (24300) - 			bestsol = solution;
                         -     Niilo Sirola (24300) - 			bestscore2 = score;
                         -                          - 		end
      jan langer (24630) -      the cyclist (25019) - 		if bestscore2 < 5
          JStack (23124) -      the cyclist (24769) - 			break
                         -                          - 		end
                         -                          - 	end
ismail meriç can uygan ( -            Satya (25617) - 	if ( reruns==0 && bestscore2>9 )
                         -      Claus Still (24377) - 		reruns=reruns+1;
                         -      Claus Still (24377) - 	elseif ( reruns==1 && bestscore2>25 )
                         -      Claus Still (24377) - 		reruns=reruns+1;
                         -                          - 	else
                         -      Claus Still (24377) - 		reruns=1e8;
                         -                          - 	end
                         -                          - end
        nathan q (23158) -     Niilo Sirola (24300) - solution = bestsol;
                         -     Niilo Sirola (24300) - % --- prepare for final improvers
                         - Timothy Alderson (25181) - n=ceil(bestscore2);
                         -     Niilo Sirola (24300) - X = solution(iX);
                         -     Niilo Sirola (24300) - sX = sum(X);
                         -  Anders Björling (25781) - mX = sum(sX)*0.0370370370370370;
                         -     Stijn Helsen (24391) - XX=zeros(81,3);
         wuzhili (22960) -     Stijn Helsen (24391) - for i=q
                         -     Stijn Helsen (24391) - 	XX(i,:)=find(sum(iX==i));
                         -                          - end
                         -       jan langer (22896) - 
    Stijn Helsen (23216) -     Stijn Helsen (23867) - for i=1:n
    Stijn Helsen (23153) -     Stijn Helsen (23867) - 	bVerb=0;
                         - Timothy Alderson (25181) - 	for iEl=q
                         -     Stijn Helsen (24391) - 		I=XX(iEl,:);
                         - Timothy Alderson (25181) - 		s1=sum(sX(I)-mX);
                         - Timothy Alderson (25181) - 		if (s1>0&&sum(sX(I)>mX)<2)||(s1<0&&sum(sX(I)<mX)<2)
             quo (22943) -     Stijn Helsen (24404) - 			continue
                         -                          - 		end
                         - Timothy Alderson (25181) - 		x=solution(iEl);
                         - Timothy Alderson (25181) - 		dx=solution(q)-x;
                         - Timothy Alderson (25181) - 		if s1>0
                         -     Stijn Helsen (25383) - 			j=find(dx<0.8&dx+s1*2>0&dx~=0);
                         -                          - 		else
                         -     Stijn Helsen (25383) - 			j=find(dx>-0.8&dx+s1*2<0&dx~=0);
                         -                          - 		end
    Stijn Helsen (23153) -     Stijn Helsen (23867) - 		if ~isempty(j)
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 			S0=sX-mX;
                         - Timothy Alderson (25181) - 			s=sum(abs(S0));
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 			m=0;
                         -       Amr Tawfik (25645) -             kozz=numel(j);
                         -       Amr Tawfik (25645) - 			for k=1:kozz
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 				S=S0;
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 				S(I)=S(I)+dx(j(k));
                         - Timothy Alderson (25181) - 				J=XX(q(j(k)),:);
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 				S(J)=S(J)-dx(j(k));
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 				T=sum(abs(S));
                         - Timothy Alderson (25181) - 				if T<s
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 					m=k;
                         - Timothy Alderson (25181) - 					s=T;
                         -                          - 				end
                         -                          - 			end
    Stijn Helsen (23247) -     Stijn Helsen (23867) - 			if m
                         - Timothy Alderson (25181) - 				j=q(j(m));
                         - Timothy Alderson (25181) - 				solution(iEl)=solution(j);
                         - Timothy Alderson (25181) - 				solution(j)=x;
    Stijn Helsen (23850) -     Stijn Helsen (23867) - 				X=solution(iX);
    Stijn Helsen (22952) -     Stijn Helsen (23867) - 				sX=sum(X);
    Stijn Helsen (23153) -     Stijn Helsen (23867) - 				bVerb=1;
                         -       jan langer (22896) - 				
                         -                          - 			end
                         -                          - 		end
                         -                          - 	end
    Stijn Helsen (23153) -     Stijn Helsen (23867) - 	if ~bVerb
          JStack (23124) -      the cyclist (24769) - 		break
                         -                          - 	end
                         -                          - end
Mike Bindschadler (22908 - Timothy Alderson (25181) - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                         - Timothy Alderson (25181) - function [out,vprev]=improver3(in,list,solution)
                         - Timothy Alderson (25181) - %Initialize
    Stijn Helsen (25256) -     Stijn Helsen (25355) - idx=find(in==0); a=solution(idx);
              PB (24897) - Timothy Alderson (24914) - a=[a ; list(~ismembc(list,sort(a)))];
                         -     Stijn Helsen (25355) - N1=numel(idx);
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (24702) - % Initialise the square indices
           Satya (25599) -            Satya (25617) - isquare = [ 1     2     3    10    11    12    19    20    21
 Wouter Vleugels (23008) -            Satya (25617) -      4     5     6    13    14    15    22    23    24
 Wouter Vleugels (23008) -            Satya (25617) -      7     8     9    16    17    18    25    26    27
 Wouter Vleugels (23008) -            Satya (25617) -     28    29    30    37    38    39    46    47    48
 Wouter Vleugels (23008) -            Satya (25617) -     31    32    33    40    41    42    49    50    51
 Wouter Vleugels (23008) -            Satya (25617) -     34    35    36    43    44    45    52    53    54
 Wouter Vleugels (23008) -            Satya (25617) -     55    56    57    64    65    66    73    74    75
 Wouter Vleugels (23008) -            Satya (25617) -     58    59    60    67    68    69    76    77    78
 Wouter Vleugels (23008) -            Satya (25617) -     61    62    63    70    71    72    79    80    81];
           Satya (25186) -            Satya (25617) - square=[1     1     1     4     4     4     7     7     7
             sss (25107) -            Satya (25617) -      1     1     1     4     4     4     7     7     7
             sss (25107) -            Satya (25617) -      1     1     1     4     4     4     7     7     7
             sss (25107) -            Satya (25617) -      2     2     2     5     5     5     8     8     8
             sss (25107) -            Satya (25617) -      2     2     2     5     5     5     8     8     8
             sss (25107) -            Satya (25617) -      2     2     2     5     5     5     8     8     8
             sss (25107) -            Satya (25617) -      3     3     3     6     6     6     9     9     9
             sss (25107) -            Satya (25617) -      3     3     3     6     6     6     9     9     9
B. van den Broek (23429) -            Satya (25617) -      3     3     3     6     6     6     9     9     9];
                         -   Tristrom Cooke (24702) - % Initialise the solution
    Stijn Helsen (25256) -     Stijn Helsen (25355) - [x,y]=find(in==0);
                         -   Tristrom Cooke (25425) - out=solution;
                         -     Stijn Helsen (25355) - N=numel(a)-N1;
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (24702) - % Calculate bounds on the block values
                         -   Tristrom Cooke (24702) - rowsum=sum(out,2);
                         -  Anders Björling (25781) - optsum=sum(rowsum)*0.11111111111111111111111;
                         -   Tristrom Cooke (24702) - colsum=sum(out,1)';
                         -   Tristrom Cooke (24702) - sqsum=sum(out(isquare),2);
                         -   Tristrom Cooke (24702) - S=[rowsum(x) colsum(y) sqsum(square(idx))]-optsum;
                         -   Tristrom Cooke (24702) - vprev=Inf;
                         -     Stijn Helsen (25137) - ii=1; cnt=1;
          Nathan (23055) -      the cyclist (24769) - while 1                         
                         -              zox (25459) -     yy=ii+1;
                         -     Stijn Helsen (25355) - 	tmp=S(zeros(numel(a)-ii,1)+ii,:);
                         -              zox (25459) - 	tmp=tmp+a(yy:end,[1 1 1])-a(ii);
                         -   Tristrom Cooke (24702) - 	tmp=sum(abs(tmp),2)-sum(abs(S(ii,:)));
                         -              zox (25459) - 	tmp2=S(yy:end,:)-a(yy:numel(idx),[1 1 1])+a(ii);
     the cyclist (25234) -              zox (25459) -         tmp2=[sum(abs(tmp2),2)-sum(abs(S(yy:end,:)),2) ; zeros(N,1)];
                         -   Tristrom Cooke (24702) -         tmp=tmp+tmp2;
                         -   Tristrom Cooke (24702) - 	[tmp,idx3]=min(tmp);
    Stijn Helsen (25256) -     Stijn Helsen (25338) - 	if (tmp<0)                      % Replace one list value by another
     the cyclist (25234) -              zox (25459) -         zz = idx3+ii;
     the cyclist (25234) -              zox (25459) - 		tmp=a(zz); a(zz)=a(ii); a(ii)=tmp;
                         -   Tristrom Cooke (24702) - 		out(x(ii),y(ii))=a(ii);
                         -              zox (25459) - 		if (zz<=size(S,1)) % Swaps the two currently used list values
     the cyclist (25234) -              zox (25459) - 			out(x(zz),y(zz))=a(zz);
                         - Timothy Alderson (25181) - 		else                    % Re-calculate the optimal sum
                         -  Anders Björling (25781) - 			optsum=optsum+(a(ii)-a(zz)) *0.11111111111111111111111;
    Stijn Helsen (25256) -     Stijn Helsen (25338) - 		end                             % Re-calculate the various sums
                         -   Tristrom Cooke (24702) - 		rowsum=sum(out,2);
                         -   Tristrom Cooke (24702) - 		colsum=sum(out,1)';
                         -   Tristrom Cooke (24702) - 		sqsum=sum(out(isquare),2);
                         -   Tristrom Cooke (24702) - 		S=[rowsum(x) colsum(y) sqsum(square(idx))]-optsum;
                         -                          - 	end
                         -   Tristrom Cooke (24702) - 	if (ii==1)
                         -   Tristrom Cooke (24702) - 		sums  = [rowsum ; colsum ; sqsum];
             zox (24854) -      the cyclist (24904) - 		v = sum(abs(sum(sums)/numel(sums)-sums));
                         -      the cyclist (24769) - 		if (v>=vprev)
          JStack (23124) -      the cyclist (24769) - 			break
                         -                          - 		end
                         -   Tristrom Cooke (24702) - 		vprev=v;
                         -                          - 	end
     the cyclist (25234) -              zox (25459) - 	ii=yy;
              PB (24888) -     Stijn Helsen (25355) - 	if (ii==size(S,1))
    Stijn Helsen (25256) -     Stijn Helsen (25355) - 		ii=1;
     Brian Welch (23116) -     Stijn Helsen (25355) - 		cnt=cnt+1;
                         -     Stijn Helsen (25355) - 		if (cnt==4)
          JStack (23124) -      the cyclist (24769) - 			break
                         -                          - 		end
                         -                          - 	end
                         -                          - end
                         -       jan langer (22896) - 
Mike Bindschadler (22908 - Timothy Alderson (25181) - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (25425) - % All of the previous algorithms have focussed on pairwise switching
                         -   Tristrom Cooke (25425) - % of weights. The main loop is a fast random method for choosing the
                         -   Tristrom Cooke (25425) - % blocks to be switched. What follows that (formerly improver2) is a 
                         -   Tristrom Cooke (25425) - % slower method comparing the scores before and after each pair of blocks 
                         -   Tristrom Cooke (25425) - % already in the matrix have been swapped. Then improver3 is a faster 
                         -   Tristrom Cooke (25425) - % method of doing the same thing, but only approximates the change in 
                         -   Tristrom Cooke (25425) - % score, and also allows swaps with unassigned elements in the list. 
                         -   Tristrom Cooke (25425) - % This improver looks at swapping three elements at a time (although 
                         -   Tristrom Cooke (25425) - % not exhaustively), and can trivially be altered for more than three 
                         -   Tristrom Cooke (25425) - % elements (increasing to more than 3 would probably minimally affect 
                         -   Tristrom Cooke (25425) - % the score though).
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (25425) - function [out,flag]=improver4(in,list,solution)
                         -       jan langer (22896) - 
      jan langer (24517) -       jan langer (24569) - global iX;
                         -       jan langer (22896) - 
                         - Timothy Alderson (25181) - %Initialize
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (25425) - idx=find(in==0); a=solution(idx); N=numel(a);
                         -               CT (25905) - ba=[a ; list(~ismembc(list,sort(a)))];
                         -       jan langer (22896) - 
        DreadNox (25013) -   Tristrom Cooke (25425) - sums = sum(solution(iX));
                         -   Tristrom Cooke (25425) - bsc  = sum(abs(sum(sums)/27-sums)); bsc2=bsc;
                         -       jan langer (22896) - 
                         -               CT (25905) - [b,idx2]=sort(ba);
                         -               CT (25905) - zok=numel(ba)-2;
      Amr Tawfik (25535) -       Amr Tawfik (25537) - for ii=1:zok
                         -               CT (25905) -   tmp=ba(idx2([ii+1,ii+2,ii]));
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (25425) -   a=ba;
          Volkan (25691) -               CT (25905) -   a(idx2(ii:ii+2))=tmp;
                         -   Tristrom Cooke (25425) -   solution(idx)=a(1:N);
                         -       jan langer (22896) -   
                         -     Stijn Helsen (23887) -   sums  = sum(solution(iX));
                         -            Nicke (23012) -   score = sum(abs(sum(sums)/27-sums));
                         -   Tristrom Cooke (25425) -   if (score<bsc) bsc=score; ba=a; continue; end;
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (25425) -   a(idx2(ii:ii+2))=[tmp(2:3) ; tmp(1)];
                         -   Tristrom Cooke (25425) -   solution(idx)=a(1:N);
                         -       jan langer (22896) - 
                         -     Stijn Helsen (23887) -   sums  = sum(solution(iX));
                         -            Nicke (23012) -   score = sum(abs(sum(sums)/27-sums));
                         -   Tristrom Cooke (25425) -   if (score<bsc) bsc=score; ba=a; continue; end;
                         -       jan langer (22896) - 
                         -      the cyclist (25447) -   a(idx2(ii:ii+2))=tmp([3;1;2]);
                         -       jan langer (22896) - 
                         -                          - end;
                         -       jan langer (22896) - 
                         -   Tristrom Cooke (25425) - flag=(bsc<bsc2);
                         -   Tristrom Cooke (25425) - out=in; out(idx)=ba(1:N);
                         -       jan langer (22896) - 
                         -                          - return