DEV Community

Discussion on: This is day 2, Still haven't written a single line of code for this codewars challenge

Collapse
 
curtisfenner profile image
Curtis Fenner

I did competitive programming in college, so I can explain how to break down the problem. But, I'd need to see the specific problem to explain how I approach it.

Generally, there's a few main "tricks" (or patterns) for solving programming problems, and the main task is recognizing which one is needed for the problem.

I would also say that a lot of competitive-programming style problems are not generally useful for the real world. In the last year at my job, the most complicated algorithm my team has used has probably mean... merging two sorted lists. And, if you didn't know how to do that before, you could just Google it, and spend a few days understanding, since the real world doesn't really require you to have too many algorithms memorized in your heart.

Collapse
 
tosinibrahim96 profile image
Ibrahim Alausa

Thanks Curtis. Here is a link to the problem codewars.com/kata/5541f58a944b85ce...

Collapse
 
curtisfenner profile image
Curtis Fenner

First, the problem defines the Fibonacci numbers, though very poorly. (There are lots of questions about the Fibonacci numbers on Codewars, so they are probably assuming you have seen it before).

Each term in the Fibonacci sequence is the sum of the previous two:

  • 0 + 1 = 1
  • 1 + 1 = 2
  • 1 + 2 = 3
  • 2 + 3 = 5
  • 3 + 5 = 8
  • 5 + 8 + 13
  • ......

This can be written in the mathematical notation, F(0) = 0, F(1) = 1, F(n) = F(n-2) + F(n-1), which is also included in the problem.

So this is task (1): come up with code to compute the Fibonacci numbers. You want to be able to go from an n to an F(n). That means either writing a function F which when called with n returns the n-th Fibonacci number, or filling an array F with the Fibonacci numbers, where the nth index has the nth Fibonacci number.

Next, the problem says you need to be able to take a prod, and find an n such that F(n) * F(n + 1) = prod. This is task (2). If you think about this, it doesn't actually depend on the Fibonacci numbers at all -- it works on any sequence. So you can solve and test just this part of the problem using something simpler, maybe just the counting number 1, 2, 3, 4, ... or the squares 1, 2, 4, 9, 16, ..., or the odd numbers 1, 3, 5, ... etc.

Finally, you need to plug these two things together, which is task (3) and the simplest task.

The note at the bottom about the golden ratio is just a "hint", but it's not actually a useful hint. I would ignore it.