Vorige Pagina About the Author

' Construct Generators for Squares of Subtraction (7 x 7)

' Tested with Office 365 under Windows 10

Sub CnstrGen7()

Dim a(49), a1(49), a2(49), nRw(7), b(49)

y = MsgBox("Blocked", vbInformation, "CnstrGen7")
End

Sheets("Klad1").Select

n1 = 0: n9 = 0: k1 = 1: k2 = 1

n0 = 1: n8 = 55534: n81 = 6154
ShtNm1 = "AntiSym7"

For j1 = n0 To n81

    n10 = 7: Erase a
    For i1 = 1 To 7
        a1(i1) = Sheets(ShtNm1).Cells(j1, i1).Value
    Next i1
    nRw(1) = j1
    
    For i1 = 1 To 7             'First Line
        a(i1) = a1(i1)
    Next i1
    
    GoSub 200                   'Remainder of Lines
    If fl2 = 0 Then GoTo 5
   
'   Add Complementary Rows

    For i1 = 22 To 42
        a(i1) = 50 - a(i1 - 21)
    Next i1
    
'   Complete Generator (Last Row)

    Erase b
    For i1 = 1 To 42
        b(a(i1)) = a(i1)
    Next i1
    
    i2 = 42
    For i1 = 1 To 49
        If b(i1) = 0 Then
            i2 = i2 + 1: a(i2) = i1
        End If
    Next i1
    
''  n9 = n9 + 1: GoSub 655      'Print results (Squares)
    n9 = n9 + 1: GoSub 650      'Print results (Lines)

5

   n10 = n10 - 7
10 Next j1

End

200 fl2 = 0

For j2 = n0 + 1 To n8
j100 = j2: j101 = 2: GoSub 100: If fl1 = 0 Then GoTo 20
nRw(2) = j2

For j3 = j2 + 1 To n8
j100 = j3: j101 = 3: GoSub 100: If fl1 = 0 Then GoTo 30
nRw(3) = j3

   fl2 = 1
   Return

   n10 = n10 - 7
30 Next j3
   n10 = n10 - 7
20 Next j2

    Return

100 fl1 = 1

    For i1 = 1 To 7
        a2(i1) = Sheets(ShtNm1).Cells(j100, i1).Value
    Next i1

    For i1 = 1 To 7
    a20 = a2(i1)
    For i2 = 1 To n10
        If a20 = a(i2) Then fl1 = 0: Return
        If a20 = 50 - a(i2) Then fl1 = 0: Return    'Check Complement
    Next i2
    Next i1
    
    n10 = n10 + 7
    i2 = 0
    For i1 = n10 - 7 + 1 To n10
        i2 = i2 + 1
        a(i1) = a2(i2)
    Next i1

Return

'   Print Results (lines)

655 For i1 = 1 To 49
        Cells(n9, i1).Value = a(i1)
    Next i1
    Cells(n9, 50).Value = n9
    Cells(1, 51).Value = n9
    Return

'   Print Results (Squares)

650 n2 = n2 + 1
    If n2 = 5 Then
        n2 = 1: k1 = k1 + 8: k2 = 1
    Else
        If n9 > 1 Then k2 = k2 + 8
    End If

    Cells(k1, k2 + 1).Select
    Cells(k1, k2 + 1).Font.Color = -4165632
    Cells(k1, k2 + 1).Value = n9
    
    i3 = 0
    For i1 = 1 To 7
        For i2 = 1 To 7
            i3 = i3 + 1
            Cells(k1 + i1, k2 + i2).Value = a(i3)
        Next i2

'       Row Number
        Cells(k1 + i1, k2 + 8).Value = nRw(i1)
'       Sheets(ShtNm1).Cells(nRw(i1), 8).Value = 1  'Mark Used Row (Option)
        
    Next i1
   
    Return

End Sub

Vorige Pagina About the Author