44
2018 Answers The TCS Oxford Compu0ng Challenge

Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

2018Answers

TheTCSOxfordCompu0ngChallenge

Page 2: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

2

Working Group for the TCS Oxford Computing Challenge 2018:

:Daphne Blokhuis Rosanna Cretney Andrew Csizmadia Stuart Golodetz Peter Millican Dave Oostendorp Chris Roffey Eljakim Schrijvers Sue Sentance

The TCS Oxford Computing Challenge could not have been run this year without the generous support of Tata Consultancy Services and our National Organising Body, Oxford University.

I also want to thank Dave Oostendorp who has continued to work hard on developing the Blockly question types we have used in this Challenge.

Finally it is important to recognise all the School Coordinators who have to organise the time for the students to take part. In a busy school, finding an hour for a select set of students to sit quietly in front of a computer and be supervised is not an easy task.

Ian Menezes Chirag Nimavat Debraj Pal Chris Roffey Souradip Sanyal

Copyright 2018 TCS Oxford Computing Challenge – Licence: CC-BY-NC-SA 4.0

Question writing team:

Page 3: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

The TCS Oxford Computing Challenge is in its first year. It is an online challenge that asks invited students in the UK and English-speaking International Schools around the World to solve tasks using Computational Thinking skills and then provide coded solutions. It has come about because, through the Bebras Challenge, we have become aware of the incredible talent many of our students in the UK have and we felt we had to provide something to help encourage them to develop that talent further.

We hope students will prepare carefully throughout the year by using resources pointed to on tcsocc.uk and the archived challenges that are made freely available for all to use.

It is not a trivial task creating auto-marking computing tasks and the last two years have been spent developing these. Please note that although example answers are provided in the rest of this booklet, when it comes to programming there are usually many ways to crack a nut!

On the following pages you will find the 25 tasks used in the 2018 TCS Oxford Computing Challenge. Above each task is noted which age groups and at what level the tasks were used.

After each task there is an example answer, an explanation of how the answer could be obtained plus a section on how the tasks are related to Computational Thinking. Example answers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming languages. Python has been chosen because it is currently the most common text-based language being taught in UK schools. We have also mapped each task to up to three Computational Thinking Skills plus a Computer Science domain. This system is outlined below and is thanks to the work of Valentina Dagienė, Sue Sentance and Gabrielė Stupurienė:

Each task is assigned up to 3 Computational Thinking Skills from:

Abstraction (AB) Algorithmic Thinking (AL)Decomposition (DE)Evaluation (EV) Generalisation (GE)

Each task is assigned one Computer Science Domain from:

Algorithms and programmingData, data structures and representations Computer processes and hardwareCommunication and networkingInteractions, systems and society

Up to three Keyword Tags may also be added (in addition to the question type).

Introduction

Page 4: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

4

England and Wales Scotland Northern Ireland

Elite: Years 12 & 13 Seniors: Years 10 & 11 Intermediate: Years 8 & 9 Juniors: Years 6 & 7

Elite Years S5 & S6 Seniors: Years S3 & S4Intermediate: S1 & S2 Juniors: Years P6 & P7

Elite: Years 13 & 14 Seniors: Years 11 & 12Intermediate: Years 9 & 10Juniors: Years 7 & 8

It is our sincere hope that the Computational Thinking information provided will enhance the usefulness of this booklet for Computer Science teachers and their students. It is for this reason that this booklet is being distributed to as many schools as possible and being made available as a PDF with a Creative Commons licence allowing it to be shared freely as long as it is for non-commercial purposes.

The 2018 challenge was conducted in four age groups:

Invited students had to have achieved in the top 10% in their age group in the previous UK Bebras Challenge.

The challenge is completed online in schools under the supervision of teachers.

There were 15 tasks to be attempted in 1 hour.

Students were expected to attempt the first 10 tasks from Sections A and B and then try to solve one or two tasks from Section C.

The organisers wish to pass on a special thanks to all the teachers who have made it possible for their students to enter into this competition by taking on a huge amount of the necessary administration for us.

Keep informed by visiting tcsocc.uk

Introduction

Page 5: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

5

Contents

Long maze short program page 6

Toy car page 7

5 Star page 8

Tricky triangles page 9

Relativity page 11

Genie in a bottle page 12

Graphics Flag page 13

Turtle Flag page 14

Maximum page 15

NOR gate page 16

Black and white page 17

Concentric circles page 19

Hidden code page 20

Big crash page 22

Low gravity page 23

Second highest page 25

Lettuce face page 27

Adding cubes page 29

Palindromic integer page 30

Binary addition page 31

Is it safe? page 32

Parity check page 34

Unusual characters page 36

Sorting numbers page 38

STV page 40

Page 6: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

6

Juniors: Intermediates:

Seniors: Elite:

A A

A Robot has to find its own way from the Red Square to the Green Square.

It faces a long journey but can only store a program with a maximum of 4 code blocks.

Task:Write a program to get the robot to its destination.

Answer:Probably the only solution:

Explanation:The student needs to identify a simple pattern and then write the code with only four blocks to navigate through a long maze. This task involves finding the simplest possible algorithm. It demonstrates that sometimes, when we use iteration, very few instructions can produce a useful outcome.

It’s Computer Science:

Long maze short program

