Die nachträgliche Vorrunde

Nicolas hat aus Interesse nachträglich noch einmal eine Vorrunde gespielt, in der nicht bloß innerhalb A, B, C und D gespielt wurde, sondern wirklich jeder gegen jeden gespielt (und zwar einmal als erster und einmal als zweiter Spieler, und dies auch noch auf drei verschiedenen Spielfeldern, und zwar auf den Feldern 2, 3 und 4) hat. Seine Ergebnisse hatte er am 15. Februar auf das Forum gepostet. Hier eine exakte Wiedergabe seines Postings (zur Erläuterung siehe weiter unten):
Hallo,

ich habe noch ein paar Spiele gemacht. Jeder gegen jeden auf den
Feldern FELD2, FELD3 und FELD4 (720 Partien).

Die Rechner waren etwas langsamer als in der Vorrunde (1G statt 2G
RAM, 2.6GHz statt 3GHz).

Die Limits:
FELD4:180000:2000:150
FELD3:180000:3000:150
FELD2:180000:5000:100

Jeder Spieler hat an 90 Spielen (30 pro Feld) teilgenommen.



awk '$1==$3{f[$4]++} $2==$3{s[$4]++} $3=="unentschieden"{u[$4]++} {x[$4]=1} END{for(i in x)printf "%3i %3i %3i %s\n",f[i],s[i],u[i],i}' <spiele.log
63 64 113 feld2
89 81 70 feld3
103 91 46 feld4


Alle Felder:
awk '/unentschieden/{p[$1]+=1;p[$2]+=1} !/unentschieden/{p[$3]+=3} END{for(i in p)print p[i]" "i}' spiele.log |sort -n
39 dell4never
52 Codemasters
54 MensaWG
59 23
76 PPGerch
83 PRO-gramming5
87 Augustinerburschen
104 TetaSenoPecho
115 Sosuwayi
128 Team2000
142 pp20
170 OlympicCoders
178 IceCode
214 Wurscht
214 epsilon
216 hanabit


awk '{win[$3]++} END{for(i in win)print win[i]" "i}' <spiele.log |sort -n
1 PPGerch
1 dell4never
5 23
6 MensaWG
8 Codemasters
15 PRO-gramming5
20 Augustinerburschen
26 TetaSenoPecho
30 Sosuwayi
34 Team2000
38 pp20
49 OlympicCoders
56 IceCode
63 Wurscht
69 hanabit
70 epsilon
229 unentschieden


awk '/unentschieden/{n[$1]++;n[$2]++} END{for(i in n)print n[i]" "i}' <spiele.log |sort -n
4 epsilon
9 hanabit
10 IceCode
23 OlympicCoders
25 Sosuwayi
25 Wurscht
26 Team2000
26 TetaSenoPecho
27 Augustinerburschen
28 Codemasters
28 pp20
36 MensaWG
36 dell4never
38 PRO-gramming5
44 23
73 PPGerch


awk '/true/{t[$1]++;t[$2]++} /false/{f[$1]++;f[$2]++} END{for(i in t)print t[i]" "(f[i]+0)" "i}' < spiele.log | sort -n
18 72 epsilon
27 63 hanabit
30 60 IceCode
33 57 Team2000
35 55 OlympicCoders
37 53 TetaSenoPecho
40 50 Sosuwayi
50 40 Codemasters
53 37 MensaWG
53 37 dell4never
56 34 pp20
58 32 Augustinerburschen
59 31 PRO-gramming5
72 18 23
81 9 PPGerch
90 0 Wurscht




Nach Feldern:
awk '/unentschieden/{p[$1]+=1;p[$2]+=1} !/unentschieden/{p[$3]+=3} END{for(i in p)print p[i]" "i}' feld2.log | sort -n
18 TetaSenoPecho
19 23
19 PRO-gramming5
19 Team2000
20 Codemasters
20 Sosuwayi
21 MensaWG
21 dell4never
26 Augustinerburschen
27 PPGerch
47 OlympicCoders
56 pp20
64 IceCode
76 epsilon
76 hanabit
78 Wurscht


awk '/unentschieden/{p[$1]+=1;p[$2]+=1} !/unentschieden/{p[$3]+=3} END{for(i in p)print p[i]" "i}' feld3.log | sort -n
9 dell4never
11 MensaWG
17 Codemasters
20 23
26 PPGerch
31 Augustinerburschen
35 PRO-gramming5
40 pp20
45 Team2000
47 TetaSenoPecho
53 Sosuwayi
56 IceCode
60 hanabit
65 OlympicCoders
65 epsilon
70 Wurscht


awk '/unentschieden/{p[$1]+=1;p[$2]+=1} !/unentschieden/{p[$3]+=3} END{for(i in p)print p[i]" "i}' feld4.log | sort -n
9 dell4never
15 Codemasters
20 23
22 MensaWG
23 PPGerch
29 PRO-gramming5
30 Augustinerburschen
39 TetaSenoPecho
42 Sosuwayi
46 pp20
58 IceCode
58 OlympicCoders
64 Team2000
66 Wurscht
73 epsilon
80 hanabit



awk '{win[$3]++} END{for(i in win)print win[i]" "i}' < feld2.log | sort -n
1 MensaWG
1 PPGerch
3 Augustinerburschen
12 OlympicCoders
16 pp20
20 IceCode
24 Wurscht
25 epsilon
25 hanabit
113 unentschieden


