Experiencia de realizar una Olimpiada de programación escolar de la ciudad

En este artículo te contaré la experiencia de realizar un concurso de programación escolar de la ciudad.

La idea de organizar una Olimpiada local surgió en la etapa de lanzamiento de una escuela de programación infantil . A lo largo de los dos años de trabajo, se ha vuelto aún más obvio que la cuenta va a unidades de varios concursos en esta dirección, lo que significa que hay pocas oportunidades para evaluar a los estudiantes, participación fuera del aula, motivación adicional con resultados. Incluso diré esto: en Irkutsk no hay eventos de competencia para estudiantes en programación con scratch, y solo hay una Olimpiada en la que pueden participar los pitonistas - “We Play Programmers”.

Parecía que la organización de la Olimpiada requería muchos recursos: encontrar una sala grande, por ejemplo, negociar con una biblioteca grande, proporcionar equipo, encontrar maestros voluntarios, garantizar la seguridad y muchas otras bagatelas. Y esto fue un obstáculo para una pequeña institución educativa privada en términos de recursos. La decisión llegó inesperadamente: ¡la Olimpiada a distancia! En febrero de 2020, hubo rumores sobre una jubilación rápida, que los eventos en persona serían prohibidos y para mí todo encajó.

Ahora sobre la organización de la Olimpiada:

Publicamos las tareas en VKontakte en nuestro grupo el 20 de marzo de 2020. Se dio tiempo para resolver problemas un poco más de una semana, del 20 de marzo de 2020 al 29 de marzo de 2020. Estaba previsto evaluar el trabajo antes del 12 de abril de 2020, incluso dudaron, nunca se sabe, pero lo lograron en tan solo 4 días. Al mismo tiempo, hubo un poco más de 100 participantes, la verificación fue manual (pero más sobre eso más adelante).

Los participantes se dividieron en tres categorías:

  • etapa junior (hasta el grado 7 de instituciones educativas inclusive, los problemas se resuelven en el lenguaje de programación visual scratch / snap)

  • nivel medio (hasta el grado 7 de instituciones educativas, inclusive, los problemas se resuelven en cualquier lenguaje de programación permitido por la Olimpiada)

  • etapa superior (grados 8-11 de instituciones educativas, los problemas se resuelven en cualquier lenguaje de programación permitido por la Olimpiada).

. , 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 .

Realmente espero que el artículo sea de utilidad para líderes de círculos de programación y profesores. Siéntete libre de realizar Olimpiadas locales, ver las decisiones de tus alumnos, sacar conclusiones para mejorar tu programa educativo.




All Articles