summaryrefslogtreecommitdiff
path: root/template/content/2019/01/03/generating-and-verifying-boards-with-squaredeal.tpl
blob: 8cb6d67128a3055069427706cda73d92ce9b0b97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
<div class="page-header">
  <h1>Generowanie i weryfikacja rozdań przy pomocy SquareDeal</h1>
  <a href="2019/01/03/generating-and-verifying-boards-with-squaredeal/">
    <time class="text-muted" title="2019-01-03 20:00" datetime="2019-01-01T20:00">Thursday, January 03, 2019</time>
  </a>
</div>

<div class="panel panel-defualt container">
  <div class="panel-body">
    <p>Artykuł ma na celu pokazanie obsługi programu SquareDeal.</p>
    <p>SquareDeal dostępny jest do ściągnięcia za darmo <a href="https://www.xs4all.nl/~sater/SquareDeal.zip">ze strony producenta</a>.</p>
  </div>
</div>

<div class="panel panel-default">
  <div class="panel-heading">
    <h2>Założenie turnieju, publikacja założeń (wystarczająco długo przed turniejem)</h2>
  </div>
  <div class="panel-body">
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-01.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-01.png">
        </a>
      </div>
      <div class="col-sm-10">
        Uruchamiamy SquareDeal po raz pierwszy. Program nie wykrył żadnych turniejów, dla których mielibyśmy generować rozdania. Wybieramy opcję utworzenia nowego turnieju, wpisując <kbd>+</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-02.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-02.png">
        </a>
      </div>
      <div class="col-sm-10">
        Nadajemy naszemu turniejowi nazwę - prefiks plików generowanych przez SquareDeal (ale nie prefiks generowanych plików z rozkładami): <kbd>test</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-03.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-03.png">
        </a>
      </div>
      <div class="col-sm-10">
        Dostajemy możliwość ustawienia informacji o zawodach. Nadajemy turniejowi opis/nazwę, wybierając opcję <kbd>1</kbd> i podając: <kbd>Testowy Turniej</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-04.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-04.png">
        </a>
      </div>
      <div class="col-sm-10">
        Opcja <kbd>2</kbd> pozwala ustawić opis <em>informacji opóźnionej</em>. My wybraliśmy wyniki losowania Lotto, zapisane jednym ciągiem, a opis ten zapisaliśmy bez polskich znaków. Uwaga: opis ten jest używany zamiast <em>informacji opóźnionej</em> jeśli nie ustawimy jej przed wygenerowaniem rozdań.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-05.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-05.png">
        </a>
      </div>
      <div class="col-sm-10">
        W końcu, opcja <kbd>3</kbd> pozwala na określenie struktury naszych zawodów. Nasz przykładowy turniej ma strukturę znaną z GPP Par - 50 rozdań, granych w kolejności 1-30, 1-20. Dodajemy pierwszą fazę, złożoną z <kbd>1</kbd> <em>sesji</em> (w nazewnictwie SquareDeal: jednego pliku PBN) liczącej <kbd>30</kbd> rozdań.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-06.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-06.png">
        </a>
      </div>
      <div class="col-sm-10">
        Uzupełniamy prefiks dla generowanych plików PBN (<kbd>test1</kbd>) oraz opis pierwszej fazy zawodów. Wszystkie wpisane tu informacje trafią do pliku upublicznianego przed wygenerowaniem rozkładów na zawody.
        <br />
        Znak <kbd>#</kbd> w prefiksie fazy zastępowany jest dla każdego kolejnego generowanego pliku PBN numerem sesji, czyli prefiks <kbd>test-#</kbd> dla fazy o 3 sesjach, wygeneruje pliki <code>test-1.pbn</code>, <code>test-2.pbn</code> i <code>test-3.pbn</code>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-07.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-07.png">
        </a>
      </div>
      <div class="col-sm-10">
        Powtarzamy operację dla drugiej fazy turnieju - <kbd>1</kbd> <em>sesja</em>, licząca tym razem <kbd>20</kbd> rozdań.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-08.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-08.png">
        </a>
      </div>
      <div class="col-sm-10">
        W dowolnym momencie możemy zakończyć pracę programu, wybierając opcję <kbd>0</kbd> i potwierdzając <kbd>ENTER</kbd>em. Wszystkie zmiany zostaną zapisane.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-09.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-09.png">
        </a>
      </div>
      <div class="col-sm-10">
        SquareDeal utworzył dla naszego turnieju dwa pliki: <code>test.sqd</code> i <code>test.sqk</code>. Ten pierwszy zostanie niedługo podany do publicznej wiadomości, tego drugiego <strong>nie możemy ujawniać</strong> aż do rozegrania rozdań.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-10.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-10.png">
        </a>
      </div>
      <div class="col-sm-10">
        Plik <code>SQD</code> (<em>SQuare deal Definition</em>) zawiera ustalone przez nas, publicznie znane, parametry rozgrywanych zawodów: wybraną przez nas liczbę sesji, liczbę rozdań dla każdej sesji i ich opis oraz zadeklarowaną przez nas <em>informację opóźnioną</em>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-11.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-11.png">
        </a>
      </div>
      <div class="col-sm-10">
        Plik <code>SQK</code> (<em>SQuare deal Key</em>) zawiera <strong>poufne</strong> dane losowe, które posłużą (w połączeniu z <em>informacją opóźnioną</em>) do wygenerowania rozdań w poszczególnych sesjach.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-12.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-12.png">
        </a>
      </div>
      <div class="col-sm-10">
        Jeśli zdecydowaliśmy, że struktura turnieju (i deklarowana przez nas <em>informacja opóźniona</em>) już się nie zmieni, przygotowujemy pliki turnieju do publikacji, wybierając opcję nr <kbd>4</kbd>. Program automatycznie zakończy po tej operacji pracę.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-13.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-13.png">
        </a>
      </div>
      <div class="col-sm-10">
        W pliku <code>SQD</code> pojawiła się informacja (<kbd>PU</kbd> w linii 6), że plik jest gotowy do publikacji.
      </div>
    </div>
  </div>
