Josephus problem: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 1,623: | Line 1,623: | ||
n=2 k=-3 s=4 |
n=2 k=-3 s=4 |
||
[k<0] [s>n]</pre> |
[k<0] [s>n]</pre> |
||
=={{header|PureBasic}}== |
|||
<lang purebasic>Define.i |
|||
NewList prisoners.i() |
|||
Procedure f2l(List p.i()) |
|||
FirstElement(p()) : tmp.i=p() |
|||
DeleteElement(p(),1) : LastElement(p()) |
|||
AddElement(p()) : p()=tmp |
|||
EndProcedure |
|||
Procedure l2f(List p.i()) |
|||
LastElement(p()) : tmp.i=p() |
|||
DeleteElement(p()) : FirstElement(p()) |
|||
InsertElement(p()) : p()=tmp |
|||
EndProcedure |
|||
OpenConsole() |
|||
Repeat |
|||
Print(#LF$+#LF$) |
|||
Print("Josephus problem - input prisoners : ") : n=Val(Input()) |
|||
If n=0 : Break : EndIf |
|||
Print(" - input steps : ") : k=Val(Input()) |
|||
Print(" - input survivors : ") : s=Val(Input()) : If s<1 : s=1 : EndIf |
|||
ClearList(prisoners()) : For i=0 To n-1 : AddElement(prisoners()) : prisoners()=i : Next |
|||
If n<100 : Print("Executed : ") : EndIf |
|||
While ListSize(prisoners())>s And n>0 And k>0 And k<n |
|||
For j=1 To k : f2l(prisoners()) : Next |
|||
l2f(prisoners()) : FirstElement(prisoners()) : If n<100 : Print(Str(prisoners())+Space(2)) : EndIf |
|||
DeleteElement(prisoners()) |
|||
Wend |
|||
Print(#LF$+"Surviving: ") |
|||
ForEach prisoners() |
|||
Print(Str(prisoners())+Space(2)) |
|||
Next |
|||
ForEver |
|||
End</lang> |
|||
{{out}} |
|||
<pre>Josephus problem - input prisoners : 5 |
|||
- input steps : 2 |
|||
- input survivors : 1 |
|||
Executed : 1 3 0 4 |
|||
Surviving: 2 |
|||
Josephus problem - input prisoners : 41 |
|||
- input steps : 3 |
|||
- input survivors : 1 |
|||
Executed : 2 5 8 11 14 17 20 23 26 29 32 35 38 0 4 9 13 18 22 27 31 36 40 6 12 19 25 33 39 7 16 28 37 10 24 1 21 3 34 15 |
|||
Surviving: 30 |
|||
Josephus problem - input prisoners : 41 |
|||
- input steps : 3 |
|||
- input survivors : 3 |
|||
Executed : 2 5 8 11 14 17 20 23 26 29 32 35 38 0 4 9 13 18 22 27 31 36 40 6 12 19 25 33 39 7 16 28 37 10 24 1 21 3 |
|||
Surviving: 15 30 34 |
|||
Josephus problem - input prisoners : 71 |
|||
- input steps : 47 |
|||
- input survivors : 11 |
|||
Executed : 46 22 70 48 26 5 56 36 17 0 54 38 23 9 66 55 43 33 25 16 11 6 2 69 68 1 4 10 15 24 32 42 53 65 20 40 60 19 47 8 44 13 52 31 12 62 57 50 51 61 7 30 59 34 18 3 21 37 67 63 |
|||
Surviving: 64 14 27 28 29 35 39 41 45 49 58 |
|||
Josephus problem - input prisoners :</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |