Tällä sivulla esitän yksinkertain python-ohjelman paritustaulukoiden tekoon, sekä erinäisiä pieniä paritustaulukoita. -- Pekka

Tämä "täysparittaminen" tarkoittanee "kaikki kerran kaikkia muita vastaan" eli round robin -turnauksen parittamista? -- Markku


#!/usr/bin/env python
# -*- coding:iso-8859-1 -*-

#### Paritusohjelma täyskierroksia varten ########################################
# käyttö - <[ohjelma]> tai <[ohjelma] luku>, missä luku on pelaajien lkm
# yleisen käytännön mukaisesti parit ilmoitetaan musta ja valkea -järjestyksessä
# (tai toisinpäin sopimuksen mukaan)

# pythonin erikoisuuksia: negatiiviset indeksit [-1] ym. lasketaan taulukon lopusta
# vaihto: m1,m2 = m2,m1 vaihtaa muuttujat
# for-silmukat: range (a,b) tuottaa lukujonon [a,a+1,...b-1]

# esimerkki siitä, miten indeksit asettuvat kuudella pelaajalla
# 0 1 2     0 5 1     0 4 5
# 5 4 3 --> 4 3 2 --> 3 2 1 jne.
# huomaa, että niihin lisätään yksi, jotta käyttäjän puolella aloitetaan yhdestä

import sys

# koristeita varten
lyhytviiva = 10
pitkaviiva = 24

# oletusarvo on kuuden pelaajan paritus, ellei anneta muuta komentoriviparametrinä
lkm = 6
vapaa = False

# käpistellään komentoriviä - tähän voi kuolla (ohjelma, et sinä) jos annetaan roskaa
# näin pienessä ohjelmassa ei tarvita mitään virheentarkistusta
if (len (sys.argv) > 1 and int(sys.argv[1])>1):
  lkm = int (sys.argv[1])

# alustus on turha näin pienillä taulukoilla (vaan ei siihen sentään kuole)
pelaajat = [None]*lkm

# pelaajilla on nokkelat ja originellit nimet
for pelaaja in range (lkm):
  pelaajat[pelaaja]= "Pelaaja " + `pelaaja+1`.rjust(2)

print "Paritetaan " + `lkm`+ " pelaajaa."
print

# tarvitaan tyhjä pelaaja, jos on pariton määrä pelaajia
# silloin tarvitaan myös vapaakierroksia
if (lkm%2):
  pelaajat.insert(0,"Jos tämä tulostetaan, ohjelmassa on virhe.")
  lkm +=1
  vapaa = True

for kierros in range (lkm-1):

  print "Kierros " + `kierros+1`
  print "-"*lyhytviiva

  vapaakierros = ''

  # pelaaja paikalla 0 käsitellään aina eri tavalla
  # jos on vapaakierroksia, pelaaja 0 on tyhjä
  if (vapaa):
    vapaakierros = pelaajat[-1]
  # muutoin pelaajan 0 väri saadaan kierroksen pariteetista
  elif (kierros%2):
    print pelaajat[-1], "-", pelaajat[0]
  else:
    print pelaajat[0], "-", pelaajat[-1]

  for parit in range (1,(lkm)/2):

    pari1 = pelaajat[parit]
    pari2 = pelaajat[-(parit+1)]

    # värien vaihtelu
    if (parit%2):
      pari2,pari1 = pari1,pari2

    print pari1 + " - " + pari2

  print

  if (vapaakierros):
    print "Vapaakierros: " + vapaakierros

  print "-"*pitkaviiva
  print

  # muutetaan lista ensi kierroksen paritusta varten
  paikalla = pelaajat.pop(0)
  vaihto = pelaajat.pop()
  pelaajat.insert(0,vaihto)
  pelaajat.insert(0,paikalla)

print "Loppu. Muistathan, että mustan on aina tarkoitus olla vasemmalla."

# Kokoon räpelsi Pekka Karjalainen 2005.
# Ohjelmaa saa käyttää vapaasti. En takaa, että se toimii oikein.