</div>

<div class="panel panel-default contaienr">
  <div class="panel-heading">
    <h2>Wprowadzenie informacji opóźnionej, wygenerowanie rozdań (przed turniejem)</h2>
  </div>
  <div class="panel-body">
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-01.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-01.png">
        </a>
      </div>
      <div class="col-sm-10">
        Ponowne uruchomienie programu i wybraniu naszego turnieju, otrzymujemy teraz (po ustawieniu flagi publikacji) zupełnie inny zestaw opcji do wyboru.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-02.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-02.png">
        </a>
      </div>
      <div class="col-sm-10">
        Wybór opcji nr <kbd>1</kbd> pozwala ustawić wartość naszej <em>informacji opóźnionej</em>. Wpisujemy więc wyniki zadeklarowanego przez nas wcześniej losowania Lotto: <kbd>62024334447</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-03.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-03.png">
        </a>
      </div>
      <div class="col-sm-10">
        Możemy przystąpić do generowanie rozdań. Wybieramy opcję nr <kbd>2</kbd>. Generujemy najpierw plik dla pierwszej (<kbd>1</kbd>) fazy turnieju. Mamy w niej zdefiniowaną jedną <em>sesję</em> (plik PBN), więc możemy wygenerować wszystkie (<kbd>*</kbd>) sesje.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-04.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-04.png">
        </a>
      </div>
      <div class="col-sm-10">
        Przy pierwszej okazji program (właściwie: sam BigDeal) zapyta nas o parametry konfiguracji generowania rozdań. Najpierw - o formaty plików, jakie chcemy otrzymać. Domyślny wybór (<code>dup,pbn</code>) wygeneruje po dwa pliki dla każdego zestawu rozkładów i pozwoli obsłużyć oba popularne w Polsce typy maszyn do powielania. Jeśli potrzebujemy jedynie plików <code>PBN</code>, możemy wpisać na tym etapie tylko <kbd>pbn</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-05.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-05.png">
        </a>
      </div>
      <div class="col-sm-10">
        Następnie BigDeal spyta, czy ma za każdym razem pytać o formaty plików, jakie chcemy generować. Domyślna wartość to <kbd>no</kbd> ("nie").
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-06.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-06.png">
        </a>
      </div>
      <div class="col-sm-10">
        W końcu - BigDeal spyta nas o nasz identyfikator sędziego (np. imię i nazwisko). Wartość ta była używana w tradycyjnej wersji BigDeal jako część danych losowych służących do generowania rozdań. SquareDeal, dając możliwość wygenerowania (weryfikacji) tych samych rozdań wielu osobom, z tej wartości nie korzysta.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-07.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-07.png">
        </a>
      </div>
      <div class="col-sm-10">
        Analogicznie, generujemy rozdania dla wszystkich (<kbd>*</kbd>) <em>sesji</em> fazy turnieju nr <kbd>2</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-08.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-08.png">
        </a>
      </div>
      <div class="col-sm-10">
        W katalogu programu utworzone zostały pliki <code>test1.pbn</code> i <code>test2.pbn</code> - to nasze rozkłady na turniej, możemy je przekazać do powielarni.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-09.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-09.png">
        </a>
      </div>
      <div class="col-sm-10">
        Możemy też zakończyć działanie SquareDeal. Jeżeli nie zrobiliśmy tego wcześniej, program zapisze ustaloną już wartość <em>informacji opóźnionej</em> do pliku <code>SQD</code>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-10.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-10.png">
        </a>
      </div>
      <div class="col-sm-10">
        Gdyby na tym etapie ktokolwiek poza generującym rozkłady (tj. posiadaczem pliku <code>SQK</code>) próbował uruchomić SquareDeal i wybrać do edycji ściągnięty plik <code>SQD</code>, program nie pozwoli na żadne operacje - brakuje bowiem pliku <code>SQK</code>, niezbędnego do wygenerowania rozdań.
      </div>
    </div>
  </div>
