Langton's ant: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
(→{{header|VBA}}: Correct chirality; randomize initial heading; print results even if ant walks off the grid.) |
||
Line 8,443: | Line 8,443: | ||
Sub Ant() |
Sub Ant() |
||
Dim TablDatas(1 To 200, 1 To 256) As String, sDir As String, sFile As String, Str As String |
Dim TablDatas(1 To 200, 1 To 256) As String, sDir As String, sFile As String, Str As String |
||
Dim ColA As Integer, LigA As Long, ColF As Integer, LigF As Long, i As Long, j As Integer, Num As Long |
Dim ColA As Integer, LigA As Long, ColF As Integer, LigF As Long, i As Long, j As Integer, Num As Long |
||
Dim Top As Boolean, Left As Boolean, Bottom As Boolean, Right As Boolean |
Dim Top As Boolean, Left As Boolean, Bottom As Boolean, Right As Boolean |
||
'init variables |
'init variables |
||
Select Case Int(Rnd(4) * 4) |
|||
Top = True |
Case 0: Top = True |
||
Case 1: Right = True |
|||
Case 2: Bottom = True |
|||
Case 3: Left = True |
|||
⚫ | |||
⚫ | |||
LigF = 80 |
LigF = 80 |
||
ColF = 50 |
ColF = 50 |
||
Line 8,457: | Line 8,463: | ||
Next |
Next |
||
'directory |
'directory |
||
sDir = " |
sDir = "/Users/mjreed/Desktop/" |
||
'name txt file |
'name txt file |
||
sFile = "Langton_Ant.txt" |
sFile = "Langton_Ant.txt" |
||
'start |
'start |
||
Dim Dir As String |
|||
For i = 1 To 15000 |
For i = 1 To 15000 |
||
LigA = LigF |
LigA = LigF |
||
ColA = ColF |
ColA = ColF |
||
If LigA = 1 Or ColA = 1 Or ColA = 256 Or LigA = 200 Then GoTo Fin |
If LigA = 1 Or ColA = 1 Or ColA = 256 Or LigA = 200 Then GoTo Fin |
||
If TablDatas(LigA, ColA) = " " Then |
If TablDatas(LigA, ColA) = " " Then |
||
TablDatas(LigA, ColA) = "#" |
TablDatas(LigA, ColA) = "#" |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
Select Case True |
Select Case True |
||
Case Top: Top = False: Right = True: LigF = LigA: ColF = ColA + 1 |
Case Top: Top = False: Right = True: LigF = LigA: ColF = ColA + 1 |
||
Line 8,481: | Line 8,481: | ||
Case Bottom: Bottom = False: Left = True: LigF = LigA: ColF = ColA - 1 |
Case Bottom: Bottom = False: Left = True: LigF = LigA: ColF = ColA - 1 |
||
Case Right: Right = False: Bottom = True: LigF = LigA + 1: ColF = ColA |
Case Right: Right = False: Bottom = True: LigF = LigA + 1: ColF = ColA |
||
End Select |
|||
Else |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
End Select |
End Select |
||
End If |
End If |
||
Next i |
Next i |
||
⚫ | |||
'result in txt file |
'result in txt file |
||
Num = FreeFile |
Num = FreeFile |
||
Open sDir & sFile For Output As #Num |
Open sDir & sFile For Output As #Num |
||
For i = 1 To UBound(TablDatas, 1) |
For i = 1 To UBound(TablDatas, 1) |
||
Str = vbNullString |
Str = vbNullString |
||
Line 8,492: | Line 8,502: | ||
Str = Str & TablDatas(i, j) |
Str = Str & TablDatas(i, j) |
||
Next j |
Next j |
||
Print # |
Print #Num, Str |
||
Next i |
Next i |
||
Close #Num |
Close #Num |
||
Exit Sub |
Exit Sub |
||
⚫ | |||
MsgBox "Stop ! The ant is over limits." |
|||
End Sub |
End Sub |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
{{out}} |
{{out}} |
||
Blank lines elided |
|||
⚫ | |||
<pre> ## ## |
|||
###### |
|||
## ## # |
|||
# # ## |
|||
#### ### # |
|||
##### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
# |
### # ## |
||
# |
# ## ## # |
||
# # |
### # ## |
||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
## |
### # ## |
||
# ## ## # |
|||
### # ## |
|||
# |
# ## ## # |
||
### |
### # ## |
||
# |
# ## ## # |
||
### # ## |
|||
# |
# ## ## # |
||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # |
|||
### # ## |
|||
# ## ## # ## |
|||
### # ## ## |
|||
# ## ## ## # |
|||
#### ### # # ### |
|||
# # # ## #### # |
|||
### # # # # ## # |
|||
### # ## # ## # ## |
|||
# # ## # # ## |
|||
# # # ##### # # |
|||
# ##### ## ###### |
|||
### ## # ## # # # ## # ## |
|||
## # ####### # # ### ## # |
|||
# # ###### ## # # ## # # |
|||
# # # ## # ###### ####### # |
|||
# #### ## # #### ## ## # ## # |
|||
# #### # # ###### ## ### |
|||
# # ## # ### # ## ## ### |
|||
####### # ## ## # # |
|||
#### ## ## #### ## ## ## # # |
|||
# # # ### ## ### # #### # |
|||
### ### # # ##### # # # |
|||
# # ### #### ## # ## ### ## # |
|||
## ## #### #### # # # # |
|||
# # ## ### ### ### # |
|||
## ## ### #### # ### ## # |
|||
## # #### # # # ## ### ## # |
|||
#### ## ## #### # # # # ### # |
|||
# ## ### # # ## # # # # # # |
|||
# # # ## ## # # ### ## |
|||
## # # ##### # # # # # |
|||
# ## # # ## ## # ### ### |
|||
# # # # # # ### ## ## # |
|||
### # ##### ###### ### ####### # ## |
|||
# # # ##### ## ##### ##### |
|||
# ## # # # ## ### ### |
|||
#### ##### ######### # # |
|||
## # # ### # # # ### ### |
|||
# # #### ## ### ## ### ## ## |
|||
### # ## # ##### # # # ## ### |
|||
# ##### # # ## ## # # # # |
|||
###### #### ## # # ## # # ## |
|||
## # ### ## #### # ### |
|||
# # ##### # # ## # # # |
|||
## ### ####### # # ## |
|||
# # ## ## # ## # |
|||
# # #### ### ## # |
|||
# ## ### ## ## |
|||
⚫ | |||
## |
|||
</pre> |
|||
=={{header|Vim Script}}== |
=={{header|Vim Script}}== |