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}}==