3. Sets of numbers
VC2M5N10: level 5: Follow a mathematical algorithm involving branching and repetition (iteration); create and use algorithms involving a sequence of steps and decisions and digital tools to experiment with factors, multiples and divisibility; identify, interpret and describe emerging patterns
manipulating sets of numbers using a given rule, for example, if a number is even, halve it; or if a number is odd, subtract 1 then halve it
3.1. Simple rule
Return a set of numbers using the rule: if a number is even, halve it; if a number is odd, subtract 1 then halve it.
FUNCTION manipulate_numbers(numbers)
result ← EMPTY SET
FOR EACH number IN numbers DO
IF number MOD 2 = 0 THEN
new_value ← number ÷ 2
ELSE
new_value ← (number - 1) ÷ 2
ENDIF
ADD new_value TO result
ENDFOR
RETURN result
ENDFUNCTION
BEGIN
INPUTS:
numbers ← SET OF INTEGERS FROM 1 TO 10
PROCESS:
manipulated_numbers ← CALL manipulate_numbers(numbers)
OUTPUT:
PRINT "Manipulated numbers are ", manipulated_numbers
END
1def manipulate_numbers(numbers):
2 """
3 Takes a set of numbers and applies the following rule to each number:
4 If the number is even, halve it.
5 If the number is odd, subtract 1 then halve it.
6 Returns a new set of manipulated numbers.
7 """
8 result = set()
9 for num in numbers:
10 if num % 2 == 0:
11 result.add(num // 2)
12 else:
13 result.add((num - 1) // 2)
14 return result
15
16numbers = set(range(1, 11))
17manipulated_numbers = manipulate_numbers(numbers)
18print(manipulated_numbers)
19# {0, 1, 2, 3, 4, 5}
3.2. Even numbers
Return a set of even numbers.
FUNCTION get_even_numbers(numbers)
even_numbers ← EMPTY SET
FOR EACH number IN numbers DO
IF number MOD 2 = 0 THEN
ADD number TO even_numbers
ENDIF
ENDFOR
RETURN even_numbers
ENDFUNCTION
BEGIN
INPUTS:
numbers ← SET OF INTEGERS FROM 1 TO 10
PROCESS:
even_numbers ← CALL get_even_numbers(numbers)
OUTPUT:
PRINT "Even numbers are ", even_numbers
END
1def even_numbers(numbers):
2 """
3 Takes a set of numbers and returns a new set containing only the even numbers.
4 """
5 result = set()
6 for num in numbers:
7 if num % 2 == 0:
8 result.add(num)
9 return result
10
11numbers = set(range(1,11))
12even_nums = even_numbers(numbers)
13print(even_nums)
3.3. Sum numbers in sequence
Return a list of numbers that are a running total as each member of the set is added to the running total.
FUNCTION sum_numbers_in_sequence(numbers)
running_totals ← EMPTY LIST
total ← 0
FOR EACH number IN numbers DO
total ← total + number
APPEND total TO running_totals
ENDFOR
RETURN running_totals
ENDFUNCTION
BEGIN
INPUTS:
numbers ← SET OF INTEGERS FROM 1 TO 10
PROCESS:
running_totals ← CALL sum_numbers_in_sequence(numbers)
OUTPUT:
PRINT "Running totals are ", running_totals
END
1def sequential_addition(numbers):
2 """
3 Takes a set of numbers and forms a new list by sequentially adding them.
4 Returns the new list of numbers.
5 """
6 result = list()
7 current_sum = 0
8 for num in numbers:
9 current_sum += num
10 result.append(current_sum)
11 return result
12
13numbers = set(range(1,11))
14new_numbers = sequential_addition(numbers)
15print(new_numbers)
16# [1, 3, 6, 10, 15, 21, 28, 36, 45, 55]