- Added a more generic tuplesdo.py
This commit is contained in:
parent
094267cd03
commit
c354401d16
@ -22,6 +22,8 @@
|
|||||||
# To verify combos of protocols starting with s and t
|
# To verify combos of protocols starting with s and t
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import tuples
|
||||||
|
|
||||||
# ***********************
|
# ***********************
|
||||||
# PARAMETERS
|
# PARAMETERS
|
||||||
# ***********************
|
# ***********************
|
||||||
@ -47,7 +49,7 @@ ScytherArgs = ScytherDefaults + " " + ScytherMethods + " " + ScytherBounds
|
|||||||
CommandPrefix = ScytherProgram + " " + ScytherArgs
|
CommandPrefix = ScytherProgram + " " + ScytherArgs
|
||||||
|
|
||||||
# Some default settings for Agents, untrusted e with sk(e) and k(a,e) etc.
|
# Some default settings for Agents, untrusted e with sk(e) and k(a,e) etc.
|
||||||
IncludeProtocols = 'spdl-defaults.inc'
|
IncludeProtocols = '../spdl/spdl-defaults.inc'
|
||||||
|
|
||||||
# Some protocols are causing troubles: this is a hard-coded filter to exclude
|
# Some protocols are causing troubles: this is a hard-coded filter to exclude
|
||||||
# the problem children. Unfair, yes. Practical, yes.
|
# the problem children. Unfair, yes. Practical, yes.
|
||||||
@ -304,7 +306,7 @@ def DescribeContext (filep, protocols, claim):
|
|||||||
#
|
#
|
||||||
# Determines:
|
# Determines:
|
||||||
# ProtocolCount
|
# ProtocolCount
|
||||||
# Protocol[0..count-1]
|
# ProtocolFileList[0..count-1]
|
||||||
#
|
#
|
||||||
# Furthermore, TempFileList is created.
|
# Furthermore, TempFileList is created.
|
||||||
|
|
||||||
@ -321,7 +323,7 @@ else:
|
|||||||
# Read stdin into list and count, send to file
|
# Read stdin into list and count, send to file
|
||||||
loop = 1
|
loop = 1
|
||||||
ProtocolCount = 0
|
ProtocolCount = 0
|
||||||
Protocol = []
|
ProtocolFileList = []
|
||||||
outp = open(TempFileList, 'w')
|
outp = open(TempFileList, 'w')
|
||||||
while loop:
|
while loop:
|
||||||
line = sys.stdin.readline()
|
line = sys.stdin.readline()
|
||||||
@ -330,7 +332,7 @@ while loop:
|
|||||||
cleanline = string.strip(line)
|
cleanline = string.strip(line)
|
||||||
if cleanline != '' and cleanline[0] != '#' and cleanline not in SkipList:
|
if cleanline != '' and cleanline[0] != '#' and cleanline not in SkipList:
|
||||||
# not a blank line, not forbidden
|
# not a blank line, not forbidden
|
||||||
Protocol.append(cleanline)
|
ProtocolFileList.append(cleanline)
|
||||||
ProtocolCount = ProtocolCount + 1
|
ProtocolCount = ProtocolCount + 1
|
||||||
outp.write(line)
|
outp.write(line)
|
||||||
else:
|
else:
|
||||||
@ -348,8 +350,8 @@ print "Evaluating tuples of", TupleWidth, "for", ProtocolCount, "protocols, usin
|
|||||||
i = 0
|
i = 0
|
||||||
safetxt = " " * 20
|
safetxt = " " * 20
|
||||||
while i < ProtocolCount:
|
while i < ProtocolCount:
|
||||||
ShowProgress (i, ProtocolCount,Protocol[i]+safetxt)
|
ShowProgress (i, ProtocolCount,ProtocolFileList[i]+safetxt)
|
||||||
ScytherEval1 ( Protocol[i] )
|
ScytherEval1 ( ProtocolFileList[i] )
|
||||||
i = i + 1
|
i = i + 1
|
||||||
ClearProgress(ProtocolCount, safetxt)
|
ClearProgress(ProtocolCount, safetxt)
|
||||||
print "Evaluated single results."
|
print "Evaluated single results."
|
||||||
|
21
test/tuple.py
Executable file
21
test/tuple.py
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
# Tuple module
|
||||||
|
#
|
||||||
|
# tuplesDo generates all unordered sets (in a list) of size n of the
|
||||||
|
# elements of the list l. The resulting lists (of length n) are passed
|
||||||
|
# to the function f.
|
||||||
|
|
||||||
|
def tuplesDo (f,l,n):
|
||||||
|
def tuplesDoRecurse (l,r):
|
||||||
|
if r and (len(r) == n):
|
||||||
|
f(r)
|
||||||
|
else:
|
||||||
|
if l and (n > 0):
|
||||||
|
# Larger size: we have options
|
||||||
|
# Option 1: include first
|
||||||
|
tuplesDoRecurse (l[1:], r + [l[0]])
|
||||||
|
# Option 2: exclude first
|
||||||
|
tuplesDoRecurse (l[1:], r)
|
||||||
|
|
||||||
|
tuplesDoRecurse (l,[])
|
||||||
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
|||||||
#
|
#
|
||||||
import sys
|
import sys
|
||||||
import string
|
import string
|
||||||
|
import tuplesdo
|
||||||
|
|
||||||
# Retrieve the tuple width
|
# Retrieve the tuple width
|
||||||
tuplesize = int(sys.argv[1])
|
tuplesize = int(sys.argv[1])
|
||||||
@ -39,26 +40,12 @@ while loop:
|
|||||||
# end of the input
|
# end of the input
|
||||||
loop = 0
|
loop = 0
|
||||||
|
|
||||||
def tupleUnit (x):
|
def tuplesPrint (l, n):
|
||||||
print x + "\t",
|
def f (resultlist):
|
||||||
|
print " ".join(resultlist)
|
||||||
|
|
||||||
def tuplesPrint (l, n, r):
|
tuplesdo.tuplesDo (f, l, n)
|
||||||
if r and (len(r) == n):
|
|
||||||
count = 0
|
|
||||||
for x in r:
|
|
||||||
if count > 0:
|
|
||||||
print "\t",
|
|
||||||
print x,
|
|
||||||
count = count+1
|
|
||||||
print
|
|
||||||
else:
|
|
||||||
if l and (n > 0):
|
|
||||||
# Larger size: we have options
|
|
||||||
# Option 1: include first
|
|
||||||
tuplesPrint (l[1:], n, r + [l[0]])
|
|
||||||
# Option 2: exclude first
|
|
||||||
tuplesPrint (l[1:], n, r)
|
|
||||||
|
|
||||||
# Generate tuples...
|
# Generate tuples...
|
||||||
tuplesPrint (list, tuplesize, [])
|
tuplesPrint (list, tuplesize)
|
||||||
# Thanks for your attention
|
# Thanks for your attention
|
||||||
|
21
test/tuplesdo.py
Executable file
21
test/tuplesdo.py
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
# Tuple module
|
||||||
|
#
|
||||||
|
# tuplesDo generates all unordered sets (in a list) of size n of the
|
||||||
|
# elements of the list l. The resulting lists (of length n) are passed
|
||||||
|
# to the function f.
|
||||||
|
|
||||||
|
def tuplesDo (f,l,n):
|
||||||
|
def tuplesDoRecurse (l,r):
|
||||||
|
if r and (len(r) == n):
|
||||||
|
f(r)
|
||||||
|
else:
|
||||||
|
if l and (n > 0):
|
||||||
|
# Larger size: we have options
|
||||||
|
# Option 1: include first
|
||||||
|
tuplesDoRecurse (l[1:], r + [l[0]])
|
||||||
|
# Option 2: exclude first
|
||||||
|
tuplesDoRecurse (l[1:], r)
|
||||||
|
|
||||||
|
tuplesDoRecurse (l,[])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user