Round-robin tournament schedule: Difference between revisions

added AWK
(→‎{{header|Perl}}: added alternate version)
(added AWK)
Line 11:
<br>
 
=={{header|AWK}}==
<lang AWK>
# syntax: GAWK -f ROUND-ROBIN_TOURNAMENT_SCHEDULE.AWK
BEGIN {
main(1)
main(2)
main(5,"The Bizzaros")
main(12)
exit(0)
}
function main(n,description, arr,i,j,leng,tmp) {
if (n < 2) {
printf("\n%d is too few participants\n",n)
return
}
printf("\n%d players %s\n",n,description)
for (i=1; i<=n; i++) {
arr[i] = i
}
if (n % 2 == 1) {
arr[++n] = 0 # a "bye"
}
leng = length(n-1)
for (i=1; i<n; i++) {
printf("\nround %*d:",leng,i)
for (j=1; j<=n/2; j++) {
printf("%4s",arr[j]==0?"bye":arr[j])
}
printf("\n%*s",leng+7,"")
for (j=n; j>n/2; j--) {
printf("%4s",arr[j]==0?"bye":arr[j])
}
printf("\n")
tmp = arr[n]
for (j=n; j>2; j--) {
arr[j] = arr[j-1]
}
arr[2] = tmp
}
}
</lang>
{{out}}
<pre>
1 is too few participants
 
2 players
 
round 1: 1
2
 
5 players The Bizzaros
 
round 1: 1 2 3
bye 5 4
 
round 2: 1 bye 2
5 4 3
 
round 3: 1 5 bye
4 3 2
 
round 4: 1 4 5
3 2 bye
 
round 5: 1 3 4
2 bye 5
 
12 players
 
round 1: 1 2 3 4 5 6
12 11 10 9 8 7
 
round 2: 1 12 2 3 4 5
11 10 9 8 7 6
 
round 3: 1 11 12 2 3 4
10 9 8 7 6 5
 
round 4: 1 10 11 12 2 3
9 8 7 6 5 4
 
round 5: 1 9 10 11 12 2
8 7 6 5 4 3
 
round 6: 1 8 9 10 11 12
7 6 5 4 3 2
 
round 7: 1 7 8 9 10 11
6 5 4 3 2 12
 
round 8: 1 6 7 8 9 10
5 4 3 2 12 11
 
round 9: 1 5 6 7 8 9
4 3 2 12 11 10
 
round 10: 1 4 5 6 7 8
3 2 12 11 10 9
 
round 11: 1 3 4 5 6 7
2 12 11 10 9 8
</pre>
=={{header|FreeBASIC}}==
<lang freebasic>function nob( n as uinteger, i as uinteger, bye as boolean ) as string
477

edits