31 lines
1,001 B
VB.net
31 lines
1,001 B
VB.net
|
|
Module Module1
|
||
|
|
|
||
|
|
' flag / mask explanation:
|
||
|
|
' bit 0 (1) = increment square
|
||
|
|
' bit 1 (2) = increment cube
|
||
|
|
' bit 2 (4) = has output
|
||
|
|
|
||
|
|
' Checks flag against mask, then advances mask.
|
||
|
|
Function ChkFlg(flag As Integer, ByRef mask As Integer) As Boolean
|
||
|
|
ChkFlg = (flag And mask) = mask : mask <<= 1
|
||
|
|
End Function
|
||
|
|
|
||
|
|
Sub SwoC(limit As Integer)
|
||
|
|
Dim count, square, delta, cube, d1, d2, flag, mask As Integer, s as string = ""
|
||
|
|
count = 1 : square = 1 : delta = 1 : cube = 1 : d1 = 1 : d2 = 0
|
||
|
|
While count <= limit
|
||
|
|
flag = {5, 7, 2}(1 + square.CompareTo(cube))
|
||
|
|
If flag = 7 Then s = String. Format(" {0} (also cube)", square)
|
||
|
|
If flag = 5 Then s = String.Format("{0,-2} {1}", count, square) : count += 1
|
||
|
|
mask = 1 : If ChkFlg(flag, mask) Then delta += 2 : square += delta
|
||
|
|
If ChkFlg(flag, mask) Then d2 += 6 : d1 += d2 : cube += d1
|
||
|
|
If ChkFlg(flag, mask) Then Console.WriteLine(s)
|
||
|
|
End While
|
||
|
|
End Sub
|
||
|
|
|
||
|
|
Sub Main()
|
||
|
|
SwoC(30)
|
||
|
|
End Sub
|
||
|
|
|
||
|
|
End Module
|