This is the blog post version of the

Let’s go straight to the point

Coding Challenge

Create a function that takes an array of numbers between 1 and 10 (excluding one number) and returns the missing number.

A few points:

  • The array of numbers will be unsorted (not in order).
  • Only one number will be missing.

Examples

Ruby

1

find_missing_num([1, 2, 3, 4, 6, 7, 8, 9, 10]) ➞ 5

2

3

find_missing_num([7, 2, 3, 6, 5, 9, 1, 4, 8]) ➞ 10

4

5

find_missing_num([10, 5, 1, 2, 4, 6, 8, 3, 9]) ➞ 7

Pretty simple, isn’t it?

Algorithm in Ruby

Let’s break the algorithm down to a few small steps:

Step 1

We need to go through a list of items (an array), going from 1 to 10.

Ruby

1

def find_missing_num(array)

2

  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].each do |item|

3

    end

4

end

5

6

array = [1, 2, 3, 4, 6, 7, 8, 9, 10]

7

find_missing_num(array)

Ruby provides us a really better way to do this:

Ruby

1

def find_missing_num(array)

2

  (1..10).each do |item|

3

    end

4

end

5

6

array = [1, 2, 3, 4, 6, 7, 8, 9, 10]

7

find_missing_num(array)

Step 2

We’re going to compare each number (from 1 to 10) with the numbers in the given array.

Ruby

1

def find_missing_num(array)

2

  (1..10).each do |item|

3

    array.each do |number|

4

      if item == number

5

        break # breaking the execution

6

      end      

7

    end

8

  end

9

end

10

11

array = [1, 2, 3, 4, 6, 7, 8, 9, 10]

12

find_missing_num(array)

We break the execution once if find the desired number because we don’t need to continue looking for the number

Step 3

Because we want to return the number that wasn’t found in the array, I’m going to create a local variable to indicate that.

Ruby

1

def find_missing_num(array)

2

  (1..10).each do |item|

3

    found = false

4

    array.each do |number|

5

      if item == number

6

        found = true

7

        break

8

      end      

9

    end

10

    if found = false

11

      return item

12

    end

13

  end

14

end

15

16

array = [1, 2, 3, 4, 6, 7, 8, 9, 10]

17

find_missing_num(array)

That’s it!

I know, that’s not beautiful but it works : )

Do you have a better/different version? Drop that in the comments and bring more healthy discussions :)

Thanks for the visit and in the next coding challenge we’re going to explore a more decent way to solve this puzzle, see you there!

Don’t forget to come by and say hi!

Courses Twitter Youtube Instagram Linkedin GitHub

#ruby #programming #code #algorithms #coding #game #ruby on rails #arrays

Day 18 of 30 Ruby Coding Challenge - Finding the Missing Number Game
1.85 GEEK