yurikhan: (Default)
[personal profile] yurikhan

Съездили в Красноярск на фестиваль интеллектуальных игр «Енисейская знать». 8 (из 38 команд) место в ЧГК, чуть-чуть не прошли в плейофф Брейн-ринга.

Вот чего я не понимаю: почему для обсчёта результатов ЧГК пишут специальную программу на Delphi, где достаточно было бы spreadsheet’а типа Excel’я или OpenLibreOffice Calc.

Пусть у нас ожидается до 50 команд, 5 туров по 15 вопросов. Первичный критерий сортировки — сумма (количество взятых вопросов), вторичный — рейтинг (где рейтинг команды есть сумма рейтингов взятых ей вопросов, а рейтинг вопроса — единица плюс количество не взявших его команд).

Первые две колонки — № и название команды. Пишем соответствующие заголовки в A4:B4. Следующие 15 колонок (C:Q) — вопросы первого тура (1–15). Затем промежуточная сумма и рейтинг по туру (R — S1, S — R1). Потом (T:AL) — вопросы второго тура, промежуточная сумма и рейтинг по 2 туру, общая сумма и рейтинг по первым двум турам. Повторить до пятого тура включительно.

В ячейку A1 забиваем формулу =COUNTA($B$4:$B$53). Это будет количество команд.

В ячейку B1 вводим слово «Рейтинг». В C1 — формулу =1+$A$1-SUM(C$4:C$53), это будет рейтинг первого вопроса. Копируем эту формулу во все клетки первой строки, находящиеся в столбцах, соответствующих вопросам (C1:Q1, T1:AH1, AM1:BA1, BF1:BT1, BY1:CM1) — теперь у нас есть строчка рейтингов вопросов. (Чтобы это работало, отвеченный вопрос должен обозначаться единичкой, неотвеченный — нулём или пустой ячейкой.)

Считаем суммы по турам: R4 =SUM(C4:Q4), размножить по R4:R53, AI4:AI53, BB4:BB53, BU4:BU53, CN4:CN53. Суммарный рейтинг по туру: S4 =SUMPRODUCT(C$1:Q$1,C4:Q4) (или =SUMIF(C4:Q4,">0",C$1:Q$1), если у вас Pocket Excel на КПК), размножить по S4:S53, AJ4:AJ53, BC4:BC53, BV4:BV53, CO4:CO53. Общие суммы и рейтинги за прошедшие туры: AK4 =R4+AI4, размножить по AK4:AL53, BD4:BE53, BW4:BX53, CP4:CQ53.

Если мы ещё хотим показывать итоговое место, можно добавить вспомогательную колонку, где будет одновременно сумма и рейтинг: CR3 S.R, CR4 =CP4+CQ4/10000, размножить по CR4:CR53, формат Number, с 4 знаками после точки; и дальше считать место как 1 + количество команд, у которых эта величина выше, чем у данной: CS3 Mh, CT3 Ml, CS4 =1+COUNTIF($CR$4:$CR$53,">"&$CR4), CT4 =COUNTIF($CR$4:$CR$53,">="&$CR4), размножить CS4:CT4 на CS4:CT53. Колонка Mh будет показывать верхнюю границу мест, поделенных командой, Ml — нижнюю. При желании аналогичные колонки можно воткнуть после каждого тура.

Финальный штрих: на клетке C4 делаем Window | Freeze и рисуем решётку и/или красим промежуточные итоги каким-нибудь ненапряжным фоном.

После каждого тура сортируем таблицу по убыванию S.R и скроллим так, чтобы все вопросы тура было видно. Очень желательно, чтобы все команды тоже было видно — достигается установкой достаточно мелкого шрифта и включением полноэкранного режима без тулбаров.

(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

yurikhan: (Default)
Yuri Khan

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 2728293031 

Links

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2025-06-15 14:46
Powered by Dreamwidth Studios