From 175721a63b426355274fa9e8063f762020ab8362 Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Thu, 30 Jan 2020 16:55:04 -0600 Subject: R E A R R A N G E --- csci1913/Python/lab1_strap012.py | 115 ----------------------------- csci1913/Python/lab2_strap012.py | 137 ----------------------------------- csci1913/Python/lab3_strap012.py | 63 ---------------- csci1913/Python/project1_strap012.py | 134 ---------------------------------- 4 files changed, 449 deletions(-) delete mode 100644 csci1913/Python/lab1_strap012.py delete mode 100644 csci1913/Python/lab2_strap012.py delete mode 100644 csci1913/Python/lab3_strap012.py delete mode 100644 csci1913/Python/project1_strap012.py (limited to 'csci1913/Python') diff --git a/csci1913/Python/lab1_strap012.py b/csci1913/Python/lab1_strap012.py deleted file mode 100644 index 396fda9..0000000 --- a/csci1913/Python/lab1_strap012.py +++ /dev/null @@ -1,115 +0,0 @@ -#Matthew Strapp -#5449340 -#Lab 1 - -def left(exp): - return exp[0] -def op(exp): - return exp[1] -def right(exp): - return exp[2] - - -def isInside(var, e): - if type(e) is tuple: - return isInside(var, left(e)) or isInside(var, right(e)) - elif type(e) is str: - return var==e - else: - return -1 - -def solve(v, e): - if isInside(v, left(e)): - return solving(v, e) - elif isInside(v,right(e)): - newE=(right(e),op(e),left(e)) - return solving(v,newE) - #Solving defined on line 52 - else: - return None - -#Four major solving means -def solvingAdd(v,q): - if isInside(v, left(left(q))): - return left(left(q)), '=', (right(q), '-', right(left(q))) - else: - return right(left(q)), '=', (right(q), '-', left(left(q))) -def solvingSubtract(v,q): - if isInside(v, left(left(q))): - return left(left(q)), '=', (right(q), '+', right(left(q))) - else: - return right(left(q)), '=', (left(left(q)), '-', right(q)) -def solvingMultiply(v,q): - if isInside(v, left(left(q))): - return left(left(q)), '=', (right(q), '/', right(left(q))) - else: - return right(left(q)), '=', (right(q), '/', left(left(q))) -def solvingDivide(v,q): - if isInside(v, left(left(q))): - return left(left(q)), '=', (right(q), '*', right(left(q))) - else: - return right(left(q)), '=', (left(left(q)), '/', right(q)) - -#Dict based off of lecture 13th Sept. 2019 -dispatcher={'+':solvingAdd,'-':solvingSubtract,'*':solvingMultiply,'/':solvingDivide} - -def solving(v,q): - if left(q) is v: - return q - else: - if op(left(q)) in dispatcher: - newQ=dispatcher[op(left(q))](v,q) - else: - raise ValueError - return solving(v,newQ) - -# -# TESTS. Test the equation solver for CSci 1913 Lab 1. -# -# James Moen -# 10 Sep 18 -# -# Every test is followed by a comment which shows what must be printed if your -# code works correctly. It also shows how many points the test is worth, for a -# total of 35 possible points. -# - -print(isInside('x', 'x')) # True 1 point -print(isInside('x', 'y')) # False 1 point -print(isInside('x', ('x', '+', 'y'))) # True 2 points -print(isInside('x', ('a', '+', 'b'))) # False 2 points -print(isInside('+', ('a', '+', 'b'))) # False 2 points -print(isInside('x', (('m', '*', 'x'), '+', 'b'))) # True 2 points - -print(solve('x', (('a', '+', 'x'), '=', 'c'))) -# ('x', '=', ('c', '-', 'a')) 2 points - -print(solve('x', (('x', '+', 'b'), '=', 'c'))) -# ('x', '=', ('c', '-', 'b')) 2 points - -print(solve('x', (('a', '-', 'x'), '=', 'c'))) -# ('x', '=', ('a', '-', 'c')) 2 points - -print(solve('x', (('x', '-', 'b'), '=', 'c'))) -# ('x', '=', ('c', '+', 'b')) 2 points - -print(solve('x', (('a', '*', 'x'), '=', 'c'))) -# ('x', '=', ('c', '/', 'a')) 2 points - -print(solve('x', (('x', '*', 'b'), '=', 'c'))) -# ('x', '=', ('c', '/', 'b')) 2 points - -print(solve('x', (('a', '/', 'x'), '=', 'c'))) -# ('x', '=', ('a', '/', 'c')) 2 points - -print(solve('x', (('x', '/', 'b'), '=', 'c'))) -# ('x', '=', ('c', '*', 'b')) 2 points - -print(solve('y', ('y', '=', (('m', '*', 'x'), '+', 'b')))) -# ('y', '=', (('m', '*', 'x'), '+', 'b')) 2 points - -print(solve('x', ('y', '=', (('m', '*', 'x'), '+', 'b')))) -# ('x', '=', (('y', '-', 'b'), '/', 'm')) 2 points - -print(solve('a', (('b', '+', 'c'), '=', ('d', '*', (('a', '/', 'e'), '-', 'f'))))) -# ('a', '=', (((('b', '+', 'c'), '/', 'd'), '+', 'f'), '*', 'e')) 5 points \ No newline at end of file diff --git a/csci1913/Python/lab2_strap012.py b/csci1913/Python/lab2_strap012.py deleted file mode 100644 index 511e6bf..0000000 --- a/csci1913/Python/lab2_strap012.py +++ /dev/null @@ -1,137 +0,0 @@ -class Zillion: - def __init__(self,digits): - self.digits = digits - self.List = [] - self.toList() - - def toList(self): - badBoolean=False #Kludge - if len(self.digits) == 0 : - raise RuntimeError #Cannot make a list of nothing - for n in range (0,len(self.digits)): - if self.digits[n] is not ',': - if self.digits[n] is not ' ': - try: - self.List+=[int(self.digits[n])] - badBoolean=True - except ValueError: #Non-comma character in string - raise RuntimeError - if badBoolean is False: #No numbers in string - raise RuntimeError - else: - return self.List - - - def increment(self): - length = len(self.List) - 1 - newList = self.List - newList[length] += 1 - if newList[length]>=10: #Loop to increment all 10s to 0s with carry - for n in range (0,length): - newList[length-n]=0 - newList[length-n-1]+=1 - - def isZero(self): - for p in range (0,len(self.List)-1): - if self.List[p] is not 0: - return False - return True - - def toString(self): - string='' - for q in range (0,len(self.List)): - string+=str(self.List[q]) #Make string by concatenation - return string - - - -# -# TESTS. Test the class Zillion for CSci 1913 Lab 2. -# -# James Moen -# 18 Sep 17 -# -# Every test is followed by a comment which shows what must be printed if your -# code works correctly. It also shows how many points the test is worth. -# - -try: - z = Zillion('') -except RuntimeError: - print('Empty string') - -# It must print 'Empty string' without apostrophes. 2 points. - -try: - z = Zillion(' , ') -except RuntimeError: - print('No digits in the string') - -# It must print 'No digits in the string' without apostrophes. 2 points. - -try: - z = Zillion('1+0') -except RuntimeError: - print('Non-digit in the string') - -# It must print 'Non-digit in the string' without apostrophes. 2 points. - -try: - z = Zillion('0') -except RuntimeError: - print('This must not be printed') - -# It must print nothing. 2 points. - -print(z.isZero()) # It must print True. 2 points. - -try: - z = Zillion('000000000') -except RuntimeError: - print('This must not be printed') - -# It must print nothing. 2 points. - -print(z.isZero()) # It must print True. 2 points. - -try: - z = Zillion('000 000 000') -except RuntimeError: - print('This must not be printed') - -# It must print nothing. 2 points. - -print(z.isZero()) # It must print True. 2 points. - -try: - z = Zillion('997') -except RuntimeError: - print('This must not be printed') - -# It must print nothing. 2 points. - -print(z.isZero()) # It must print False. 2 points. - -print(z.toString()) # It must print 997. 2 points. - -z.increment() - -print(z.toString()) # It must print 998. 2 points. - -z.increment() - -print(z.toString()) # It must print 999. 2 points. - -z.increment() - -print(z.toString()) # It must print 1000. 2 points. - -try: - z = Zillion('0 9,9 9') -except: - print('This must not be printed') - -# It must print nothing. 3 points. - -z.increment() -print(z.toString()) # It must print 1000. 2 points. diff --git a/csci1913/Python/lab3_strap012.py b/csci1913/Python/lab3_strap012.py deleted file mode 100644 index f9df918..0000000 --- a/csci1913/Python/lab3_strap012.py +++ /dev/null @@ -1,63 +0,0 @@ -#"New" functions -def Reduce(F,S): - if len(S)==0: - return -255 - else: - return F(Reduce(F,S[:-1]),S[-1]) -def returnGreater(a,b): - if a > b: - return a - else: - return b - -#Implementation from Lab -def Sort(T): - if len(T)==0: - return () - else: - return (Sort(Remove(T,Maximum(T))))+(Maximum(T),) -def Maximum(T): - return Reduce(returnGreater,T) -def Remove(T,E): - if len(T)==0: - return () - elif T[0] is E: - return T[1:] - else: - return (T[0],)+Remove(T[1:],E) - - -# -# TESTS. Tests for CSci 1913 Lab 3. -# -# James Moen -# 11 Feb 19 -# -# Each test is worth 2 points, for 40 points total. Comments show what must be -# printed to receive credit. Note that your function SORT must work for tuples -# with negative elements. -# - -print(Maximum((1,))) # 1 2 pt. -print(Maximum((-2, -1))) # -1 2 pt. -print(Maximum((1, 1))) # 1 2 pt. -print(Maximum((1, 2, 3))) # 3 2 pt. - -print(Remove((), 1)) # () 2 pt. -print(Remove((1,), 1)) # () 2 pt. -print(Remove((0, 1), 0)) # (1,) 2 pt. -print(Remove((0, 1, 2, 1, 3), 1)) # (0, 2, 1, 3) 2 pt. -print(Remove((0, 1, 2, 1, 3), 2)) # (0, 1, 1, 3) 2 pt. -print(Remove((1, 2, 3), 3)) # (1, 2) 2 pt. - -print(Sort(())) # () 2 pt. -print(Sort((0,))) # (0,) 2 pt. -print(Sort((0, -1))) # (-1, 0) 2 pt. -print(Sort((1, 0))) # (0, 1) 2 pt. -print(Sort((0, 0, 1))) # (0, 0, 1) 2 pt. -print(Sort((0, -1, 0))) # (-1, 0, 0) 2 pt. -print(Sort((0, 0, 1))) # (0, 0, 1) 2 pt. - -print(Sort((9, 8, 7, 6, 5, 4, 3, 2, 1))) # (1, 2, 3, 4, 5, 6, 7, 8, 9) 2 pt. -print(Sort((1, 2, 3, 4, 5, 6, 7, 8, 9))) # (1, 2, 3, 4, 5, 6, 7, 8, 9) 2 pt. -print(Sort((1, 2, 1, 4, 2, 5, 4, 5, 3))) # (1, 1, 2, 2, 3, 4, 4, 5, 5) 2 pt. diff --git a/csci1913/Python/project1_strap012.py b/csci1913/Python/project1_strap012.py deleted file mode 100644 index c825359..0000000 --- a/csci1913/Python/project1_strap012.py +++ /dev/null @@ -1,134 +0,0 @@ -class Random: - def __init__(self, seed): - self.sevenFive = 16807 - self.twoThirtyone = 2147483647 - self.newNum = seed - - def next(self): - self.newNum = self.sevenFive*self.newNum % self.twoThirtyone - return self.newNum - - def choose(self, limit): - return self.next()%limit - - - -class Rule: - def __init__(self, left, right): - self.left = left - self.right = right - self.count = 1 - - def __repr__(self): - string = str(self.count) - string += " " - string += str(self.left) - string += " -> " - for n in range (0, len(self.right)): - string += self.right[n] - string += " " - return string - - - -class Grammar: - def __init__(self, seed): - self.r = Random(seed) - self.dictionary = {} - - def rule(self, left, right): - if left not in self.dictionary: - self.dictionary[left] = (Rule(left,right),) - else: - self.dictionary[left] += (Rule(left, right),) - - def generate(self): - if 'Start' in self.dictionary: - return self.generating(('Start',)) - else: - raise RuntimeError - - def select(self, left): - rules = self.dictionary[left] - total = 0 - c = 0 - #Some of the loops are probably not needed - for m in range (0, len(rules)): - total += rules[m].count - index = self.r.choose(total) - for c in range (0, len(rules)): - index -= rules[c].count - if index <= 0: - break - chosen = rules[c] - for n in range (0, len(rules)): - if rules[n] is not chosen: - rules[n].count += 1 - return chosen.right - - def generating(self,strings): - result='' - for n in range (0, len(strings)): - if strings[n] not in self.dictionary: - result += strings[n] - result += " " - else: - result += self.generating(self.select(strings[n])) - return result - - - - -G = Grammar(101) -G.rule('Noun', ('cat',)) # 01 -G.rule('Noun', ('boy',)) # 02 -G.rule('Noun', ('dog',)) # 03 -G.rule('Noun', ('girl',)) # 04 -G.rule('Verb', ('bit',)) # 05 -G.rule('Verb', ('chased',)) # 06 -G.rule('Verb', ('kissed',)) # 07 -G.rule('Phrase', ('the', 'Noun', 'Verb', 'the', 'Noun')) # 08 -G.rule('Story', ('Phrase',)) # 09 -G.rule('Story', ('Phrase', 'and', 'Story')) # 10 -G.rule('Story', ('Phrase', 'but', 'Story')) # 11 -G.rule('Start', ('Story', '.')) # 12 -for _ in range (0, 5): - print(G.generate()) - -# the cat bit the boy . -# the cat kissed the dog and the boy chased the boy . -# the cat chased the dog and the girl bit the boy but the girl chased the cat . -# the girl chased the dog . -# the boy kissed the girl and the cat kissed the girl . - -print() -print() - -# -# - -J = Grammar(1453) -J.rule('Noun', ('sentence',)) -J.rule('Noun', ('walrus',)) -J.rule('Noun', ('sky',)) -J.rule('Noun', ('diamond',)) -J.rule('Noun', ('Ottoman Empire',)) -J.rule('Verb', ('is',)) -J.rule('Verb', ('fanned',)) -J.rule('Verb', ('generated',)) -J.rule('Verb', ('hit',)) -J.rule('Phrase', ('the', 'Noun', 'Verb', 'the', 'Noun')) # 08 -J.rule('Phrase', ('Noun', 'Verb', 'the', 'Noun')) -J.rule('Story', ('Phrase',)) # 09 -J.rule('Story', ('Phrase', 'and', 'Story')) # 10 -J.rule('Story', ('Phrase', 'but', 'Story')) # 11 -J.rule('Start', ('Story', '.')) # 12 - -for _ in range(0, 5): - print(J.generate()) - -# the walrus is the sentence and the diamond generated the walrus . -# the walrus generated the walrus and the walrus generated the sentence but diamond hit the sentence . -# sentence fanned the Ottoman Empire . -# the sky hit the diamond and sky is the sentence but the sky fanned the diamond . -# the walrus generated the diamond and the diamond generated the Ottoman Empire but the sky generated the sentence . -- cgit v1.2.3