sailors_coconuts_and_monkey.sf 565 B

1234567891011121314151617181920212223
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Sailors,_coconuts_and_a_monkey_problem
  4. #
  5. func coconuts(sailors, monkeys=1) {
  6. if ((sailors < 2) || (monkeys < 1) || (sailors <= monkeys)) {
  7. return 0
  8. }
  9. var blue_cocos = sailors-1
  10. var pow_bc = blue_cocos**sailors
  11. var x_cocos = pow_bc
  12. while ((x_cocos-blue_cocos)%sailors || ((x_cocos-blue_cocos)/sailors < 1)) {
  13. x_cocos += pow_bc
  14. }
  15. return monkeys*(x_cocos / pow_bc * sailors**sailors - blue_cocos)
  16. }
  17. 2.to(9).each { |sailor|
  18. say "#{sailor}: #{coconuts(sailor)}";
  19. }