--Boundary_(ID_7mMBSYuPFLAZYI71WIEG/w)
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT

Following (and attached) is the copy of my code.  The main logic of it
is very simple:
1. Create "bye" teams until there is a power of two
2. From an array sorted by "goodness" of a team, make matches by taking
a team from the two ends.

A nice and short version which does the above is below (and attached as
tournielean.rb).  I actually wrote this version after writing the other
version because most of the entries to Ruby Quiz seem to be short.
./tournielean n where n is the number of teams to run it.
#! /usr/bin/ruby

class Numeric
	# Is the given number a power of self?
	# 16.isPowerOf(2) true
	# 100.isPowerOf(2) false
	def isPowerOf(other)
		i  
		while (other ** i < elf)
			return true if other ** i self
			i + 
		end
		false
	end
end

class Tournament
	# Recieves a list of team names in order of ranking with the best first.
	def initialize(teams)
		@eligible  eams
		@round  
	end
	
	def createNextRound
		out  Round #{@round + }: "
		inCurrentRound  ]
		
		until (@eligible.length.isPowerOf(2))
			out + #{@eligible.first} vs. bye, "
			inCurrentRound.push @eligible.shift
		end
		
		until (@eligible.empty?)
			winner  eligible.shift
			loser  eligible.pop
			
			out + #{winner} vs. #{loser}, "
			
			inCurrentRound.push(winner)
		end
		
		@eligible  nCurrentRound
		out[0, out.length - 2] + "."
	end
	
	def createAllRounds
		out  "
		until (@eligible.length 1)
			out << createNextRound << "\n"
		end
		out# + "Winner: #{@eligible[0]}"
	end
end

t  ournament.new((1..(ARGV[0].to_i)).to_a)
puts t.createAllRounds



--Boundary_(ID_7mMBSYuPFLAZYI71WIEG/w)
Content-type: application/x-ruby; name=tournielean.rb
Content-transfer-encoding: base64
Content-disposition: inline; filename=tournielean.rb

IyEgL3Vzci9iaW4vcnVieQoKY2xhc3MgTnVtZXJpYwoJIyBJcyB0aGUgZ2l2ZW4gbnVtYmVy
IGEgcG93ZXIgb2Ygc2VsZj8KCSMgMTYuaXNQb3dlck9mKDIpID09IHRydWUKCSMgMTAwLmlz
UG93ZXJPZigyKSA9PSBmYWxzZQoJZGVmIGlzUG93ZXJPZihvdGhlcikKCQlpID0gMAoJCXdo
aWxlIChvdGhlciAqKiBpIDw9IHNlbGYpCgkJCXJldHVybiB0cnVlIGlmIG90aGVyICoqIGkg
PT0gc2VsZgoJCQlpICs9IDEKCQllbmQKCQlmYWxzZQoJZW5kCmVuZAoKY2xhc3MgVG91cm5h
bWVudAoJIyBSZWNpZXZlcyBhIGxpc3Qgb2YgdGVhbSBuYW1lcyBpbiBvcmRlciBvZiByYW5r
aW5nIHdpdGggdGhlIGJlc3QgZmlyc3QuCglkZWYgaW5pdGlhbGl6ZSh0ZWFtcykKCQlAZWxp
Z2libGUgPSB0ZWFtcwoJCUByb3VuZCA9IDAKCWVuZAoJCglkZWYgY3JlYXRlTmV4dFJvdW5k
CgkJb3V0ID0gIlJvdW5kICN7QHJvdW5kICs9IDF9OiAiCgkJaW5DdXJyZW50Um91bmQgPSBb
XQoJCQoJCXVudGlsIChAZWxpZ2libGUubGVuZ3RoLmlzUG93ZXJPZigyKSkKCQkJb3V0ICs9
ICIje0BlbGlnaWJsZS5maXJzdH0gdnMuIGJ5ZSwgIgoJCQlpbkN1cnJlbnRSb3VuZC5wdXNo
IEBlbGlnaWJsZS5zaGlmdAoJCWVuZAoJCQoJCXVudGlsIChAZWxpZ2libGUuZW1wdHk/KQoJ
CQl3aW5uZXIgPSBAZWxpZ2libGUuc2hpZnQKCQkJbG9zZXIgPSBAZWxpZ2libGUucG9wCgkJ
CQoJCQlvdXQgKz0gIiN7d2lubmVyfSB2cy4gI3tsb3Nlcn0sICIKCQkJCgkJCWluQ3VycmVu
dFJvdW5kLnB1c2god2lubmVyKQoJCWVuZAoJCQoJCUBlbGlnaWJsZSA9IGluQ3VycmVudFJv
dW5kCgkJb3V0WzAsIG91dC5sZW5ndGggLSAyXSArICIuIgoJZW5kCgkKCWRlZiBjcmVhdGVB
bGxSb3VuZHMKCQlvdXQgPSAiIgoJCXVudGlsIChAZWxpZ2libGUubGVuZ3RoID09IDEpCgkJ
CW91dCA8PCBjcmVhdGVOZXh0Um91bmQgPDwgIlxuIgoJCWVuZAoJCW91dCMgKyAiV2lubmVy
OiAje0BlbGlnaWJsZVswXX0iCgllbmQKZW5kCgp0ID0gVG91cm5hbWVudC5uZXcoKDEuLihB
UkdWWzBdLnRvX2kpKS50b19hKQpwdXRzIHQuY3JlYXRlQWxsUm91bmRz

--Boundary_(ID_7mMBSYuPFLAZYI71WIEG/w)--