Esempio n. 1
0
    def test_count(self):
        list0 = ArrayList('i', 0, 0, 0, 1)

        self.assertEqual(list0.count(0), 3)
        self.assertEqual(list0.count(1), 1)

        self.assertEqual(list0.count(25), 0)
Esempio n. 2
0
    def __init__(self, interactions, n1, alpha, recovery_days, transmission_rate, fatality_rate, initial_setting):
        '''
        Initialize parameters and objects for COVID-19 simulation
        '''
        # Constants
        self.n = n1
        self.ALPHA = alpha
        self.RECOVERY_DAYS = recovery_days
        self.TRANSMISSION_RATE = transmission_rate
        self.FATALITY_RATE = fatality_rate
        self.INITIAL_SETTING = initial_setting
        self.INTERACTION = interactions

        # States
        self.CLEAN = 0
        self.INFECTED = 1
        self.DEAD = 2
        self.RECOVERED = 3

        # Initialize list
        self.Nodes = ArrayList()

        for i in range(self.n):
            self.Nodes.append(self.Node(i))

        # Set random indexes to infected
        for v in self.Nodes:
            if random.uniform(0,1) <= self.INITIAL_SETTING: # Probability of being infected
                v.state = self.INFECTED
                v.recover = self.RECOVERY_DAYS
            else: # Probability of not being infected
                v.state = self.CLEAN

        # Initialize graph
        self.Graph = self.getInteractionGraph()
Esempio n. 3
0
    def test_index(self):
        list0 = ArrayList('i', 0, 0, 0, 1)

        self.assertEqual(list0.index(0), 0)
        self.assertEqual(list0.index(1), 3)

        with self.assertRaises(ValueError):
            list0.index(25)
Esempio n. 4
0
    def test_contains(self):
        list1 = ArrayList('i', 1, 2, 3, 1, 8, 9)
        self.assertTrue(2 in list1)
        self.assertFalse(0 in list1)

        list2 = ArrayList('u', '1', '2', '3')
        self.assertTrue('2' in list2)
        self.assertFalse('0' in list2)
 def generateLists(self, size, inputNone=False):
     arrayList = ArrayList(size)
     list = []
     for _ in range(size):
         item = None
         if not inputNone:
             item = random.randint(-1000, 1000)
         arrayList.append(item)
         list.append(item)
     return arrayList, list
Esempio n. 6
0
    def test_init_and_len(self):
        # Увы, обычного теста на невылеты нет, так что пусть будет так
        list0 = ArrayList('i')
        list1 = ArrayList('i', 1, 2, 3, 1, 8, 9)
        list2 = ArrayList('u', '1', '2', '3')
        list3 = ArrayList('d', 1.1, 2.2, 3.3, 4.4, 5.5)

        self.assertEqual(len(list0), 0)
        self.assertEqual(len(list1), 6)
        self.assertEqual(len(list2), 3)
        self.assertEqual(len(list3), 5)
 def testSort(self):
     for i in range(51):
         arrayList, pyList = self.generateLists(i)
         for _ in range(i):
             self.assertEqual(arrayList.sort(),
                              pyList.sort(),
                              msg="sort ascending correct")
             self.assertEqual(arrayList.sort(reverse=True),
                              pyList.sort(reverse=True),
                              msg="sort descending correct")
         arrayList = ArrayList()
         self.assertIsNone(arrayList.sort(), msg="nothing to sort")
Esempio n. 8
0
    def test_mul_imul(self):
        list0 = ArrayList('i', 0, 0, 0)
        mult = 2

        self.assertEqual(ArrayList('i', 0, 0, 0, 0, 0, 0), list0 * mult)
        self.assertEqual(ArrayList('i', 0, 0, 0), list0)
        self.assertEqual(mult, 2)

        mult = 3
        list0 *= mult

        self.assertEqual(ArrayList('i', 0, 0, 0, 0, 0, 0, 0, 0, 0), list0)
        self.assertEqual(mult, 3)
    def testEqual(self):
        for i in range(51):
            arrayList1, pyList = self.generateLists(i)
            self.assertEqual(arrayList1, pyList, msg="list not equal")
            pyList.append(5)
            self.assertNotEqual(arrayList1, pyList, msg="is equal")

        arrayList2 = ArrayList()
        arrayList2.append(5)
        arrayList2.append(6)
        self.assertNotEqual(arrayList2, (5, 6), msg="is equal")
        list2 = [5, 6, 7]
        self.assertNotEqual(arrayList2, list2, msg="is equal")
        self.assertNotEqual(arrayList2, [5, 7], msg="is equal")
