Background

Belgische Informatica-olympiade

Wedstrijd creatief probleemoplossend denken en initiatie tot programmeren voor leerlingen uit het secundair.

Oefenen over de 2022 vragen

Een toegankelijke wedstrijd voor iedereen

Geen voorkennis nodig

De eerste ronde bevat enkel puzzelvragen en logica, geen vragen over programmeren, dus er is geen voorkennis vereist. Enkel de finale bevat vragen waarbij code op papier gelezen en vervolledigd moet worden.

Drie leeftijdscategorieën

De wedstrijd omvat nu drie categorieën volgens studiejaar, die elk een eigen klassement krijgen:

Belofte
tot en met het 2e middelbaar
Junior
3e en 4e middelbaar
Senior
5e, 6e (en 7e) middelbaar
Coaching

Wie voorbij de eerste ronde raakt, mag een opleiding volgen en krijgt ook enkele tools aangereikt om de basis van programmeren te leren. De allerbesten mogen ook meedoen met de trainingen van de nationale ploeg (beCP).

Schrijf je in voor de eerste ronde!

Ik vertegenwoordig een school en wil mijn school inschrijven

Kan je echt geen leerkracht vinden om jouw school in te schrijven voor beOI? Schrijf je dan individueel in om de proef af te leggen in één van de regionale centra.

image

Eerste ronde 2025

Plaats en datum

De eerste ronde vindt plaats in de week van 3 tot 7 februari 2025 in jouw school (start tussen 8u00 en 15u30) of op woensdag 5 februari om 14u00 in één van de 11 regionale centra. De proef duurt 75 minuten; je mag haar slechts één keer afleggen.

Types van vragen

De voorronde zal zich afspelen op de computer, op het gewoonlijke wedstrijdplatform.
Je vindt hieronder enkele voorbeeldvragen.

Bezoek het wedstrijdplatform om de interactieve vragen uit te testen.

Hoe deelnemen?

U vertegenwoordigt een school? Schrijf u in als coördinator op ons wedstrijdplatform (administratie).

Jouw school wenst niet deel te nemen? Registreer je individueel bij een van onze regionale centra via dit formulier.

Kalender 2024-2025

image

Finale 2025

Plaats en datum

VUB Main Campus Etterbeek, Aula Q
Pleinlaan 2, 1050 Brussel
Zaterdag 22 maart 2025

Types van vragen

De finale is een proef op papier. Je vindt hieronder enkele voorbeeldvragen en de vragen van de vorige finales.

Eerste ronde: de 11 centra

We moedigen je aan om de eerste ronde in je eigen school af te leggen, als dat mogelijk is.

Antwerpen

Universiteit Antwerpen
Campus Groenenborger, gebouw Z
Lokaal G.Z.423
Groenenborgerlaan 171
2020 Antwerpen
Routebeschrijving

Brussel / Bruxelles

VUB
VUB Campus Etterbeek
Local E.1.3 et E.1.4
Bd de la Plaine 2 / Pleinlaan 2
1050 Ixelles / 1050 Brussel
Routebeschrijving

Charleroi

