Experience of holding a city school programming Olympiad

In this article I will tell you about the experience of holding a city school programming competition.

The idea to organize a local Olympiad arose at the stage of launching a children's programming school . Over the two years of work, it has become even more obvious that the account goes to units of various competitions in this direction, which means there are few opportunities for testing students, involvement outside the classroom, additional motivation with results. I will even say this: in Irkutsk there are no competition events for students in programming with scratch, and there is only one Olympiad in which pythonists can participate - β€œWe Play Programmers”.

It seemed that organizing the Olympiad needed a lot of resources: finding a large room, for example, negotiating with a large library, providing equipment, finding volunteer teachers, ensuring safety and a lot of other trifles. And this was some stumbling block for a small private educational institution in terms of resources. The decision came unexpectedly - the distance Olympiad! In February 2020, there were rumors about a quick retirement, that in-person events would be banned and for me everything fell into place.

Now about the organization of the Olympiad:

We posted the assignments on VKontakte in our group on March 20, 2020. Time for solving problems was given a little over a week - from March 20, 2020 to March 29, 2020. It was planned to evaluate the work before April 12, 2020, they even doubted, you never know, but they managed it in just 4 days. At the same time, there were a little more than 100 participants, the check was manual (but more on that later).

The participants were divided into three categories:

  • junior stage (up to grade 7 of educational institutions inclusive, problems are solved in the visual programming language scratch / snap)

  • middle level (up to grade 7 of educational institutions, inclusive, problems are solved in any programming language allowed by the Olympiad)

  • senior stage (grades 8-11 of educational institutions, problems are solved in any programming language allowed by the Olympiad).

. , 15 β€œ ” :

C++

Code: Blocks, VisualStudio

VisualStudio 2019

C#

Code: VisualStudio

VisualStudio 2019

Pascal

FreePascal 2.6.2

FreePascal 2.6.2

Basic

FreeBasic 0.90.1

FreeBasic 0.90.1

Java

NetBeans, Eclipse

JDK 1.7.0

Python

IDLE

Python 3.6

. . . - , - . : : 5 – , 2 – – . , – . . , , - .

5 , 2 . . 5 , . . , , . - . , - .

, .

, python

1

. . , . . (scratch/snap) – (, /). (python) – .

:

:

:

5

1 2 3 4 5

 3

1
a = int(input(" :"))
y = 0
for i in range(a):
    x = float(input(":"))
    y += x
y = y / a
print(" : " + str(y))

2

, ( ).  , - , -  , - .

, , . . (scratch/snap) – ( /)) . (python) – .

:

10 30 20

20 10 30

2
s = []
for i in range(3):
    griby = int(input())
    s.append(griby)
if s[0]>s[1] and s[0]>s[2]:
    print("")
elif s[1]>s[2]:
    print("")
else:
    print("")

3

, . . , .

. . (scratch/snap) – ( ) ( /) . (python) – . ? .

:

:

:

5

10 20 30 40 50

 9

18

27

36

45

3
girls = int(input())
apple = []
for numgirl in range(1, girls + 1):
    a = int(input())
    a = a - numgirl
    apple.append(a)
for numgirl in range(girls):
    print(apple[numgirl])

4

1 7. , (scratch/snap) – (, /). (python) – .

:

1

3

4
days = ['','','','','','','']
day = int(input())
print(days[day - 1])

5

. . , , 5 2 ( ), 2 5 ( ). . . (scratch/snap) – (, /). (python) – .

:

:

:

6

10 2 6 20 4 5

4 5 15 8 10 2

5
nums = int(input())
listnums = []
for i in range(nums):
    listnums.append(int(input()))
for i in range(nums):
    if listnums[i] % 5 == 0:
        listnums[i] = listnums[i] // 5 * 2
    elif listnums[i] % 2 == 0:
        listnums[i] = listnums[i] // 2 * 5
    print(listnums[i])

6

: , , . , «» β€” , , . 1 8 , , . (scratch/snap) – (, /) , . (python) – , .

:

:

:

1 5

4

8 1

2

6
vozmojnost = 0
stolb = int(input())
stroka = int(input())
#   
if stolb + 2 < 9:
    if stroka + 1 < 9: #  
        vozmojnost += 1 
    if stroka - 1 > 0: #  
        vozmojnost += 1 