</div>

<div class="panel panel-default">
  <div class="panel-heading">
    <h2>Weryfikacja wiarygodności rozdań (po turnieju)</h2>
  </div>
  <div class="panel-body">
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-01.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-01.png">
        </a>
      </div>
      <div class="col-sm-10">
        Po turnieju przekazaliśmy zawodnikom również plik <code>SQK</code>. Po umieszczeniu go w katalogu programu, tym raze SquareDeal pozwala operować na nim dokładnie tak samo, jak pozwalał dotychczas rozdającemu. Wita nas dokładnie to samo menu.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-02.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-02.png">
        </a>
      </div>
      <div class="col-sm-10">
        Możemy (a nawet: musimy) ustawić ustaloną <em>informację opóźnioną</em>, za pomocą opcji nr <kbd>1</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-03.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-03.png">
        </a>
      </div>
      <div class="col-sm-10">
        Możemy również, w dokładnie taki sam sposób, wygenerować rozkłady dla poszczególnych sesji turnieju. Jak dotychczas, służy do tego opcja nr <kbd>2</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-04.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-04.png">
        </a>
      </div>
      <div class="col-sm-10">
        Dla naszego hipotetycznego zawodnika sprawdzającego wiarygodność rozkładów, jest to pierwsze uruchomienie programu, więc również i on musi przejść przez konfigurację BigDeala, opisaną powyżej.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-05.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-05.png">
        </a>
      </div>
      <div class="col-sm-10">
        Wybieramy najmniej natarczywą opcję...
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-06.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-06.png">
        </a>
      </div>
      <div class="col-sm-10">
        ...a także ustawiamy inne niż dla rozdającego dane identyfikujące - pokażemy, że nie wpływają one na możliwość weryfikacji rozkładów.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-07.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-07.png">
        </a>
      </div>
      <div class="col-sm-10">
        Generujemy również rozkłady dla fazy turnieju nr <kbd>2</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-08.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-08.png">
        </a>
      </div>
      <div class="col-sm-10">
        Po wygenerowaniu rozdań, jesteśmy w stanie stwierdzić, że są one identyczne z tymi, które wygenerował i powielił na turniej organizator.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-09.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-09.png">
        </a>
      </div>
      <div class="col-sm-10">
        Możemy również sprawdzić, co by było, gdyby w Lotto wypadły inne numery. Udowodni to, że organizator nie był w stanie przewidzieć (więc: zmanipulować) rozkładów turnieju. Założmy, że w losowaniu padły numery: <code>4</code>, <code>8</code>, <code>15</code>, <code>16</code>, <code>23</code>, <code>42</code>. Zgodnie z przyjętą konwencją, <em>informacja opóźniona</em> przyjmuje wtedy wartość <kbd>4815162342</kbd>.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-10.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-10.png">
        </a>
      </div>
      <div class="col-sm-10">
        Generujemy teraz ponownie rozdania...
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-11.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-11.png">
        </a>
      </div>
      <div class="col-sm-10">
        ...i widzimy, że faktycznie różnią się od tych, którymi grany był turniej!
      </div>
    </div>
  </div>