CT Skills - Algorithmic Thinking (AL) CS Domain - Algorithms and programming Tags - Blockly, Loops, Mazes

In mobile robotics, navigation is a common problem. Maze solving is not so common but requires similar Computational Thinking skills to be employed. To solve this problem, an autonomous robot is used. Mazes can be of different kinds: having loops, without any loops, grid systems or without a grid system. In this loop maze algorithm, the robot is instructed to prioritise using a minimum number of instructions. Similar thinking skills are required by programmers when optimising programs.

A A

Page 7: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

7

Explanation:

It’s Computer Science:CT Skills - Abstraction(AB), Algorithmic Thinking (AL), Generalisation(GE)CS Domain - Algorithms and programming Tags - Blockly, Mazes

The programming languages taught in schools are generally high level languages. They have a lot of useful functions and commands built in. These work because the designers of the languages have made these commands available by programming them in low level languages or by joining simple commands together to make a new one. There is a popular saying in Computer Science: "Standing on the shoulders of giants!"

A toy car has broken steering: It can only turn right.

Task:Write a program, for the robot, in the workspace below. (Your program must be made from 12 blocks or less.)

This is a fairly simple navigation problem but with a command missing in the language. One way of solving this problem is to create a new block with a function to re-instate the missing block!

Answer:

Juniors: Intermediates:

Seniors: Elite:

Toy car A

Page 8: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

8

Answer:

It’s Computer Science:CT Skills - Algorithmic Thinking (AL) , Evaluation (EV), Generalisation (GE)CS Domain - Algorithms and programming Tags - Blockly, Turtle

In this task we are asked to produce an algorithm to produce a geometric shape. Solving problems in Computer Science is often best approached by sitting down with pen and paper before starting to write code, however, there is more than one way to cook an egg!

A

Below is some information about how to construct a 5 Star:

Task:

Write a program to draw the 5 Star shown on the right.

One possible solution is:

5 Star Juniors: Intermediates:

Seniors: Elite:

A

Explanation:One tactic that can be employed to solve this task is to ignore the supplied diagram, with all its useful angles, and just try and estimate the angles and then narrow in on the correct value. Unfortunately, in this instance, the answer can look correct even when it is out by a tiny amount. However, if this tactic is employed, it is then possible to compare the angles in the nearly correct solution with those in the supplied diagram.

e.g. 190 should most likely be 180 (half of 360)

Page 9: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

9

Something is wrong with this program!

It is supposed to produce the pattern of triangles as shown in the output space but it goes of at all sorts of angles. 

You can Run the provided code to see what actually happens. (It is a good idea to click the Fast button before running the code!)

Task:

Amend the code to draw the required pattern.

Juniors: Intermediates:

Seniors: Elite:

Tricky triangles A A

Page 10: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

10

Answer:

Explanation:This is a debugging task. There is a clue in the question text: "goes off at all sorts of angles". One way of solving this is to run the given program at a slow pace and notice that the first turn is no where near sharp enough. The turn blocks provided in the toolbox for this task only have a few options so it should not be too long before 1200 is tried. When the first turn is successfully corrected it becomes evident that 72o is not a very "triangular" number so perhaps all three angles need to change form 720 to 1200

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Algorithms and programming Tags - Blockly, Turtle, Debugging, Fractals

Debugging programs written by yourself or other programmers is an important skill. There are many tactics a programmer can employ. Here, by pressing the slow button, it is possible to do a kind of stepping through analysis to spot and fix the bugs.

Types of Programming Errors: http://www.bbc.co.uk/education/guides/zgmpr82/revision/5 Debugging: http://www.bbc.co.uk/education/guides/zgmpr82/revision/6

Juniors: Intermediates:

Seniors: Elite:

Tricky triangles A A

The three "Turn right 720" blocks need to be edited so that they turn right 1200.

Page 11: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

11

Juniors: Intermediates:

Seniors: Elite:

Relativity A A

Albert Einstein's famous equation tells us how much energy (E is in joules) is equivalent to a mass of matter (m is in grams):

E = mc2

c is the speed of light, which is 300000000 m/s

For example, 10g of matter is equivalent to 900000000000000000 joules of energy.

Task:

Complete the function provided so that it outputs E (as an integer) given any positive value of m between 1 and 100. Do this by providing the code to perform the calculation above.

Do not alter any of the blocks provided.

Explanation:A mathematical algorithm needs to be worked out. This can be done in one step.

It’s Computer Science:CT Skills - Evaluation (EV)CS Domain - Algorithms and programming Tags - Blockly, Functions

Converting mathematical or scientific formulae into programming code is very common. Thankfully it is one of the easiest things to accomplish when writing programs.

Answer:One possible solution is:

Page 12: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

12

Answer: Explanation:

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Algorithms and programming Tags - Blockly, Mazes

Debugging code that does unexpected things an important skill.

Types of Programming Errors: http://www.bbc.co.uk/education/guides/zgmpr82/revision/5 Debugging: http://www.bbc.co.uk/education/guides/zgmpr82/revision/6

A

The genie needs to go back in its bottle.

Task:Write a program, in the workspace below, that gets the genie to the green square.

(Your program must be made from 16 blocks or less.)