Esempio n. 10
0
    def test_iterable(self):
        list0 = ArrayList('i', 0, 1, 2)
        for i, e in enumerate(list0):
            self.assertEqual(i, e)

        list1 = ArrayList('i', 0)
        iterator = iter(list1)

        self.assertEqual(next(iterator), 0)

        list1.append(2)

        self.assertEqual(next(iterator), 2)

        with self.assertRaises(StopIteration):
            next(iterator)
Esempio n. 11
0
    def test_append(self):
        list0 = ArrayList('i', 0, 0, 0)
        list0.append(1)

        self.assertEqual(ArrayList('i', 0, 0, 0, 1), list0)

        list0.append(2)

        self.assertEqual(ArrayList('i', 0, 0, 0, 1, 2), list0)
Esempio n. 12
0
class ArrayStack:
    def __init__(self):
        self.data = ArrayList()

    def __len__(self):
        return len(self.data)

    def is_empty(self):
        return (len(self) == 0)

    def push(self, item):
        self.data.append(item)

    def top(self):
        if(self.is_empty() == True):
            raise Exception("Stack is Empty")
        return self.data[-1]

    def pop(self):
        if (self.is_empty() == True):
            raise Exception("Stack is Empty")
        return self.data.pop()
Esempio n. 13
0
    def test_pop(self):
        list0 = ArrayList('i', 0, 1, 2)

        self.assertEqual(list0.pop(), 2)
        self.assertEqual(list0, ArrayList('i', 0, 1))

        self.assertEqual(list0.pop(0), 0)
        self.assertEqual(list0, ArrayList('i', 1))
Esempio n. 14
0
    def test_add_iadd(self):
        list1 = ArrayList('i', 1, 2, 3, 1, 8, 9)
        list01 = ArrayList('i', 0, 0, 0)

        self.assertEqual(ArrayList('i', 1, 2, 3, 1, 8, 9, 0, 0, 0),
                         list1 + list01)
        self.assertEqual(ArrayList('i', 1, 2, 3, 1, 8, 9), list1)
        self.assertEqual(ArrayList('i', 0, 0, 0), list01)

        list01 += list1

        self.assertEqual(ArrayList('i', 0, 0, 0, 1, 2, 3, 1, 8, 9), list01)
        self.assertEqual(ArrayList('i', 1, 2, 3, 1, 8, 9), list1)
Esempio n. 15
0
class TestArrayList(unittest.TestCase):
    def setUp(self):
        self.ARRAY_LIST_INIT_SIZE = 2
        self.array_list = ArrayList(self.ARRAY_LIST_INIT_SIZE)

    def array_list_sanity_check(self, orig_len, orig_list, number_of_elements):
        self.assertEqual(self.array_list.orig_len, orig_len)
        self.assertEqual(self.array_list.orig_list, orig_list)
        self.assertEqual(len(self.array_list), number_of_elements)

    def test_initialization(self):
        self.array_list_sanity_check(2, [None] * self.ARRAY_LIST_INIT_SIZE, 0)

    def test_append(self):
        self.array_list.append(1)
        self.array_list_sanity_check(2, [1, None], 1)
        self.array_list.append(2)
        self.array_list_sanity_check(2, [1, 2], 2)
        self.array_list.append(3)
        self.array_list_sanity_check(4, [1, 2, 3, None], 3)
        self.array_list.append(4)
        self.array_list_sanity_check(4, [1, 2, 3, 4], 4)
Esempio n. 16
0
    def test_ordering(self):
        list0 = ArrayList('i')
        list10 = ArrayList('i', 1, 2, 3, 1, 8, 9)
        list11 = ArrayList('i', 1, 2, 3, 1, 8, 9)
        list20 = ArrayList('i', 1, 2, 3)
        list21 = ArrayList('i', 1, 2, 4)
        list3 = ArrayList('i', 1, 2, 3, 4, 5, 6, 7, 8, 9)

        self.assertTrue(list10 == list11)
        self.assertTrue(list10 >= list11)
        self.assertTrue(list10 <= list11)

        self.assertTrue(list10 > list0)
        self.assertFalse(list10 <= list0)

        self.assertTrue(list10 < list3)
        self.assertTrue(list20 < list21)

        self.assertTrue(list10 != list0)
        self.assertTrue(list20 != list0)
        self.assertTrue(list21 != list10)
        self.assertTrue(list3 != list10)

        self.assertFalse(list10 != list11)
Esempio n. 17
0
 def setUp(self):
     self.ARRAY_LIST_INIT_SIZE = 2
     self.array_list = ArrayList(self.ARRAY_LIST_INIT_SIZE)
