Move tour, LOG and LOGN in utils, add vertices_from_set
This commit is contained in:
parent
43201caf9b
commit
dd1fe6569e
3 changed files with 34 additions and 23 deletions
23
ants.py
23
ants.py
|
|
@ -5,27 +5,8 @@ import math
|
||||||
import random
|
import random
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
import shortpath
|
import shortpath
|
||||||
|
from utils import tour
|
||||||
|
from utils import LOG,LOGN
|
||||||
def LOG( *args ):
|
|
||||||
"""Print something on stderr and flush"""
|
|
||||||
for msg in args:
|
|
||||||
sys.stderr.write( str(msg) )
|
|
||||||
sys.stderr.write(" ")
|
|
||||||
sys.stderr.flush()
|
|
||||||
|
|
||||||
|
|
||||||
def LOGN( *args ):
|
|
||||||
"""Print something on stdeer, with a trailing new line, and flush"""
|
|
||||||
LOG( *args )
|
|
||||||
LOG("\n")
|
|
||||||
|
|
||||||
|
|
||||||
def tour(lst):
|
|
||||||
# consecutive pairs in lst + last-to-first element
|
|
||||||
for a,b in zip(lst, lst[1:] + [lst[0]]):
|
|
||||||
yield (a,b)
|
|
||||||
|
|
||||||
|
|
||||||
def euclidian_distance( ci, cj, graph = None):
|
def euclidian_distance( ci, cj, graph = None):
|
||||||
return math.sqrt( float(ci[0] - cj[0])**2 + float(ci[1] - cj[1])**2 )
|
return math.sqrt( float(ci[0] - cj[0])**2 + float(ci[1] - cj[1])**2 )
|
||||||
|
|
|
||||||
|
|
@ -28,11 +28,11 @@ def plot_segments( ax, segments, **kwargs ):
|
||||||
ax.add_patch(patch)
|
ax.add_patch(patch)
|
||||||
|
|
||||||
|
|
||||||
def scatter_segments( ax, segments, color="black", alpha=1.0, linewidth=1.0 ):
|
def scatter_segments( ax, segments, **kwargs ):
|
||||||
xy = [ ((i[0],j[0]),(i[1],j[1])) for (i,j) in segments]
|
xy = [ ((i[0],j[0]),(i[1],j[1])) for (i,j) in segments]
|
||||||
x = [i[0] for i in xy]
|
x = [i[0] for i in xy]
|
||||||
y = [i[1] for i in xy]
|
y = [i[1] for i in xy]
|
||||||
ax.scatter( x,y, s=20, marker='o', color=color, alpha=alpha, linewidth=linewidth)
|
ax.scatter( x,y, s=20, marker='o', **kwargs)
|
||||||
|
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
|
|
|
||||||
30
utils.py
30
utils.py
|
|
@ -1,4 +1,20 @@
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def LOG( *args ):
|
||||||
|
"""Print something on stderr and flush"""
|
||||||
|
for msg in args:
|
||||||
|
sys.stderr.write( str(msg) )
|
||||||
|
sys.stderr.write(" ")
|
||||||
|
sys.stderr.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def LOGN( *args ):
|
||||||
|
"""Print something on stdeer, with a trailing new line, and flush"""
|
||||||
|
LOG( *args )
|
||||||
|
LOG("\n")
|
||||||
|
|
||||||
|
|
||||||
def adjacency_from_set( segments ):
|
def adjacency_from_set( segments ):
|
||||||
graph = {}
|
graph = {}
|
||||||
for start,end in segments:
|
for start,end in segments:
|
||||||
|
|
@ -8,3 +24,17 @@ def adjacency_from_set( segments ):
|
||||||
graph[end].append( start )
|
graph[end].append( start )
|
||||||
return graph
|
return graph
|
||||||
|
|
||||||
|
|
||||||
|
def vertices_from_set( segments ):
|
||||||
|
vertices = set()
|
||||||
|
for start,end in segments:
|
||||||
|
vertices.add(start)
|
||||||
|
vertices.add(end)
|
||||||
|
return vertices
|
||||||
|
|
||||||
|
|
||||||
|
def tour(lst):
|
||||||
|
# consecutive pairs in lst + last-to-first element
|
||||||
|
for a,b in zip(lst, lst[1:] + [lst[0]]):
|
||||||
|
yield (a,b)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue