#------------------------------------------------------------------------------ # RandomInput3.py # Creates random input file for cse 101 pa4. To run this program on Linux: # # python3 RandomInput4.py # #------------------------------------------------------------------------------ import sys import random # cat() # returns the concatenation of a list of lists def cat(L): s = [] for x in L: s += x return s # get user input and initialize local variables filename = raw_input("Enter name of file to create: ") n = int(raw_input("Enter number of vertices n (must be positive): ")) if n<=0: print("Invalid input n" + str(n) + ". Value must be positive.") sys.exit(1) k = int(raw_input("Enter number of strong components k (1<=k<="+str(n)+"): ")) if k<1 or k>n: print("Invalid input k=" + str(k) + \ ". Value must be in range 1 to " + str(n) + ".") sys.exit(1) B = [1]+sorted(random.sample(range(2,n+1),k-1))+[n+1] C = [ range(B[i], B[i+1]) for i in range(k) ] N = [ len(x) for x in C ] Min = sum( [ j for j in N if j>1 ] ) + (k-1) Max = sum( [ j*(j-1)/2 for j in N if j>1 ] ) + n*(n+1)/2 m = int(raw_input("Enter number of edges m ("+str(Min)+"<=m<="+str(Max)+"): ")) if mMax: print("Invalid input m=" + str(m) + \ ". Value must be in range "+str(Min)+" to "+str(Max)+".") sys.exit(1) # create random digraph D = cat( [ [ (v,u) for u in x for v in x if u