#!/bin/bash set -e if [ $# != 1 ] ; then echo >&2 "Použití: $0 <ročník>" exit 1 fi YEAR=$1 YY1=$((1950+$YEAR)) YY2=$((1951+$YEAR)) # Datum konání declare -A D D[START]=$YY1-09-01 D[Z5_DOMACI]=$YY2-01-08 D[Z5_OKRESNI]=$YY2-01-29 D[Z6_DOMACI]=$YY2-03-04 D[Z6_OKRESNI]=$YY2-04-02 D[Z7_DOMACI]=${D[Z6_DOMACI]} D[Z7_OKRESNI]=${D[Z6_OKRESNI]} D[Z8_DOMACI]=${D[Z6_DOMACI]} D[Z8_OKRESNI]=${D[Z6_OKRESNI]} D[Z9_DOMACI]=${D[Z5_DOMACI]} D[Z9_OKRESNI]=${D[Z5_OKRESNI]} D[Z9_KRAJSKE]=$YY2-03-25 D[A_DOMACI]=$YY1-12-03 D[A_SKOLNI]=$YY1-12-10 D[A_KRAJSKE]=$YY2-01-14 D[B_DOMACI]=$YY2-01-21 D[B_SKOLNI]=$YY2-01-28 D[B_KRAJSKE]=$YY2-04-01 D[C_DOMACI]=${D[B_DOMACI]} D[C_SKOLNI]=${D[B_SKOLNI]} D[C_KRAJSKE]=${D[B_KRAJSKE]} D[P_DOMACI]=$YY1-11-15 D[P_KRAJSKE]=$YY2-01-21 D[USTREDNI_PONDELI]=$YY2-03-17 # Délka soutěže v minutách declare -A L L[Z5_OKRESNI]=90 L[Z6_OKRESNI]=120 L[Z7_OKRESNI]=120 L[Z8_OKRESNI]=120 L[Z9_OKRESNI]=240 L[Z9_KRAJSKE]=240 # Hacky do výsledkovek KDE_USTREDNI="Plzeň" HACK_A_USTREDNI="podhlavicka={$KDE_USTREDNI 16.--18. března $YY2}" HACK_P_USTREDNI="podhlavicka={$KDE_USTREDNI 18.--20. března $YY2}" dd() { date -d "$1" -Idate } dt() { date -d "$1" -Iminutes } create_ss() { local CAT=$1 local ADV="$2" local MIN_GRADE="$3" local MAX_GRADE="$4" local D_START=${D[START]} local D_DOMACI=${D[${CAT}_DOMACI]} local D_SKOLNI=${D[${CAT}_SKOLNI]} local D_OKRESNI=${D[${CAT}_OKRESNI]} local D_KRAJSKE=${D[${CAT}_KRAJSKE]} local D_ENROLL=$(dd "+2 days $D_DOMACI") bin/create-round --year $YEAR --cat $CAT --seq 1 \ --level 4 \ --type domaci --name 'Domácí kolo' \ --enroll-mode register --enroll-advert "$ADV" \ --min-rec-grade $MIN_GRADE --max-rec-grade $MAX_GRADE \ --ct-tasks-start $D_START \ --ct-submit-end "$D_DOMACI 23:59" \ --pr-tasks-start $D_START \ --pr-submit-end "$D_DOMACI 23:59" \ --enroll-deadline "$D_ENROLL 23:59" \ --score-successful-limit 20 --score-advance-limit 20 bin/create-tasks --round $YEAR-$CAT-1 --code $CAT-I-1 \ --name 'Úloha 1' --points 6 --count 6 bin/schedule-round-job --round $YEAR-$CAT-1 --switch-to-grading --time $(dd "+1 day $D_DOMACI") bin/create-round --year $YEAR --cat $CAT --seq 2 \ --level 4 \ --type skolni --name 'Školní kolo' \ --ct-tasks-start "$D_SKOLNI 10:00" \ --ct-submit-end "$D_SKOLNI 14:20" \ --pr-tasks-start $(dt "-1 day $D_SKOLNI 7:00") \ --pr-submit-end "$D_SKOLNI 18:00" \ --score-successful-limit 10 bin/create-tasks --round $YEAR-$CAT-2 --code $CAT-II-1 \ --name 'Úloha 1' --points 6 --count 3 bin/schedule-round-job --round $YEAR-$CAT-2 --switch-to-grading --time "$D_SKOLNI 19:00" bin/create-round --year $YEAR --cat $CAT --seq 3 \ --level 1 \ --type krajske --name 'Krajské kolo' \ --ct-tasks-start "$D_KRAJSKE 10:00" \ --ct-submit-end "$D_KRAJSKE 14:20" \ --pr-tasks-start $(dt "-1 day $D_KRAJSKE 7:00") \ --pr-submit-end "$D_KRAJSKE 18:00" \ --publish-score bin/create-tasks --round $YEAR-$CAT-3 --code $CAT-III-1 \ --name 'Úloha 1' --points 6 --count 4 bin/create-contests $YEAR-$CAT-3 bin/schedule-round-job --round $YEAR-$CAT-3 --switch-to-grading --time "$D_KRAJSKE 19:00" if [ $CAT = A ] ; then local D_USTREDNI_DEN1=${D[USTREDNI_PONDELI]} bin/create-round --year $YEAR --cat $CAT --seq 4 --part 1 \ --level 0 \ --type ustredni --name 'Ústřední kolo (1. den)' \ --ct-tasks-start "$D_USTREDNI_DEN1 13:00" \ --ct-submit-end "$D_USTREDNI_DEN1 13:00" \ --pr-tasks-start "$D_USTREDNI_DEN1 13:00" \ --pr-submit-end "$D_USTREDNI_DEN1 13:00" \ --publish-score bin/create-tasks --round $YEAR-$CAT-4a --code $CAT-IV-1 \ --name 'Úloha 1' --points 7 --count 3 bin/create-contests $YEAR-$CAT-4a \ --tex-hacks "$HACK_A_USTREDNI" local D_USTREDNI_DEN2=$(dd "+1 days ${D[USTREDNI_PONDELI]}") bin/create-round --year $YEAR --cat $CAT --seq 4 --part 2 \ --level 0 \ --type ustredni --name 'Ústřední kolo (2. den)' \ --ct-tasks-start "$D_USTREDNI_DEN2 13:00" \ --ct-submit-end "$D_USTREDNI_DEN2 13:00" \ --pr-tasks-start "$D_USTREDNI_DEN2 13:00" \ --pr-submit-end "$D_USTREDNI_DEN2 13:00" bin/create-tasks --round $YEAR-$CAT-4b --code $CAT-IV-4 \ --name 'Úloha 4' --points 7 --count 3 bin/create-contests $YEAR-$CAT-4b fi } create_zs() { local GRADE=$1 local CAT=Z$GRADE local D_START=${D[START]} local D_DOMACI=${D[${CAT}_DOMACI]} local D_OKRESNI=${D[${CAT}_OKRESNI]} local D_ENROLL=$(dd "+7 days $D_DOMACI") local L_OKRESNI=${L[${CAT}_OKRESNI]} bin/create-round --year $YEAR --cat $CAT --seq 1 \ --level 4 \ --type domaci --name 'Domácí kolo' \ --enroll-mode register --enroll-advert "$GRADE. ročník ZŠ" \ --min-rec-grade $GRADE --max-rec-grade $GRADE \ --ct-tasks-start $D_START \ --ct-submit-end "$D_DOMACI 23:59" \ --enroll-deadline "$D_ENROLL 23:59" \ --score-successful-limit 20 --score-advance-limit 20 bin/create-tasks --round $YEAR-$CAT-1 --code $CAT-I-1 \ --name 'Úloha 1' --points 6 --count 6 bin/schedule-round-job --round $YEAR-$CAT-1 --switch-to-grading --time $(dd "+1 day $D_DOMACI") bin/create-round --year $YEAR --cat $CAT --seq 2 \ --level 2 \ --type okresni --name 'Okresní kolo' \ --ct-tasks-start "$D_OKRESNI 10:00" \ --ct-submit-end $(dt "$L_OKRESNI minutes $D_OKRESNI 10:20") \ --pr-tasks-start "$D_OKRESNI 10:00" \ --pr-submit-end "$D_OKRESNI 18:00" \ --score-successful-limit $(if [ $CAT = Z9 ] ; then echo 12 ; else echo 9 ; fi) \ --publish-score bin/create-tasks --round $YEAR-$CAT-2 --code $CAT-II-1 \ --name 'Úloha 1' --points 6 --count $(if [ $CAT = Z9 ] ; then echo 4 ; else echo 3 ; fi) bin/create-contests $YEAR-$CAT-2 bin/schedule-round-job --round $YEAR-$CAT-2 --switch-to-grading --time "$D_OKRESNI 19:00" if [ $CAT = Z9 ] ; then local D_KRAJSKE=${D[${CAT}_KRAJSKE]} local L_KRAJSKE=${L[${CAT}_KRAJSKE]} bin/create-round --year $YEAR --cat $CAT --seq 3 \ --level 1 \ --type krajske --name 'Krajské kolo' \ --ct-tasks-start "$D_KRAJSKE 10:00" \ --ct-submit-end $(dt "$L_KRAJSKE minutes $D_KRAJSKE 10:20") \ --pr-tasks-start "$D_KRAJSKE 10:00" \ --pr-submit-end "$D_KRAJSKE 18:00" \ --score-successful-limit 12 \ --publish-score bin/create-tasks --round $YEAR-$CAT-3 --code $CAT-III-1 \ --name 'Úloha 1' --points 6 --count 4 bin/create-contests $YEAR-$CAT-3 bin/schedule-round-job --round $YEAR-$CAT-3 --switch-to-grading --time "$D_KRAJSKE 19:00" fi } create_p() { local D_START=${D[START]} local D_DOMACI=${D[P_DOMACI]} local D_KRAJSKE=${D[P_KRAJSKE]} bin/create-round --year $YEAR --cat P --seq 1 \ --level 1 \ --type domaci --name 'Domácí kolo' \ --enroll-mode register --enroll-advert "Programování" \ --ct-tasks-start $D_START \ --ct-submit-end "$D_DOMACI 23:59" \ --online-submit bin/create-tasks --round $YEAR-P-1 --code P-I-1 \ --name 'Úloha 1' --points 10 --type cms --count 2 bin/create-tasks --round $YEAR-P-1 --code P-I-3 \ --name 'Úloha 3' --points 10 --count 2 bin/create-contests $YEAR-P-1 bin/schedule-round-job --round $YEAR-P-1 --switch-to-grading --time $(dd "+1 day $D_DOMACI 7:00") bin/create-round --year $YEAR --cat P --seq 2 \ --level 1 \ --type krajske --name 'Krajské kolo' \ --ct-tasks-start "$D_KRAJSKE 10:00" \ --ct-submit-end "$D_KRAJSKE 14:20" \ --pr-tasks-start $(dt "-1 day $D_KRAJSKE 7:00") \ --pr-submit-end "$D_KRAJSKE 18:00" bin/create-tasks --round $YEAR-P-2 --code P-II-1 \ --name 'Úloha 1' --points 10 --count 4 bin/create-contests $YEAR-P-2 bin/schedule-round-job --round $YEAR-P-2 --switch-to-grading --time "$D_KRAJSKE 19:00" local D_USTREDNI_DEN1=$(dd "+3 days ${D[USTREDNI_PONDELI]}") bin/create-round --year $YEAR --cat P --seq 3 --part 1 \ --level 0 \ --type ustredni --name 'Ústřední kolo (1. den)' \ --ct-tasks-start "$D_USTREDNI_DEN1 13:00" \ --ct-submit-end "$D_USTREDNI_DEN1 13:00" \ --pr-tasks-start "$D_USTREDNI_DEN1 13:00" \ --pr-submit-end "$D_USTREDNI_DEN1 13:00" bin/create-tasks --round $YEAR-P-3a --code P-III-1 \ --name 'Úloha 1' --points 10 --count 3 bin/create-contests $YEAR-P-3a \ --tex-hacks "$HACK_P_USTREDNI" local D_USTREDNI_DEN2=$(dd "+4 days ${D[USTREDNI_PONDELI]}") bin/create-round --year $YEAR --cat P --seq 3 --part 2 \ --level 0 \ --type ustredni --name 'Ústřední kolo (2. den)' \ --ct-tasks-start "$D_USTREDNI_DEN2 13:00" \ --ct-submit-end "$D_USTREDNI_DEN2 13:00" \ --pr-tasks-start "$D_USTREDNI_DEN2 13:00" \ --pr-submit-end "$D_USTREDNI_DEN2 13:00" bin/create-tasks --round $YEAR-P-3b --code P-III-4 \ --name 'Úloha 4' --points 10 --type cms --count 3 bin/create-contests $YEAR-P-3b } create_ss A "3. a 4. ročník středních škol" 12 13 create_ss B "2. ročník středních škol" 11 11 create_ss C "1. ročník středních škol" 10 10 create_zs 9 create_zs 8 create_zs 7 create_zs 6 create_zs 5 create_p