# First Daily Coding Challenge It’s Day 1 of the Daily Coding Problem.  So here it is:

# Problem #1

`Given a list of numbers and a number `k`, return whether any two numbers from the list add up to `k`.`

For example, given `[10, 15, 3, 7]` and `k` of `17`, return true since `10 + 7` is `17`.

Bonus: Can you do this in one pass?

## Approach:

As a Mental Exercise… here’s what I’d to do approach this:

First…  I’d create an array of numbers and let it remain static.

[4, 6, 13, 8, 17, 3, 9] ..  I could add more numbers, but lets keep it simple with numbers under 20.

Then I’d pick a value for K that I KNOW would work.. like 20.  because two of my numbers 17 and 3 will add to 20.

Second…  I’d create a nested FOR-LOOP that indexes through the array and picks the first number and holds onto it in a variable x. The inner loop with go through the remaining numbers and place one at a time into variable y. It will then check to add x+y and see if it equals k.  IF it does…  print out x+y=k to the screen.

After it checks.. the inner loop goes to the next number until there are no more numbers left.

It would go like this:
4 + 6 = 10…  10 does not equal 20 so nothing happens…

4 + 13 = 17… 17 does not equal 20 so nothing happens…

…  and so on.

After trying to add 4 to all the other numbers… the outer loop moves on to the next number 6.

6 + 13 = 19…. 19 does not equal 20 so nothing happens…

6 + 8 = 14…. 14 does not equal 20 so nothing happens…

Notice that I did not add 6 to the first array number 4.  We already checked 4 + 6 so there’s no reason to check 6 + 4 now.

Eventually… the Outer loop will grab 17 for variable X and the inner loop will grab 3 for y.  and we will print  17 + 3 = 20.   x+y=k.

So that’s my plan.  I don’t know if this is the “right” answer, but it’s what I’ve got.

## Solution:

using System;
namespace Daily_Program_Challenge_1
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[] { 4, 6, 13, 8, 17, 3, 9, 12, 11};
int k = 20;
int matches = 0;

for (int i = 0; i < array.Length; i++)
{
int first = array[i];
for (int j = i + 1; j < array.Length; j++)
{
int second = array[j];
if (first + second == k)
{
Console.WriteLine(first + ” + ” + second + ” = ” + k + ” True!”);
matches++;
}
}
}
Console.WriteLine(“There were “+matches+” matches found!”);
}
}
}