prime_birthday.sf 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 11 October 2018
  4. # https://github.com/trizen
  5. # Find the most "prime" birthday:
  6. #
  7. # Y / M / D
  8. #
  9. # where all the following expressions are prime numbers:
  10. #
  11. # D
  12. # D - M
  13. #
  14. # D + M
  15. # D + Y
  16. #
  17. # Y * M - D
  18. # Y + M + 1
  19. #
  20. # Y*D + M + 1
  21. # Y*D - M - 1
  22. #
  23. # Y + M*D - 1
  24. # Y - M*D + 1
  25. #
  26. # Y*M*D - 1
  27. # Y*M*D + 1
  28. #
  29. # Y*D - 1
  30. # Y*M + 1
  31. # M*D - 1
  32. # M*D + 1
  33. #
  34. # Y + M + D
  35. # Y - M - D
  36. # Y + M - D
  37. # Y - M + D
  38. # Only one such birthday exists between the years 1 and 10000, and that is:
  39. # Y = 1980
  40. # M = 12
  41. # D = 19
  42. # Jake Gyllenhaal, famous American actor and producer, was born on this date.
  43. for y in (1900..2018), m in (1..12), d in (1..31) {
  44. d.is_prime || next
  45. d - m -> is_prime || next
  46. d + m -> is_prime || next
  47. d + y -> is_prime || next
  48. y * m - d -> is_prime || next
  49. y + m + 1 -> is_prime || next
  50. y*d + m + 1 -> is_prime || next
  51. y*d - m - 1 -> is_prime || next
  52. y + m*d - 1 -> is_prime || next
  53. y - m*d + 1 -> is_prime || next
  54. y * m * d - 1 -> is_prime || next
  55. y * m * d + 1 -> is_prime || next
  56. y * d - 1 -> is_prime || next
  57. y * m + 1 -> is_prime || next
  58. m * d - 1 -> is_prime || next
  59. m * d + 1 -> is_prime || next
  60. y + m + d -> is_prime || next
  61. y - m - d -> is_prime || next
  62. y + m - d -> is_prime || next
  63. y - m + d -> is_prime || next
  64. say "#{y} #{m} #{d}"
  65. }
  66. __END__
  67. 1980 12 19