Sailors, coconuts and a monkey problem: Difference between revisions
Content added Content deleted
(Added Kotlin) |
(Added an example for D) |
||
Line 282: | Line 282: | ||
8: 117440505 |
8: 117440505 |
||
9: 387420481</pre> |
9: 387420481</pre> |
||
=={{header|D}}== |
|||
{{trans|Kotlin}} |
|||
<lang D> |
|||
import std.stdio; |
|||
void main() { |
|||
auto coconuts = 11; |
|||
outer: |
|||
foreach (ns; 2..10) { |
|||
int[] hidden = new int[ns]; |
|||
coconuts = (coconuts / ns) * ns + 1; |
|||
while (true) { |
|||
auto nc = coconuts; |
|||
foreach (s; 1..ns+1) { |
|||
if (nc % ns == 1) { |
|||
hidden[s-1] = nc/ns; |
|||
nc -= hidden[s-1] + 1; |
|||
if (s==ns && nc%ns==0) { |
|||
writeln(ns, " sailors require a minimum of ", coconuts, " coconuts"); |
|||
foreach (t; 1..ns+1) { |
|||
writeln("\tSailor ", t, " hides ", hidden[t - 1]); |
|||
} |
|||
writeln("\tThe monkey gets ", ns); |
|||
writeln("\tFinally, each sailor takes ", nc / ns); |
|||
continue outer; |
|||
} |
|||
} else { |
|||
break; |
|||
} |
|||
} |
|||
coconuts += ns; |
|||
} |
|||
} |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
2 sailors require a minimum of 11 coconuts |
|||
Sailor 1 hides 5 |
|||
Sailor 2 hides 2 |
|||
The monkey gets 2 |
|||
Finally, each sailor takes 1 |
|||
3 sailors require a minimum of 25 coconuts |
|||
Sailor 1 hides 8 |
|||
Sailor 2 hides 5 |
|||
Sailor 3 hides 3 |
|||
The monkey gets 3 |
|||
Finally, each sailor takes 2 |
|||
4 sailors require a minimum of 765 coconuts |
|||
Sailor 1 hides 191 |
|||
Sailor 2 hides 143 |
|||
Sailor 3 hides 107 |
|||
Sailor 4 hides 80 |
|||
The monkey gets 4 |
|||
Finally, each sailor takes 60 |
|||
5 sailors require a minimum of 3121 coconuts |
|||
Sailor 1 hides 624 |
|||
Sailor 2 hides 499 |
|||
Sailor 3 hides 399 |
|||
Sailor 4 hides 319 |
|||
Sailor 5 hides 255 |
|||
The monkey gets 5 |
|||
Finally, each sailor takes 204 |
|||
6 sailors require a minimum of 233275 coconuts |
|||
Sailor 1 hides 38879 |
|||
Sailor 2 hides 32399 |
|||
Sailor 3 hides 26999 |
|||
Sailor 4 hides 22499 |
|||
Sailor 5 hides 18749 |
|||
Sailor 6 hides 15624 |
|||
The monkey gets 6 |
|||
Finally, each sailor takes 13020 |
|||
7 sailors require a minimum of 823537 coconuts |
|||
Sailor 1 hides 117648 |
|||
Sailor 2 hides 100841 |
|||
Sailor 3 hides 86435 |
|||
Sailor 4 hides 74087 |
|||
Sailor 5 hides 63503 |
|||
Sailor 6 hides 54431 |
|||
Sailor 7 hides 46655 |
|||
The monkey gets 7 |
|||
Finally, each sailor takes 39990 |
|||
8 sailors require a minimum of 117440505 coconuts |
|||
Sailor 1 hides 14680063 |
|||
Sailor 2 hides 12845055 |
|||
Sailor 3 hides 11239423 |
|||
Sailor 4 hides 9834495 |
|||
Sailor 5 hides 8605183 |
|||
Sailor 6 hides 7529535 |
|||
Sailor 7 hides 6588343 |
|||
Sailor 8 hides 5764800 |
|||
The monkey gets 8 |
|||
Finally, each sailor takes 5044200 |
|||
9 sailors require a minimum of 387420481 coconuts |
|||
Sailor 1 hides 43046720 |
|||
Sailor 2 hides 38263751 |
|||
Sailor 3 hides 34012223 |
|||
Sailor 4 hides 30233087 |
|||
Sailor 5 hides 26873855 |
|||
Sailor 6 hides 23887871 |
|||
Sailor 7 hides 21233663 |
|||
Sailor 8 hides 18874367 |
|||
Sailor 9 hides 16777215 |
|||
The monkey gets 9 |
|||
Finally, each sailor takes 14913080 |
|||
</pre> |
|||
=={{header|Elixir}}== |
=={{header|Elixir}}== |