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

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

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”.
« This page (revision-4) was last changed on 20-Nov-2009 10:36 by Markku Jantunen