First impressions would suggest that this task looks like it will be a very tricky one. How do we get the robot to decide to turn into the bottle across a void? However, the task featured is found in the easy set of tasks so perhaps there is an easier way: With a loop and an if-else block it is possible to drive the robot straight to the target in considerably less than 16 blocks.

Juniors: Intermediates:

Seniors: Elite:

Genie in a bottleA

One possible solution is:

Page 13: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

13

Answer: Explanation:

It’s Computer Science:

CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Algorithms and programming Tags - Blockly, Graphics, Precedence

The graphics module allows students to draw images with a traditional coordinate system. They can compare this system with how easy it is to achieve the same output using a turtle system in the Turtle flag task. Most modern programming languages have a simple drawing system that draws shapes and lines to a canvas.

In this task precedence of instructions is also important so that shapes processed later on appear above those processed previously.

Eliza is trying to design a new flag for her club.

Task: Write a program, using the commands available, to draw the flag shown. Hint: If you need to see below a shape that you have created, try right-clicking on its code block, select Disable Block and then re-run your program.

Juniors: Intermediates:

Seniors: Elite:

Graphics flagA

A

One possible solution is: It is necessary that the four blocks used to create this image all have different identifiers. It is important that they appear in the correct order in your program, if the lines are not to be obscured by the squares. However, when building the solution it is easiest to program the lines before the squares because otherwise the squares obscure the target image. Finally it is important to get the image perfect rather than an approximation. At this point disabling blocks of code, so that one shape can be focussed on at a time, is a helpful technique. These tasks can take a long time if approached without too much thought. They can also be done exceedingly quickly if the student has mastered the tools and takes a thought through approach.

Page 14: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

14

Eliza is trying to come up with a new flag design for her club like this one:

Task:Write a program to draw the flag shown.

(Hint: All Move, Turn and Set widths to values should all be multiples of 10)

Answer: Explanation:

It’s Computational Thinking:

The two red lines for the flag are relatively easy to produce with the tools available. Filling in the background is less easy. The ragged edges to the flag provide a hint that 6 lines are needed and this suggests that the quickest way to do this might be with a loop.

Juniors: Intermediates:

Seniors: Elite:

Turtle flag C B

B

CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV) CS Domain - Algorithms and programmingTags - Blockly, Loops, Turtle

Although turtle graphics is part of the Logo programming language developed to help young programmers learn computational thinking, there are circumstances where it is not as easy to use as more traditional programming systems. Compare this task with the Graphics flag task which asks students to draw a similar flag using shapes on a coordinate based canvas.

One possible solution:

Page 15: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

15

Task: Complete the function provided so that it outputs the largest number from any given five positive integers.

Do not alter any of the blocks provided.

Juniors: Intermediates:

Seniors: Elite:

Maximum B B

Answer:One possible solution:

Explanation:

It’s Computer Science:

There are a variety of ways of solving this problem. One way would be to add the inputs to a list and then re-order it. Another method is provided as the example answer. When using an if statement algorithm to solve this problem it is important not to fall in to the trap of using if-else blocks. This is because all of the inputs have to be tested against the current maximum; none of them must be missed.

CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV), Generalisation (GE)CS Domain - Algorithms and programming Tags - Blockly, Functions, Sorting, If conditions

Container variables are an important and powerful data-type (in Blocky we use lists) and can be used to good effect in algorithms to solve these type of problems. Alternatively a good knowledge of selection techniques can be used. This task demonstrates again that there is often more than one valid way of solving the same problem. There is more than one way to peel a potato.

Page 16: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

16

CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Algorithms and programming Tags - Blockly, Functions, Logic gates

Logic statements are usually available to a programmer, but not in this problem! Here you were asked to program one just using if statements. When a programmer uses an OR, NOT or AND keyword in their program they are asking the computer to run a logic circuit (called a logic gate in electronics).

Boolean Logic and Logic Gates: http://www.bbc.co.uk/education/guides/zc4bb9q/revision

Answer:

Explanation:

Using an if-else clause, the programmer has to ensure that the output required for each input combination is satisfied.

It’s Computer Science:

One possible solution:

Juniors: Intermediates:

Seniors: Elite:

NOR gate B B

A A

NOR gates return True or False when when two variables are compared.  In a logic circuit found in computers the inputs and outputs are high or low voltage but we can represent these as 1 for high and 0 for low. A NOR gate returns 1 if neither of the variables input are high (1). A NOR gate returns 0 if one or more of the variables input are high (1).

Task: Complete the function supplied so that it works like a NOR gate, using the blocks provided.

Page 17: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

17

The photo shown is a PNG. One way of creating a black and white version of this image is to set the Red, Green and Blue components of each pixel to be the average of their three values. This is how the black and white image, shown below, is made:

Task: Write a program to convert the colour image into a black and white image like the one shown.

Juniors: Intermediates:

Seniors: Elite:

Black and white B

Page 18: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

18

Juniors: Intermediates:

Seniors: Elite:

Black and white B

Answer:One possible solution:

CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV), Generalisation (GE)CS Domain - Interactions, systems and society Tags - Blockly, Loops, RGB values, Image processing

We live in a very graphical world where images are everywhere. Computers use a number of formats to store and compress images. Several programming languages provide tools for accessing the R,G,B values in images and then apply mathematical operations to them. These can produce many of the effects commonly found in Photo manipulation tools.

