Qualification
Accredited
GCSE (9-1) and A LEVEL
COMPUTER SCIENCE
Coding challenges booklet
Coding challenges suitable for both
GCSE and A Level
Version 2
www.ocr.org.uk/computerscience
Contents
2
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
CONTENTS
Factorial Finder Page 5
Speed Tracker Page 5
Thief! Page 5
Classication Page 6
Fruit Machine Page 6
Unit Converter (temperature, currency, volume) Page 6
Credit Card Validator Page 6
Arithmetic test Page 6
Happy Numbers Page 6
Number Names Page 7
Regex Query Tool Page 7
Quiz Maker Page 7
Caesar Cipher Page 7
Events calendar Page 7
Pangrams Page 7
Kaprekar Page 7
Number Table Page 8
Years in a Range Page 8
Logic Gate Page 8
Palindromes Page 8
Data Entry Page 9
Simple Life Calculator Page 9
Fibbing Page 9
Hack-proof Page 10
Ordering Page 10
Truth or not! Page 10
Word Subtraction Page 10
Name that Number Page 11
Item Merge Page 11
Year Addition Page 11
Forwards and Backwards Page 11
Code it up Page 11
Mor-se Coding Page 12
Whats the day? Page 12
Game of Chance Page 12
Triangulate Page 12
Fizz Buzz Page 13
Sing Along Page 13
Even more Odd Page 13
Base of Numbers Page 13
Contents
3
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
Prime Factorisation Page 14
Tilers mate Page 14
The meaning of life Page 14
Sudoku Page 14
Find the factorial Page 14
Complex Numbers Page 14
Happy Numbers =) Page 14
Reverse it Page 15
Fireworks Page 15
Mandelbrot Set Page 15
Text-speak converter Page 15
Is this card valid? Page 15
Mortgage Calculator Page 16
Dear Diary Page 16
Secret Ciphers Page 16
Page Scraper Page 17
Such meme, many like Page 17
Text based game Page 17
CSV File Utility Page 17
Get GIFy with it Page 18
Your name is… Page 18
R@nd0m P@ssw0rd generator Page 18
I like Pi Page 18
Galaxy song Page 18
Spam lter Page 19
Silly walks Page 19
What have the Romans ever done for us? Page 19
Semaphore Page 19
Beautiful soup Page 19
Of mice and men Page 19
Goldbach Page 20
Lists Page 20
Travel club Page 20
Checkmate checker Page 21
String permutation Page 21
Thats a lot of number Page 22
Fib on a chi Page 26
2 ddy Page 26
Printer problems Page 27
Happy Hopper Page 27
Introduction
4 © OCR 2016
A Level and GCSE (9-1) Computer Science Code Challenges Booklet
INTRODUCTION
These coding challenges provide real world problems for teachers and students to help develop
their coding skills.
For GCSE: responses only need command line interfaces, and focus on using the programming
techniques contained within the current specification.
For A Level: any solutions should have a graphical use interface created for it. Use of OOP
methodologies is to be encouraged, as many problems lend themselves to a class system.
This is an active document and likely to receive regular updates with challenges throughout the
lifetime of the specification.
We do not publish solutions, as there are many ways in which these problems could be solved.
Discussions regarding approaches are beneficial at a cohort/class level to encourage candidates
realisation that each problem has many unique solutions that will fulfill the success criteria that
have been identified. Where we do provide a solution - it should be used for discussion and
comment, rather than being taken as ‘the only and/or best way to solve the challenge.
Code Challenges
5
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
1
Factorial Finder
The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and
recursion.
2
Speed Tracker
Create a program that takes a time for a car going past a speed camera, the time going past the next one and the distance between them to calculate the average speed for the car
in mph. The cameras are one mile apart.
Extensions:
1. Speed cameras know the timings of each car going past, through number plate recognition. Valid number plates are two letters, two numbers and three letters afterwards, for
example XX77 787. Produce a part of the program that checks whether a number plate matches the given pattern. Tell the user either way.
2. Create a program for creating a file of details for vehicles exceeding the speed limit set for a section of road. You will need to create a suitable file with test data, including
randomised number plates and times. You will then use the code you’ve already written to process this list to determine who is breaking the speed limit (70mph) and who has
invalid number plates.
3
Thief!
A thief has managed to find out the four digits for an online PIN code, but doesn’t know the correct sequence needed to hack into the account.
Design and write a program that displays all the possible combinations for any four numerical digits entered by the user. The program should avoid displaying the same
combination more than once.
Submit a fully detailed Showcase for your program.
4
Classification
A simple classification system asks a series of Yes/No questions in order to work out what type of animal is being looked at.
Eg Does it have 4 legs? Does it eat meat? Does it have stripes?
These systems can often be drawn using a tree structure. Carry out some simple research on classification trees, then write a program to help the user decide between the
following:
horse, cow, sheep, pig, dog, cat, lion, tiger, whale, dolphin, seal, penguin, ostrich, sparrow, spider, ant, bee, wasp, termite, octopus, squid
Is there a better way to do this than using 101 IF...ELSE...END IFs?
Develop your classification system for your own area of interest: pop bands; pokemon; cars; footballers; teachers; diseases etc.
Code Challenges
6
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
5
Fruit Machine
Write a program to simulate a Fruit Machine that displays three symbols at random from Cherry, Bell, Lemon, Orange, Star, Skull.
The player starts with £1 credit, with each go costing 20p. If the Fruit Machine rolls two of the same symbol, the user wins 50p. The player wins £1 for three of the same and £5 for 3
Bells. The player loses £1 if two skulls are rolled and all of his/her money if three skulls are rolled. The player can choose to quit with the winnings after each roll or keep playing until
there is no money left.
6
Unit Converter (temp, currency, volume)
Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then
make the conversion.
7
Credit Card Validator
Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into
how credit cards use a checksum).
8
Arithmetic test
A primary school teacher wants a computer program to test the basic arithmetic skills of her students. Generate random questions (2 numbers only) consisting of addition, subtraction,
multiplication and division.
The system should ask the student’s name and then ask ten questions. The program should feed back if the answers are correct or not, and then generate a final score at the end.
Extensions:
1. Extend your program so that it stores the results somewhere. The teacher has three classes, so you need to enable the program to distinguish between them.
2. The teacher wants to be able to log student performance in these tests. The teacher would like the program to store the last three scores for each student and to be able to
output the results in alphabetical order with the student’s highest score first out of the three.
9
Happy Numbers
A happy number is defined by the following process:
Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops
endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display
an example of your output here. Find the first eight happy numbers.
Code Challenges
7
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
10
Number Names
Show how to spell out a number in English. You can use a pre-existing implementation or make your own, but you should support inputs up to at least one million (or the maximum value of
your languages default bounded integer type, if thats less).
Extensions:
1. Create support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).
11
Regex Query Tool
This is a tool that allows the user to enter a text string and then in a separate text box enter a regex pattern. It will run the regular expression against the string and return any
matches or flag errors in the regular expression.
12
Quiz Maker
Make an application which takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the
quizzes.
13
Caesar Cipher
Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter
with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts “HI” to JK”, but key 20 encrypts “HI” to “BC”.
14
Events calendar
Create a menu driven program that allows the user to add or delete events from a list of dates and timings, just like a calendar. The program should warn you if any of the events
overlap when entering them.
Extensions:
1. Make it so that none of the events are hard-coded into the program
15
Pangrams
The quick brown fox jumps over the lazy dog”; note how all 26 English-language letters are used in the sentence.
Your goal is to implement a program that takes a series of strings (one per line) and prints either True (the given string is a pangram), or False if it is not.
16
Kaprekar
Determine whether a number is a Kaprekar number or not. See http://mathworld.wolfram.com/KaprekarNumber.html for more information.
Code Challenges
8
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
17
Number Table
Write a program that takes a symbol (+,-,* or /) and a natural number (>0) and makes a table like below for the operation from 0 to n
For this example the user has entered “+ 4”:
+ | 0 1 2 3 4
-------------------
0 | 0 1 2 3 4
1 | 1 2 3 4 5
2 | 2 3 4 5 6
3 | 3 4 5 6 7
4 | 4 5 6 7 8
18
Years in a Range
Write a program to count the number years in a range that has a repeated digit.
For example, 2012 has a repeated digit, but 2013 does not.
19
Logic Gate
Write a program that will give the students the answer to logic gate questions
For example:
Enter logic gate : OR
Enter first input : 1
Enter second input : 0
Result = 1
It should work for the logic gates OR, AND, XOR, NAND and NOR
20
Palindromes
Write a program that checks if a string entered by the user is a palindrome. A palindrome is a word that reads the same forwards as backwards like racecar
Code Challenges
9
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
21
Data Entry
Create a program that retrieves the membership details for a Rock Climbing Club. The program should take a range of details and then repeat them back, with headings, for
confirmation. Once confirmed, the program stores these details; else it clears them and allows a new input.
Extensions:
1. Allow entry of more than one membership
2. Store membership details to a file
3. Retrieve details from a file
4. Allow searching for stored users
22
Simple Life Calculator
Create a program that has 3 simple calculators within it, e.g. VAT, Tax and Times table. Allow users to choose which calculator they want to use and then carry out that calculation.
Extensions:
1. Use a an option menu so that the user can use more than one calculation before the program closes
23
Fibbing
Create a program that will calculate the Fibonacci Sequence to 10 places.
Extensions:
1. Allow the user to specify the number of places generated
2. Print this in reverse order
3. Display the total of all the numbers shown
Code Challenges
10
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
24
Hack-proof
Create a program that will only open a text document if the correct password is entered. The user should choose the username and password first and it should also verify the
password before allowing it.
Extensions:
1. Create a random password first of at least 8 characters first as a suggested password
2. Create a random password that contains at least a lowercase, uppercase and special character of at least 8 characters in length
3. Verify that the password given by the user matches:
a. The limits in Extension 1 above
b. The limits in Extension 2 above
25
Ordering
Create a program that allows entry of 10 numbers and then sorts them into ascending or descending order, based on user input.
Extension:
1. The user can input a word or string, and it arranges the string into alphabetical order. E.g. My Rabbit would be shown as abbimty . (Punctuation placement is not essential)
2. Repeat Extension 1, but include the sentence structure
26
Truth or not
Create a program that would take the number of inputs in a logic circuit and works out the number of output lines are needed for the truth table. Have it draw the truth table on
screen, using Columns for Inputs (A, B, C etc) and rows for the 1’s and 0’s.
Extension:
1. Fill in the rest of the truth table if you can!
27
Word Subtraction
Create a program that takes two strings/words. Then then converts this to an ASCII value and subtracts the values from each other.
Extension:
1. Also add a function that removes any characters in the second word that occur in the first word. E.g. Fish and Tin, would return “Fsh and Tn
Code Challenges
11
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
28
Name that Number
Telephone Keypads often have letters associated with each number. This means that 0141 117 2556 could be stored as 0141-CAT-DOOR. Create a program that can convert a phone
number with “letters” into one that only contains digits.
Extensions:
1. Can you develop your program so that only words in the dictionary are allowed?
29
Item Merge
Create a program that will compare two shopping lists from Week A and Week B”. It will return any unique items contained on the list.
Extension:
1. Append the two lists, with no repetition
2. Develop this to 4 Weeks of shopping an highlight the top 3 most popular items
30
Year Addition
Create a program that accepts a year in the format ####, e.g. 2015. The program then adds each digit of the year together and outputs the answer. E.g. 2015 becomes the output 8.
Extension:
1. Develop this so that the user can guess an integer value. If the MOD division is “0” they score a point, if it isn’t they can guess again, up to 3 attempts in total
31
Forwards and Backwards
Create a program that is able to detect if an input is the same as the reverse of the same input – i.e. a Palindrome
32
Code it up
Create a program that adds 25 to the value of each character of a string that a user enters. This new string should be saved and output.
Extension:
1. Develop your program to include a conversion from a coded’ string back to a normal string
2. Develop your program to allow the user to enter the number they want the string coded by (e.g. 12)
3. Develop your program to then decode a string, based on the coded value that the end user enters
Code Challenges
12
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
33
Mor-se Coding
Create a program that allows you to enter a string and encode it into Morse code, using ‘ . ‘ and ‘ - ‘ notation. Spaces between words should be replaced with the “|” (pipe) character.
Use a normal space for gaps between each character.
Extension:
1. Develop your program to translate from Morse to alphanumeric, using the standards above
34
What’s the day?
Design a program to take 3 inputs, one for day, one for month and one for year. Get your program to validate if this is an actual day, and, if it is, output the day of the week it is!
Hint: How do leap years affect this program?
35
Game of Chance
A user can bet on any number from 0 to 30. If its an even number they 2x their money back. If its a multiple of 10 they get 3x their money back. If its a prime number they get 5x
their money back. If the number is below 5 they get a 2x bonus.
Create a program that allows the user to guess a number. A random number is generated. If the guess == the random number then the user wins and gets a pay-out.
Combinations of the win scenarios should be catered for.. e.g. 20 wins 2 x 3 bonus = 6x their money.
Extension:
1. Develop your program to allow a user to enter the amount they want to place for that bet, and work out the resulting pay-out
2. Develop your program to store the user’s current balance and stop them from betting if they have no money left
3. Develop your program to finally incorporate validation so that they cannot enter into a negative about of cash ever, and that a bet should be between 1 and 10 units of
currency
4. Develop your program to allow multiple bets on different numbers
36
Triangulate
Create a program that accepts 3 sides of a triangle. It then works out if these sides form a triangle, and if so, what type of triangle (e.g. Scalene, Isosceles, Right-Angle….)
Extension:
1. Develop your program to allow 2 sides of a triangle and an angle, to work out the length of the missing side
Code Challenges
13
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
37
Fizz Buzz
Create a program that replicates the famous game Fizz Buzz. The program will take an input, e.g. 20, and then print out the list of Fizz Buzz up to and including that number, where:
• Any multiple of 3 is replaced by the word ‘Fizz
• Any multiple of 5 is replaced by the word ‘Buzz
• Any multiple of both 3 and 5 is replaced by the word ‘FizzBuzz
Extension:
1. Replace any prime number with the word ‘OOPS!’
2. Allow the user to enter the base numbers that they want to replace words with. E.g. 2 and 3, which would mean:
• Anymultipleof2isreplacedbytheword‘Fizz
• Anymultipleof3isreplacedbytheword‘Buzz
• Anymultipleofboth2and3isreplacedbytheword‘FizzBuzz
38
Sing Along
Create a program that prints the lyrics to the song ‘10 green bottles in as few lines of code as possible.
Extension:
1. Develop this program so that you can enter any starting number and it will count down from there
39
Even more Odd
Create a program that accepts and random integer array (at least 10 integers) and orders them firstly by size, (small to large), and then puts all the even numbers AFTER the odd
numbers within the array. It then echos the original array and the modified array to screen. E.g. an array 1,2,3,4,5,6,7,8,9,10 would be output 1,3,5,7,9,2,4,6,8,10.
Extension:
1. Develop your program to allow Character input as well, and these come before the integers, and are listed in reverse alphabetical order
40
Base of Numbers
Create a program that converts a denary number into its hexadecimal equivalent.
Extension:
1. Allow the user to specify the base that they want to convert the number into, using an integer, e.g. 16 for Hexadecimal
Code Challenges
14
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
41
Prime Factorisation
Have the user enter a number and find all Prime Factors (if there are any) and display them.
Extension:
• Havetheprogramfindprimenumbersuntiltheuserchoosestostopaskingforthenextone.
42
Tilers mate
Have the user enter the Width and Length of the floor and have the program calculate the total cost of tiles it would take to cover a floor plan using a cost entered by the user (per
tile or metre
2
).
Extension:
• Havetheprogrammeofferdifferenttypesoftileswithdifferentcostsandtelltheuserthecost.
• HavetheprogrammetakeintoaccountthecostofgroutandlabourtogiveacustomeraquotewithandwithoutVAT.
43
The meaning of life
Have the program make an animation of the game of life (https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life).
Extension:
• Lettheusersetuptheinitialstate
Let the user change cells while the animation is running
44
Sudoku
Have the program solve a Sudoku (https://en.wikipedia.org/wiki/Sudoku).
45
Find the factorial
The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and
recursion.
46
Complex Numbers
Have the programme show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs
of these operations.) Print the results for each operation tested to screen.
47
Happy Numbers =)
A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the
number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that
do not end in 1 are unhappy numbers. Have the programme find the first 8 happy numbers.
Code Challenges
15
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
48
Reverse it
Have the programme allow a user to enter some text and then the programme will reverse it and print it back to the screen.
Extension:
• Havetheprogrammecountthevowelsandconsonantsandprintthesetoscreen.
• Havetheprogrammecheckifthetextisapalindrome(itisthesameforwardsasitisbackwardse.g“racecaror“hannah”).
49
Fireworks
Make an animation of a firework display, with rockets, Catherine wheels etc.
Extension:
• Lettheuserspecifythenumber,colour,timingandlocationoffireworks.
50
Mandelbrot Set
Draw a Mandelbrot set (http://mathworld.wolfram.com/MandelbrotSet.html).
Extension:
• Incolour
• Withananimation
• Allowtheusertozoomin
51
Text-speak converter
Set up a text-speak to English dictionary and have the program convert input from text-speak to English. (“lol” to “laugh out loud etc)
Extension:
• Read in the text from a file
Allow the user to add new entries in the dictionary
52
Is this card valid?
Have the programme take in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid
number (look into how credit cards use a checksum).
***Don’t use any real card details***
Code Challenges
16
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
53
Mortgage Calculator
Have the programme calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay
back the loan.
Extension:
• Addanoptionforuserstoselectthecompoundinginterval(Monthly,Weekly,Daily,Continually).
• Addinfunctionalitytodealwithoverpaymentsatagiven%eachmonth.
54
Dear Diary
Have the programme allow people to add comments or write diary entries. It should add timestamps to all entries. Could also be made into a shout box (https://en.wikipedia.org/
wiki/Shoutbox).
Extension:
• Adddatestampstoeachpost.
• Embedyourprogrammeinawebpage.
• Havetheprogrammesavethediaryentriesexternally.
55
Secret Ciphers
Have the programme encrypt messages using one of the following ciphers:
• Vigenere
• Vernan
• Ceasar
The cipher can ignore numbers, symbols and whitespace.
Extension:
• CreateseparatefunctionsforeachCipherandallowtheusertochoosewhichonetouse.
• Havetheprogrammedecryptmessagesalso.
• Havetheprogrammeemailtheencryptedmessagetoafriend.
Code Challenges
17
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
56
Page Scraper
Have the programme connect to a site and pulls out all the links, or images, and save them to a list.
Extension:
• Organizetheindexedcontentanddon’tallowduplicates.
• Haveitputtheresultsintoaneasilysearchableindexfile.
57
Such meme, many like
Have the programme display a blank meme template (https://imgflip.com/memetemplates) and allow the user to add their own text (don’t forget to use Impact as the font).
Extension:
• Displaythefinishedmemesinawebpage
• Havesuggestionsaboutthedifferentmemesonhowtowritethemproperly
58
Text based game
Create a text based game like Zork. Have the programme take the users name and use it to tell the story. Have the programme allow a non-linear progression through the various
rooms. The user should have at least 2 choices per room. You will want to plan this one with a flowchart first!
Extension:
• Haveeachroomasaseparatefunction.
• Addaninventorysystemsoyoumustcollectakeytogetthroughacertaindooretc.
59
CSV File Utility
Have the programme read a .CSV file of records, sort them, and then write them back to the file. Allow the user to choose various sorting algorithms based on a chosen field.
Code Challenges
18
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
60
Get GIFy with it
Have the programme convert small video files into GIFs. Have a look at: http://zulko.github.io/blog/2014/01/23/making-animated-gifs-from-video-files-with-python/ for a tutorial.
Extension:
• Cropthevideo
• Freezearegion
• MakeyourGIFtimesymmetrical
• Addsometext
• Removethebackground
61
Your name is…
Have the programme ask for your name, age and form. Have it tell them the information back in the format:
Your name is (blank), you are (blank) years old, and you are in form (blank).
Extension:
• Havetheprogrammestorethisinformationinanexternalfile
62
R@nd0m P@ssw0rd generator
Have the programme create random strong passwords mixing upper and lower case, symbols and numbers.
Extension:
• HavethepasswordalsouseASCIIcharacters
• Havethepasswordsstoredinanexternalfile
63
I like Pi
Have the programme calculate pi to at least 30 decimal places.
64
Galaxy song
Use graphics and random functions to draw an imaginary night sky filled with stars.
Extension:
• Addthemilkyway
Code Challenges
19
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
65
Spam filter
Take a list of dishes from a menu and add “spam to them. See https://en.wikipedia.org/wiki/Spam_(Monty_Python).
Extension:
• Experimentwithaddingspamatthebeginning,endandallplacesin-between
66
Silly walks
Draw a random walk where each step of equal length is either up, down, right or left with equal probability. See https://en.wikipedia.org/wiki/Random_walk.
Extension:
• ModelBrownianmotion(https://en.wikipedia.org/wiki/Brownian_motion) in 2 dimensions with several particles
• Fillyourscreenwithaspacefillingcurve(http://mathworld.wolfram.com/Plane-FillingFunction.html)
67
What have the Romans ever done for us?
Have the user enter a number and print it out in Roman numerals.
68
Semaphore
Have the user enter some text and make an animation of it converted into semaphore (https://en.wikipedia.org/wiki/Flag_semaphore).
69
Beautiful soup
Use the BeautifulSoup and requests Python packages to print out a list of all the article titles on the BBC News (http://www.bbc.co.uk/news)
This may help: http://www.pythonforbeginners.com/beautifulsoup/beautifulsoup-4-python
70
Of mice and men
Have the programme allow a user to play the “mice and men game. The game works like this:
Randomly generate a 4-digit number. Ask the user to guess a 4-digit number. For every digit that the user guessed correctly in the correct place, they have a “mouse. For every digit
the user guessed correctly in the wrong place is a “man Every time the user makes a guess, tell them how many “mice and “men they have.
Once the user guesses the correct number, the game is over. Keep track of the number of guesses the user makes throughout the game and tell the user at the end.
Extension:
• Dealwith“miceand“mouseand“manand“men”properly.
Code Challenges
20
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
71
Goldbach
Goldbachs conjecture says that every positive even number greater than 2 is the sum of two prime numbers. Example: 28 = 5 + 23. It is one of the most famous facts in number
theory that has not been proved to be correct in the general case. It has been numerically confirmed up to very large.
Write a predicate to find the two prime numbers that sum up to a given even integer.
72
Lists
Create a list containing all integers within a given range. Insert an element at a given position into a list. Extract a given number of randomly selected elements from a list and create
a list of lists. Sort the list of lists according to the length of sublists.
73
Travel club
A group of people are member of a travel club. The group shares expenses equally but it is not practical to share every expense as they happen, so all expenses are collated (such
as taxis, train tickets etc) after the trip and the member cost is shared to within 1% between the group. Create a programme that computes the net cost from a list of expenses and
works out the minimum amount of money that must change hands in order for everybody to have paid the same amount (within 1%).
Code Challenges
21
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
74
Checkmate checker
Create a programme that checks whether a King is in check in a given chess game configuration.
Movement examples are shown below, grey pieces indicate the positions where the piece can capture another piece:
Pawn Castle Bishop Queen King Knight
There will be an arbitrary number of board configurations in the input, each consisting of eight lines of eight characters each. A ``. denotes an empty square, while upper- and
lowercase letters represent the pieces as defined above. There will be no invalid characters and no configurations where both kings are in check. You must read until you find an
empty board consisting only of ``. characters, which should not be processed. There will be an empty line between each pair of board configurations. All boards, except for the
empty one, will contain exactly one white king and one black king.
For each board configuration read you must output one of the following answers:
Game #d: white king is in check.
Game #d: black king is in check.
Game #d: no king is in check.
where d stands for the game number starting from 1.
75
String permutation
Given two strings x and y, print the longest string a of letters such that there is a permutation of a that is a subsequence of x and there is a permutation of a that is a subsequence of y.
Code Challenges
22
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
76
That’s a lot of number
Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
74324986199524741059474233309513058123726617309629
91942213363574161572522430563301811072406154908250
23067588207539346171171980310421047513778063246676
89261670696623633820136378418383684178734361726757
28112879812849979408065481931592621691275889832738
44274228917432520321923589422876796487670272189318
47451445736001306439091167216856844588711603153276
70386486105843025439939619828917593665686757934951
62176457141856560629502157223196586755079324193331
64906352462741904929101432445813822663347944758178
92575867718337217661963751590579239728245598838407
58203565325359399008402633568948830189458628227828
80181199384826282014278194139940567587151170094390
35398664372827112653829987240784473053190104293586
86515506006295864861532075273371959191420517255829
71693888707715466499115593487603532921714970056938
54370070576826684624621495650076471787294438377604
53282654108756828443191190634694037855217779295145
36123272525000296071075082563815656710885258350721
45876576172410976447339110607218265236877223636045
17423706905851860660448207621209813287860733969412
Code Challenges
23
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
81142660418086830619328460811191061556940512689692
51934325451728388641918047049293215058642563049483
62467221648435076201727918039944693004732956340691
15732444386908125794514089057706229429197107928209
55037687525678773091862540744969844508330393682126
18336384825330154686196124348767681297534375946515
80386287592878490201521685554828717201219257766954
78182833757993103614740356856449095527097864797581
16726320100436897842553539920931837441497806860984
48403098129077791799088218795327364475675590848030
87086987551392711854517078544161852424320693150332
59959406895756536782107074926966537676326235447210
69793950679652694742597709739166693763042633987085
41052684708299085211399427365734116182760315001271
65378607361501080857009149939512557028198746004375
35829035317434717326932123578154982629742552737307
94953759765105305946966067683156574377167401875275
88902802571733229619176668713819931811048770190271
25267680276078003013678680992525463401061632866526
36270218540497705585629946580636237993140746255962
24074486908231174977792365466257246923322810917141
91430288197103288597806669760892938638285025333403
34413065578016127815921815005561868836468420090470
23053081172816430487623791969842487255036638784583
11487696932154902810424020138335124462181441773470
63783299490636259666498587618221225225512486764533
67720186971698544312419572409913959008952310058822
95548255300263520781532296796249481641953868218774
Code Challenges
24
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
76085327132285723110424803456124867697064507995236
37774242535411291684276865538926205024910326572967
23701913275725675285653248258265463092207058596522
29798860272258331913126375147341994889534765745501
18495701454879288984856827726077713721403798879715
38298203783031473527721580348144513491373226651381
34829543829199918180278916522431027392251122869539
40957953066405232632538044100059654939159879593635
29746152185502371307642255121183693803580388584903
41698116222072977186158236678424689157993532961922
62467957194401269043877107275048102390895523597457
23189706772547915061505504953922979530901129967519
86188088225875314529584099251203829009407770775672
11306739708304724483816533873502340845647058077308
82959174767140363198008187129011875491310547126581
97623331044818386269515456334926366572897563400500
42846280183517070527831839425882145521227251250327
55121603546981200581762165212827652751691296897789
32238195734329339946437501907836945765883352399886
75506164965184775180738168837861091527357929701337
62177842752192623401942399639168044983993173312731
32924185707147349566916674687634660915035914677504
99518671430235219628894890102423325116913619626622
73267460800591547471830798392868535206946944540724
76841822524674417161514036427982273348055556214818
97142617910342598647204516893989422179826088076852
87783646182799346313767754307809363333018982642090
10848802521674670883215120185883543223812876952786
Code Challenges
25
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
71329612474782464538636993009049310363619763878039
62184073572399794223406235393808339651327408011116
66627891981488087797941876876144230030984490851411
60661826293682836764744779239180335110989069790714
85786944089552990653640447425576083659976645795096
66024396409905389607120198219976047599490197230297
64913982680032973156037120041377903785566085089252
16730939319872750275468906903707539413042652315011
94809377245048795150954100921645863754710598436791
78639167021187492431995700641917969777599028300699
15368713711936614952811305876380278410754449733078
40789923115535562561142322423255033685442488917353
44889911501440648020369068063960672322193204149535
41503128880339536053299340368006977710650566631954
81234880673210146739058568557934581403627822703280
82616570773948327592232845941706525094512325230608
22918802058777319719839450180888072429661980811197
77158542502016545090413245809786882778948721859617
72107838435069186155435662884062257473692284509516
20849603980134001723930671666823555245252804609722
53503534226472524250874054075591789781264330331690
Code Challenges
26
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
77
Fib on a chi
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
The 12th term, F12, is the first term to contain three digits.
What is the index of the first term in the Fibonacci sequence to contain 1000 digits?
78
2 fiddy
It is possible to make £2.50 in the following way:
1×£1 + 2×50p + 2×20p + 1×5p + 1×2p + 3×1p
Write a programme that works out all the different ways £2.50 can be made using any number of coins.
Code Challenges
27
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
79
Printer problems
A printing shop runs 16 batches (jobs) every week and each batch requires a sheet of
special colour-proofing paper of size A5.
Every Monday morning, the foreman opens a new envelope, containing a large sheet of
the special paper with size A1.
He proceeds to cut it in half, thus getting two sheets of size A2. Then he cuts one of them
in half to get two sheets of size A3 and so on until he obtains the A5-size sheet needed for
the first batch of the week.
All the unused sheets are placed back in the envelope.
At the beginning of each subsequent batch, he takes from the envelope one sheet of paper
at random. If it is of size A5, he uses it. If it is larger, he repeats the cut-in-half procedure until
he has what he needs and any remaining sheets are always placed back in the envelope.
80
Happy Hopper
A sequence of n > 0 integers is called a happy hopper if the absolute values of the differences between successive elements take on all possible values 1 through n - 1. E.g 1 4 2 3
is a happy hopper because the absolute differences are 3, 2, and 1, respectively. The definition implies that any sequence of a single integer is a happy hopper. Write a program to
determine whether each of a number of sequences is a happy hopper.
Code Challenges
28
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
COMPUTER SCIENCE ALPHABET
All the links below lead to rosettacode.org and have a challenge and then a solution for the vast majority of programming languages. Content is available under GNU Free Documentation
License 1.2 unless otherwise noted.
A Abstract type http://rosettacode.org/wiki/Abstract_type
Apply a callback to an array http://rosettacode.org/wiki/Apply_a_callback_to_an_array
Arithmetic/Integer http://rosettacode.org/wiki/Arithmetic/Integer
Arrays http://rosettacode.org/wiki/Arrays
Assertions http://rosettacode.org/wiki/Assertions
Associative array/Creation http://rosettacode.org/wiki/Associative_array/Creation
Associative array/Iteration http://rosettacode.org/wiki/Associative_array/Iteration
B Binary digits http://rosettacode.org/wiki/Binary_digits
Boolean values http://rosettacode.org/wiki/Boolean_values
C Call an object method http://rosettacode.org/wiki/Call_an_object_method
Character codes http://rosettacode.org/wiki/Character_codes
Classes http://rosettacode.org/wiki/Classes
Collections http://rosettacode.org/wiki/Collections
Command-line arguments http://rosettacode.org/wiki/Command-line_arguments
Comments http://rosettacode.org/wiki/Comments
Compound data type http://rosettacode.org/wiki/Compound_data_type
Concurrent computing http://rosettacode.org/wiki/Concurrent_computing
Copy a string http://rosettacode.org/wiki/Copy_a_string
Count in octal http://rosettacode.org/wiki/Count_in_octal
Create a two-dimensional array at runtime http://rosettacode.org/wiki/Create_a_two-dimensional_array_at_runtime
Constants http://rosettacode.org/wiki/Enforced_immutability
D Define a primitive data type http://rosettacode.org/wiki/Define_a_primitive_data_type
E Empty program http://rosettacode.org/wiki/Empty_program
Enumerations http://rosettacode.org/wiki/Enumerations
Code Challenges
29
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
F Factors of an integer http://rosettacode.org/wiki/Factors_of_an_integer
Filter http://rosettacode.org/wiki/Filter
Find limit of recursion http://rosettacode.org/wiki/Find_limit_of_recursion
Formatted numeric output http://rosettacode.org/wiki/Formatted_numeric_output
Function definition http://rosettacode.org/wiki/Function_definition
G Generic swap http://rosettacode.org/wiki/Generic_swap
H Hash from two arrays http://rosettacode.org/wiki/Hash_from_two_arrays
Hello world/Graphical http://rosettacode.org/wiki/Hello_world/Graphical
Hello world/Newline omission http://rosettacode.org/wiki/Hello_world/Newline_omission
Hello world/Standard error http://rosettacode.org/wiki/Hello_world/Standard_error
Hello world/Text http://rosettacode.org/wiki/Hello_world/Text
I Implicit type conversion http://rosettacode.org/wiki/Implicit_type_conversion
Include a file http://rosettacode.org/wiki/Include_a_file
Infinity http://rosettacode.org/wiki/Infinity
Inheritance/Multiple http://rosettacode.org/wiki/Inheritance/Multiple
Inheritance/Single http://rosettacode.org/wiki/Inheritance/Single
Input/user http://rosettacode.org/wiki/User_input/Text
Input loop http://rosettacode.org/wiki/Input_loop
Interactive programming http://rosettacode.org/wiki/Interactive_programming
L List comprehensions http://rosettacode.org/wiki/List_comprehensions
Literals/Floating point http://rosettacode.org/wiki/Literals/Floating_point
Literals/Integer http://rosettacode.org/wiki/Literals/Integer
Literals/String http://rosettacode.org/wiki/Literals/String
M Memory allocation http://rosettacode.org/wiki/Memory_allocation
Modulinos http://rosettacode.org/wiki/Modulinos
Multiline shebang http://rosettacode.org/wiki/Multiline_shebang
N Named parameters http://rosettacode.org/wiki/Named_parameters
Native shebang http://rosettacode.org/wiki/Native_shebang
Null object http://rosettacode.org/wiki/Null_object
O Optional parameters http://rosettacode.org/wiki/Optional_parameters
Code Challenges
30
Code Challenges BookletA Level and GCSE (9-1) Computer Science
© OCR 2016
P Parametric polymorphism http://rosettacode.org/wiki/Parametric_polymorphism
Parse command-line arguments http://rosettacode.org/wiki/Parse_command-line_arguments
Pick random element http://rosettacode.org/wiki/Pick_random_element
Polymorphism http://rosettacode.org/wiki/Polymorphism
Program name http://rosettacode.org/wiki/Program_name
Program termination http://rosettacode.org/wiki/Program_termination
R Random numbers http://rosettacode.org/wiki/Random_numbers
Real constants and functions http://rosettacode.org/wiki/Real_constants_and_functions
Return multiple values http://rosettacode.org/wiki/Return_multiple_values
S Scope modifiers http://rosettacode.org/wiki/Scope_modifiers
Scope/Function names and labels http://rosettacode.org/wiki/Scope/Function_names_and_labels
Simple windowed application http://rosettacode.org/wiki/Simple_windowed_application
Sleep http://rosettacode.org/wiki/Sleep
Special characters http://rosettacode.org/wiki/Special_characters
Special variables http://rosettacode.org/wiki/Special_variables
Start from a main routine http://rosettacode.org/wiki/Start_from_a_main_routine
String append http://rosettacode.org/wiki/String_append
String comparison http://rosettacode.org/wiki/String_comparison
String concatenation http://rosettacode.org/wiki/String_concatenation
String interpolation (included) http://rosettacode.org/wiki/String_interpolation_(included)
String length http://rosettacode.org/wiki/String_length
String prepend http://rosettacode.org/wiki/String_prepend
Strip comments from a string http://rosettacode.org/wiki/Strip_comments_from_a_string
Substring http://rosettacode.org/wiki/Substring
T Take notes on the command line http://rosettacode.org/wiki/Take_notes_on_the_command_line
Topic variable http://rosettacode.org/wiki/Topic_variable
U User input/Graphical http://rosettacode.org/wiki/User_input/Graphical
User input/Text http://rosettacode.org/wiki/User_input/Text
V Variables http://rosettacode.org/wiki/Variables
Variadic function http://rosettacode.org/wiki/Variadic_function
The small print
OCR is part of Cambridge Assessment, a department of the University of
Cambridge. For staff training purposes and as part of our quality assurance
programme your call may be recorded or monitored.
© OCR 2016 Oxford Cambridge and RSA Examinations is a Company
Limited by Guarantee. Registered in England. Registered office 1 Hills
Road, Cambridge CB1 2EU. Registered company number 3484466.
OCR is an exempt charity.
General qualifications
Telephone 01223 553998
Facsimile 01223 552627
Email general.qualications@ocr.org.uk
www.ocr.org.uk/alevelreform
OCR Customer Contact Centre
Wed like to know your view on the resources we produce. By
clicking on the ‘Like’ or ‘Dislike’ button you can help us to ensure
that our resources work for you. When the email template pops
up please add additional comments if you wish and then just click
‘Send’. Thank you.
Whether you already offer OCR qualifications, are new to OCR, or
are considering switching from your current provider/awarding
organisation, you can request more information by completing the
Expression of Interest form which can be found here:
www.ocr.org.uk/expression-of-interest
OCR Resources: the small print
OCR’s resources are provided to support the delivery of OCR
qualifications, but in no way constitute an endorsed teaching
method that is required by OCR. Whilst every effort is made
to ensure the accuracy of the content, OCR cannot be held
responsible for any errors or omissions within these resources.
We update our resources on a regular basis, so please check the
OCR website to ensure you have the most up to date version.
This resource may be freely copied and distributed, as long as
the OCR logo and this small print remain intact and OCR is
acknowledged as the originator of this work.
OCR acknowledges the use of the following content:
Square down and Square up: alexwhite/Shutterstock.com
Please get in touch if you want to discuss the accessibility of
resources we offer to support delivery of our qualifications:
resources.feedback@ocr.org.uk
Looking for a resource?
There is now a quick and easy search tool to help find free resources
for your qualification:
www.ocr.org.uk/i-want-to/find-resources/