Page 1 of 2

question about complicated compatibility checking

Posted: Sat Jan 19, 2019 6:54 pm
by SeregaZ
i have some table or field 32x32. each item of it can have some value 1 up to 360. and that items must be compatibility each other. for example 1:1 item have 5. for right value - in this case it is 1:2 for 5 value - can be one of a few values. 7, 20, 34, 65 (array probably). if that 1:2 one of them - fine. if is not, check 1:3 value and need to try some value in the middle 1:2 - that can be compatibile with 5 1:1 and for example 1:3 was 85 and change that 1:2 value...

but it was first line. with second line case is much worse. need to chek right value and up value both. i mean 2:1 value must be compatibile with 1:1 and 2:2 same time.

probably structure need to be some kind of:

Code: Select all

stucture compcomp
  array right()
  array up()
endstructure
global dim mainarray.compcomp(360)
how to organise this task? any ideas?

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 9:02 am
by RobertSF
I'm trying to understand the requirements. You have a 32 x 32. All the cells are full, and you want to calculate if values in one cell are compatible with values in the surrounding cells? When you say 1:3, does that mean row 1, column 3? And you mentioned a few values. 7, 20, 34, 65. Can you explain further?

Image

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 12:27 pm
by #NULL
Is there a minesweeper going on? :D

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 1:27 pm
by SeregaZ
RobertSF, yes. first - row, second collumn.

#NULL, it is map editor for Sega Mega Drive's Dune The Battle For Arrakis :)

this forum have some "spoiler" button?
Image

when you are edit that manualy - it will have some "unsoft" blocks.

Image

so idea is after rough editing start some procedure, which will make that map more "soft".


one of masters says - use some kind of this system:
Image

where that cross is make change box in a center, accordings his left, right, up and down boxes.
Image

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 1:50 pm
by Olliv

Code: Select all

#Quarter = #Pi / 2.0


TypeOfTileToSearch = ??? ; code of the tile to search


