Move tour, LOG and LOGN in utils, add vertices_from_set

This commit is contained in:
Johann Dreo 2014-03-25 20:58:52 +01:00
commit dd1fe6569e
3 changed files with 34 additions and 23 deletions

23
ants.py
View file

@ -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 )

View file

@ -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__":

View file

@ -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)