Authorship & Datestamp
This version was created 2010-02-03 by
G. Vincent Castellano.
May be distributed freely without alteration. Contact the author
with any comments or corrections.
This document is compatible with tsh
installation version 3.280 and later (but not too much
later).
How-To for Running Tsh
Prerequisites
Tsh requires fluency with command-line tools. In the dark ages
before everything was done with a GUI and a mouse, command-line
interfaces were the norm. You type a command, hit 'enter', and get a
response back. If you're overly intimidated by this prospect you
should stop now.
Download Locations
- Download and run the ActiveState Perl installer from http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1001-MSWin32-x86-283495.msi
- Visit http://www.math.toronto.edu/jjchew/software/tsh/doc/install.html for instructions on downloading tsh itself. You can skip the section on “Perl”--the previous step takes care of that.
Initial Setup
Make a clean tournament sub-directory with a descriptive name (I
recommend the date concatenated with a location, e.g.,
2006-07-15-CCCC
,
containing the configuration file config.tsh
which will look something like:
division a a.t
division b b.t
division c c.t
Here the division names are 'a', 'b', 'c'. (You will want to keep
these division names simple, don't get cute and use names of
breakfast cereals.) Division names are case-insensitive.
The contents of each division file (before pairings are set) are
lines like:
Vince Castellano 1717
- Use the Notebook application to edit the division (.t) and config.tsh files.
- Don't use tabs anywhere.
- Don't use numbers in people's names.
- For unrated players, use an 'initial' rating, e.g., 700.
- You can download your roster in this format from CrossTables by selecting “Download in tsh-friendly format”. All the divisions will be in a single file, which you will need to split.
Next you will need to enhance these files with the pairing information. If a 'conventional' round robin (One less rounds than number of players) is feasible, the "rr" command will do this automatically--do so after starting tsh.
It is also possible to add a matrix of space-delimited opponent numbers manually, for example:
Vince Castellano 1717 11 9 7 5 3 ;
Run tsh.pl with the directory as the argument:
tsh.pl 2006-07-15-CCCC
If you get a tsh> prompt then no errors were found in the config file or divisions.
Capital letters in the full names of commands are the short forms of the commands. E.g., the command RoundRobin is abbreviated rr.
Preparing For Your Event
This document is intended to be merely a road map for using tsh
. If you are completely new to tsh
you should plan on spending several hours with the program over a period of at least two weeks to become sufficiently acquainted.
(If you are conscientious enough to take this advice to heart, you will also what to review John Chew's Checklist For Organizing Scrabble® Tournaments.)
After setting up the divisions, you can use the following commands to simulate an event and validate your expectations of how the pairings and reporting functions work:
- DRY run
dry r d
- Simulates an entire tournament for a division using random data.
- RAND omscores
rand d...
- Give each player in division d a random score, to help simulate a tournament’s pairing system.
- RESETEVERYTHING
reseteverything
- Delete scores and pairings data--rewinds the event to the beginning. Use only to undo the effect of the above two commands, after the tournament actually starts this command should not be used.
Further information on the above and all tsh
commands is available at http://www.math.utoronto.ca/jjchew/software/tsh/doc/commands.html, from whence the above descriptions were derived.
Entering Scores
Start adding scores for a division with the Addscore command which takes the round and division as arguments.
For example, at the tsh> prompt, enter:
tsh> a 1 a
^ ^ ^
| | +-- For Division A
| +---- For Round 1
+------ Add scores
You will see a prompt like:
[A1]:pn1 ps1 pn2 ps2 (12 scores left)?
Meaning for Div A round 1, enter (separated by spaces)
Player1Num Player1Score Player2Num Player2Score
followed by Enter. Player 1 is the
player who went first, player 2 went second. tsh will read scores
until you hit Enter without entering anything.
Example:
tsh> a 1 a
[A1]:pn1 ps1 pn2 ps2 (12 scores left)? 12 384 2 467
#12 Ronnie Thomas 384 (0.0 -83) - #2 Florence Spanfelner 467 (1.0 +83).
[A1]:pn1 ps1 pn2 ps2 (10 scores left)? 3 453 9 435
#3 Joanne Cohen 453 (1.0 +18) - #9 George Spanfelner 435 (0.0 -18).
[A1]:pn1 ps1 pn2 ps2 (8 scores left)? 10 298 4 312
#10 Rose Noel 298 (0.0 -14) - #4 Dave Engelhardt 312 (1.0 +14).
[A1]:pn1 ps1 pn2 ps2 (6 scores left)? 5 352 7 407
#5 Diana Grosman 352 (0.0 -55) - #7 Carole Denton 407 (1.0 +55).
[A1]:pn1 ps1 pn2 ps2 (4 scores left)? 6 439 8 370
#6 Dan Milton 439 (1.0 +69) - #8 Brian Bailey 370 (0.0 -69).
[A1]:pn1 ps1 pn2 ps2 (2 scores left)?
Updating Division A.
updating a.t
Note 1: There was a bye this round due to a late player. See below.
Note 2: The file "a.t" is
updated with scores. You can view this file to see how it is
updated.
Amending Pairings Due to a Bye
Now we will deal with the first-round
bye (between player 1 and player 11). Pair each player involved (the
missing player and her opponent) with player 0 using the Pair
command:
tsh> pair 1 0 1 a
Vince Castellano (A1) used to be paired to Lorraine Burton (A11). [iprwasp]
updating a.t
tsh> pair 11 0 1 a
updating a.t
Here each player is paired with player 0 in round 1 of Div A.
Now use the Addscore command to add the 'bye' scores to each player's
record:
tsh> a 1 a
[A1]:pn1 ps1 pn2 ps2 (2 scores left)? 1 50
#1 Vince Castellano +50 (1.0 +50).
[A1]:pn1 ps1 pn2 ps2 (1 score left)? 11 -50
#11 Lorraine Burton -50 (0.0 -50).
[A1]:pn1 ps1 pn2 ps2 (0 scores left)?
Updating Division A.
updating a.t
Check Standings Against Wall Chart
Now that you have entered round 1 data,
you may wish to check standings against the wall chart. Do this with
the "wc" (WallChart? ) command (follow "wc" with
the division name):
tsh> wc a
Division A Wallchart
Player Rd 01
Vince Castellano 1.0
+50
Florence Spanfelner 1.0
+83
Joanne Cohen 1.0
+18
Dave Engelhardt 1.0
+14
Diana Grosman 0.0
-55
Dan Milton 1.0
+69
Carole Denton 1.0
+55
Brian Bailey 0.0
-69
George Spanfelner 0.0
-18
Rose Noel 0.0
-14
Lorraine Burton 0.0
-50
Ronnie Thomas 0.0
-83
Repeat for each round and each division.
Finding And Correcting a Data Entry Error
Now before doing the final KOTH, check
the wall chart. We have a discrepancy, with Carole Denton 4-1 +118,
where the wall chart shows 3-2 -70. There is probably another player
with a win count error, and the matchup between these two was done
wrong. tsh shows George Spanfelner at 1-4 -105 and the wall chart
has him 2-3 +84.
Use the "sc" command to show
a contestant score card for Carole (Player 7). It shows that the
scores for these players were swapped and will have to be re-entered.
Then use the "es" command to
edit scores for Div A Player 7 Round 5:
tsh> es a 7 5
Player Scorecard: Carole Denton (A7) (1497)
- Last score was entered 19 minutes ago.
Rnd Brd Opp Rtng Opponent Name Won-Lost For Agn Sprd Cumul
1 5 1533 Diana Grosman 1.0- 0.0 407 352 +55 +55
2 11 1307 Lorraine Burton 2.0- 0.0 356 324 +32 +87
3 1 1717 Vince Castellano 2.0- 1.0 287 357 -70 +17
4 3 1618 Joanne Cohen 3.0- 1.0 335 328 +7 +24
5 9 1338 George Spanfelner 4.0- 1.0 423 329 +94 +118
6 2 1670 Florence Spanfelner
The tsh view of the contestant scorecard is printed, and then you are
prompted. Enter the scores for that round, separated by a space,
with the player's being edited first:
Carole Denton (A7) R5 [423 329 vs. George Spanfelner (A9)] (? for help) 329 423
The scorecard is reprinted. At this point is probably prudent to
also print the opponent's scorecard.
Command Review
Generate/Display Pairings
smp First-Last Div
Example:
smp 1-3 a
S how M ultiple P airings for rounds 1-3 in
division A. Produces output in HTML directory. Even if you
only want to show pairings for a single round, you may like the
formatting provided by this command.
Example:
smp 3 a
Add Scores
a Round Div
Example:
a 3 a
A ddscores for
round 3 in division A. Enter data for one or more
rounds in the form:
!Player1Num Player1Score Player2Num Player2Score
Hit Enter
with no data to return to the command prompt.
Show Standings
st _Div
Example:
st a
St andings for
division A, to the extent data has
been entered. Produces output in HTML directory. If possible, don't
post standings until all the scores have been entered. The exception
to this will be near the end of an event when you are waiting for
out-of-contention players to turn in their slips.
WallChart
wc Div
Example:
wc a
W all C hart
for division A, to the extent data
has been entered. Produces output in HTML directory. Most
useful for finding errors in data entry relative to a player's
scorecard. (The S core C ard
command is also useful for this.)
Correct a Game's Score
es Div Player Round
Example:
es a 17 3
E dit S core
for Player 17,
division A, Round 3.
You will then be prompted to enter this player's score and their
opponent's score. Both players' records will then be updated.
Find Whose Scores are Missing
missing Round
Example:
missing 3 a
Shows
who you have to go chase for tally slips.
Account for a No-Show (After They've Been Paired)
In other words, a Forfeit rather than a Bye. You must follow this
procedure to undo pairings or else the game will be rated, which it
should not be since it isn't played.
pair 0 Player Round Div
This command will set both the no-show and their opponent pairing to show the missed game. Then:
es Div Player1 Round
es Div Player2 Round
Use the E dit S core command (as described above) once for each player to enter their +50 and -50 scores for the forfeit win and loss.
Example:
pair 0 17 2 a
es a 17 2
-50
es a 3 2
50
Player 17 was to paired with Player 3 but didn't show. Player 17 gets -50 for the loss and Player 3 gets +50.
Account for a Dropout (Before They've Been Paired)
This is a Bye, but the effect is the same as for a forfeit. You should use this procedure to mark a dropped-out player as gone so that the appropriate players get the Bye.
pair 0 Player Round Div
This command will effectively take the dropout out of automatic pairings for the round specified. Repeat for as many rounds as appropriate, yea unto the end of the tournament if needed.
To-Do
- smp commands for init
- updateplayers