Skip to content

Commit

Permalink
API
Browse files Browse the repository at this point in the history
  • Loading branch information
ChristerNilsson committed Dec 1, 2024
1 parent e8d52f2 commit 548c8e4
Show file tree
Hide file tree
Showing 11 changed files with 576 additions and 33 deletions.
27 changes: 27 additions & 0 deletions content/Klubben/Medlemmar/christer-nilsson/API/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: API
---

<div id="app"></div>

<script src="sketch.js"></script>

<script>

const urlParams = new URLSearchParams(window.location.search)
const tid = parseInt(urlParams.get("tid"))
const pid = parseInt(urlParams.get("pid").toString())

const api_t = 'https://member.schack.se/public/api/v1/tournamentresults/table/id/'
const api_r = 'https://member.schack.se/public/api/v1/tournamentresults/roundresults/id/'

Promise.all([
fetch(api_t + tid).then(response => response.json()),
fetch(api_r + tid).then(response => response.json())
])
.then(([data_t, data_r]) => {
process(data_t,data_r,pid)
})
.catch(error => console.error('Fel vid hämtning av filer:', error));

</script>
58 changes: 58 additions & 0 deletions content/Klubben/Medlemmar/christer-nilsson/API/sketch.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
table = (s) -> "<table>\n" + s + "</table>"
td = (s,attrs="") -> "<td #{attrs}>" + s + "</td>"
tr = (s,attrs="") -> "<tr #{attrs}>" + s + "</tr>\n"
th = (s,attrs="") -> "<th #{attrs}>" + s + "</th>"

process = (data_t, data_r, pid) ->

console.log data_t
console.log data_r

players = {}
for p in data_t
pi = p.playerInfo
players[p.contenderId] = pi.elo.rating + ' ' + pi.lastName.toUpperCase() + ' ' + pi.firstName

stable = ""
stable += th "datum"
stable += th "rond"
stable += th "bord"
stable += th "färg"
stable += th "mot"
stable += th "resultat"
stable = tr stable
good = 0
n = 0
center = 'style="text-align: center"'
grå = 'style="color:#444444"'
now = new Date()
nu = now.toLocaleDateString "sv-SE"

for r in data_r
g = r.games[0]
if r.finalized
n += 1
if r.homeResult != 0 or r.awayResult != 0 then good += 1
console.log r.awayId,r.homeId
if r.awayId == pid or r.homeId == pid
rg = if r.homeId==pid then "vit" else "svart"
s = ""
s += td r.date
s += td r.roundNr,center
s += td r.board,center
s += td färg,center
opp = if färg=='vit' then r.awayId else r.homeId
res = if färg=='vit' then r.homeResult else r.awayResult
if opp < 1000
s += td "w.o."
else
s += td players[opp.toString()]
if g.result==-3 then res += " w.o."
s += td res,center
col = if r.date < nu or r.finalized then grå else ""
stable += tr s,col

app = document.getElementById('app')
console.log table stable
app.innerHTML = table stable
console.log "#{good} of #{n} games played (#{(100*good/n).toFixed 1}%)",
83 changes: 83 additions & 0 deletions content/Klubben/Medlemmar/christer-nilsson/API/sketch.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 31 additions & 12 deletions content/Klubben/Medlemmar/christer-nilsson/FairPair/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ title: FairPair

[Turneringsprogrammet](https://christernilsson.github.io/FairPair)

<div style="text-align:left">

*FairPair har beskrivits som **Flytande Berger**.
Varje deltagare ligger i mitten av sin egen Bergergrupp*

Expand All @@ -22,12 +20,12 @@ Berger är den rättvisaste formen, helst dubbelrondig.
Berger kan dock inte användas med många deltagare.
Då används Schweizer eller Bergergrupper.

#### Poängberäkning enligt FairPair
### Poängberäkning enligt FairPair

Man använder motståndarnas elo, tillsammans med vinstprocenten för att beräkna PR.
Detta är exakt samma metod som den man använder när en spelare ges en initial rating i FIDE:s ratingsystem.

#### Invändningar mot Schweizer
### Invändningar mot Schweizer

1. De flesta partier har stor skillnad mellan spelarna (CN)
* Här missar man tillfällen att hämta viktig information
Expand All @@ -43,24 +41,24 @@ Detta är exakt samma metod som den man använder när en spelare ges en initial

Ju mer information man använder, desto bättre blir sorteringen.

#### Invändningar mot Berger
### Invändningar mot Berger

1. Om vi startar en bergergrupp med elva spelare och en hoppar av efter första ronden,
kommer alla deltagare att ha en frirond plus en walkover. FairPair ser till att alla spelare får spela varje rond,
eftersom de nu är tio spelare, dvs jämnt antal. (CN)

#### Invändningar mot FairPair
### Invändningar mot FairPair

1. Hur vet man vem som vann? (SW)
2. Många spelare vill möta spelare med olika spelstyrkor (POH)
3. Om oratade bara spelar med andra oratade, får de aldrig någon rating. (CN)
4. Det blir fler remier om jämnare spelare möts. (CN)

#### Varför sorterar Schweizer och FairPair olika ibland?
### Varför sorterar Schweizer och FairPair olika ibland?

Det beror på att Schweizer använder grövre metoder.

#### Vilka är dessa grövre metoder?
### Vilka är dessa grövre metoder?

1. I Schweizer är en vinst alltid exakt en poäng oavsett om man slagit den bäste eller den sämste
* FairPair tar hänsyn till motståndarnas elo när PR beräknas
Expand All @@ -75,20 +73,20 @@ Det beror på att Schweizer använder grövre metoder.
* 500 => 95%
* 600 => 97%

#### Schweizer (78 spelare)
### Schweizer (78 spelare)

Starkaste spelaren längst upp till vänster. Cellerna indikerar rondnummer.
I denna turnering spelades bara 15% av partierna mot de närmaste åtta spelarna, elo-mässigt.

![Schweizer 78](X_Schweizer_78.png)

#### FairPair (78 spelare)
### FairPair (78 spelare)

Hundbenet.

![FairPair 78](X_FairPair_78.png)

#### Måste man möta mycket starkare spelare för att avancera snabbt?
### Måste man möta mycket starkare spelare för att avancera snabbt?

[Arvid Fridman 2019](https://ratings.fide.com/calculations.phtml?id_number=1758632&period=2019-12-01&rating=0) 6.3 elo per klassiskt parti.
[Ram Srinivasson 2024](https://ratings.fide.com/profile/1779249/chart) 8.3 elo per klassiskt parti
Expand All @@ -97,4 +95,25 @@ En turnering med sju ronder kan alltså ge en ökning på 58 elo.
7 av 7 (=100%) mot lika starka spelare, ger 7 * 20 = 140 elo.
Man behöver alltså inte möta spelare som är flera hundra elos starkare för att avancera snabbt.

</div>
### Bergergrupper, ett exempel från SrS 2024 HT

Spelarna delades upp i fem grupper.

N = ospelade partier
R = ronder

|Namn|Spelare|R|partier|N|%|
|-|-:|-:|-:|-:|-:|
|Klass M|11|11| 66|11|17%|
|Klass 1|12|11| 66| 0| 0%|
|Klass 2|11|11| 66|20|30%|
|Klass 3|12|11| 66| 0| 0%|
|Klass 4|10| 9| 45|11|24%|
|Totalt |56||309|42|14%|

Om alla spelarna ingått i en enda FairPair-grupp, skulle förväntat antal ospelade partier bli 5.5 vid elva ronder. 56*11/2=308 partier => ett bortfall på 5.5/308 = 1.8%

Som en bonus, skulle förväntat antal partier/spelare för Klass 4 öka från 6.8 till 10.5

Således hade man sänkt bortfallet från 14% till 1.8% om man använt FairPair istället.

20 changes: 10 additions & 10 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-11-27</td>
<td>10&#43;5</td>
Expand All @@ -237,7 +237,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-11-24</td>
<td>10&#43;5</td>
Expand All @@ -253,7 +253,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-11-24</td>
<td>15&#43;5</td>
Expand All @@ -269,7 +269,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-10-30</td>
<td>10&#43;5</td>
Expand All @@ -287,7 +287,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-10-27</td>
<td>3&#43;2</td>
Expand All @@ -301,7 +301,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-09-25</td>
<td>10&#43;5</td>
Expand All @@ -319,7 +319,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-09-15</td>
<td>15&#43;5</td>
Expand All @@ -335,7 +335,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-09-12</td>
<td>90&#43;30</td>
Expand All @@ -351,7 +351,7 @@ <h3>Inbjudningar</h3>



<tr style="color:#bbb">
<tr style="color:#fff">

<td>2024-09-12</td>
<td>90&#43;30</td>
Expand Down Expand Up @@ -421,7 +421,7 @@ <h3>Föreläsningar • tisdagar 10-12 • Salongerna</h3>

</div>

<old style="font-size: 0.75em">Uppdaterad: 2024-11-30 15:12 </old>
<old style="font-size: 0.75em">Uppdaterad: 2024-12-01 16:40 </old>


</main>
Expand Down
Loading

0 comments on commit 548c8e4

Please sign in to comment.