Select Git revision
-
Pavel Veselý authoredPavel Veselý authored
init-year 8.67 KiB
#!/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