UCLouvain
A6K (personne disponible à l'entrée)
Square des Martyrs, 1
6000 Charleroi

Gent

Universiteit Gent
Campus Sterre
PC / laptoplokaal 1.1 Grace Hopper
Krijgslaan 281 - Gebouw S5
9000 Gent

Hasselt

Universiteit Hasselt
Lokaal B17, Gebouw D
Agoralaan 1
Campus Diepenbeek
Hasselt
Routebeschrijving

Leuven

KU Leuven
KU Leuven Department of Computer Science
Room 00.124
Celestijnenlaan 200A
3001 Leuven
Routebeschrijving

Libramont

Haute École Robert Schuman (HERS)
Local B2
Rue de la Cité, 64
6800 Libramont
Routebeschrijving

Liège

Université de Liège
Locaux 1.132 et 1.99
Institut Montefiore (B28)
Allée de la découverte, 10
4000 Liège
Routebeschrijving

Louvain-la-Neuve

Université Catholique de Louvain
Salle Darwin
Bâtiment de Serres B-102
rue de la Croix du Sud
1348 Louvain-la-Neuve
Routebeschrijving

Mons

Université de Mons
Faculté des sciences
Salle Bertrand Russell (1er étage)
Bâtiment de Vinci-Mendeleïev
Avenue Victor Maistriau, 15
7000 Mons
Routebeschrijving

Namur

Université de Namur
Faculté d’informatique
Pool I35 (3ème étage)
Rue Grandgagnage, 21
5000 Namur
Routebeschrijving

Voorbeeldvragen voor de eerste ronde

Voorbeeldvragen voor de finale

De programmeertaal die we hier gebruiken is een pseudocode die uitgelegd wordt in dit document.

  • Dubbel-1

    Je moet een functie schrijven die het aantal “1”-en verdubbelt in een array van n getallen. Bijvoorbeeld, als je een array hebt die [1,1,5,1,4] bevat, dan moet die na het uitvoeren van jouw functie [1,1,1,1,5,1,1,4] bevatten. Om het eenvoudig te houden, krijg je een array die alvast 2n lang is, zodat je geen volledig nieuwe array zelf moet aanmaken.

    De input en de output van het algoritme zijn gedefinieerd als volgt:

    Input : n, een geheel getal.
            arr, een array van gehele getallen die 2n lang is. 
    Output: arr is zo aangepast dat het aantal 1-en in de eerste n gegeven getallen is verdubbeld. 
    

    We stellen je alvast twee mogelijke algoritmes voor waarmee je dit probleem kan oplossen - maar je moet ze eerst nog aanvullen.

    Algoritme 1
    count <-- 0
    for (i <-- 0 to ... step 1)                // (a)
    {
      if (arr[...] = 1)                        // (b)
      {
        for (j <-- ... to i+1 step -1)         // (c)
        {
          arr[...] <-- arr[...]                // (d), (e)
        }
        count <-- count + 1
      }
    }
    

    Vervolledig (a), (b), (c), (d) en (e).

    Algoritme 2
    count <-- 0
    for (i <-- 0 to n-1 step 1)
    {
      if (arr[i] = 1) 
      {
        count <-- count + 1  
      }
    }
    for (j <-- ... to ... step ...)   // (f), (g), (h)
    {
      ...                             // (i)
      if (arr[j] = 1) 
      {
        arr[j+...] <-- 1              // (j)  
        count <-- count - 1
      }
    }
    

    Vervolledig (f), (g), (h), (i) en (j).

    Het duurt ongeveer 8 minuten om algoritme 1 uit te voeren op een array van 1000000 getallen. Hoeveel tijd heeft dezelfde computer dan nodig voor algoritme 2? Kies uit: 10 milliseconden, 4 minuten, 8 minuten, 15 minuten of meerdere dagen.

    Toon/verberg de oplossing
  • Recursie

    Misschien ben je ooit al eens de Fibonacci-getallen tegengekomen in de les wiskunde. Het 0-de Fibonacci-getal is 0, en het 1ste is 1. Voor alle n > 1, is het n-de getal gelijk aan de som van het (n−1)-ste en het (n−2)-de. De eerste 8 Fibonacci-getallen zijn dus 0, 1, 1, 2, 3, 5, 8, 13. De Fibonacci-getallen zijn dus gedefinieerd als volgt:

    Fib(0) = 0
    Fib(1) = 1
    Fib(n) = Fib(n-1) + Fib(n-2), voor n > 1
    

    Dit noemen we een recursieve functie: de functie Fib is gedefinieerd in functie van zichzelf. In een programmeertaal is het gemakkelijk om dat te programmeren. Je schrijft dan een functie die zichzelf oproept:

    Input : n, een natuurlijk getal, waarvoor we het bijhorende Fibonacci-getal willen berekenen 
    Output : het n-de Fibonacci-getal 
    
    Fib(n)
    {
      if (n = 0)
      {
        return 0
      }
      else if (n = 1) 
      {
        return 1
      }
      else
      {
        return Fib(n-1) + Fib(n-2)
      }
    }
    
    • Wat is het resultaat als we Fib(9) aanroepen?
    • Hoeveel keer roept de functie Fib zichzelf aan nadat we Fib(2) aanroepen?
    • Hoeveel keer roept de functie Fib zichzelf aan nadat we Fib(5) aanroepen?

    Enkele slimme informatici hebben een andere (en hopelijk betere) manier gevonden om Fibonacci-nummers te berekenen. Ze hebben een nieuwe recursieve functie BetterFib geprogrammeerd op de volgende manier:

    Input : n, een natuurlijk getal, waarvoor we het bijhorende Fibonacci-getal willen berekenen 
            a, een natuurlijk getal dat in het begin 0 is 
            b, een natuurlijk getal dat in het begin 1 is 
            i, een natuurlijk getal dat in het begin 0 is 
    Output : het n-de Fibonacci-getal
    
    BetterFib(n, a, b, i) {
      if (i = n)
      {
        return a
      }
      else
      {
        return BetterFib(n, b, a+b, i+1)
      }
    }
    

    Om het n-de Fibonacci-getal te berekenen, roep je BetterFib(n,0,1,0) aan. Je begrijpt de code zeker beter als je weet dat bij elke aanroep van BetterFib, de variabele a altijd het i-de Fibonacci-getal bevat, en b altijd het (i+1)-ste Fibonacci-getal.

    • Hoeveel keer roept de functie BetterFib zichzelf aan nadat we BetterFib(2,0,1,0) aanroepen?
    • Hoeveel keer roept de functie BetterFib zichzelf aan nadat we BetterFib(5,0,1,0) aanroepen?
    Toon/verberg de oplossing

Finale 2024

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
Dateien auf Deutsch
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
English Files
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2023

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
Dateien auf Deutsch
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
English Files
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2022

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
Dateien auf Deutsch
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
English Files
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2020

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
Dateien auf Deutsch
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
English Files
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2019

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen
Dateien auf Deutsch
Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2018

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2017

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Finale 2016

Belofte: Junior: Senior: Belofte: Oplossingen Junior: Oplossingen Senior: Oplossingen

Vragen?

Contacteer ons!