Esempio n. 18
0
    def test_to_string(self):
        list1 = ArrayList('i', 1, 2, 3, 1, 8, 9)
        self.assertEqual(str(list1), "array('i', [1, 2, 3, 1, 8, 9])")

        list2 = ArrayList('u', '1', '2', '3')
        self.assertEqual(str(list2), "array('u', '123')")
Esempio n. 19
0
class Simulation:
    class Node():
        def __init__(self, i):
            self.state = None
            self.recover = None
            self.index = i
            self.adj = None

    def __init__(self, interactions, n1, alpha, recovery_days, transmission_rate, fatality_rate, initial_setting):
        '''
        Initialize parameters and objects for COVID-19 simulation
        '''
        # Constants
        self.n = n1
        self.ALPHA = alpha
        self.RECOVERY_DAYS = recovery_days
        self.TRANSMISSION_RATE = transmission_rate
        self.FATALITY_RATE = fatality_rate
        self.INITIAL_SETTING = initial_setting
        self.INTERACTION = interactions

        # States
        self.CLEAN = 0
        self.INFECTED = 1
        self.DEAD = 2
        self.RECOVERED = 3

        # Initialize list
        self.Nodes = ArrayList()

        for i in range(self.n):
            self.Nodes.append(self.Node(i))

        # Set random indexes to infected
        for v in self.Nodes:
            if random.uniform(0,1) <= self.INITIAL_SETTING: # Probability of being infected
                v.state = self.INFECTED
                v.recover = self.RECOVERY_DAYS
            else: # Probability of not being infected
                v.state = self.CLEAN

        # Initialize graph
        self.Graph = self.getInteractionGraph()

    def getInteractionGraph(self):
        '''
        Creates an AdjacencyList of size self.n to monitor node interactions
        '''

        start_time = time.time()
        g = AdjacencyList(self.n) # Declare adjacency list
        for repeat in range(self.INTERACTION): # Repeat interaction times
            for j in range(0,self.n): # Repeat for all nodes
                i = self.Nodes.get(random.randint(0,j)) # Get a random node
                if random.uniform(0,1) < self.ALPHA: # Alpha chance
                    g.add_edge(j, i)
                else:
                    ngh = g.out_edges(i.index) # Find neighbors of i
                    if ngh.size() > 0: # Validate that there are neighbors
                        k = random.choice(ngh)
                        g.add_edge(j, k)

        for v in self.Nodes:
            v.adj = g.out_edges(v.index)

        elapsed_time = time.time() - start_time
        print(f"Created interaction graph of size {self.n*self.INTERACTION} in", elapsed_time, "seconds")
        return g

    def run(self, days : int):
        '''
        Runs the simulation for "days" amount of times
        '''

        start_time = time.time()

        # Initialize plot lists
        day = []
        clean = []
        infected = []
        dead = []
        recovered = []

        # Header
        print("=== === === === === === === === === === === === === === ===")

        # Day repeat
        for repeat in range(1,days+1):

            # Initialize node count
            infected_nodes = 0
            dead_nodes = 0
            clean_nodes = 0
            recovered_nodes = 0

            # Print statistics
            for i in self.Nodes:
                if i.state==self.CLEAN: clean_nodes += 1
                if i.state==self.INFECTED: infected_nodes += 1
                elif i.state==self.DEAD: dead_nodes += 1
                elif i.state==self.RECOVERED: recovered_nodes += 1
            print("DAY:", repeat, "CLEAN:", clean_nodes, "INFECTED:", infected_nodes, "DEAD:", dead_nodes, "RECOVERED:", recovered_nodes)

            # Plot lists
            day.append(repeat)
            clean.append(clean_nodes)
            infected.append(infected_nodes)
            dead.append(dead_nodes)
            recovered.append(recovered_nodes)

            # Run simulation
            for v in self.Nodes: # Run through all nodes
                if v.state==self.INFECTED: # Check for infection
                    for w in v.adj: # Find interaction neighbors self.Graph.covid_out_edges(v.index)
                        if w.state == self.CLEAN: # If infected interacts with clean
                            if random.uniform(0,1) <= self.TRANSMISSION_RATE: # Transmission chance
                                self.Nodes.get(w.index).state = self.INFECTED # Clean is now infected
                                self.Nodes.get(w.index).recover = self.RECOVERY_DAYS # Set recovery days to RECOVERY_DAYS
                    v.recover -= 1 # Subtract recovery day
                    if v.recover == 0: # If recovery is over
                        if random.uniform(0,1) <= self.FATALITY_RATE: # Fatality chance
                            v.state = self.DEAD # Node is dead
                        else:
                            v.state = self.RECOVERED # Node recovered

        # Create plot
        #plt.plot(day, clean, 'b')
        plt.plot(day, infected, 'r')
        plt.plot(day, dead, 'k')
        plt.plot(day, recovered, 'g')
        plt.legend(['Infected', 'Dead', 'Recovered'], loc='upper right')

        elapsed_time = time.time() - start_time

        # Footer
        print("=== === === === === === === === === === === === === === ===")
        print(f"Simulation for {days} days completed in {elapsed_time} seconds")

        # View plot
        opt=""
        while opt!="Y" and opt!="N":
            opt=input("Would you like to view the graph? (Y/N): ")
            if opt=="Y":
                plt.show()
                input("Press enter to continue...")
        plt.clf()
        plt.close()