Paritetaan 2 pelaajaa.

Kierros 1
----------
Pelaaja  1 - Pelaaja  2

------------------------

Loppu. Muistathan, että mustan on aina tarkoitus olla vasemmalla.


Paritetaan 3 pelaajaa.

Kierros 1
----------
Pelaaja  2 - Pelaaja  1

Vapaakierros: Pelaaja  3
------------------------

Kierros 2
----------
Pelaaja  1 - Pelaaja  3

Vapaakierros: Pelaaja  2
------------------------

Kierros 3
----------
Pelaaja  3 - Pelaaja  2

Vapaakierros: Pelaaja  1
------------------------

Loppu. Muistathan, että mustan on aina tarkoitus olla vasemmalla.


Paritetaan 4 pelaajaa.

Kierros 1
----------
Pelaaja  1 - Pelaaja  4
Pelaaja  3 - Pelaaja  2

------------------------

Kierros 2
----------
Pelaaja  3 - Pelaaja  1
Pelaaja  2 - Pelaaja  4

------------------------

Kierros 3
----------
Pelaaja  1 - Pelaaja  2
Pelaaja  4 - Pelaaja  3

------------------------


Paritetaan 5 pelaajaa.

Kierros 1
----------
Pelaaja  4 - Pelaaja  1
Pelaaja  2 - Pelaaja  3

Vapaakierros: Pelaaja  5
------------------------

Kierros 2
----------
Pelaaja  3 - Pelaaja  5
Pelaaja  1 - Pelaaja  2

Vapaakierros: Pelaaja  4
------------------------

Kierros 3
----------
Pelaaja  2 - Pelaaja  4
Pelaaja  5 - Pelaaja  1

Vapaakierros: Pelaaja  3
------------------------

Kierros 4
----------
Pelaaja  1 - Pelaaja  3
Pelaaja  4 - Pelaaja  5

Vapaakierros: Pelaaja  2
------------------------

Kierros 5
----------
Pelaaja  5 - Pelaaja  2
Pelaaja  3 - Pelaaja  4

Vapaakierros: Pelaaja  1
------------------------


Paritetaan 6 pelaajaa.

Kierros 1
----------
Pelaaja  1 - Pelaaja  6
Pelaaja  5 - Pelaaja  2
Pelaaja  3 - Pelaaja  4

------------------------

Kierros 2
----------
Pelaaja  5 - Pelaaja  1
Pelaaja  4 - Pelaaja  6
Pelaaja  2 - Pelaaja  3

------------------------

Kierros 3
----------
Pelaaja  1 - Pelaaja  4
Pelaaja  3 - Pelaaja  5
Pelaaja  6 - Pelaaja  2

------------------------

Kierros 4
----------
Pelaaja  3 - Pelaaja  1
Pelaaja  2 - Pelaaja  4
Pelaaja  5 - Pelaaja  6

------------------------

Kierros 5
----------
Pelaaja  1 - Pelaaja  2
Pelaaja  6 - Pelaaja  3
Pelaaja  4 - Pelaaja  5

------------------------


Kierros 1
----------
Pelaaja  6 - Pelaaja  1
Pelaaja  2 - Pelaaja  5
Pelaaja  4 - Pelaaja  3

Vapaakierros: Pelaaja  7
------------------------

Kierros 2
----------
Pelaaja  5 - Pelaaja  7
Pelaaja  1 - Pelaaja  4
Pelaaja  3 - Pelaaja  2

Vapaakierros: Pelaaja  6
------------------------

Kierros 3
----------
Pelaaja  4 - Pelaaja  6
Pelaaja  7 - Pelaaja  3
Pelaaja  2 - Pelaaja  1

Vapaakierros: Pelaaja  5
------------------------

Kierros 4
----------
Pelaaja  3 - Pelaaja  5
Pelaaja  6 - Pelaaja  2
Pelaaja  1 - Pelaaja  7

Vapaakierros: Pelaaja  4
------------------------

