Okay, that's enough for today.

This commit is contained in:
Neale Pickett 2022-10-09 21:42:30 -06:00
parent 9f8a52beca
commit 7e2c37cce4
4 changed files with 70 additions and 21 deletions

View File

@ -125,11 +125,7 @@ of the exponential growth in the top 11 places.
### 1st place is super important ### 1st place is super important
1st place is weighted so heavily that it's almost impossible to overcome without 1st place is weighted so heavily that one judge could move a 5th place dancer into 2nd.
your own 1st.
Take for example this scenario,
in which Adjudicator 1 has promised to give 1st place to Alice:
<table class="scorecard"> <table class="scorecard">
<thead> <thead>
@ -137,23 +133,27 @@ in which Adjudicator 1 has promised to give 1st place to Alice:
<td></td> <td></td>
<th>Alice</th> <th>Alice</th>
<th>Bob</th> <th>Bob</th>
<th>Carol</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<th class="justify-left">Adj. 1</th> <th class="justify-left">Adj. 1</th>
<td><input type="number" min=1 max=11 value=1 readonly></td> <td><input type="number" min=1 max=99 value=1 readonly></td>
<td><input type="number" min=1 max=11 value=3></td> <td><input type="number" min=1 max=99 value=3></td>
<td><input type="number" min=1 max=99 value=2></td>
</tr> </tr>
<tr> <tr>
<th class="justify-left">Adj. 2</th> <th class="justify-left">Adj. 2</th>
<td><input type="number" min=1 max=11 value=1></td> <td><input type="number" min=1 max=99 value=5></td>
<td><input type="number" min=1 max=11 value=3></td> <td><input type="number" min=1 max=99 value=3></td>
<td><input type="number" min=1 max=99 value=2></td>
</tr> </tr>
<tr> <tr>
<th class="justify-left">Adj. 3</th> <th class="justify-left">Adj. 3</th>
<td><input type="number" min=1 max=11 value=1></td> <td><input type="number" min=1 max=99 value=5></td>
<td><input type="number" min=1 max=11 value=3></td> <td><input type="number" min=1 max=99 value=3></td>
<td><input type="number" min=1 max=99 value=2></td>
</tr> </tr>
</tbody> </tbody>
<tfoot> <tfoot>
@ -161,15 +161,66 @@ in which Adjudicator 1 has promised to give 1st place to Alice:
<th class="justify-left">Award Points</th> <th class="justify-left">Award Points</th>
<td class="justify-right"><output name="points"></td> <td class="justify-right"><output name="points"></td>
<td class="justify-right"><output name="points"></td> <td class="justify-right"><output name="points"></td>
<td class="justify-right"><output name="points"></td>
</tr> </tr>
<tr> <tr>
<th class="justify-left">Ranking</th> <th class="justify-left">Ranking</th>
<td class="justify-right"><output name="ranking"></td> <td class="justify-right"><output name="ranking"></td>
<td class="justify-right"><output name="ranking"></td> <td class="justify-right"><output name="ranking"></td>
<td class="justify-right"><output name="ranking"></td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
You can adjust these values to get a better feel for how scoring works.
### Tanking a high-ranked dancer is another way to cheat
Because of that exponential curve,
a low ranking from a single judge can carry a lot of weight.
<table class="scorecard">
<thead>
<tr>
<td></td>
<th>Alice</th>
<th>Bob</th>
<th>Carol</th>
</tr>
</thead>
<tbody>
<tr>
<th class="justify-left">Adj. 1</th>
<td><input type="number" min=1 max=99 value=3></td>
<td><input type="number" min=1 max=99 value=11></td>
<td><input type="number" min=1 max=99 value=2></td>
</tr>
<tr>
<th class="justify-left">Adj. 2</th>
<td><input type="number" min=1 max=99 value=3></td>
<td><input type="number" min=1 max=99 value=1></td>
<td><input type="number" min=1 max=99 value=2></td>
</tr>
<tr>
<th class="justify-left">Adj. 3</th>
<td><input type="number" min=1 max=99 value=3></td>
<td><input type="number" min=1 max=99 value=2></td>
<td><input type="number" min=1 max=99 value=2></td>
</tr>
</tbody>
<tfoot>
<tr>
<th class="justify-left">Award Points</th>
<td class="justify-right"><output name="points"></td>
<td class="justify-right"><output name="points"></td>
<td class="justify-right"><output name="points"></td>
</tr>
<tr>
<th class="justify-left">Ranking</th>
<td class="justify-right"><output name="ranking"></td>
<td class="justify-right"><output name="ranking"></td>
<td class="justify-right"><output name="ranking"></td>
</tr>
</tfoot>
</table>

View File

@ -29,9 +29,10 @@ function scorecardUpdate(scorecard) {
} }
{ {
let rankedPoints = [...points].sort((a, b) => b - a)
let i = 0 let i = 0
for (let out of scorecard.querySelectorAll("tfoot output[name='ranking']")) { for (let out of scorecard.querySelectorAll("tfoot output[name='ranking']")) {
out.value = scores[i] out.value = rankedPoints.indexOf(points[i]) + 1
i += 1 i += 1
} }
} }

View File

@ -1,11 +1,3 @@
.winner {
color:cornsilk;
}
figure img {
max-width: 100%;
}
.warning { .warning {
color: #e64; color: #e64;
display: none; display: none;

View File

@ -24,6 +24,7 @@ input {
border: thin solid #ccc; border: thin solid #ccc;
} }
input:read-only { input:read-only {
color: #444;
background-color: #eee; background-color: #eee;
} }
@ -151,7 +152,7 @@ legend {
} }
table { table {
margin: 1em; margin: 1em 0;
border-collapse: collapse; border-collapse: collapse;
} }
thead, tfoot { thead, tfoot {
@ -189,6 +190,10 @@ caption {
img, video { img, video {
max-width: 60%; max-width: 60%;
} }
figure img {
max-width: 100%;
}
} }
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
html { html {