awk '{win[$3]++} END{for(i in win)print win[i]" "i}' < feld3.log | sort -n
2 23
4 Codemasters
8 Augustinerburschen
8 PRO-gramming5
9 pp20
13 Team2000
14 TetaSenoPecho
17 IceCode
17 Sosuwayi
18 hanabit
19 OlympicCoders
20 Wurscht
21 epsilon
70 unentschieden


awk '{win[$3]++} END{for(i in win)print win[i]" "i}' < feld4.log | sort -n
1 dell4never
3 23
4 Codemasters
5 MensaWG
7 PRO-gramming5
9 Augustinerburschen
12 TetaSenoPecho
13 Sosuwayi
13 pp20
18 OlympicCoders
19 IceCode
19 Wurscht
21 Team2000
24 epsilon
26 hanabit
46 unentschieden


awk '/unentschieden/{n[$1]++;n[$2]++} END{for(i in n)print n[i]" "i}' <feld2.log |sort -n
1 epsilon
1 hanabit
4 IceCode
6 Wurscht
8 pp20
11 OlympicCoders
17 Augustinerburschen
18 MensaWG
18 TetaSenoPecho
19 23
19 PRO-gramming5
19 Team2000
20 Codemasters
20 Sosuwayi
21 dell4never
24 PPGerch


awk '/unentschieden/{n[$1]++;n[$2]++} END{for(i in n)print n[i]" "i}' < feld3.log | sort -n
2 Sosuwayi
2 epsilon
5 Codemasters
5 IceCode
5 TetaSenoPecho
6 Team2000
6 hanabit
7 Augustinerburschen
8 OlympicCoders
9 dell4never
10 Wurscht
11 MensaWG
11 PRO-gramming5
13 pp20
14 23
26 PPGerch


awk '/unentschieden/{n[$1]++;n[$2]++} END{for(i in n)print n[i]" "i}' < feld4.log | sort -n
1 IceCode
1 Team2000
1 epsilon
2 hanabit
3 Augustinerburschen
3 Codemasters
3 Sosuwayi
3 TetaSenoPecho
4 OlympicCoders
6 dell4never
7 MensaWG
7 pp20
8 PRO-gramming5
9 Wurscht
11 23
23 PPGerch


awk '/true/{t[$1]++;t[$2]++} /false/{f[$1]++;f[$2]++} END{for(i in t)print t[i]" "(f[i]+0)" "i}' < feld2.log | sort -n
2 28 epsilon
4 26 hanabit
7 23 IceCode
14 16 OlympicCoders
21 9 TetaSenoPecho
22 8 MensaWG
22 8 Team2000
22 8 pp20
23 7 23
23 7 PRO-gramming5
23 7 Sosuwayi
24 6 Augustinerburschen
25 5 Codemasters
25 5 dell4never
27 3 PPGerch
30 0 Wurscht


awk '/true/{t[$1]++;t[$2]++} /false/{f[$1]++;f[$2]++} END{for(i in t)print t[i]" "(f[i]+0)" "i}' < feld3.log | sort -n
8 22 Team2000
11 19 Sosuwayi
11 19 TetaSenoPecho
11 19 epsilon
16 14 OlympicCoders
18 12 Codemasters
18 12 IceCode
18 12 dell4never
18 12 hanabit
19 11 Augustinerburschen
20 10 MensaWG
24 6 PRO-gramming5
25 5 23
25 5 pp20
30 0 PPGerch
30 0 Wurscht


awk '/true/{t[$1]++;t[$2]++} /false/{f[$1]++;f[$2]++} END{for(i in t)print t[i]" "(f[i]+0)" "i}' < feld4.log | sort -n
3 27 Team2000
5 25 IceCode
5 25 OlympicCoders
5 25 TetaSenoPecho
5 25 epsilon
5 25 hanabit
6 24 Sosuwayi
7 23 Codemasters
9 21 pp20
10 20 dell4never
11 19 MensaWG
12 18 PRO-gramming5
15 15 Augustinerburschen
24 6 23
24 6 PPGerch
30 0 Wurscht 

Zum Verständnis dieser awk-Skripten sollte man den Aufbau von spiel.log bzw. feld*.log kennen. Dazu sein späteres Posting:

Hm. Stimmt, das Format von spiele.log ist wohl nirgends beschrieben und zum Runterladen gibts es auch noch nicht.

spiele.log ist das Log des Servers. Das Format sieht so aus:
'1.Spieler' '2.Spieler' 'Gewinner(oder unentschieden)' 'Feldname' 'Name der Verlaufsdatei' 'Rückgabewert von vorzeitigBeendet()'

feld#.log ist einfach mittels eines grep auf spiele.log entstanden.

Jetzt klarer?

Nicolas
Wer nun alles genau wissen möchte, erhält das Verzeichnis mit allen Verläufen, in dem sich bereits spiele.log befindet. Lächerlich viel kleiner (1/2 MB) ist die mit bzip2 komprimierte archivierte Version (Entpacken unter Unix mit tar -xjf nachspiele.tbz.)
Ralph Matthes
Last modified: Thu Apr 7 22:47:22 CEST 2005