Fairshare between two and more: Difference between revisions
Content added Content deleted
(Added Quackery.) |
(Fairshare between two and more en FreeBASIC) |
||
Line 602: | Line 602: | ||
11 -> { 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 0 2 3 4 } |
11 -> { 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 0 2 3 4 } |
||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Visual Basic .NET}} |
|||
<lang freebasic> |
|||
Function Turn(mibase As Integer, n As Integer) As Integer |
|||
Dim As Integer sum = 0 |
|||
While n <> 0 |
|||
Dim As Integer re = n Mod mibase |
|||
n \= mibase |
|||
sum += re |
|||
Wend |
|||
Return sum Mod mibase |
|||
End Function |
|||
Sub Fairshare(mibase As Integer, count As Integer) |
|||
Print Using "mibase ##:"; mibase; |
|||
For i As Integer = 1 To count |
|||
Dim As Integer t = Turn(mibase, i - 1) |
|||
Print Using " ##"; t; |
|||
Next i |
|||
Print |
|||
End Sub |
|||
Sub TurnCount(mibase As Integer, count As Integer) |
|||
Dim As Integer cnt(mibase), i |
|||
For i = 1 To mibase |
|||
cnt(i - 1) = 0 |
|||
Next i |
|||
For i = 1 To count |
|||
Dim As Integer t = Turn(mibase, i - 1) |
|||
cnt(t) += 1 |
|||
Next i |
|||
Dim As Integer minTurn = 4294967295 'MaxValue of uLong |
|||
Dim As Integer maxTurn = 0 'MinValue of uLong |
|||
Dim As Integer portion = 0 |
|||
For i As Integer = 1 To mibase |
|||
Dim As Integer num = cnt(i - 1) |
|||
If num > 0 Then portion += 1 |
|||
If num < minTurn Then minTurn = num |
|||
If num > maxTurn Then maxTurn = num |
|||
Next i |
|||
Print Using " With ##### people: "; mibase; |
|||
If 0 = minTurn Then |
|||
Print Using "Only & have a turn"; portion |
|||
Elseif minTurn = maxTurn Then |
|||
Print minTurn |
|||
Else |
|||
Print Using "& or &"; minTurn; maxTurn |
|||
End If |
|||
End Sub |
|||
Fairshare(2, 25) |
|||
Fairshare(3, 25) |
|||
Fairshare(5, 25) |
|||
Fairshare(11, 25) |
|||
Print "How many times does each get a turn in 50000 iterations?" |
|||
TurnCount(191, 50000) |
|||
TurnCount(1377, 50000) |
|||
TurnCount(49999, 50000) |
|||
TurnCount(50000, 50000) |
|||
TurnCount(50001, 50000) |
|||
Sleep |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
Igual que la entrada de Visual Basic .NET. |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |