El Pimp Masiin (pimp=pairing in mcmahon pits) on [Tapio Vuorisen|TapioVuorinen] kyhäämä paritusohjelma go-turnauksiin. Ohjelmassa on suurinpiirtein kaikki peruskäytössä tarvittavat ominaisuudet.

Ohjelma sai alkunsa ToiGon juhannusleirillä 2003, kun muut pelasivat bonusturnausta. Minä sain ajatuksen round robin -paritusohjelmasta, joka hanskaisi myös bonusturnaukset. Kun RR-puolelle ei keksitty enää uusia ominaisuuksia, päätin toteuttaa McMahon-parituksen.

Ohjelmaa testattiin "tositoimissa" ensimmäistä kertaa KenraaliKutosessa 17.-18.1.2004. Korjattu versio selviytyi suht nätisti Kani6:n parituksesta viikkoa myöhemmin.  Takapotkussa ohjelma toimi pääosin hyvin, vaikka viimeisellä kierroksella törmättiin bugiin, jota testitapauksissa ei oltu löydetty. Kyseinen bugi on nyt korjattu.

Ohjelma on tekstipohjainen. Konsolilta ohjelma vaatii aika reilusti, vaakasuunnassa kokoa saisi olla 100 merkkiä ja pystysuunnassa niin paljon kuin näytölle vaan mahtuu. Käytännössä tämä tarkoittaa sitä, että ajoympäristö on *NIX tai Windows-käyttäjille [Cygwin|http://www.cygwin.com/]. Softa on kehitetty x86-Linuxissa ja se on testattu toimivaksi Cygwinissä.

Ohjelman C++-lähdekoodit eivät (ainakin kehittäjälle ymmärrettävistä syistä) ole julkiset, mutta kääntelen binäärejä niitä tarvitseville. Ainakin Solaris/Sparc, Linux/Alpha ja Linux/i386 luonnistuvat. Cygwin-binäärejä en tarjoa, koska Cygwinin  lisenssi vaatii lähdekoodin levittämisen, jos ohjelma on linkattu Cygwinin kirjastoja vasten. Tähän mahdollisesti tulossa parannus rewriten myötä.

Yhden merkittävän bugin korjauksen jälkeen ohjelma menee telakalle. Kun aikaa ja intoa löytyy, softa kirjoitetaan kokonaan uusiksi.

!Avainominaisuudet
*McMahon- ja RR-paritus
*Tasa-avaus-, tasoitus- ja vajaatasoitusturnaukset
*Bonusturnaukset (vain RR-moodissa)
*Tekijä muokkaa ohjelmaansa esitettyjen ehdotusten pohjalta

!Todo
Osa kiireellisempiä kuin muut. Näitä toteutetaan vasta uudelleenkirjoitusta tehdessä.
*I18N
*Konfiguraatiotiedosto paritusparametreille
*Virhetarkastelut
*Tulosrivien tulostus LK-ystävällisessä formaatissa. (voittojen määrän mukaan lajiteltuna muodossa 5k+ 4k- 5k+ 4k+ 3k-)

!Kiitokset
*Suvi Leppänen, Markku Jantunen, Tuomo Salo ja muutama muu tamperelainen - Kannustuksesta
*Olli Lounela - Kannustuksesta ja monista parannusehdotuksista

!Kuriositeettina nopeustestejä
Data saattaa muuttua, koska paritusalgoritmiin tehdään muutoksia. Pelaajadatan luokitusjakauman pitäisi olla suht tasainen, jos Perlin satunnaislukugeneraattoriin on uskominen.
Suoritus, josta aika on otettu = ohjelman käynnistys, McMahon-ryhmien luonti, parituksen ajo, parituksen tulostaminen tiedostoon, turnauksen tallennus ja ohjelman lopetus.

||Pelaajamäärä||Muistinkulutus||Turnaustallenteen koko||P2/350MHz Linux||Athlon/1GHz Linux||Athlon/1GHz W2k+Cygwin||P4/2.4GHz Linux
|200  | n. 0,5Mt | 135kt | 0,78s*  | 0,2s*  | 0,7s*    | 0,2s*
|600  | n. 4,5Mt | 1,1Mt | 8,7s*   | 2,3s*  | 9s*      | 3s*
|2000 | n.48Mt   | 12Mt  | 2min3s* | 36,6s* | 4min30s* | 1min32s*

Vanhalla versiolla testatut (ts. ne, jotka pitää mitata uudestaan) merkattu tähdellä.

Joku voisi mittailla Gerlachin vemputtimella vastaavia aikoja ja muistinkulutuksia, tosin se taitaa rajoittua alle 1000 pelaaja turnauksiin :-)

MacMahon parittaa 1000 pelaajaa (maksimimäärä) P2/300:lla noin 5½ minuutissa.

----

Kysymyksiä softasta voi esittää vaikkapa täällä ja niihin pyritään jopa vastaamaan.

__Q:__ Saaks sitä kokeilla?\\
__A:__ Kyllä saa, erikseen kauniisti pyytämällä.

__Q:__ Saako siitä tulokset ulos EGF luokituslistan [formaatissa|http://www.european-go.org/rating/format.html]? [Matti]\\
__A:__ Formaattimuunnokseen EPM->EGF on tehty erillinen Perl-skripti, eli käytännössä vastaus kysymykseen on kyllä.