/112.lua

http://github.com/badgerman/euler · Lua · 39 lines · 34 code · 4 blank · 1 comment · 8 complexity · 4159cc550c2a49e3ebcbecacccbc3212 MD5 · raw file

  1. -- solved
  2. function is_bouncy(n)
  3. local s = tostring(n)
  4. local sl = string.len(s)
  5. local i
  6. local dir = 0
  7. local p = string.byte(s, 1)
  8. for i = 2, sl do
  9. local p2 = string.byte(s, i)
  10. if p2>p then
  11. if dir<0 then return true end
  12. dir = 1
  13. elseif p2<p then
  14. if dir>0 then return true end
  15. dir = -1
  16. end
  17. p = p2
  18. end
  19. return false
  20. end
  21. assert(is_bouncy(1232))
  22. assert(not is_bouncy(1233))
  23. a=100
  24. b=0
  25. for i=101,10000000 do
  26. if not is_bouncy(i) then
  27. a = a + 1
  28. else
  29. b = b + 1
  30. end
  31. if (a/(a+b))<=0.01 then
  32. print(i, a, b, a/(a+b))
  33. break
  34. end
  35. end