2018-2019
2018-2019 copied to clipboard
Lecture "Brute-force algorithms", exercise 2
Create the test case for the algorithm introduced in Listing 2.
# Test case for the algorithm
def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
# Code of the algorithm
from collections import deque
def stack_from_list(input_list):
output_stack = deque()
for item in input_list:
output_stack.append(item)
return output_stack
# Three different test runs
print(test_stack_from_list([15, 38, 56, 4], deque([15, 38, 56, 4])))
print(test_stack_from_list(["A", "B", "C", "D"], deque(["A", "B", "C", "D"])))
print(test_stack_from_list(["A", 78, "Hola", 6], deque(["A", 78, "Hola", 6])))
def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
from collections import deque
def stack_from_list(input_list):
output_stack = deque()
for item in input_list:
output_stack.append(item)
return output_stack
print (test_stack_from_list([12,13,14], deque([12,13,14])))
print (test_stack_from_list(["A",13,"B"], deque(["A",13,"B"])))
print (test_stack_from_list(["A",13,"B"], deque(["B",13,"A"])))
True
True
False
# Test case for the algorithm
def test_stack_from_list(chapters_list, expected):
result = stack_from_list(chapters_list)
if expected == result:
return True
else:
return False
# Code of the algorithm
from collections import deque
def stack_from_list(chapters_list):
chapters_stack = deque()
for item in chapters_list:
chapters_stack.append(item)
return chapters_stack
# Two different test runs
print(test_stack_from_list(["chapter 1", "chapter 2", "chapter 3", "chapter 4"], deque(["chapter 1", "chapter 2", "chapter 3", "chapter 4"]))) # true
print(test_stack_from_list(["Owl Post", "Aunt Marge's Big Mistake", "The Knight Bus", "The Leaky Cauldron"], deque(["The Boggart in the Wardrobe", "Aunt Marge's Big Mistake", "The Knight Bus", "The Leaky Cauldron"]))) # false
#Test case for the algorithm
def test_stack_from_list(input_list, expected): result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
from collections import deque
def stack_from_list(input_list): output_stack = deque()
for item in input_list:
output_stack.append(item)
return output_stack
print(test_stack_from_list([“Part 1", “Part 2", “Part 3", “Part 4"], deque([“Part 1", “Part 2", “Part 3", “Part 4”]))) Output: True print(test_stack_from_list([“) “Poor Folk ", “The Double“, "The Idiot”, “A Gentle Creature“], deque(["The Double", “Poor Folk”, “The Idiot“, “A Gentle Creature“]))) Output: False
Test case for the algorithm
def stack_from_list(input_list, value_to_search, expected): result =stack_from_list(input_list, value_to_search) if expected == result: return True else: return False
from collections import deque
def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
def stack_from_list(input_list):
output_stack = deque()
for item in input_list:
output_stack.append(item)
return output_stack
print(test_stack_from_list(list(["a", "b", "c"]), deque(["c", "b", "a"])))
print(test_stack_from_list(list(["d", "e", "f"]), deque(["d", "e", "f"])))
I cannot understand why Github don't write the indentation in this case.
def test(input_list, expected): result = createstuck(input_list) if expected == result: return True else: return False
from collections import deque def createstack(input_list): stack = deque() for item in input_list: stack.append(item)
return stack
some tests
print(createstack([55, 44, 32, 27], deque([27, 32, 44, 55]))) (True) print(createstack(["A", "B", "C", "D"], deque(["A", "B", "C", "D"]))) (false)
def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
from collections import deque
def stack_from_list(input_list):
output_stack = deque() # the stack to create
for item in input_list:
output_stack.append(item)
return output_stack
print(test_stack_from_list(["a", "b", "c"], deque(["a", "b", "c"]))) #true
print(test_stack_from_list(["A", "b", "c"], deque(["a", "b", "c"]))) #false
print(test_stack_from_list([1, 2, 3], deque([3, 2, 1]))) #false
from collections import deque
# Testing Algorithm
def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
# Algorithm
def stack_from_list(input_list):
output_stack = deque() # the stack to create
# Iterate each element in the input list and add it to the stack
for item in input_list:
output_stack.append(item)
return output_stack
# Testing Input
print(test_stack_from_list([1,2,3,4,5], deque([1,2,3,4,5])))
print(test_stack_from_list(["the","answer","to","life","universe","and","everything"], deque(["the","answer","to","life","universe","and","everything"])))
print(test_stack_from_list(["the","ultimate","question"], deque(["the","ultimate","question"])))
#test stack
def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if result == expected:
return True
else:
return False
from collections import deque
def stack_from_list(input_list):
output_stack = deque()
# Iterate each element in the input list and add it to the stack
for item in input_list:
output_stack.append(item)
return output_stack
print(test_stack_from_list([62, 54, 21, 6], deque([62, 54, 21, 6]))) #True
print(test_stack_from_list(["Anna", "Marco", "Luigi", "Andrea"], deque(["Anna", "Marco", "Luigi", "Andrea"]))) #True
print(test_stack_from_list(["red", "blue", "yellow"], deque(["red", "pink"]))) #False
from collections import deque
#test case for the algorithm def test_stack_from_list(input_list, expected):
result = stack_from_list(input_list)
if expected == result:
return True
else:
return False
#code of the algorithm def stack_from_list(input_list): output_stack = deque() #stack to create
#iterate each element in the input list and add it to the stack
for item in input_list:
output_stack.append(item)
return output_stack
#tests run print(test_stack_from_list([10, 16, 82, 5], deque([10, 16, 82, 5]))) print(test_stack_from_list(["zebra", "donkey", "hippo", "giraffe"], deque(["zebra", "donkey", "hippo", "giraffe"])))
def test_output_stack(input_list, expected):
result = output_stack(input_list)
if expected == result:
return True
else:
return False
from collections import deque
def output_stack(input_list):
output_stack = deque()
for item in input_list:
output_stack.append(item)
return output_stack
print (test_output_stack([19,18,17], deque([19,18,17])))
print (test_output_stack(["D","E","F"], deque(["D","E","F"])))
print (test_output_stack([22,"A","B"], deque([22,"A","B"])))
True
True
True
Hi all,
First, you can find my solution as Python file in the GitHub repository.
a few very important comments for this (and future) exercise:
-
test-driven development: all the tests must be passed in order to claim that an algorithm returns what it is expected. If a test execution return False, the test is not passed. If you need to check the non-compliancy of the execution of a function on purpose, then you have to create an additional testing function that returns True if the condition of the test is not passed. Remeber: first write the test, then develop the algorithm/function.
-
Python code and indentation: please, in your answers to the various questions, if you have to write down a Python code, be sure that the correct indent is preserved by previewing your post before to publish it. You can use the
```
environment for defining your Python code, e.g.:
```
write your Python code here
```