Neste artigo, contarei a vocês a experiência de realizar um concurso de programação escolar da cidade.
A ideia de organizar uma OlimpĂada local surgiu na fase de lançamento de uma escola de programação infantil . Ao longo dos dois anos de trabalho, tornou-se ainda mais evidente que a conta vai para unidades de vários concursos nesse sentido, o que significa que existem poucas oportunidades de avaliação dos alunos, envolvimento fora da sala de aula, motivação adicional com resultados. Direi atĂ© isso: em Irkutsk nĂŁo há eventos de competição para alunos de programação in scratch, e apenas uma OlimpĂada em que pythonistas podem participar - “NĂłs brincamos de programadores”.
Parecia que a organização da OlimpĂada precisava de muitos recursos: encontrar uma sala grande, por exemplo, negociar com uma grande biblioteca, fornecer equipamentos, encontrar professores voluntários, garantir a segurança e muitas outras ninharias. E isso foi um obstáculo para uma pequena instituição educacional privada em termos de recursos. A decisĂŁo veio inesperadamente - OlimpĂada Ă distância! Em fevereiro de 2020, correram rumores sobre uma aposentadoria rápida, que os eventos presenciais seriam proibidos e para mim tudo se encaixou.
Agora sobre a organização da OlimpĂada:
Publicamos as tarefas no VKontakte em nosso grupo em 20 de março de 2020. O tempo para resolver problemas foi dado em pouco mais de uma semana - de 20 de março de 2020 a 29 de março de 2020. Foi planejado para avaliar a obra antes de 12 de abril de 2020, eles até duvidaram, nunca se sabe, mas conseguiram em apenas 4 dias. Ao mesmo tempo, havia pouco mais de 100 participantes, a verificação era manual (mas mais sobre isso depois).
Os participantes foram divididos em trĂŞs categorias:
estágio júnior (até a 7ª série de instituições de ensino inclusive, os problemas são resolvidos na linguagem de programação visual scratch / snap)
nĂvel mĂ©dio (atĂ© a 7ÂŞ sĂ©rie de instituições de ensino, inclusive, os problemas sĂŁo resolvidos em qualquer linguagem de programação permitida pela OlimpĂada)
estágio sĂŞnior (sĂ©ries 8-11 de instituições de ensino, problemas sĂŁo resolvidos em qualquer linguagem de programação permitida pela OlimpĂada).
. , 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 .
Eu realmente espero que o artigo seja Ăştil para os lĂderes dos cĂrculos de programação e professores. Sinta-se Ă vontade para realizar OlimpĂadas locais, ver as decisões de seus alunos, tirar conclusões para melhorar seu programa educacional.