</div>

<div class="panel panel-default">
  <div class="panel-heading">
    <h2>Uniemożliwienie sędziemu podmiany rozdań na inny wygenerowany zestaw</h2>
    <em>Sekcja dodana 04.01.2019</em>
  </div>
  <div class="panel-body">
    <p>
      Sprawdźmy jeszcze, co by się stało, gdyby nieetyczny sędzia próbował manipulować rozkładami turnieju. Powyżej pokazaliśmy, że z danego pliku <code>SQK</code> i danej <em>informacji opóźnionej</em> da się wygenerować tylko jeden, zawsze ten sam zestaw rozdań. A co gdyby sędzia wygenerował kilka par plików <code>SQK</code> i <code>SQD</code> i próbował wybrać, które rozkłady powielić na turniej?
    </p>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/04-01.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/04-01.png">
        </a>
      </div>
      <div class="col-sm-10">
        Załóżmy, że powtórzyliśmy operacje z powyższych sekcji i otrzymaliśmy drugi zestaw plików <code>SQD</code> i <code>SQK</code>. Widzimy, że losowe klucze, służące do generowania rozdań, w nowym pliku <code>SQK</code> są różne, pomimo tego, że wybraliśmy takie same parametry turnieju.
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/04-02.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/04-02.png">
        </a>
      </div>
      <div class="col-sm-10">
        Pliki <code>SQD</code> również się różnią - wszystkie parametry są identyczne, ale pole <kbd>KH</kbd>, wyliczane na podstawie zawartości wygenerowanego pliku <code>SQK</code> ma inną wartość. Pamiętajmy, że plik <code>SQD</code> został już, wcześniej, opublikowany - więc jedyna właściwa wartość pola <kbd>KH</kbd> jest już publicznie znana, i to zanim sędzia miał możliwość wygenerowania rozkładów na turniej (bo nieznana wtedy była jeszcze <em>informacja opóźniona</em>).
      </div>
    </div>
    <div class="row">
      <div class="col-sm-2">
        <a href="/_img/generating-and-verifying-boards-with-squaredeal/04-03.png">
          <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/04-03.png">
        </a>
      </div>
      <div class="col-sm-10">
        Jeżeli sędzia po turnieju spróbuje opublikować inny plik <code>SQK</code> niż ten, którego powinien użyć z opublikowanym wcześniej plikiem <code>SQD</code> (np. inny plik <code>SQK</code> użyty niezgodnie z procedurą do powtórzenia wygenerowania rozdań), program nie pozwoli wygenerować rozdań, zwracając uwagę na niezgodność wartości pola <kbd>KH</kbd>. Oznacza to, że opublikowane przed turniejem informacje nie poświadczają wiarygodności rozkładów turnieju i rozkłady te mogły być podatne na manipulacje.
      </div>
    </div>
  </div>
</div>