Unit 3.17-3.18 Group Lesson Period 4
Jupyter Notebook for the rest of the class to follow along with.
def collatz(i):
while i > 1:
print(i, end=' ')
if (i % 2):
# i is odd
i = 3*i + 1
else:
# i is even
i = i//2
print(1, end='')
i = int(input('Enter i: '))
print('Sequence: ', end='')
collatz(i)
def collatz(i):
while i != 1:
if i % 2 > 0:
i =((3 * i) + 1)
list_.append(i)
else:
i = (i / 2)
list_.append(i)
return list_
print('Please enter a number: ', end='')
while True:
try:
i = int(input())
list_ = [i]
break
except ValueError:
print('Invaid selection, try again: ', end='')
l = collatz(i)
print('')
print('Number of iterations:', len(l) - 1)
Hacks/assignment
- Write 2 algorithms: One is efficent and one is innefficent, then explain why one is efficent while the other isn't. (.25)
- Explain why one algorithm is more efficient than another using mathematical and/or formal reasoning. (.25)
- use variables, if statements, and loops to program your algorithm and upload to jupyter notebooks/ fastpages. (.25)
maxValue(numbers):
max = numbers[0]
for i in range(1, len(numbers)):
if numbers[i] > max:
max = numbers[i]
return max
maxValue(numbers):
max = numbers[0]
for i in range(1, len(numbers)):
for j in range(1, len(numbers)):
if numbers[i] > numbers[j] and numbers[i] > max:
max = numbers[i]
return max
if we have an algorithm that has a time complexity of O(n), this means that the running time of the algorithm will increase linearly with the size of the input. This is considered very efficient because it means that the algorithm will be able to handle large inputs without taking too long to run. On the other hand, if we have an algorithm with a time complexity of O(n^2), this means that the running time of the algorithm will increase exponentially with the size of the input. This is considered very inefficient because it means that the algorithm will take a long time to run on large inputs, and it may not be able to handle very large inputs at all.
result = 0
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number > 0:
result += number
print(result)