for row = rowMin to rowMax
 for column = columnMin to columnMax
  AroundType = 0
  AroundQty = 0
  for direction = 0 to 3
   x = column + sin(direction * #Quarter)
   y = row - cos(direction * #Quarter)
   if x => columnMin
    if x <= columnMax
     if y => rowMin
      if y <= rowMax
       if myArray(x, y) = TypeOfTileToSearch
        AroundType + (1 << direction)
        AroundQty + 1
       endif
      endif
     endif
    endif
   endif
  next
 ; Here, for each tile, you get
 ; AroundQty : Quantity of specific tile found
 ; AroundType : see below
 next
next
AroundType is between 0 and 15.

examples :
1 = found on the top
2 = found on the right
3 = found on the top AND on the right
etc...

as you mentioned in your last picture :

Code: Select all

0  1  2  3
4  5  6  7
8  9  10 11
12 13 14 15

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 3:22 pm
by SeregaZ
not crear that code for me... i am try to make code, that i have in a head. but it is not fine code, becouse this table of cross - not have whole cases. for example first is whole 4 directions cubs - is sand, but it can have three cases:
Image

so my code cant have break options. it need to "for" for all 360 cases. and only then make some solution for wich cube exactly it need to change.

i am fill only first line of cross on image to see work, or not work my ugly code :)

Code: Select all

Enumeration
  #MAPFile
EndEnumeration

; y:x
Structure maparr
  Array Column.l(0)
EndStructure
Global Dim MAPArray.maparr(0) ; rows

Global MAPType


Structure MAPCrossstructure
  MAPleft.u
  MAPright.u
  MAPup.u
  MAPdown.u
EndStructure
Global Dim MAPCross.MAPCrossstructure(360)

;{ fill cross data - MAPCross(center cub code)\direction
; 127 sand
MAPCross(127)\MAPleft  = 127
MAPCross(127)\MAPright = 127
MAPCross(127)\MAPup    = 127
MAPCross(127)\MAPdown  = 127
; spice in a center of sand
MAPCross(176)\MAPleft  = 127
MAPCross(176)\MAPright = 127
MAPCross(176)\MAPup    = 127
MAPCross(176)\MAPdown  = 127
; earth in a center of sand
MAPCross(128)\MAPleft  = 127
MAPCross(128)\MAPright = 127
MAPCross(128)\MAPup    = 127
MAPCross(128)\MAPdown  = 127
; up = earth 124, 129 up pice of earth on a sand
MAPCross(129)\MAPleft  = 127
MAPCross(129)\MAPright = 127
MAPCross(129)\MAPup    = 124
MAPCross(129)\MAPdown  = 127
; right = earth 124
MAPCross(130)\MAPleft  = 127
MAPCross(130)\MAPright = 124
MAPCross(130)\MAPup    = 127
MAPCross(130)\MAPdown  = 127
; up + right = earth
MAPCross(131)\MAPleft  = 127
MAPCross(131)\MAPright = 124
MAPCross(131)\MAPup    = 124
MAPCross(131)\MAPdown  = 127
;}

Procedure.u MAPSofting(entervalue.u, MAPleft.u, MAPright.u, MAPup.u, MAPdown.u)
  
  ret.u
  
  ret = entervalue ; default
  
  For i = 1 To 360
    check = 4 ; default
    
    If MAPleft ; becouse it can be 0, when cross on a borders
      If MAPleft = MAPCross(i)\MAPleft
        check - 1
      EndIf
    Else
      check - 1 ; if it is 0, means it was found
    EndIf
    
    If MAPright
      If MAPright = MAPCross(i)\MAPright
        check - 1
      EndIf
    Else
      check - 1
    EndIf
    
    If MAPup
      If MAPup = MAPCross(i)\MAPup
        check - 1
      EndIf
    Else
      check - 1
    EndIf
    
    If MAPdown
      If MAPdown = MAPCross(i)\MAPdown
        check - 1
      EndIf
    Else
      check - 1
    EndIf
    
    If check = 0 
      ; full 4 directions is match
      If entervalue = i
        ret = entervalue ; becouse ret can be before changed with ret = i
        Break
      Else
        ;Debug "probably mistake. or = " + Str(entervalue) + ", need = " + Str(i)
        ;Debug "MAPleft = " + Str(MAPleft) + ", MAPright = " + Str(MAPright) + ", MAPup = " + Str(MAPup) + ", MAPdown = " + Str(MAPdown)
        ; return correct value... but it can be Break
        ; becouse same directions cubs can have a few cases.
        ; need to compare for all of them... some how...
        ret = i
      EndIf

    EndIf
    
  Next
  
  If ret <> entervalue
    Debug "probably mistake. or = " + Str(entervalue) + ", need = " + Str(ret)
  EndIf
  
  ProcedureReturn ret
  
EndProcedure

Procedure MAPParse(path$)
  
  plotcolor.l
  
  MAPEditorError = 0
  ReDim MAPArray(0)
  
  ; prepear array
  Select FileSize(path$)
    Case  1024 ;  32x32
      ReDim MAPArray(32)
      For i = 0 To 32
        ReDim MAPArray(i)\Column(32)
      Next

      MAPType = 33

    Case  4096 ;  64x64
      ReDim MAPArray(64)
      For i = 0 To 64
        ReDim MAPArray(i)\Column(64)
      Next

      MAPType = 65
      
    Case 16384 ; 128x128
      ReDim MAPArray(128)
      For i = 0 To 128
        ReDim MAPArray(i)\Column(128)
      Next

      MAPType = 129
      
    Default
      MAPType = 0
      
  EndSelect
  
  If MAPType And ReadFile(#MAPFile, path$)

    x   = 1
    y   = 1
    
      While Eof(#MAPFile) = 0
        ;Debug y
        ;Debug x
        ;Debug ""
        MAPArray(y)\Column(x) = ReadAsciiCharacter(#MAPFile)
                    
        Debug "MAPArray(" + Str(y) + ")\Column(" + Str(x) + ") = " + Str(MAPArray(y)\Column(x)) 
      
        ;MAPArray(y)\Column(x) + #MAPBlock1
      
        x + 1
        If x = MAPType
          y + 1
          x = 1
        EndIf

      Wend
    
    CloseFile(#MAPFile)
    
    MAPLineFirst   = 1
    MAPColumnFirst = 1
    
    ;DrawMap()
    
  EndIf
  
EndProcedure

;MAPParse("F:\DISTR\SEREGASOFT\DUNE\DUE\maps\atr\map_01.bin")

; data
;{
MAPType = 33
MAPLength = MAPType - 1

ReDim MAPArray(MAPLength)
For i = 0 To MAPLength
  ReDim MAPArray(i)\Column(MAPLength)
Next

MAPArray(1)\Column(1) = 159
MAPArray(1)\Column(2) = 159
MAPArray(1)\Column(3) = 159
MAPArray(1)\Column(4) = 159
MAPArray(1)\Column(5) = 159
MAPArray(1)\Column(6) = 159
MAPArray(1)\Column(7) = 158
MAPArray(1)\Column(8) = 159
MAPArray(1)\Column(9) = 151
MAPArray(1)\Column(10) = 86
MAPArray(1)\Column(11) = 127
MAPArray(1)\Column(12) = 127
MAPArray(1)\Column(13) = 127
MAPArray(1)\Column(14) = 127
MAPArray(1)\Column(15) = 128
MAPArray(1)\Column(16) = 129
MAPArray(1)\Column(17) = 131
MAPArray(1)\Column(18) = 143
MAPArray(1)\Column(19) = 143
MAPArray(1)\Column(20) = 143
MAPArray(1)\Column(21) = 141
MAPArray(1)\Column(22) = 86
MAPArray(1)\Column(23) = 88
MAPArray(1)\Column(24) = 146
MAPArray(1)\Column(25) = 158
MAPArray(1)\Column(26) = 154
MAPArray(1)\Column(27) = 155
MAPArray(1)\Column(28) = 127
MAPArray(1)\Column(29) = 182
MAPArray(1)\Column(30) = 191
MAPArray(1)\Column(31) = 196
MAPArray(1)\Column(32) = 191
MAPArray(2)\Column(1) = 159
MAPArray(2)\Column(2) = 159
MAPArray(2)\Column(3) = 159
MAPArray(2)\Column(4) = 159
MAPArray(2)\Column(5) = 159
MAPArray(2)\Column(6) = 158
MAPArray(2)\Column(7) = 159
MAPArray(2)\Column(8) = 154
MAPArray(2)\Column(9) = 152
MAPArray(2)\Column(10) = 127
MAPArray(2)\Column(11) = 127
MAPArray(2)\Column(12) = 127
MAPArray(2)\Column(13) = 127
MAPArray(2)\Column(14) = 127
MAPArray(2)\Column(15) = 127
MAPArray(2)\Column(16) = 127
MAPArray(2)\Column(17) = 127
MAPArray(2)\Column(18) = 60
MAPArray(2)\Column(19) = 139
MAPArray(2)\Column(20) = 137
MAPArray(2)\Column(21) = 129
MAPArray(2)\Column(22) = 127
MAPArray(2)\Column(23) = 127
MAPArray(2)\Column(24) = 88
MAPArray(2)\Column(25) = 89
MAPArray(2)\Column(26) = 87
MAPArray(2)\Column(27) = 127
MAPArray(2)\Column(28) = 178
MAPArray(2)\Column(29) = 191
MAPArray(2)\Column(30) = 198
MAPArray(2)\Column(31) = 207
MAPArray(2)\Column(32) = 206
MAPArray(3)\Column(1) = 158
MAPArray(3)\Column(2) = 159
MAPArray(3)\Column(3) = 159
MAPArray(3)\Column(4) = 159
MAPArray(3)\Column(5) = 159
MAPArray(3)\Column(6) = 154
MAPArray(3)\Column(7) = 156
MAPArray(3)\Column(8) = 153
MAPArray(3)\Column(9) = 86
MAPArray(3)\Column(10) = 127
MAPArray(3)\Column(11) = 127
MAPArray(3)\Column(12) = 127
MAPArray(3)\Column(13) = 127
MAPArray(3)\Column(14) = 127
MAPArray(3)\Column(15) = 127
MAPArray(3)\Column(16) = 127
MAPArray(3)\Column(17) = 127
MAPArray(3)\Column(18) = 127
MAPArray(3)\Column(19) = 128
MAPArray(3)\Column(20) = 127
MAPArray(3)\Column(21) = 127
MAPArray(3)\Column(22) = 127
MAPArray(3)\Column(23) = 127
MAPArray(3)\Column(24) = 127
MAPArray(3)\Column(25) = 127
MAPArray(3)\Column(26) = 127
MAPArray(3)\Column(27) = 127
MAPArray(3)\Column(28) = 180
MAPArray(3)\Column(29) = 183
MAPArray(3)\Column(30) = 68
MAPArray(3)\Column(31) = 207
MAPArray(3)\Column(32) = 201
MAPArray(4)\Column(1) = 159
MAPArray(4)\Column(2) = 159
MAPArray(4)\Column(3) = 159
MAPArray(4)\Column(4) = 158
MAPArray(4)\Column(5) = 154
MAPArray(4)\Column(6) = 155
MAPArray(4)\Column(7) = 127
MAPArray(4)\Column(8) = 127
MAPArray(4)\Column(9) = 127
MAPArray(4)\Column(10) = 128
MAPArray(4)\Column(11) = 134
MAPArray(4)\Column(12) = 63
MAPArray(4)\Column(13) = 127
MAPArray(4)\Column(14) = 127
MAPArray(4)\Column(15) = 127
MAPArray(4)\Column(16) = 127
MAPArray(4)\Column(17) = 127
MAPArray(4)\Column(18) = 127
MAPArray(4)\Column(19) = 127
MAPArray(4)\Column(20) = 127
MAPArray(4)\Column(21) = 127
MAPArray(4)\Column(22) = 127
MAPArray(4)\Column(23) = 127
MAPArray(4)\Column(24) = 127
MAPArray(4)\Column(25) = 132
MAPArray(4)\Column(26) = 127
MAPArray(4)\Column(27) = 176
MAPArray(4)\Column(28) = 179
MAPArray(4)\Column(29) = 191
MAPArray(4)\Column(30) = 187
MAPArray(4)\Column(31) = 193
MAPArray(4)\Column(32) = 192
MAPArray(5)\Column(1) = 159
MAPArray(5)\Column(2) = 159
MAPArray(5)\Column(3) = 154
MAPArray(5)\Column(4) = 156
MAPArray(5)\Column(5) = 87
MAPArray(5)\Column(6) = 127
MAPArray(5)\Column(7) = 127
MAPArray(5)\Column(8) = 127
MAPArray(5)\Column(9) = 127
MAPArray(5)\Column(10) = 61
MAPArray(5)\Column(11) = 143
MAPArray(5)\Column(12) = 143
MAPArray(5)\Column(13) = 142
MAPArray(5)\Column(14) = 140
MAPArray(5)\Column(15) = 127
MAPArray(5)\Column(16) = 127
MAPArray(5)\Column(17) = 127
MAPArray(5)\Column(18) = 132
MAPArray(5)\Column(19) = 127
MAPArray(5)\Column(20) = 127
MAPArray(5)\Column(21) = 132
MAPArray(5)\Column(22) = 128
MAPArray(5)\Column(23) = 132
MAPArray(5)\Column(24) = 134
MAPArray(5)\Column(25) = 141
MAPArray(5)\Column(26) = 127
MAPArray(5)\Column(27) = 127
MAPArray(5)\Column(28) = 127
MAPArray(5)\Column(29) = 183
MAPArray(5)\Column(30) = 184
MAPArray(5)\Column(31) = 179
MAPArray(5)\Column(32) = 191
MAPArray(6)\Column(1) = 158
MAPArray(6)\Column(2) = 159
MAPArray(6)\Column(3) = 151
MAPArray(6)\Column(4) = 127
MAPArray(6)\Column(5) = 127
MAPArray(6)\Column(6) = 127
MAPArray(6)\Column(7) = 127
MAPArray(6)\Column(8) = 127
MAPArray(6)\Column(9) = 134
MAPArray(6)\Column(10) = 100
MAPArray(6)\Column(11) = 174
MAPArray(6)\Column(12) = 160
MAPArray(6)\Column(13) = 161
MAPArray(6)\Column(14) = 169
MAPArray(6)\Column(15) = 63
MAPArray(6)\Column(16) = 127
MAPArray(6)\Column(17) = 61
MAPArray(6)\Column(18) = 143
MAPArray(6)\Column(19) = 140
MAPArray(6)\Column(20) = 61
MAPArray(6)\Column(21) = 143
MAPArray(6)\Column(22) = 142
MAPArray(6)\Column(23) = 143
MAPArray(6)\Column(24) = 143
MAPArray(6)\Column(25) = 62
MAPArray(6)\Column(26) = 127
MAPArray(6)\Column(27) = 127
MAPArray(6)\Column(28) = 127
MAPArray(6)\Column(29) = 177
MAPArray(6)\Column(30) = 127
MAPArray(6)\Column(31) = 127
MAPArray(6)\Column(32) = 177
MAPArray(7)\Column(1) = 159
MAPArray(7)\Column(2) = 154
MAPArray(7)\Column(3) = 152
MAPArray(7)\Column(4) = 127
MAPArray(7)\Column(5) = 127
MAPArray(7)\Column(6) = 127
MAPArray(7)\Column(7) = 127
MAPArray(7)\Column(8) = 127
MAPArray(7)\Column(9) = 131
MAPArray(7)\Column(10) = 175
MAPArray(7)\Column(11) = 167
MAPArray(7)\Column(12) = 162
MAPArray(7)\Column(13) = 163
MAPArray(7)\Column(14) = 164
MAPArray(7)\Column(15) = 143
MAPArray(7)\Column(16) = 142
MAPArray(7)\Column(17) = 143
MAPArray(7)\Column(18) = 139
MAPArray(7)\Column(19) = 143
MAPArray(7)\Column(20) = 143
MAPArray(7)\Column(21) = 139
MAPArray(7)\Column(22) = 143
MAPArray(7)\Column(23) = 137
MAPArray(7)\Column(24) = 129
MAPArray(7)\Column(25) = 127
MAPArray(7)\Column(26) = 127
MAPArray(7)\Column(27) = 147
MAPArray(7)\Column(28) = 149
MAPArray(7)\Column(29) = 149
MAPArray(7)\Column(30) = 149
MAPArray(7)\Column(31) = 127
MAPArray(7)\Column(32) = 127
MAPArray(8)\Column(1) = 154
MAPArray(8)\Column(2) = 155
MAPArray(8)\Column(3) = 127
MAPArray(8)\Column(4) = 127
MAPArray(8)\Column(5) = 127
MAPArray(8)\Column(6) = 127
MAPArray(8)\Column(7) = 127
MAPArray(8)\Column(8) = 127
MAPArray(8)\Column(9) = 128
MAPArray(8)\Column(10) = 129
MAPArray(8)\Column(11) = 60
MAPArray(8)\Column(12) = 165
MAPArray(8)\Column(13) = 166
MAPArray(8)\Column(14) = 167
MAPArray(8)\Column(15) = 139
MAPArray(8)\Column(16) = 143
MAPArray(8)\Column(17) = 62
MAPArray(8)\Column(18) = 61
MAPArray(8)\Column(19) = 143
MAPArray(8)\Column(20) = 141
MAPArray(8)\Column(21) = 132
MAPArray(8)\Column(22) = 129
MAPArray(8)\Column(23) = 127
MAPArray(8)\Column(24) = 127
MAPArray(8)\Column(25) = 127
MAPArray(8)\Column(26) = 144
MAPArray(8)\Column(27) = 150
MAPArray(8)\Column(28) = 158
MAPArray(8)\Column(29) = 159
MAPArray(8)\Column(30) = 158
MAPArray(8)\Column(31) = 157
MAPArray(8)\Column(32) = 149
MAPArray(9)\Column(1) = 155
MAPArray(9)\Column(2) = 127
MAPArray(9)\Column(3) = 127
MAPArray(9)\Column(4) = 180
MAPArray(9)\Column(5) = 180
MAPArray(9)\Column(6) = 176
MAPArray(9)\Column(7) = 182
MAPArray(9)\Column(8) = 67
MAPArray(9)\Column(9) = 127
MAPArray(9)\Column(10) = 127
MAPArray(9)\Column(11) = 127
MAPArray(9)\Column(12) = 129
MAPArray(9)\Column(13) = 135
MAPArray(9)\Column(14) = 143
MAPArray(9)\Column(15) = 63
MAPArray(9)\Column(16) = 133
MAPArray(9)\Column(17) = 134
MAPArray(9)\Column(18) = 173
MAPArray(9)\Column(19) = 174
MAPArray(9)\Column(20) = 143
MAPArray(9)\Column(21) = 137
MAPArray(9)\Column(22) = 128
MAPArray(9)\Column(23) = 127
MAPArray(9)\Column(24) = 127
MAPArray(9)\Column(25) = 127
MAPArray(9)\Column(26) = 88
MAPArray(9)\Column(27) = 146
MAPArray(9)\Column(28) = 159
MAPArray(9)\Column(29) = 159
MAPArray(9)\Column(30) = 159
MAPArray(9)\Column(31) = 159
MAPArray(9)\Column(32) = 159
MAPArray(10)\Column(1) = 127
MAPArray(10)\Column(2) = 127
MAPArray(10)\Column(3) = 182
MAPArray(10)\Column(4) = 191
MAPArray(10)\Column(5) = 191
MAPArray(10)\Column(6) = 190
MAPArray(10)\Column(7) = 191
MAPArray(10)\Column(8) = 191
MAPArray(10)\Column(9) = 188
MAPArray(10)\Column(10) = 127
MAPArray(10)\Column(11) = 127
MAPArray(10)\Column(12) = 127
MAPArray(10)\Column(13) = 131
MAPArray(10)\Column(14) = 143
MAPArray(10)\Column(15) = 139
MAPArray(10)\Column(16) = 137
MAPArray(10)\Column(17) = 131
MAPArray(10)\Column(18) = 175
MAPArray(10)\Column(19) = 167
MAPArray(10)\Column(20) = 62
MAPArray(10)\Column(21) = 127
MAPArray(10)\Column(22) = 127
MAPArray(10)\Column(23) = 132
MAPArray(10)\Column(24) = 127
MAPArray(10)\Column(25) = 127
MAPArray(10)\Column(26) = 127
MAPArray(10)\Column(27) = 88
MAPArray(10)\Column(28) = 146
MAPArray(10)\Column(29) = 158
MAPArray(10)\Column(30) = 159
MAPArray(10)\Column(31) = 159
MAPArray(10)\Column(32) = 159
MAPArray(11)\Column(1) = 127
MAPArray(11)\Column(2) = 127
MAPArray(11)\Column(3) = 179
MAPArray(11)\Column(4) = 191
MAPArray(11)\Column(5) = 191
MAPArray(11)\Column(6) = 191
MAPArray(11)\Column(7) = 191
MAPArray(11)\Column(8) = 191
MAPArray(11)\Column(9) = 191
MAPArray(11)\Column(10) = 184
MAPArray(11)\Column(11) = 127
MAPArray(11)\Column(12) = 128
MAPArray(11)\Column(13) = 127
MAPArray(11)\Column(14) = 129
MAPArray(11)\Column(15) = 180
MAPArray(11)\Column(16) = 127
MAPArray(11)\Column(17) = 180
MAPArray(11)\Column(18) = 129
MAPArray(11)\Column(19) = 129
MAPArray(11)\Column(20) = 127
MAPArray(11)\Column(21) = 127
MAPArray(11)\Column(22) = 61
MAPArray(11)\Column(23) = 141
MAPArray(11)\Column(24) = 128
MAPArray(11)\Column(25) = 127
MAPArray(11)\Column(26) = 127
MAPArray(11)\Column(27) = 127
MAPArray(11)\Column(28) = 88
MAPArray(11)\Column(29) = 89
MAPArray(11)\Column(30) = 146
MAPArray(11)\Column(31) = 158
MAPArray(11)\Column(32) = 159
MAPArray(12)\Column(1) = 127
MAPArray(12)\Column(2) = 127
MAPArray(12)\Column(3) = 178
MAPArray(12)\Column(4) = 191
MAPArray(12)\Column(5) = 187
MAPArray(12)\Column(6) = 187
MAPArray(12)\Column(7) = 191
MAPArray(12)\Column(8) = 191
MAPArray(12)\Column(9) = 191
MAPArray(12)\Column(10) = 184
MAPArray(12)\Column(11) = 127
MAPArray(12)\Column(12) = 127
MAPArray(12)\Column(13) = 127
MAPArray(12)\Column(14) = 182
MAPArray(12)\Column(15) = 196
MAPArray(12)\Column(16) = 190
MAPArray(12)\Column(17) = 196
MAPArray(12)\Column(18) = 190
MAPArray(12)\Column(19) = 188
MAPArray(12)\Column(20) = 176
MAPArray(12)\Column(21) = 134
MAPArray(12)\Column(22) = 139
MAPArray(12)\Column(23) = 143
MAPArray(12)\Column(24) = 63
MAPArray(12)\Column(25) = 127
MAPArray(12)\Column(26) = 127
MAPArray(12)\Column(27) = 127
MAPArray(12)\Column(28) = 127
MAPArray(12)\Column(29) = 127
MAPArray(12)\Column(30) = 88
MAPArray(12)\Column(31) = 146
MAPArray(12)\Column(32) = 159
MAPArray(13)\Column(1) = 127
MAPArray(13)\Column(2) = 127
MAPArray(13)\Column(3) = 176
MAPArray(13)\Column(4) = 177
MAPArray(13)\Column(5) = 127
MAPArray(13)\Column(6) = 65
MAPArray(13)\Column(7) = 191
MAPArray(13)\Column(8) = 192
MAPArray(13)\Column(9) = 189
MAPArray(13)\Column(10) = 127
MAPArray(13)\Column(11) = 127
MAPArray(13)\Column(12) = 127
MAPArray(13)\Column(13) = 178
MAPArray(13)\Column(14) = 191
MAPArray(13)\Column(15) = 199
MAPArray(13)\Column(16) = 202
MAPArray(13)\Column(17) = 207
MAPArray(13)\Column(18) = 206
MAPArray(13)\Column(19) = 200
MAPArray(13)\Column(20) = 184
MAPArray(13)\Column(21) = 129
MAPArray(13)\Column(22) = 128
MAPArray(13)\Column(23) = 135
MAPArray(13)\Column(24) = 143
MAPArray(13)\Column(25) = 142
MAPArray(13)\Column(26) = 136
MAPArray(13)\Column(27) = 127
MAPArray(13)\Column(28) = 127
MAPArray(13)\Column(29) = 127
MAPArray(13)\Column(30) = 127
MAPArray(13)\Column(31) = 88
MAPArray(13)\Column(32) = 89
MAPArray(14)\Column(1) = 127
MAPArray(14)\Column(2) = 127
MAPArray(14)\Column(3) = 127
MAPArray(14)\Column(4) = 180
MAPArray(14)\Column(5) = 182
MAPArray(14)\Column(6) = 69
MAPArray(14)\Column(7) = 206
MAPArray(14)\Column(8) = 200
MAPArray(14)\Column(9) = 191
MAPArray(14)\Column(10) = 184
MAPArray(14)\Column(11) = 127
MAPArray(14)\Column(12) = 127
MAPArray(14)\Column(13) = 176
MAPArray(14)\Column(14) = 179
MAPArray(14)\Column(15) = 193
MAPArray(14)\Column(16) = 187
MAPArray(14)\Column(17) = 193
MAPArray(14)\Column(18) = 193
MAPArray(14)\Column(19) = 185
MAPArray(14)\Column(20) = 127
MAPArray(14)\Column(21) = 127
MAPArray(14)\Column(22) = 130
MAPArray(14)\Column(23) = 139
MAPArray(14)\Column(24) = 137
MAPArray(14)\Column(25) = 129
MAPArray(14)\Column(26) = 127
MAPArray(14)\Column(27) = 127
MAPArray(14)\Column(28) = 127
MAPArray(14)\Column(29) = 127
MAPArray(14)\Column(30) = 127
MAPArray(14)\Column(31) = 127
MAPArray(14)\Column(32) = 127
MAPArray(15)\Column(1) = 67
MAPArray(15)\Column(2) = 127
MAPArray(15)\Column(3) = 182
MAPArray(15)\Column(4) = 191
MAPArray(15)\Column(5) = 198
MAPArray(15)\Column(6) = 207
MAPArray(15)\Column(7) = 205
MAPArray(15)\Column(8) = 191
MAPArray(15)\Column(9) = 66
MAPArray(15)\Column(10) = 127
MAPArray(15)\Column(11) = 127
MAPArray(15)\Column(12) = 127
MAPArray(15)\Column(13) = 127
MAPArray(15)\Column(14) = 127
MAPArray(15)\Column(15) = 177
MAPArray(15)\Column(16) = 127
MAPArray(15)\Column(17) = 177
MAPArray(15)\Column(18) = 177
MAPArray(15)\Column(19) = 147
MAPArray(15)\Column(20) = 148
MAPArray(15)\Column(21) = 86
MAPArray(15)\Column(22) = 147
MAPArray(15)\Column(23) = 148
MAPArray(15)\Column(24) = 128
MAPArray(15)\Column(25) = 127
MAPArray(15)\Column(26) = 127
MAPArray(15)\Column(27) = 127
MAPArray(15)\Column(28) = 127
MAPArray(15)\Column(29) = 127
MAPArray(15)\Column(30) = 127
MAPArray(15)\Column(31) = 127
MAPArray(15)\Column(32) = 127
MAPArray(16)\Column(1) = 187
MAPArray(16)\Column(2) = 186
MAPArray(16)\Column(3) = 191
MAPArray(16)\Column(4) = 192
MAPArray(16)\Column(5) = 199
MAPArray(16)\Column(6) = 201
MAPArray(16)\Column(7) = 193
MAPArray(16)\Column(8) = 185
MAPArray(16)\Column(9) = 176
MAPArray(16)\Column(10) = 127
MAPArray(16)\Column(11) = 134
MAPArray(16)\Column(12) = 140
MAPArray(16)\Column(13) = 132
MAPArray(16)\Column(14) = 127
MAPArray(16)\Column(15) = 127
MAPArray(16)\Column(16) = 86
MAPArray(16)\Column(17) = 147
MAPArray(16)\Column(18) = 98
MAPArray(16)\Column(19) = 150
MAPArray(16)\Column(20) = 157
MAPArray(16)\Column(21) = 90
MAPArray(16)\Column(22) = 150
MAPArray(16)\Column(23) = 157
MAPArray(16)\Column(24) = 148
MAPArray(16)\Column(25) = 86
MAPArray(16)\Column(26) = 127
MAPArray(16)\Column(27) = 127
MAPArray(16)\Column(28) = 127
MAPArray(16)\Column(29) = 127
MAPArray(16)\Column(30) = 127
MAPArray(16)\Column(31) = 127
MAPArray(16)\Column(32) = 127
MAPArray(17)\Column(1) = 148
MAPArray(17)\Column(2) = 176
MAPArray(17)\Column(3) = 179
MAPArray(17)\Column(4) = 187
MAPArray(17)\Column(5) = 193
MAPArray(17)\Column(6) = 192
MAPArray(17)\Column(7) = 189
MAPArray(17)\Column(8) = 127
MAPArray(17)\Column(9) = 130
MAPArray(17)\Column(10) = 142
MAPArray(17)\Column(11) = 139
MAPArray(17)\Column(12) = 143
MAPArray(17)\Column(13) = 143
MAPArray(17)\Column(14) = 140
MAPArray(17)\Column(15) = 128
MAPArray(17)\Column(16) = 144
MAPArray(17)\Column(17) = 150
MAPArray(17)\Column(18) = 159
MAPArray(17)\Column(19) = 159
MAPArray(17)\Column(20) = 159
MAPArray(17)\Column(21) = 159
MAPArray(17)\Column(22) = 159
MAPArray(17)\Column(23) = 159
MAPArray(17)\Column(24) = 157
MAPArray(17)\Column(25) = 148
MAPArray(17)\Column(26) = 127
MAPArray(17)\Column(27) = 127
MAPArray(17)\Column(28) = 127
MAPArray(17)\Column(29) = 127
MAPArray(17)\Column(30) = 127
MAPArray(17)\Column(31) = 127
MAPArray(17)\Column(32) = 127
MAPArray(18)\Column(1) = 157
MAPArray(18)\Column(2) = 127
MAPArray(18)\Column(3) = 86
MAPArray(18)\Column(4) = 127
MAPArray(18)\Column(5) = 64
MAPArray(18)\Column(6) = 187
MAPArray(18)\Column(7) = 185
MAPArray(18)\Column(8) = 128
MAPArray(18)\Column(9) = 132
MAPArray(18)\Column(10) = 133
MAPArray(18)\Column(11) = 61
MAPArray(18)\Column(12) = 143
MAPArray(18)\Column(13) = 143
MAPArray(18)\Column(14) = 143
MAPArray(18)\Column(15) = 63
MAPArray(18)\Column(16) = 88
MAPArray(18)\Column(17) = 146
MAPArray(18)\Column(18) = 158
MAPArray(18)\Column(19) = 159
MAPArray(18)\Column(20) = 159
MAPArray(18)\Column(21) = 159
MAPArray(18)\Column(22) = 159
MAPArray(18)\Column(23) = 159
MAPArray(18)\Column(24) = 158
MAPArray(18)\Column(25) = 157
MAPArray(18)\Column(26) = 148
MAPArray(18)\Column(27) = 127
MAPArray(18)\Column(28) = 127
MAPArray(18)\Column(29) = 127
MAPArray(18)\Column(30) = 127
MAPArray(18)\Column(31) = 127
MAPArray(18)\Column(32) = 127
MAPArray(19)\Column(1) = 158
MAPArray(19)\Column(2) = 157
MAPArray(19)\Column(3) = 148
MAPArray(19)\Column(4) = 127
MAPArray(19)\Column(5) = 127
MAPArray(19)\Column(6) = 127
MAPArray(19)\Column(7) = 132
MAPArray(19)\Column(8) = 134
MAPArray(19)\Column(9) = 143
MAPArray(19)\Column(10) = 143
MAPArray(19)\Column(11) = 143
MAPArray(19)\Column(12) = 143
MAPArray(19)\Column(13) = 143
MAPArray(19)\Column(14) = 143
MAPArray(19)\Column(15) = 143
MAPArray(19)\Column(16) = 136
MAPArray(19)\Column(17) = 88
MAPArray(19)\Column(18) = 89
MAPArray(19)\Column(19) = 146
MAPArray(19)\Column(20) = 158
MAPArray(19)\Column(21) = 159
MAPArray(19)\Column(22) = 159
MAPArray(19)\Column(23) = 159
MAPArray(19)\Column(24) = 159
MAPArray(19)\Column(25) = 159
MAPArray(19)\Column(26) = 157
MAPArray(19)\Column(27) = 148
MAPArray(19)\Column(28) = 127
MAPArray(19)\Column(29) = 127
MAPArray(19)\Column(30) = 127
MAPArray(19)\Column(31) = 127
MAPArray(19)\Column(32) = 127
MAPArray(20)\Column(1) = 159
MAPArray(20)\Column(2) = 159
MAPArray(20)\Column(3) = 151
MAPArray(20)\Column(4) = 86
MAPArray(20)\Column(5) = 127
MAPArray(20)\Column(6) = 134
MAPArray(20)\Column(7) = 143
MAPArray(20)\Column(8) = 143
MAPArray(20)\Column(9) = 143
MAPArray(20)\Column(10) = 143
MAPArray(20)\Column(11) = 143
MAPArray(20)\Column(12) = 143
MAPArray(20)\Column(13) = 143
MAPArray(20)\Column(14) = 143
MAPArray(20)\Column(15) = 141
MAPArray(20)\Column(16) = 127
MAPArray(20)\Column(17) = 132
MAPArray(20)\Column(18) = 127
MAPArray(20)\Column(19) = 88
MAPArray(20)\Column(20) = 89
MAPArray(20)\Column(21) = 89
MAPArray(20)\Column(22) = 89
MAPArray(20)\Column(23) = 146
MAPArray(20)\Column(24) = 158
MAPArray(20)\Column(25) = 159
MAPArray(20)\Column(26) = 154
MAPArray(20)\Column(27) = 155
MAPArray(20)\Column(28) = 127
MAPArray(20)\Column(29) = 127
MAPArray(20)\Column(30) = 127
MAPArray(20)\Column(31) = 127
MAPArray(20)\Column(32) = 127
MAPArray(21)\Column(1) = 159
MAPArray(21)\Column(2) = 159
MAPArray(21)\Column(3) = 157
MAPArray(21)\Column(4) = 148
MAPArray(21)\Column(5) = 130
MAPArray(21)\Column(6) = 143
MAPArray(21)\Column(7) = 143
MAPArray(21)\Column(8) = 143
MAPArray(21)\Column(9) = 143
MAPArray(21)\Column(10) = 143
MAPArray(21)\Column(11) = 143
MAPArray(21)\Column(12) = 143
MAPArray(21)\Column(13) = 143
MAPArray(21)\Column(14) = 143
MAPArray(21)\Column(15) = 143
MAPArray(21)\Column(16) = 138
MAPArray(21)\Column(17) = 143
MAPArray(21)\Column(18) = 140
MAPArray(21)\Column(19) = 127
MAPArray(21)\Column(20) = 86
MAPArray(21)\Column(21) = 127
MAPArray(21)\Column(22) = 127
MAPArray(21)\Column(23) = 88
MAPArray(21)\Column(24) = 146
MAPArray(21)\Column(25) = 154
MAPArray(21)\Column(26) = 155
MAPArray(21)\Column(27) = 127
MAPArray(21)\Column(28) = 127
MAPArray(21)\Column(29) = 127
MAPArray(21)\Column(30) = 127
MAPArray(21)\Column(31) = 127
MAPArray(21)\Column(32) = 127
MAPArray(22)\Column(1) = 159
MAPArray(22)\Column(2) = 159
MAPArray(22)\Column(3) = 154
MAPArray(22)\Column(4) = 152
MAPArray(22)\Column(5) = 127
MAPArray(22)\Column(6) = 135
MAPArray(22)\Column(7) = 143
MAPArray(22)\Column(8) = 143
MAPArray(22)\Column(9) = 143
MAPArray(22)\Column(10) = 143
MAPArray(22)\Column(11) = 143
MAPArray(22)\Column(12) = 143
MAPArray(22)\Column(13) = 143
MAPArray(22)\Column(14) = 143
MAPArray(22)\Column(15) = 143
MAPArray(22)\Column(16) = 140
MAPArray(22)\Column(17) = 135
MAPArray(22)\Column(18) = 143
MAPArray(22)\Column(19) = 136
MAPArray(22)\Column(20) = 127
MAPArray(22)\Column(21) = 127
MAPArray(22)\Column(22) = 127
MAPArray(22)\Column(23) = 86
MAPArray(22)\Column(24) = 88
MAPArray(22)\Column(25) = 87
MAPArray(22)\Column(26) = 127
MAPArray(22)\Column(27) = 127
MAPArray(22)\Column(28) = 127
MAPArray(22)\Column(29) = 127
MAPArray(22)\Column(30) = 127
MAPArray(22)\Column(31) = 127
MAPArray(22)\Column(32) = 127
MAPArray(23)\Column(1) = 158
MAPArray(23)\Column(2) = 154
MAPArray(23)\Column(3) = 155
MAPArray(23)\Column(4) = 127
MAPArray(23)\Column(5) = 127
MAPArray(23)\Column(6) = 131
MAPArray(23)\Column(7) = 143
MAPArray(23)\Column(8) = 143
MAPArray(23)\Column(9) = 143
MAPArray(23)\Column(10) = 143
MAPArray(23)\Column(11) = 143
MAPArray(23)\Column(12) = 143
MAPArray(23)\Column(13) = 143
MAPArray(23)\Column(14) = 143
MAPArray(23)\Column(15) = 143
MAPArray(23)\Column(16) = 139
MAPArray(23)\Column(17) = 143
MAPArray(23)\Column(18) = 137
MAPArray(23)\Column(19) = 128
MAPArray(23)\Column(20) = 134
MAPArray(23)\Column(21) = 140
MAPArray(23)\Column(22) = 127
MAPArray(23)\Column(23) = 132
MAPArray(23)\Column(24) = 127
MAPArray(23)\Column(25) = 127
MAPArray(23)\Column(26) = 127
MAPArray(23)\Column(27) = 127
MAPArray(23)\Column(28) = 127
MAPArray(23)\Column(29) = 127
MAPArray(23)\Column(30) = 127
MAPArray(23)\Column(31) = 127
MAPArray(23)\Column(32) = 127
MAPArray(24)\Column(1) = 89
MAPArray(24)\Column(2) = 87
MAPArray(24)\Column(3) = 127
MAPArray(24)\Column(4) = 127
MAPArray(24)\Column(5) = 127
MAPArray(24)\Column(6) = 128
MAPArray(24)\Column(7) = 60
MAPArray(24)\Column(8) = 143
MAPArray(24)\Column(9) = 139
MAPArray(24)\Column(10) = 143
MAPArray(24)\Column(11) = 143
MAPArray(24)\Column(12) = 143
MAPArray(24)\Column(13) = 143
MAPArray(24)\Column(14) = 143
MAPArray(24)\Column(15) = 141
MAPArray(24)\Column(16) = 127
MAPArray(24)\Column(17) = 129
MAPArray(24)\Column(18) = 127
MAPArray(24)\Column(19) = 61
MAPArray(24)\Column(20) = 143
MAPArray(24)\Column(21) = 143
MAPArray(24)\Column(22) = 138
MAPArray(24)\Column(23) = 143
MAPArray(24)\Column(24) = 142
MAPArray(24)\Column(25) = 142
MAPArray(24)\Column(26) = 136
MAPArray(24)\Column(27) = 127
MAPArray(24)\Column(28) = 180
MAPArray(24)\Column(29) = 176
MAPArray(24)\Column(30) = 182
MAPArray(24)\Column(31) = 188
MAPArray(24)\Column(32) = 127
MAPArray(25)\Column(1) = 127
MAPArray(25)\Column(2) = 127
MAPArray(25)\Column(3) = 127
MAPArray(25)\Column(4) = 127
MAPArray(25)\Column(5) = 127
MAPArray(25)\Column(6) = 127
MAPArray(25)\Column(7) = 127
MAPArray(25)\Column(8) = 131
MAPArray(25)\Column(9) = 136
MAPArray(25)\Column(10) = 129
MAPArray(25)\Column(11) = 60
MAPArray(25)\Column(12) = 143
MAPArray(25)\Column(13) = 100
MAPArray(25)\Column(14) = 174
MAPArray(25)\Column(15) = 137
MAPArray(25)\Column(16) = 127
MAPArray(25)\Column(17) = 127
MAPArray(25)\Column(18) = 134
MAPArray(25)\Column(19) = 143
MAPArray(25)\Column(20) = 137
MAPArray(25)\Column(21) = 135
MAPArray(25)\Column(22) = 136
MAPArray(25)\Column(23) = 60
MAPArray(25)\Column(24) = 143
MAPArray(25)\Column(25) = 62
MAPArray(25)\Column(26) = 178
MAPArray(25)\Column(27) = 186
MAPArray(25)\Column(28) = 191
MAPArray(25)\Column(29) = 190
MAPArray(25)\Column(30) = 196
MAPArray(25)\Column(31) = 191
MAPArray(25)\Column(32) = 184
MAPArray(26)\Column(1) = 127
MAPArray(26)\Column(2) = 127
MAPArray(26)\Column(3) = 127
MAPArray(26)\Column(4) = 127
MAPArray(26)\Column(5) = 127
MAPArray(26)\Column(6) = 127
MAPArray(26)\Column(7) = 127
MAPArray(26)\Column(8) = 127
MAPArray(26)\Column(9) = 127
MAPArray(26)\Column(10) = 127
MAPArray(26)\Column(11) = 128
MAPArray(26)\Column(12) = 135
MAPArray(26)\Column(13) = 175
MAPArray(26)\Column(14) = 167
MAPArray(26)\Column(15) = 136
MAPArray(26)\Column(16) = 127
MAPArray(26)\Column(17) = 127
MAPArray(26)\Column(18) = 131
MAPArray(26)\Column(19) = 143
MAPArray(26)\Column(20) = 138
MAPArray(26)\Column(21) = 143
MAPArray(26)\Column(22) = 63
MAPArray(26)\Column(23) = 127
MAPArray(26)\Column(24) = 129
MAPArray(26)\Column(25) = 127
MAPArray(26)\Column(26) = 182
MAPArray(26)\Column(27) = 190
MAPArray(26)\Column(28) = 191
MAPArray(26)\Column(29) = 198
MAPArray(26)\Column(30) = 205
MAPArray(26)\Column(31) = 189
MAPArray(26)\Column(32) = 127
MAPArray(27)\Column(1) = 128
MAPArray(27)\Column(2) = 132
MAPArray(27)\Column(3) = 127
MAPArray(27)\Column(4) = 127
MAPArray(27)\Column(5) = 127
MAPArray(27)\Column(6) = 127
MAPArray(27)\Column(7) = 127
MAPArray(27)\Column(8) = 127
MAPArray(27)\Column(9) = 127
MAPArray(27)\Column(10) = 127
MAPArray(27)\Column(11) = 127
MAPArray(27)\Column(12) = 131
MAPArray(27)\Column(13) = 141
MAPArray(27)\Column(14) = 129
MAPArray(27)\Column(15) = 128
MAPArray(27)\Column(16) = 127
MAPArray(27)\Column(17) = 127
MAPArray(27)\Column(18) = 127
MAPArray(27)\Column(19) = 129
MAPArray(27)\Column(20) = 130
MAPArray(27)\Column(21) = 143
MAPArray(27)\Column(22) = 137
MAPArray(27)\Column(23) = 127
MAPArray(27)\Column(24) = 176
MAPArray(27)\Column(25) = 182
MAPArray(27)\Column(26) = 196
MAPArray(27)\Column(27) = 191
MAPArray(27)\Column(28) = 198
MAPArray(27)\Column(29) = 207
MAPArray(27)\Column(30) = 201
MAPArray(27)\Column(31) = 191
MAPArray(27)\Column(32) = 184
MAPArray(28)\Column(1) = 142
MAPArray(28)\Column(2) = 139
MAPArray(28)\Column(3) = 140
MAPArray(28)\Column(4) = 127
MAPArray(28)\Column(5) = 127
MAPArray(28)\Column(6) = 127
MAPArray(28)\Column(7) = 127
MAPArray(28)\Column(8) = 127
MAPArray(28)\Column(9) = 127
MAPArray(28)\Column(10) = 127
MAPArray(28)\Column(11) = 127
MAPArray(28)\Column(12) = 127
MAPArray(28)\Column(13) = 129
MAPArray(28)\Column(14) = 127
MAPArray(28)\Column(15) = 127
MAPArray(28)\Column(16) = 127
MAPArray(28)\Column(17) = 127
MAPArray(28)\Column(18) = 127
MAPArray(28)\Column(19) = 127
MAPArray(28)\Column(20) = 127
MAPArray(28)\Column(21) = 129
MAPArray(28)\Column(22) = 127
MAPArray(28)\Column(23) = 127
MAPArray(28)\Column(24) = 178
MAPArray(28)\Column(25) = 194
MAPArray(28)\Column(26) = 207
MAPArray(28)\Column(27) = 202
MAPArray(28)\Column(28) = 203
MAPArray(28)\Column(29) = 201
MAPArray(28)\Column(30) = 187
MAPArray(28)\Column(31) = 66
MAPArray(28)\Column(32) = 127
MAPArray(29)\Column(1) = 141
MAPArray(29)\Column(2) = 127
MAPArray(29)\Column(3) = 133
MAPArray(29)\Column(4) = 132
MAPArray(29)\Column(5) = 127
MAPArray(29)\Column(6) = 127
MAPArray(29)\Column(7) = 127
MAPArray(29)\Column(8) = 127
MAPArray(29)\Column(9) = 127
MAPArray(29)\Column(10) = 127
MAPArray(29)\Column(11) = 127
MAPArray(29)\Column(12) = 180
MAPArray(29)\Column(13) = 180
MAPArray(29)\Column(14) = 180
MAPArray(29)\Column(15) = 127
MAPArray(29)\Column(16) = 180
MAPArray(29)\Column(17) = 127
MAPArray(29)\Column(18) = 127
MAPArray(29)\Column(19) = 127
MAPArray(29)\Column(20) = 127
MAPArray(29)\Column(21) = 127
MAPArray(29)\Column(22) = 127
MAPArray(29)\Column(23) = 127
MAPArray(29)\Column(24) = 127
MAPArray(29)\Column(25) = 179
MAPArray(29)\Column(26) = 193
MAPArray(29)\Column(27) = 191
MAPArray(29)\Column(28) = 187
MAPArray(29)\Column(29) = 185
MAPArray(29)\Column(30) = 176
MAPArray(29)\Column(31) = 127
MAPArray(29)\Column(32) = 127
MAPArray(30)\Column(1) = 143
MAPArray(30)\Column(2) = 142
MAPArray(30)\Column(3) = 143
MAPArray(30)\Column(4) = 141
MAPArray(30)\Column(5) = 128
MAPArray(30)\Column(6) = 127
MAPArray(30)\Column(7) = 127
MAPArray(30)\Column(8) = 127
MAPArray(30)\Column(9) = 127
MAPArray(30)\Column(10) = 176
MAPArray(30)\Column(11) = 65
MAPArray(30)\Column(12) = 191
MAPArray(30)\Column(13) = 191
MAPArray(30)\Column(14) = 196
MAPArray(30)\Column(15) = 190
MAPArray(30)\Column(16) = 191
MAPArray(30)\Column(17) = 184
MAPArray(30)\Column(18) = 127
MAPArray(30)\Column(19) = 127
MAPArray(30)\Column(20) = 127
MAPArray(30)\Column(21) = 127
MAPArray(30)\Column(22) = 127
MAPArray(30)\Column(23) = 127
MAPArray(30)\Column(24) = 127
MAPArray(30)\Column(25) = 127
MAPArray(30)\Column(26) = 177
MAPArray(30)\Column(27) = 177
MAPArray(30)\Column(28) = 127
MAPArray(30)\Column(29) = 127
MAPArray(30)\Column(30) = 127
MAPArray(30)\Column(31) = 127
MAPArray(30)\Column(32) = 127
MAPArray(31)\Column(1) = 143
MAPArray(31)\Column(2) = 143
MAPArray(31)\Column(3) = 143
MAPArray(31)\Column(4) = 143
MAPArray(31)\Column(5) = 63
MAPArray(31)\Column(6) = 134
MAPArray(31)\Column(7) = 63
MAPArray(31)\Column(8) = 127
MAPArray(31)\Column(9) = 127
MAPArray(31)\Column(10) = 178
MAPArray(31)\Column(11) = 191
MAPArray(31)\Column(12) = 187
MAPArray(31)\Column(13) = 187
MAPArray(31)\Column(14) = 193
MAPArray(31)\Column(15) = 192
MAPArray(31)\Column(16) = 185
MAPArray(31)\Column(17) = 127
MAPArray(31)\Column(18) = 127
MAPArray(31)\Column(19) = 127
MAPArray(31)\Column(20) = 127
MAPArray(31)\Column(21) = 127
MAPArray(31)\Column(22) = 127
MAPArray(31)\Column(23) = 127
MAPArray(31)\Column(24) = 127
MAPArray(31)\Column(25) = 127
MAPArray(31)\Column(26) = 127
MAPArray(31)\Column(27) = 127
MAPArray(31)\Column(28) = 127
MAPArray(31)\Column(29) = 127
MAPArray(31)\Column(30) = 147
MAPArray(31)\Column(31) = 149
MAPArray(31)\Column(32) = 149
MAPArray(32)\Column(1) = 160
MAPArray(32)\Column(2) = 161
MAPArray(32)\Column(3) = 169
MAPArray(32)\Column(4) = 173
MAPArray(32)\Column(5) = 174
MAPArray(32)\Column(6) = 143
MAPArray(32)\Column(7) = 141
MAPArray(32)\Column(8) = 127
MAPArray(32)\Column(9) = 127
MAPArray(32)\Column(10) = 127
MAPArray(32)\Column(11) = 177
MAPArray(32)\Column(12) = 127
MAPArray(32)\Column(13) = 127
MAPArray(32)\Column(14) = 177
MAPArray(32)\Column(15) = 177
MAPArray(32)\Column(16) = 176
MAPArray(32)\Column(17) = 127
MAPArray(32)\Column(18) = 127
MAPArray(32)\Column(19) = 127
MAPArray(32)\Column(20) = 127
MAPArray(32)\Column(21) = 127
MAPArray(32)\Column(22) = 127
MAPArray(32)\Column(23) = 127
MAPArray(32)\Column(24) = 127
MAPArray(32)\Column(25) = 127
MAPArray(32)\Column(26) = 127
MAPArray(32)\Column(27) = 127
MAPArray(32)\Column(28) = 147
MAPArray(32)\Column(29) = 90
MAPArray(32)\Column(30) = 150
MAPArray(32)\Column(31) = 158
MAPArray(32)\Column(32) = 159
;}

For x = 1 To MAPLength
  For y = 1 To MAPLength
    ; reset direction values
    MAPleft = 0 : MAPright = 0 : MAPup = 0 : MAPdown = 0
    
    ; set direction values
    If x > 1
      MAPleft  = MAPArray(y)\Column(x-1)
    EndIf
    If x < MAPLength
      MAPright = MAPArray(y)\Column(x+1)
    EndIf
    If y > 1
      MAPup    = MAPArray(y-1)\Column(x)
    EndIf
    If y < MAPLength
      MAPdown  = MAPArray(y+1)\Column(x)
    EndIf
    
    MAPArray(y)\Column(x) = MAPSofting(MAPArray(y)\Column(x), MAPleft, MAPright, MAPup, MAPdown)
    
  Next
Next


*****

later: was update MAPSofting(), and second item - i need to make not 360 existing cubs, but it need to be array with any cross cases. and probably it will be a very big array. and i thing collect all that cases of cross by reading originals maps and storage different cases in that maps. heh... probably problem solved :)

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 7:09 pm
by SeregaZ
idea was good, but practice is sad. after parsing 18 maps and create array with any cases of cross - it is create almost 4 mb and 140k strings. IDE of PB now become slow motion :)

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 8:33 pm
by #NULL
Not sure what you are doing, but I just made your result somewhat visible. FWIW :)

Code: Select all


; [you previous code here]


;EnableExplicit
Define ww, wh, style, win, canvas, event, quit

ww=800
wh=600
style | #PB_Window_ScreenCentered
style | #PB_Window_SystemMenu
style | #PB_Window_MinimizeGadget

win = OpenWindow(#PB_Any, 50,100, ww,wh, "", style)
AddKeyboardShortcut(win, #PB_Shortcut_Escape, 10)
canvas = CanvasGadget(#PB_Any, 0, 0, ww, wh, #PB_Canvas_Keyboard)
SetActiveGadget(canvas)

;font = LoadFont(#PB_Any, "terminal", 5)
;font = LoadFont(#PB_Any, "terminal", 8)
;font = LoadFont(#PB_Any, "ms gothic", 8)
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  font = LoadFont(#PB_Any, "courier new", 8)
CompilerElse
  font = LoadFont(#PB_Any, "monospace", 8)
CompilerEndIf


StartDrawing(CanvasOutput(canvas))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0, 0, OutputWidth(), OutputHeight(), $00000000)
DrawingFont(FontID(font))
w = 25
For x = 1 To MAPLength
  For y = 1 To MAPLength
    DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Outlined | #PB_2DDrawing_Transparent)
    Box( (x * w), (y * w), (w), (w), $ff00ff00)
    DrawingMode(#PB_2DDrawing_AlphaBlend |                          #PB_2DDrawing_Transparent)
    Box( (x * w + 1), (y * w + 1), (w - 2), (w - 2), $ff000000 | MAPArray(y)\Column(x))
    DrawText( (x * w + 1), (y * w + 1), Str(MAPArray(y)\Column(x)))
    ;MAPArray(y)\Column(x) = MAPSofting(MAPArray(y)\Column(x), MAPleft, MAPright, MAPup, MAPdown)
  Next
Next
StopDrawing()

Repeat
  If IsWindow(win) ;{
    Repeat
      event   = WaitWindowEvent(100) ; (without a timeout 'Until Not event' won't happen!)
      Select event
        Case #PB_Event_CloseWindow
          quit = #True
        Case #PB_Event_Menu
          Select EventMenu()
            Case 10
              quit = #True
          EndSelect
      EndSelect
    Until Not event
    ;}
  EndIf
  
Until quit

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 8:59 pm
by SeregaZ
idea is get all cases, what happen in existing, ready to use, without error, maps - i mean parse this maps like cross system with 5 values. starts from 2:2 and to 31:31 for 32 size map and to 63:63 for 64 maps. 128 maps is invalid. so i am not parse that 128.

so this parse create a 23 000 cases for compatibility boxes. it some kind when system study itself :)

Code: Select all

; cross data
MAPCross(1)\MAPCenter   = 159
MAPCross(1)\MAPleft  = 159
MAPCross(1)\MAPright = 159
MAPCross(1)\MAPup       = 159
MAPCross(1)\MAPdown     = 159
****
MAPCross(1566)\MAPCenter   = 143
MAPCross(1566)\MAPleft  = 139
MAPCross(1566)\MAPright = 136
MAPCross(1566)\MAPup       = 141
MAPCross(1566)\MAPdown     = 129
****
MAPCross(23097)\MAPCenter   = 182
MAPCross(23097)\MAPleft  = 176
MAPCross(23097)\MAPright = 198
MAPCross(23097)\MAPup       = 178
MAPCross(23097)\MAPdown     = 69


then idea is find 4 sides matching for any one from this 23k array. if i am found any of this 4 matching - compare fifth value - center. if that center same, as Array have - just miss this cross, and read next. if whole array no have this fifth value - i am take last one from that Array item, who have 4 sides matching and replace old one - by this value from array.

Image

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 9:18 pm
by Olliv
What is sure is the center data can not be in the same memory area as the 4 sides datas.

( = results and hypothesis can not be blended)

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 9:19 pm
by Mijikai
Have a 32x32 array with every element linked to the left,top,right,bottom neighbor element.
Every element has a tile id and knows how many neighbors it has.
A function will generates a code/hash that summarizes the tile id + every neighboring tile ids.
The tile ids -> 0 - 360 could be stored as a word -> wich could be used as simple 8byte (int) - (dw;dw;dw;dw) identifier.

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 9:31 pm
by #NULL
I don't know how restricted you are by the Dune map format or whatever. But maybe you should use a tile struct that has a flag for being 'sand' for example, regardless of which visual tile is used to draw it. Or as a beginning simply use a procedure that tells you if a given tile number is 'sand' or not.
then branch into the details:
- if center <> right
- then doRightTransition
...
- if doRightTranstion and doDownTransition
- use tile <whatever>

It depends on many details, like how your transitions are placed, how many edges you have (4, or 8 with diagonals), or if more than 2 tile types can transition into each other. and also if you combine the transition only when drawing or if you store them as separate tile type etc.

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 11:22 pm
by SeregaZ
#NULL, you mean make some kind of groups?

360 it is all metatiles, what is exist. earth types + factorys. so without factory it is even less, than 360.

and this earth have a lot of variations:
Image

so groups can be - sand, earth, mounting, spice, bold spice, dune.

but i think my ugly slow system is works :) just need to add some special cases, wich one is correct, but just no comes from existing maps. second item - all 4 directions values can be same for a few cases. in my code - using last of them. that is why earth on demo image always same - i mean up is like line, down part like some one is bite that earth. if i will collect all same cases and use random for selecting one of them - final result will be more fine. third item - my system will not work with total coppupted case. for example - 128 maps is not exists. it just place holder, with 4 maps 64x64. so border in a middle is corrupted. my system cant fix that :)

this is a middle of 128 map:
Image

Re: question about complicated compatibility checking

Posted: Sun Jan 20, 2019 11:27 pm
by SeregaZ
Mijikai, you mean make some more fasted code? compare only one value, not like my case now - 4 compares?

Re: question about complicated compatibility checking

Posted: Mon Jan 21, 2019 4:40 pm
by SeregaZ
heh... this cross system is dead end :) it need change not only center metatile, but another - directions too. becouse now it always will make same box. top and left will have stright line - bottom and right always will be shark bite.
Image