Explanation:

The for P in pixels block loops through each pixel in the supplied image in order. It starts from the top left pixel. Inside the loop, the R,G,B values of the pixel need to be found, averaged and then the average value used to replace the current value of the R,G,B values of the current pixel. As these values are now the same for the current pixel, it will now be a grey colour. By looping through all pixels, the whole image will be converted to grey scale.

It’s Computer Science:

Page 19: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

19

Juniors: Intermediates:

Seniors: Elite:

Concentric circles B

Answer:

Task:Write a program to create the pattern shown using shape blocks.

Hint1: All variable values end in a 5 or 0. Hint2: If you need to see below a shape that you have created, try right-clicking on its code block, select Disable Block and then re-run your program.

One possible solution:Explanation:

It’s Computer Science:

CT Skills - Algorithmic Thinking (AL), Evaluation (EV) CS Domain - Algorithms and programming Tags - Blockly, Precedence, Graphics

The graphics module allows students to draw images with a traditional coordinate system. You might want to compare this system with how easy it would be to achieve the same output using a turtle system. Most modern programming languages have a simple drawing library available which provides tools to draw shapes and lines to a canvas.

In this task precedence of instructions is also important as shapes processed later on appear above previous ones.

It is necessary for the three blocks, used to create this image, to all have different identifiers. It is also important that they appear in the correct order. However, when building the solution it is easiest to program the upper most circles first to avoid obscuring the target image.

Page 20: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

20

Juniors: Intermediates:

Seniors: Elite:

Hidden code B B A

The image shown is a PNG. Its pixels are defined by four values:Red 0 to 255Green 0 to 255Blue: 0 to 255 A (transparency): 0 to 255 Hidden in the Blue data of the image is a secret code.

Task: Write a program to reveal the code word and then enter it as your answer below?

Answer:The hidden word is salad.

Explanation:

An initial attempt at this task might be to change the B value of all the pixels in the image to 255. This will result in an image with a distinct blue tinge. The hidden code will not be found though. At this point, reflecting on the phrase: "Hidden in the Blue data" should lead to an understanding of why this did not work: All the blue data is now the same so the message will be lost. What about boosting the strength of all the blue pixels. Choosing any multiplier above 10 will reveal the answer required.

Page 21: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

21

Juniors: Intermediates:

Seniors: Elite:

Hidden code B B A

It’s Computer Science:

CT Skills - Algorithmic Thinking (AL), Evaluation (EV), Generalisation (GE)CS Domain - Interactions, systems and society Tags - Blockly, Loops, RGB values, Image processing

We live in a very graphical world where images are everywhere. Computers use a number of formats to store and compress images. Several programming languages provide tools for accessing the R,G,B values in images and then apply mathematical operations to them. These can produce many of the effects commonly found in Photo manipulation tools.

In this task a code word has been hidden in the image by finding a black area of the image and writing a word with very low values for the blue component of the pixels. By boosting the blue values the word becomes magically visible!

Page 22: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

22

CT Skills - Abstraction(AB), Algorithmic Thinking (AL), Evaluation (EV)CS Domain - Algorithms and programming Tags - Blockly, If conditions, Movie

Movies are just many frames of individual images repeated one after another. Animations, have to be stored efficiently on websites to avoid the need for users having to download large files. The system used here is one way of doing this; storing the code required to construct each frame, rather than storing pixel data for thousands of frames.

Answer:One possible solution:

Explanation:

Press the Run button to see the shadow of a movie that shows two rocks colliding.

Task:Write a program to produce this movie.  Hint: All variable values, except number of sides, are multiples of 10.

It’s Computer Science:

Juniors: Intermediates:

Seniors: Elite:

Big crash C B

B

The coded solution has to be worked out carefully through careful observation. Being able to run the target movie, pause it and then scrub through it makes it possible to study the important moments of change.

Page 23: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

23

Fleageuse is a small planet found in a galaxy far far away.

A model of how a purple ball, thrown horizontally, would act in Fleageuse's dense atmosphere is required. Press the Run button to see how it should work. The distance the ball falls can be calculted using this equation:      distance fallen = 0.5 x g x t2 where t is time and g is the acceleration of gravity on Fleageuse (which is unfortunately not currently known).

Juniors: Intermediates:

Seniors: Elite:

Low gravity C C

B A

Task:Write a program that produces the movie required, to illustrate how gravity acts on this planet. 

Page 24: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

24

Answer:

Explanation:

It’s Computer Science:CT Skills - Abstraction (AB), Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV), Generalisation (GE) CS Domain - Algorithms and programming Tags - Blockly, Modelling, Movie

Movies are just many frames of individual images repeated one after another. Animations, have to be stored efficiently on websites to avoid the need for users having to download large files. The system used here is one way of doing this: storing the code required to construct each frame, rather than storing pixel data for thousands of frames.

Very often programming requires us to encode mathematical or scientific formulae. The good thing is that, when provided with these formulae, writing them into our programs is usually very simple.

The coded solution has to be worked out carefully through careful observation. It is clear that the velocity of the purple ball is constant in the x-axis and that it takes the full 101 frames to cross the canvas. This can be added to the program and then the y-axis movement can be programmed separately.

