Count digits in a string, check if there its a fibonnaci number There's a question with a comment with some code thats far too long.
For a site that has counting fetish, this code just seems so wrong.
Solve this meta-riddle, and explain it with a rhyme.
Winner is the shortest code in a fortnights time.


The challenge:


Open a file as input.
Count and output the number of digits (0,1,...9) and non-digits (everything else).
If the number of digits and non-digits are consecutive fibonnacci numbers, with the number of digits is fibonnacci number f(n) and the number of non-digits is f(n-1)  the file is "valid", otherwise it is "Invalid"
Output this information as exactly as shown below.


Example 1:

Digits: 34 Nondigits: 21
Valid program


Example 2:

Digits: 33 Nondigits: 21
Invalid program
Ruby, 151

d=[0,0];$&lt;.read.chars{|c|d[c&gt;?/&amp;&amp;c&lt;?:?0:1]+=1};puts"Digits: %d Nondigits: %d"%d
a=b=1;while b&lt;d[0];b=a+a=b end;print ([b,a]==d)??V:"Inv","alid program"