Esempio n. 20
0
    def test_remove(self):
        list0 = ArrayList('i', 3, 2, 1, 0)
        list0.remove(2)

        self.assertEqual(list0, ArrayList('i', 3, 1, 0))
Esempio n. 21
0
 def test_reverse(self):
     list0 = ArrayList('i', 3, 2, 1, 0)
     i = 0
     for e in reversed(list0):
         self.assertEqual(e, i)
         i += 1
Esempio n. 22
0
 def __init__(self, n: int):
     self.n = n
     self.adj = np.zeros(n, object)
     for i in range(self.n):
         self.adj[i] = ArrayList()
Esempio n. 23
0
    def test_insert(self):
        list0 = ArrayList('i', 0, 0, 0)
        list0.insert(1, 1)

        self.assertEqual(list0, ArrayList('i', 0, 1, 0, 0))

        list0.insert(-1, 1)
        self.assertEqual(list0, ArrayList('i', 0, 1, 0, 0, 1))

        list0.insert(-2, 2)
        self.assertEqual(list0, ArrayList('i', 0, 1, 0, 0, 2, 1))
Esempio n. 24
0
    def test_extend(self):
        list0 = ArrayList('i', 0, 0, 0, 1)

        list0.extend([1, 2, 3])

        self.assertEqual(list0, ArrayList('i', 0, 0, 0, 1, 1, 2, 3))
Esempio n. 25
0
 def in_edges(self, i) -> List:
     out = ArrayList()
     for j in range(0, self.n):
         if self.has_edge(j, i): out.append(j)
     return out
Esempio n. 26
0
 def __init__(self):
     '''
     __init__: Initialization of the base class ArrayList
     '''
     ArrayList.__init__(self)
Esempio n. 27
0
    def test_del(self):
        list0 = ArrayList('i', 3, 2, 1, 0)
        del list0[0]

        self.assertEqual(list0, ArrayList('i', 2, 1, 0))
Esempio n. 28
0
 def test_is_dz_done(self):
     my_array_list = ArrayList('i')
     self.assertTrue(isinstance(my_array_list, abc.Reversible))
     self.assertTrue(isinstance(my_array_list, abc.Collection))
import time

while(True):
    while(True):
        try:
            numOfItems = int(input("How many items would you like to contain in the list? "))
            if(numOfItems <= 0):
                print("Number of items must be greater than 0")
                continue
            else:
                break
        except ValueError:
            print("Must be of type integer")
            continue

    listOfItems = ArrayList(numOfItems)

    while(True):
        try:
            print("Would you like the list: \n1. Sorted\n2. Reverse Sorted\n3. Semi-Sorted\n4. Unchanged")
            selection = int(input("Please enter number corresponding to selection: "))
            if(selection < 1 or selection > 4):
                print("Please enter a number from the selection")
                continue
            else:
                break
        except ValueError:
            print("Must be of type integer")
            continue

    switch = {1: listOfItems.sortList,
Esempio n. 30
0
names.remove("Eric")
print(names)
print(names[0])

# 8 bytes per item for memoryt location + 4 bytes for each int
list_primes = [2, 3, 5, 7, 11, 13, 17, 19, 2]
print(list_primes)
list_primes.remove(2)
print(list_primes)

# 4 bytes per int
array_primes = array.array('i', list_primes)
array_primes.append(23)
print(array_primes)

our_list = ArrayList()
our_list.append("Eric")
our_list.append("Robert")
our_list.append("Fatemeh")
our_list.append("Susan")
our_list.append("Aya")
our_list.append("Bryant")

our_list.remove("Aya")
our_list.remove("Bryant")

our_list.insert(1, "Matt")

for index in range(len(our_list)):
    print(our_list[index])