To do this we are using the equation provided. We can simplify 0.5 x g into one variable because we don't know what the value for g is anyway. If we assume g is 1 and use 0.5 we will find, on testing, that the ball falls far to fast. Systematic trial and error should enable us to quickly find the value required to multiply by t2 so that the ball follows the one in the shadow movie.

Juniors: Intermediates:

Seniors: Elite:

Low gravity C C

B A

One possible solution:

Page 25: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

25

Task: Complete the function provided so that it outputs the second highest value from any five given integers.(Do not alter any of the blocks provided.)

Example:If the list of numbers sent to the function is 0,6,6,3,5 then the function should return 5 (not 6).

Juniors: Intermediates:

Seniors: Elite:

Second highest C C

B B

Here is one possible answer:Answer:

Explanation:

Page 26: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

26

Juniors: Intermediates:

Seniors: Elite:

Second highest C C

B B

Explanation:

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Evaluation (EV) CS Domain - Algorithms and programming Tags - Blockly, Functions, If conditions

Many professionally produced programs work well at first and then, over time, an unforeseen set of inputs causes something to go wrong. Indeed, even in Bebras and the TCS Oxford Computing Challenge, we have limited facilities to test tasks and then let them loose on hundreds of thousands of students. Yes we have occasionally fallen foul of this problem too!

This task mirrors this circumstance: Our first impression is a good one but a little more thought is required to make sure that our function does exactly what is required.

The first impression of this task might be that it appears to be quite an easy task. Just sort the list and choose the second number in the sorted list. Careful reading of the question and examination of the example provided shows that this is not quite all that is required. It is the second highest value that needs to be output which is, in some cases, not the same as the second item in a sorted list.

Once this is realised (or programmed and marked wrong!) then a new algorithm must be developed. Sorting the list could still be used to find the highest value of the 5 numbers but the example answer instead takes advantage of the fact that there are only five numbers and uses the same method to find the highest and the second highest valued numbers in the list.

Page 27: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

27

Juniors: Intermediates:

Seniors: Elite:

Lettuce face C C

B B

The photo provided is a PNG.

If the right hand side pixels in the image are replaced with a mirror image of the left hand side pixels it creates an image like the one shown on the right below:

 

Task:Write a program to convert the original image into the one shown.

Answer:One possible solution:

Page 28: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

28

Juniors: Intermediates:

Seniors: Elite:

Lettuce face C C

B B

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Interactions, systems and society Tags - Iteration, RGB values, Image processing

We live in a very graphical world where images are everywhere. Computers use a number of formats to store and compress images. Several programming languages provide tools for accessing the R,G,B values in images and then apply mathematical operations to them. These can produce many of the effects commonly found in Photo manipulation tools.

In this task a reflection is asked for. However, as is often the case in programming and Computer Science, we have to be very careful about the boundary data.

Explanation:

This is our hardest Blockly task and it has a sting in the tail.

The first problem is to collect pixel data and then copy it to the correct pixel locations at the other side of the image. It is not too difficult to realise that the pixels with x coordinates that are half the width of the image need to be copied and then their values need to be set to the pixels in the other half of the image. However, it is quite possible to get to a point where the image looks perfect but the task marker is telling you it is incorrect. The problem could be caused by the programmer's image being out by one pixel. If all the pixels are shifted just one place then this will not be visible to the eye but is correctly marked as wrong. The programmer needs to remember that the pixel data is counting from (0,0) in the top left corner (Tutorial on this: http://tcsocc.uk/prepare.html#6) and the arrays of pixels that are being iterated through have indexes starting from 0. Hence the program needs to subtract 1 to account for the pixel arrays counting from zero. Look back at the answer provided on the previous page to see how this works.

Page 29: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

29

Answer:

Explanation:

20407

Here is a Python 3 solution:

Juniors: Intermediates:

Seniors: Elite:

Adding cubesB

Here is a large number: 5820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128

Task:Write a program (using any programming language) that outputs the sum of all the digits cubed in this number. e.g. for input 123, the output would be 13 + 23 + 33 = 36

This isn't a difficult task algorithmically but it has some niggling difficulties when programming it. First the programmer has to get access to the digits in the string and then find some way of iterating through them one at a time. The Python solution takes advantage of the ability to treat a string as an iterable data-type (which is common in many program languages), but the characters still need to be cast to integers before the maths can be done. This is done with int(char) in Python. This is equivalent to using the atoi() function from stdlib.h in C or C++.

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Algorithms and programming Tags - Iteration, data-types, casting

This task requires the programmer to be very familiar with their chosen programming language, especially in terms of how to manipulate and iterate through different data types.

Page 30: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

30

Palindromic integers are positive integers, with two or more characters, that would be the same number if read from right to left as when read from left to right.

e.g. 11, 232, 1224221

Task:If 11 is the first palindromic integer, write a program to find the 1000th palindromic integer. Enter your answer as an integer below.

Juniors: Intermediates:

Seniors: Elite:

Palindromic integer C B

Answer:

Explanation:

91019

Getting these sort of problems correct is all about being careful with the boundary data when looping. In the Python 3 solution provided below the algorithm is abstracted out into a function. This makes it easier to focus on the separate jobs that the program needs to solve and makes the final code easier to read.

