3 and 5 Litre Jug Puzzle
Ruby, 407 376 365 331 324 323

This is getting kind of hard to read...

x=y=n=d=0
g=gets.to_i
"#{[43435,102,t=45,t,12,t,12,t,t][g+~d]||12}".chars{|c|n+=1
puts [eval(["x-=t=[3-y,x].min;y+=t"+t=";'Pour from 5L jug into 3L jug'","x=5;'Fill 5L jug'","d+=x;x=0"+t.sub(/3.+/,"tank'")][c.ord%3].tr t='35xy',c&lt;?3?t:'53yx'),"5L: #{x}, 3L: #{y}, T: #{d}"]}while g&gt;d
$&gt;&lt;&lt;"Volume measured out in #{n} turns"


Takes input on STDIN.  Example run for N=10:

Fill 5L jug
5L: 5, 3L: 0, T: 0
Pour from 5L jug into tank
5L: 0, 3L: 0, T: 5
Fill 5L jug
5L: 5, 3L: 0, T: 5
Pour from 5L jug into tank
5L: 0, 3L: 0, T: 10
Volume measured out in 4 turns