L'AICA propone ogni anno dei giochi chiamati Olimpiadi dell'Informatica. Si tratta di alcuni problemi da risolvere utilizzando il linguaggio Pascal o C++. Molte scuole superiori aderiscono e molti alunni partecipano ai giochi. In questo articolo si propone una soluzione in Python di due problemi del 2005: Korrot e Codice. Il confronto tra le soluzioni nei diversi linguaggi più essere interessante e può mettere in luce le potenzialità didattiche di Python.
I quattro i problemi del 2005 si possono trovare agli indirizzi:
http://81.208.32.83/ioi2005/2005/regionali/proveRegionali/korrot.html http://81.208.32.83/ioi2005/2005/regionali/proveRegionali/codice_segreto.html http://81.208.32.83/ioi2005/2005/regionali/proveRegionali/chimico.html http://81.208.32.83/ioi2005/2005/regionali/proveRegionali/sunny.html
Korrot è un automa che si muove su di una scacchiera alla ricerca di una poltrona da occupare. Nella scacchiera sono disseminati degli ostacoli. Korrot deve cercare la poltrona aggirando gli ostacoli seguendo delle regole ben precise. La sua ricerca termina o quando raggiunge l'agognata poltrona o quando va in confusione, perché le ferree regole che deve seguire non gli consentono di procedere. Il programma in Python korrot.py legge da file i dati relativi alle dimensioni della griglia e alla posizione degli ostacoli e alla posizione iniziale di Korrot e della poltrona poi calcola il percorso seguito e il risultato ottenuto, li salva su un altro file e li stampa
In codice segreto si richiede di realizzare un programma che produca un testo criptato seguendo delle semplici regole: ogni vocale viene sostituita con la vocale seguente, ogni consonante con la consonante seguente, ogni cifra con la cifra seguente, gli altri caratteri non vengono modificati. Il programma in Python codice.py legge da file il testo da codificare, salva su un altro file e stampa il testo codificato. La classe CodDecod fornisce i metodi codifica e decodifica che permettono di codificare e decodificare una stringa e codfile e decodfile che permettono di codificare e decodificare un file di testo.
Un file compresso contenente due directory, Korrot e codice, con le soluzioni in python, può essere scaricato tramite questo link.
Il presente articolo ed il codice allegato sono di Daniele Zambelli, che li ha scritti sperando siano utili a qualcuno per un confronto con gli altri linguaggi.