Langton's ant: Difference between revisions

Content added Content deleted
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
End Select
LigF = 80
LigF = 80
ColF = 50
ColF = 50
Line 8,457: Line 8,463:
Next
Next
'directory
'directory
sDir = "C:\Users\yourname\Desktop\"
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
Case Top: Top = False: Left = True: LigF = LigA: ColF = ColA - 1
Case Left: Left = False: Bottom = True: LigF = LigA + 1: ColF = ColA
Case Bottom: Bottom = False: Right = True: LigF = LigA: ColF = ColA + 1
Case Right: Right = False: Top = True: LigF = LigA - 1: ColF = ColA
End Select
Else
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
TablDatas(LigA, ColA) = " "
Select Case True
Case Top: Top = False: Left = True: LigF = LigA: ColF = ColA - 1
Case Left: Left = False: Bottom = True: LigF = LigA + 1: ColF = ColA
Case Bottom: Bottom = False: Right = True: LigF = LigA: ColF = ColA + 1
Case Right: Right = False: Top = True: LigF = LigA - 1: ColF = ColA
End Select
End Select
End If
End If
Next i
Next i
Fin:
'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 #1, Str
Print #Num, Str
Next i
Next i
Close #Num
Close #Num
Exit Sub
Exit Sub
Fin:
MsgBox "Stop ! The ant is over limits."
End Sub
End Sub
</syntaxhighlight>
</syntaxhighlight>
{{out}}
{{out}}
Blank lines elided
<pre>
## ############ ##
<pre> ## ##
## # #### #
######
# ## ## ###
## ## #
# # # # # #
# # ##
# ### # # ## ##
#### ### #
### ## ## # # # # ###
##### # ##
## ## # # # ## #### ## ### # #
# ## ## #
### ### # # ### ## # ## ### #
### # ##
# # # ### # #### # # ##### # #
# ## ## #
# # ### # ###### ## ## #### # ## ###
### # ##
## ### ##### # ## ## ## # # ## # ### #
# ## ## #
## # #### # # # ### ## # # #
### # ##
## # ## ## # ## ## # #
# ## ## #
# ## ## ### # ## # ### ## # # ###
### # ##
# #### ## # # ### ## ## ## ### #
# ## ## #
# # ### ## # ## #### # # # # # ###
### # ##
## # # ## ### # ### # # ## # ### #
# ## ## #
# ## #### #### ##### ## ## # ## # # ###
### # ##
# # # # # ## ## # # ### # # # # ### #
# ## ## #
# # #### #### ## # ## ### ## # ###
### # ##
# # # #### # ########### ## # # # ### #
# ## ## #
## # ## # ######### ## #### # ## # ###
### # ##
# #### ## # # ### ### ## ## ## # ## # # ### #
# ## ## #
# ## ### ### # # ## # ## ###### # # ## # ###
### # ##
# ## # ## # # ##### # ##### # # # ### #
# ## ## #
# # # ## # # # # ## ##### ## # # ## # ###
### # ##
## ########## ## ##### # #### # # # # ### #
# ## ## #
## #### ## # #### # # ## ## # ## # ###
### # ##
# # # # # # # # ## ## # ##### # # ### #
# ## ## #
## ## # ## # # ## ## # # # ## ## ## # ###
### # ##
# #### ## # # ######## # # # # # ### #
# ## ## #
# ## # # ## ## # # # ## # ###
### # ##
#### ## ## ## # # # # # # ### #
# ## ## #
### # # ## ## # ## ## # ###
### # ##
#### ### #### #### ## # # # ### #
# ## ## #
# # # ## # ## #### ## ## # ###
### # ##
##### ## ### ## ## ## # # ### #
# ## ## #
#### # ## # ## # ###
### # ##
## ## ## # # ### #
# ## ## #
## ## # ###
### # ##
# #### ## # # # ### #
# ## ## #
### ### # # ## # ###
### # ##
# # # ## # # # ### #
# ## ## #
## ## ## # ###
### # ##
## # # ### #
# ## ## #
## # ###
### # ##
# # ### #
# ## ## #
## # ###
### # ##
# # ### #
# ## ## #
## # ### </pre>
### # ##
# ## ## #
### # ##
# ## ## # ##
### # ## ##
# ## ## ## #
#### ### # # ###
# # # ## #### #
### # # # # ## #
### # ## # ## # ##
# # ## # # ##
# # # ##### # #
# ##### ## ######
### ## # ## # # # ## # ##
## # ####### # # ### ## #
# # ###### ## # # ## # #
# # # ## # ###### ####### #
# #### ## # #### ## ## # ## #
# #### # # ###### ## ###
# # ## # ### # ## ## ###
####### # ## ## # #
#### ## ## #### ## ## ## # #
# # # ### ## ### # #### #
### ### # # ##### # # #
# # ### #### ## # ## ### ## #
## ## #### #### # # # #
# # ## ### ### ### #
## ## ### #### # ### ## #
## # #### # # # ## ### ## #
#### ## ## #### # # # # ### #
# ## ### # # ## # # # # # #
# # # ## ## # # ### ##
## # # ##### # # # # #
# ## # # ## ## # ### ###
# # # # # # ### ## ## #
### # ##### ###### ### ####### # ##
# # # ##### ## ##### #####
# ## # # # ## ### ###
#### ##### ######### # #
## # # ### # # # ### ###
# # #### ## ### ## ### ## ##
### # ## # ##### # # # ## ###
# ##### # # ## ## # # # #
###### #### ## # # ## # # ##
## # ### ## #### # ###
# # ##### # # ## # # #
## ### ####### # # ##
# # ## ## # ## #
# # #### ### ## #
# ## ### ## ##
##
##
</pre>


=={{header|Vim Script}}==
=={{header|Vim Script}}==