JPJC 2024 JC2 Prelim Paper 2 MS v2
Uploaded by Kozak327 · 25 August 2026
Preview
Text from the first pagesJPJC 2024 Prelim P2 Marking Scheme H2 Computing 1 Task 1.1 [2m] # Task 1.1 def charToNum(char): num = ord(char) - ord('A') #2 return num Task 1.2 [7 m] # Task 1.2 def encrypt(text, key): # [7 marks] encrypted = [] len_key = len(key) for i in range(len(text)): #1 if text[i]== ' ': newChar = '!' #1 #if 'A' <= text[1] <= 'Z': else: textnum = charToNum(text[i]) keynum = charToNum(key[i%len_key]) #1 newnum = (textnum + keynum) % 26 #1 newChar = chr(newnum + ord('A')) #1 encrypted.append(newChar) #1 return '' .join(encrypted) #1 print(encrypt("HELLO WORLD" , "ABLE")) Task 1.3 [3m] # Task 1.3 infile = open("TASK1.txt",'r') outfile = open("ENCRYPTED.txt",'w') lines = infile.readlines() # 1 for line in lines: encrypted = encrypt(line, "JPJC") #1m outfile.write(encrypted + '\n') #1 infile.close() outfile.close() #read from encrypted text file file = open('ENCRYPTED.txt') lines = file.readlines() for line in lines: line = line.strip() print(line) file.close()
JPJC 2024 Prelim P2 Marking Scheme H2 Computing 2 Show output from ENCRYPTED.txt file [1m] OXAG!SAKUA!CC!WQXCG YDY!ZJRB!IQKB!OTRSJAG BJARAXBG!EJTCN!HXG!VDIXT!IXFJN Task 2.1 [16m] import random def createIsland(rowsize, colsize): # [2m] grid = [[' . ' for i in range(colsize)] for i in range(rowsize)] #1 grid[0][0] = '*' #1 return grid def plantCoconuts(grid): # [4m] count=0 while count<3: # 0, 1, 2 - 1m row = random.randint(0, len(grid)-1) #1 col = random.randint(0, len(grid[0])-1) if grid[row][col] == ' . ': #1 grid[row][col] = 'C' #1 count += 1 return grid def display(grid): #[1m] for row in grid: print(' ' .join(row)) print() def move(grid, curr, direct, dist, score): # [9m] row = curr[0] col = curr[1] # plot path with * , except if has 'C' [4] if direct == 'R': for i in range(dist): if grid[row][col+1+i] != 'C': grid[row][col+1+i] = '*' elif direct == 'L': for i in range(dist): if grid[row][col-1-i] != 'C': grid[row][col-1-i] = '*' elif direct == 'U': for i in range(dist): if grid[row-1-i][col] != 'C':
JPJC 2024 Prelim P2 Marking Scheme H2 Computing 3 grid[row-1-i][col] = '*' elif direct == 'D': for i in range(dist): if grid[row+1+i][col] != 'C': grid[row+1+i][col] = '*' # update endpoint [2] if direct == 'U': row -= dist elif direct == 'D': row += dist elif direct == 'L': col -= dist elif direct == 'R': col += dist # eat coconut if endpoint has 'C' [2] if grid[row][col]=='C': grid[row][col]='E' score += 1 print("(row, col), score =" , (row, col), score) # print return (grid, (row, col), score) # return tuple [1] Task 2.2 [10 m] # main grid = createIsland(10, 15) # create island -1m grid = plantCoconuts(grid) # plant 3 coconut tree -1m curr = (0,0) # initialise player starting position and score -1m score = 0 win = False display(grid) # display grid for i in range(8): # game loop -1m # print player's current location & score -1m print("You are at position:" , curr, ' Coconut eaten:' , score) direct, dist = input("Enter your move (L/R/U/D distance):").split(' ') # user input -1m dist = int(dist) grid, curr, score = move(grid, curr, direct, dist, score) #1 display(grid) if curr == (9,14) and score==3: #1 win = True break if win: #1 print("You have won!") print("You have reached finish point and eaten 3 coconuts.") else: #1 print("Sorry you did not win") if curr != (9,14):
JPJC 2024 Prelim P2 Marking Scheme H2 Computing 4 print("You did not reached the finish point.") if score<3: print("You have not eaten enough coconuts. ") Show output of game with a win or lost [1m] Task 3.1, 3.2, 3.3, 3.4 [3m, 18m, 4m, 2m] # Task 3.1 [3m] class Node: def __init__(self, value): #1m self.value = value #1m self.left = None #1m self.right = None # Task 3.2 [18m] class Tree: def __init__(self, node): self.root = node #1m def insert(self, val): if self.root is None: #1m empty BST self.root = val else: current_node = self.root #1m while True: if val.value < current_node.value: #1m compare if current_node.left is None: #1m update pointer when leaf reached current_node.left = val break else: current_node = current_node.left #1m else: if current_node.right is None: #1m update pointer when leaf reached current_node.right = val break else: current_node = current_node.right #1m def in_order_traversal(self): self.in_order_recursive(self.root) def in_order_recursive(self, node): if node is not None: #1m self.in_order_recursive(node.left) #1m Visit left subtree print(node.value, end = " ") #1m Visit node itself self.in_order_recursive(node.right) #1m Visit right subtree def pre_order(self, node, result): if node: result.append(node.value)
JPJC 2024 Prelim P2 Marking Scheme H2 Computing 5 self.pre_order(node.left, result) self.pre_order(node.right, result) def pre_order_traversal(self): result = [] self.pre_order(self.root, result) return result def helper(self,node, prev): #uses a reversed pre-order traversal if node == None: #1m return prev prev = self.helper(node.right, prev) #1m prev = self.helper(node.left, prev) #1m node.right = prev #1m node.left = None #1m prev = node #1m return prev def flatten(self): self.helper(self.root, None) # Task 3.3 – [4m] # Main Program BST = Tree(Node(5)) #1m copy the code BST.insert(Node(3)) BST.insert(Node(2)) BST.insert(Node(4)) BST.insert(Node(7)) BST.insert(Node(8)) print("In-order Traversal:" , end = " ") BST.in_order_traversal() #2m including correct output print() print("Pre-order Traversal:" , BST.pre_order_traversal()) BST.flatten() #1m Task 3.4 [2m] print("Linked list Traversal:" , end = " ") current = BST.root #2m including correct output while current: print(current.value, end = " ") current = current.right
JPJC 2024 Prelim P2 Marking Scheme H2 Computing 6 In-order Traversal: 2 3 4 5 7 8 Pre-order Traversal: [5, 3, 2, 4, 7, 8] Linked list Traversal: 5 3 2 4 7 8 Task 4.1 [3m] # Task 4.1 import sqlite3 conn = sqlite3.connect("Airport.db") # sql statement - 2m query = ''' CREATE TABLE `Flight` ( `flightNum` TEXT, `departure` TEXT, `destination` TEXT, `departureTime` TEXT, `arrivalTime` TEXT, PRIMARY KEY(`flightNum`) )''' conn.execute(query) conn.commit() conn.close() # execute and conn - 1m Task 4.2 [5 + 1m] # Task 4.2 import sqlite3 conn = sqlite3.connect(
Content continues in the PDF. Download PDF
Related notes
- JPJC 2024 JC2 Prelim Paper 2 QPExam Papers · 2024
- JPJC 2024 JC2 Year-End Exam H2 Computing Paper 1Exam Papers · 2024
- JPJC 2024 JC2 Year-End Exam H2 Computing Paper 1 Marking SchemeExam Papers · 2024
- 2024 ASR H2 Computing Prelim P1 SolExam Papers · 2024
- 2024 ASR H2 Computing Prelim P1 QnsExam Papers · 2024
- 2025 VJC H2 Computing Prelim Paper 1Exam Papers · 2025
- 2025 VJC H2 Computing Prelim Paper 1 SolutionsExam Papers · 2025
- 2025 TJC H2 Computing Prelim Paper 1 SolutionsExam Papers · 2025
- RVHS 2025 H2 Computing Prelim Paper 1Exam Papers · 2025
- RVHS 2025 H2 Computing Prelim Paper 1 SolutionsExam Papers · 2025
- RI 2025 H2 Computing Prelim Paper 1Exam Papers · 2025
- RI 2025 H2 Computing Prelim Paper 1 SolutionsExam Papers · 2025
- See all H2 Computing notes