CT Skills - Abstraction (AB) , Algorithmic Thinking (AL), Decomposition (DE)CS Domain - Algorithms and programming Tags - Iteration, IF conditions

Decomposing problems into their constituent parts often leads to obvious function choices. Whenever loops are involved, it is very important to check the boundary data carefully.

It’s Computer Science:

Page 31: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

31

Answer:1350811866762947

Juniors: Intermediates:

Seniors: Elite:

Binary addition C B

Here are six binary numbers:

100110111111100010111001010110110011100111111001 101111010011110110111100001110110110110000111110 100110100111110110011110000111001001100110111101 111100000110111111110110111110101111010111101000 111100000110111111101000111010001111010111111010 111101111111101001110001111000101110001011101101 Task:Find the sum of adding these six binary numbers and then converting the answer into base 10.(Enter your answer below as an integer.)

Explanation:Although the task suggests binary addition, the task only requires an integer to be output. This task is therefore slightly easier than it would first appear. Some students in some programming languages may worry that they cannot input such large integers. However, this task is best approached by inputing the binary numbers as strings and casting. This is shown in the Python solution below. An alternative approach would be to enter the binary numbers provided as actual binary data types. In Python and Java, for example, this would be achieved by preceding each of the supplied numbers with 0b

It’s Computer Science:

CT Skills - Evaluation (EV)CS Domain - Data, data structures and representationsTags - Binary, Function

Manipulating different data types and casting between them in programs is a very important important technique for programmers. Here we are asked to input one of the most basic data-types, binary numbers. Although a computer, at the lowest level, would add these in a series of binary operations, a programmer has the choice of either adding at a binary level or casting into more easily managed integers before doing the addition.

Page 32: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

32

Juniors: Intermediates:

Seniors: Elite:

Is it safe?C

C C

Alexi was worried that he would forget the 4 figure numerical code for his safe. He decides to store it in plain view, in his social media profile, but in code:

To retrieve the safe code, all Alexi has to do is add the values of every letter in the text where: a=1, b=2, c=3, etc.  Capital letters have the same values as their lowercase equivalent. All non-letter characters and spaces are ignored.

Task:Write a program that finds the sum of the values of all the letters in Alexi's profile text and enter the answer below as a four digit integer.

I'm Alexi. I love solving difficult problems. I enjoy Professor Layton games, programming, and chess. I have now turned my passion into a business:

Do you have a difficult problem you cannot solve, need an algorithm for a particularly troublesome application you are writing or simply want an app made for you? Send me a direct message, detailing the job you would like me to do for you, and I will let you know, by return, if I can help. 

I charge for each task individually. Prices depend on how much time it will take me and how enjoyable the job sounds. Remember, I enjoy difficult problems rather than easy ones! If you are not sure what kind of problems I enjoy solving, you are already in the right place. Read my blog entries below where I discuss some of the more interesting tasks I have worked on.

I look forward to hearing from you!

Page 33: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

33

Juniors: Intermediates:

Seniors: Elite:

Is it safe?C

C C

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Algorithms and programming Tags - Iteration, IF conditions, Arrays

Iterating through arrays, lists and strings is an important tool that programmers must at some time become comfortable doing. This problem uses the indexes of a container variable containing the letters of the alphabet as a convenient look up tool.

Answer:7989Explanation:

This is a relative simple text manipulation problem that can be made simpler by taking the supplied string and converting all the letters to lowercase before working out the hidden number. One way of doing this would be to make an array of the letters of the alphabet and using their indexes to convert the letters to numbers. In Python, and in some other languages, a string can be iterated through in the same way and a string s a lot faster to type out!

Here is a Python 3 solution:

Page 34: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

34

What is an even parity check? When data is sent over a computer network, it is sent as bytes of 8 bits. A bit is a '0' or a '1'.

The information being sent is often encoded in the first seven bits of each byte.

As a means of checking that all the data has arrived safely, before transmission the seven bits have an extra bit added to the original bits to complete the byte. The extra bit is chosen such that the sum of the bits in the byte add up to an even number: e.g. 0110100 becomes 10110100 1110111 becomes 01110111

If the data arrives safely, the sum of all the bits in every byte will be even. This indicates that the bytes have arrived safely.

You have been asked to write a program (using any programming language) that does the following: - inputs the string below made of 201 binary bytes  - counts the number of times a byte fails the even parity check.

011011110111100111110110011110001111001111100010011011111110001011100101011011001110011111100100111101001111011011110000111011011011000011111010011010011111011001111000011100100110011011110101111000011110010001101001011010010110010101101001011110000110011001110010011011000111010011101110011011111111010101100011011001100111001011111010111001111111100111111001111100110110111111111001011100010110110001100011011001011110000111100100111000101111001101101111111011100111001001110100011001010111100001101111011001011111010111100111111000101111000001101111111101101111101011110101111010001111000001101111111010001110100011110101111110100111011111111010011100011110001011100010111011010110001111101011111011100110110011110011111011010111000111100001011110001111001101101111111100111111101011110101011000111110100011100001011000110110101001111000111110011110110111100010111010111110010001100011111010111111001111100100111100001110111001100110011100010110011001100110111101101110111011101000111001110110100101111000111100111110101111110011011011001111101001110001011001011111001101100011111000010110010101100011011010101110011111110011111100111110101101100011111110101110010011111001011000111111001101110010011010011111000001110111111101100110111101101001111100110111000101100101111100000111000111110101111010111111001111111001011011001111101001100011011110000111000111100111111011011111001101110111111100111111001101110100111010110110111111100010011010011111010111100010111101100111011111110110111001110111011111111001011010101110100001101100111101101110101111110011111000011110110111101000111001000110011011100000