#           
if stolb - 2 > 0:
    if stroka + 1 < 9: #  
        vozmojnost += 1 
    if stroka - 1 > 0: #  
        vozmojnost += 1 
#           
if stroka + 2 < 9:
    if stolb + 1 < 9: #  
        vozmojnost += 1
    if stolb - 1 > 0:#  
        vozmojnost += 1
#           
if stroka - 2 > 0:
    if stolb + 1 < 9:#  
        vozmojnost += 1
    if stolb - 1 > 0:#  
        vozmojnost += 1        
print(vozmojnost)

7

. , YES, β€” NO. 1 8 , , . (scratch/snap) – (, /) YES NO. (python) – YES NO .

:

:

:

1 1 2 6

YES

7
summ = 0
for i in range(4):
    summ += int(input())
if summ % 2 ==0:
    print('YES')
else:
    print('NO')

8

. . , . . () , , . . ( ).

(scratch/snap) – , , – . (python) – .

:

:

:

9

4 2 1

7 5 3

9 8 6

8
vvod = int(input())
num = vvod ** 0.5
if int(num) != num:
    num = int(num) + 1
else:
    num = int(num)
table = [[0] * num for i in range(num)]
numb = 0
ivert = num
for i in range(num):
    if ivert > 0:
        igoriz = 0
        for i in range(num - ivert + 1):
            if igoriz <= num - ivert:
                numb += 1
                if numb <= vvod:
                    table[igoriz][ivert + igoriz - 1] = numb
                else:
                    table[igoriz][ivert + igoriz - 1] = 0
            igoriz += 1
    ivert -= 1  
ivert = 1            
for i in range(num - 1):
    if ivert < num:
        igoriz = 0
        for i in range(num - ivert):
            if igoriz < num - ivert:
                numb += 1
                if numb <= vvod:
                    table[ivert + igoriz][igoriz] = numb
                else:
                    table[ivert + igoriz][igoriz] = 0
            igoriz += 1
    ivert += 1
for row in table:
    for elem in row:
        print(elem, end=' ')
    print()

9

- . 3 , 4 , 5 .. , ( ) . , , - , , , Β«Penguin EmperorΒ». . input.txt . scratch/snap . (scratch/snap) – (, /) . (python) – .

:

:

:

Penguin Emperor

Shark zebra

Turtle Caiman

Shark white

Shark 2

9
file = open("input.txt")
animal=[]
kolvo=[]
for stroka in file:
    data = stroka.split()
    animal.append(data[0])
for i in animal:
    kolvo.append(animal.count(i))
maxi = 0
pos = 0
for i in range(len(kolvo)):
    if kolvo[i] > maxi:
        maxi = kolvo[i]
        pos = i
print(animal[i], maxi, end=" ")

10

, - brawl stars. . . w1, …, wn. , , . w1, …, wn (1 ≀ wi ≀ 100) . input.txt . scratch/snap

, β€” . .

(scratch/snap) – . (python) – .

:

:

4 Shelly

7 Bull

10 Bo

12 8-bit

15 ElPrimo

20 Tick

Tick

Bo

Shelly

0

ElPrimo

8-bit

Bull

10
file = open("input.txt")
pers_dict = []
for pers in file:
    data = pers.split()
    pers_dict.append((data[1], int(data[0])))
pers_dict.sort(key = lambda elem: elem[1], reverse = True)               
command1 = []
command2 = []
summa1=0
summa2=0
for elem in pers_dict:
    if summa1 <= summa2:
        command1.append(elem)
        summa1 += elem[1]
    else:
        command2.append(elem)
        summa2 += elem[1]
for key in command1:
    print(key[0])     
if summa1> summa2:
    print(summa1-summa2)
else:
    print(summa2-summa1)
for key in command2:
    print(key[0])

:

  • , , , , .

  • - , , scratch - , - "" .

  • , . .

  • ? . , .

  • , . . 8-10 , 6 , 4 .

I really hope that the article will be useful for leaders of programming circles and teachers. Feel free to hold local Olympiads, see the decisions of your students, draw conclusions to improve your educational program.




All Articles