Kierros 5
----------
Pelaaja  2 - Pelaaja  4
Pelaaja  5 - Pelaaja  1
Pelaaja  7 - Pelaaja  6

Vapaakierros: Pelaaja  3
------------------------

Kierros 6
----------
Pelaaja  1 - Pelaaja  3
Pelaaja  4 - Pelaaja  7
Pelaaja  6 - Pelaaja  5

Vapaakierros: Pelaaja  2
------------------------

Kierros 7
----------
Pelaaja  7 - Pelaaja  2
Pelaaja  3 - Pelaaja  6
Pelaaja  5 - Pelaaja  4

Vapaakierros: Pelaaja  1
------------------------

Paritetaan 8 pelaajaa.

Kierros 1
----------
Pelaaja  1 - Pelaaja  8
Pelaaja  7 - Pelaaja  2
Pelaaja  3 - Pelaaja  6
Pelaaja  5 - Pelaaja  4

------------------------

Kierros 2
----------
Pelaaja  7 - Pelaaja  1
Pelaaja  6 - Pelaaja  8
Pelaaja  2 - Pelaaja  5
Pelaaja  4 - Pelaaja  3

------------------------

Kierros 3
----------
Pelaaja  1 - Pelaaja  6
Pelaaja  5 - Pelaaja  7
Pelaaja  8 - Pelaaja  4
Pelaaja  3 - Pelaaja  2

------------------------

Kierros 4
----------
Pelaaja  5 - Pelaaja  1
Pelaaja  4 - Pelaaja  6
Pelaaja  7 - Pelaaja  3
Pelaaja  2 - Pelaaja  8

------------------------

Kierros 5
----------
Pelaaja  1 - Pelaaja  4
Pelaaja  3 - Pelaaja  5
Pelaaja  6 - Pelaaja  2
Pelaaja  8 - Pelaaja  7

------------------------

Kierros 6
----------
Pelaaja  3 - Pelaaja  1
Pelaaja  2 - Pelaaja  4
Pelaaja  5 - Pelaaja  8
Pelaaja  7 - Pelaaja  6

------------------------

Kierros 7
----------
Pelaaja  1 - Pelaaja  2
Pelaaja  8 - Pelaaja  3
Pelaaja  4 - Pelaaja  7
Pelaaja  6 - Pelaaja  5

------------------------

Authentication code:

Toolbar

Comment signature

Add new attachment

In order to upload a new attachment to this page, please use the following box to find the file, then click on “Upload”.

Here's a short reminder on the most common formatting rules you have at your disposal. A complete list is available in TextFormattingRules.

(empty line)     Make a paragraph break.
----             Horizontal ruler
[link]           Create hyperlink to "link", where "link" can be either an internal 
                 WikiName or an external link (http://)
[text|link]      Create a hyperlink where the link text is different from the actual 
                 hyperlink link.
[text|wiki:link] Create a hyperlink where the link text is different from the 
                 actual hyperlink link, and the hyperlink points to a named Wiki. 
                 This supports interWiki linking.

*                Make a bulleted list (must be in first column). Use more (**) 
                 for deeper indentations.
#                Make a numbered list (must be in first column). Use more (##, ###) 
                 for deeper indentations.

!, !!, !!!       Start a line with an exclamation mark (!) to make a heading. 
                 More exclamation marks mean bigger headings.

__text__         Makes text bold.
''text''         Makes text in italics (notice that these are single quotes ('))
{{text}}         Makes text in monospaced font.
;term:def        Defines 'term' with 'def'.  Use this with empty 'term' to make short comments.
\\               Forced line break (please use sparingly).

|text|more text| Makes a table. Double bars for a table heading.

Don't try to use HTML, since it just won't work.

To embed images just put them available on the web using one of the approved formats, and they will get inlined automatically. To see the list of approved formats, go check SystemInfo.

To make a code block, use triple {'s to open, and triple }'s to close.

(Wondering where this text comes from? It's on a page called Edit Page Help, which you can edit too!)