Skip to content
Snippets Groups Projects
Select Git revision
  • cc154e42dffe5ae6e68717f0dbeaa2c2437c1180
  • master default protected
2 results

Makefile

Blame
  • 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