- Given a set of numbers (i.e 5,9,7,2,1,5) return how many numbers are divisible by 3.
For the above set of numbers the answer is 1. One could easily write a function that would give this output:
for input(a,b,c,d....) output(1)
This would provide the correct output for the example set of data but not all possible sets of data - it is not an algorithmic solution. An algorithmic solution is one which will provide the correct output for any legal input. The pseudo-code below would be an example of an algorithmic solution for this problem.
(1) create variable a
(2) for - number of numbers in the set
if - current number is divisible by 3
add one to variable a
(3) return a
This code would produce the correct output for this algorithmic problem regardless of what the input is as long as it is a legal input (a set of numbers). It does not matter if the set is 5 numbers or a million - the correct result will be returned.
for input(a,b,c,d....) output(1)
This would provide the correct output for the example set of data but not all possible sets of data - it is not an algorithmic solution. An algorithmic solution is one which will provide the correct output for any legal input. The pseudo-code below would be an example of an algorithmic solution for this problem.
(1) create variable a
(2) for - number of numbers in the set
if - current number is divisible by 3
add one to variable a
(3) return a
This code would produce the correct output for this algorithmic problem regardless of what the input is as long as it is a legal input (a set of numbers). It does not matter if the set is 5 numbers or a million - the correct result will be returned.
After claiming that my line of sight code in the previous post was an algorithm I realised that I do not know the definition of one. So I did some research and wrote the above. In hindsight I think I was correct in calling my code an algorithm.
Remember that an algorithm does not have to be mathematical; Darwinian evolution is an algorithm -- that is, it explains the way things are in the biological world today via a (fairly simple) "computer program" which posits random variation and then selects those variants which have a statistically better chance of reaching reproductive age than others . . .
ReplyDelete(Question being, of course: who wrote the program? Answers on a postcard please.)
Martin Woodhouse