Task:Find the number of bytes that fail the even parity check. Enter this number as an integer below.

Juniors: Intermediates:

Seniors: Elite:

Parity checkC

C C

Page 35: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

35

Juniors: Intermediates:

Seniors: Elite:

Parity checkC

C C

Answer:5

Explanation:Again, we have numbers stored as text. This string has to be iterated through and the characters could be cast as integers to perform the check. The important part here is performing a mod 2 calculation as a check for evenness.

Here is a Python 3 solution:

It’s Computer Science:CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Communication and networkingTags - Iteration, IF conditions, Parity bit

The Computer Science context here is of extreme importance. Without these sort of checks and systems we would not be able to safely pass files and data around the internet, or within our own computers and devices.

This task requires the programmer to be very familiar with their chosen programming language, especially in terms of how to manipulate and iterate through different data types.

Page 36: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

36

There are many unusual characters in Alice in Wonderland such as ; " - and ! Unusual characters are those that are not uppercase or lowercase letters, full-stops, spaces or commas.

Task:Write a program (using any programming language) that does the following: - imports the UTF-8 text file supplied. - searches for and counts the number of times unusual characters appear in the text. - outputs the number occurrences of unusual characters it finds. Enter the number of times unusual characters appear in the the text as an integer and press the Save button.

Answer:

Explanation:

Juniors: Intermediates:

Seniors: Elite:

Unusual charactersC

1367

Once the text file is read into memory, there are many ways of solving this problem. Here is a Python 3 solution:

Page 37: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

37

Juniors: Intermediates:

Seniors: Elite:

Unusual charactersC

It’s Computer Science:

CT Skills - Algorithmic Thinking (AL), Decomposition (DE), Evaluation (EV)CS Domain - Interactions, systems and society Tags - File handling, Iteration, If conditions

Manipulating files and strings in programs is a very important skill that modern programmers need to be good at. A lot of times it is easier to use an application that is made for this – counting words, for example, is most easily performed by a word processor. It is, however, worth remembering that, even in these cases, it was a team of Computer Scientists who programmed these facilities in the word processor in the first place.

Page 38: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

38

Answer:

3,7,12,23,29,38,45,47,65,74,82,82,87,88,91,102,107,127,133,153,156,159,159,162,167,167,168,177,181,197,204,212,219,222,227,229,232,243,249,249,258,259,268,275,276,277,281,289,290,301,302,304,311,318,328,329,329,335,337,342,345,348,363,370,373,378,404,408,415,434,451,453,458,461,473,478,481,492,492,495,501,508,513,519,532,535,540,548,551,560,573,576,576,580,587,587,591,607,609,627,660,667,718,729,731,764,766,789,791,794,797,799,800,802,803,803,804,812,813,813,816,821,840,841,849,849,854,859,862,872,872,888,889,889,899,900,904,910,927,928,952,953,954,956,963,964,967,972,978,997

Explanation:

Here is a list of comma separated integers:

276,458,304,453,481,576,854,954,803,219,167,813,560,91,342,591,519,812,888,451,434,540,29,212,609,952,38,513,972,197,127,277,373,607,302,177,997,473,168,840,345,370,167,889,495,301,156,65,587,88,328,791, 508,87,799,587,289,45,318,258,804,153,311,794,162,904,268,766,910,862,181,159,329,813,492,74,222,415, 859,337,841,872,335,573,928,249,821,281,243,849,329,535,797,159,803,718,363,290,872,576,404,378,47,7, 461,133,348,660,764,967,12,900,478,275,107,102,227,580,953,956,964,229,789,800,82,408,551,963,532,667,816,232,492,249,927,978,204,501,802,3,899,627,729,731,82,259,548,889,23,849

Task:Write a program to sort them in ascending order and output these numbers as a new list of comma separated integers.Copy and paste your list into the answer box and press Save.

Juniors: Intermediates:

Seniors: Elite:

Sorting numbersC

Most languages have a sort function built in so using these is the quickest way to find a solution to this task. If we wanted to add a sorting algorithm of our own to our program, we have several to choose from. One is offered below:

Here is a Python 3 solution that uses the built in sorted() function:

Page 39: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

39

Explanation continued:

Juniors: Intermediates:

Seniors: Elite:

Sorting numbersC

Here is a Python 3 solution with a programmed sorting function:

CT Skills - Algorithmic Thinking (AL), Evaluation (EV) CS Domain - Algorithms and programming Tags - Sorting, Quick sort, Arrays, List

In Computer Science there are few more important basic task requirements than that of sorting data. When the amount of data that needs sorting is large this can be a time consuming and memory hungry task for a computer. Large amounts of time and energy have been spent by researchers finding the most efficient sorting algorithms for different circumstances. These are then available to programmers that work in higher level languages who can simply call a built-in sort function.

It’s Computer Science:

Page 40: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

40

Juniors: Intermediates:

Seniors: Elite:

STV C C

Bebravia has introduced a single transferrable vote (STV) system for its presidential elections.

This year there are four candidates: Alfred, Bertha, Cleo and Dafid Each voter ranks their top two candidates on their ballot papers. e.g.

So this voter has chosen Cleo as their first choice and Alfred as their second choice.

The votes are stored as an array of strings:

['2010','2001','0201','0210','0021','0021','1020','2100','1002','2010','0021','0210','1002','0201','2010','2001', '0201','0210','0021','0021','1020','2100','1002','2010','0021','0210','1002','0201','0012','0210','0201','1002', '1002','1200','0120','1020','1020','0201','0012','2100','0021','0102','0210','0012','2010','2001','2100','2100', '1020','2010','2100','0012','2100','2001','2010','2001','0201','0210','0021','0021','1020','2100','1002','2010', '0021','0210','1002','0201','2010','2001','0201','0210','0021','0021','1020','2100','1002','2010','0021','0210', '1002','0201','0012','0210','0201','1002','1002','1200','0120','1020','1020','0201','0012','2100','0021','0102', '0210','0012','2010','2001','2100','2100','1020','2010','2100','0012','2100','2001','2001','2001','0021','0120', '1020','0201','0012','2001','2100','0102','0021','1020','2100','1002','2001','0012','0201','2001','1020','0012', '0210','0201','1002','1002','1200','0120','1020','1020','0201','0012','2100','0021','0102','0210','0012','2010', '2001','2100','2100','1020','2010','2100','0012','2100','2001','2001','2001','0021','0120','1020','0201','0012', '2001','2100','0102','0021','1020','2100','1002','2001','0012','0201','2001','1020','2001','2001','0021','0120', '1020','0201','0012','2001','2100','0102','0021','1020','2100','1002','2001','0012','0201','2001','1020''0012', '0210','0201','1002','1002','1200','0120','1020','1020','0201','0012','2100','0021','0102','0210','0012','2010', '2001','2100','2100','1020','2010','2100','0012','2100','2001','2001','2001','0021','0120','1020','0201','0012', '2001','2100','0102','0021','1020','2100','1002','2001','0012','0201','2001','1020']

The STV system used in Bebravia:Round 1: All first choices are counted. The candidate with the lowest count is eliminated. Round 2: All voters who placed the eliminated candidate first have their second choices added to the first vote count.

The winner is the candidate with the highest count after rounds one and two.

Task:Find the total number of votes the winner scored after both rounds of counting are complete.

Page 41: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

41

Juniors: Intermediates:

Seniors: Elite:

STV C C

Answer: Explanation:Here is a possible solution in Python 3:88

Page 42: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

42

Juniors: Intermediates:

Seniors: Elite:

STV C C

Explanation continued:

CT Skills - Abstraction (AB), Algorithmic Thinking (AL), Decomposition (DE)CS Domain - Interactions, systems and society Tags - Single Transferable Vote, Arrays, Lists

Sometimes programmers have to solve simple tasks, other times they have to solve more challenging algorithms. This task involves solving several intertwined smaller algorithms.

This was the most complex task in the 2018 Official Challenge. The task provides a complicated algorithm for a single transferrable voting system. The problem is how to implement it, find the winner and keep count of the votes. There are as many ways of doing this as there are ways to mow a lawn. One solution is provided, with comments and clearly named functions, on the previous page. Note how the task was decomposed into smaller functions to make it easier to program and to check.

In these sort of tasks it is important to be sure that the program is doing what is expected. One way of doing this is to print out more information than is required; enough to be able to check what is going on and that the final answer is correct.

It’s Computer Science:

Page 43: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

43

Sponsors

UK Bebras is free to enter thanks to the support and sponsorship of the following organisations.

Oxford University is the Organising Body of this Challenge. To find out more about Computer Science and courses involving Computer Science please visit their website.

www.cs.ox.ac.uk/

It has been a pleasure to work with TCS this year as our very enthusiastic sponsor. Tata Consultancy Services is an IT services, consulting and business solutions organisation that delivers real results to global business, ensuring a level of certainty no other firm can match. TCS offers a consulting-led, integrated portfolio of IT, BPS,infrastructure, engineering and assurance services. A part of the Tata group, India’s largest industrial conglomerate, TCS has over 389,000 of the world’s best-trained consultants in 46 countries. In the UK, TCS is one of the country’s leading digital employers with offices in more than 30 locations, including London, Edinburgh, Manchester, Peterborough and Liverpool. These sites help to deliver digital projects for more than 150 TCS customers in the UK. The company has been ranked number one for customer satisfaction in the IT Services sector by analyst firm Whitelane for four consecutive years, and has been recognised as one of the UK’s top employers by the Top Employers Institute, one of the UK’s leading employers for women in The Times Top 50 Employers for Women and Company of the Year at the Employee Engagement Awards. For more information, visit us at www.tcs.com or follow @TCS_UKI on Twitter.

Page 44: Answers - tcsocc.uktcsocc.uk/files/tcsocc-2018-answers.pdfanswers have been provided in either Blocky or Python 3. Unfortunately, it is not possible to provide answers in all programming

44

Copyright 2018 TCS Oxford Computing Challenge – Licence: CC-BY-NC-SA 4.0