Problema 1 – Musica, musica!
Tradizionalmente, le sette note della scala musicale vengono denominate in Italia do, re, mi, fa, sol, la, si.
Le stesse note nel sistema anglosassone vengono indicate con le prime lettere dell’alfabeto: A, B, … G, con
do | re | mi | fa | sol | la | si |
C | D | E | F | G | A | B |
Si scriva un programma che, data una stringa di note nel sistema anglosassone, lasci sul nastro le note equivalenti nel sistema italiano, separate da un punto.
NASTRO INIZIALE | NASTRO FINALE | |
---|---|---|
CCDCFE | DO.DO.RE.DO.FA.MI | Tanti auguri |
CDECCDECEFGEFG | DO.RE.MI.DO.DO.RE.MI.DO.MI.FA.SOL.MI.FA.SOL | Fra’ Martino |
BACBAC | SI.LA.DO.SI.LA.DO | Zerlina cede alle lusinghe di Don Giovanni (Mozart) |
Problema 2 – Sottostringa
Data una stringa s di caratteri di lunghezza n, e due interi i e j, con 1<=i<=j<=n, si vuole estrarre la sottostringa di s contenente i caratteri dall’i-esimo al j-esimo, estremi inclusi.
Si scriva un programma che, dati in input i e j (in notazione decimale) e una stringa, tutti separati da un punto, lasci sul nastro solo la sottostringa richiesta.
Si assuma che la stringa s possa contenere tutti i caratteri MAIUSCOLI nell’alfabeto A…Z.
NASTRO INIZIALE | NASTRO FINALE |
---|---|
1.5.BANANA | BANAN |
7.16.SUPERCALIFRAGILISTIC | ALIFRAGILI |
4.4.CAROTA | O |
Problema 3 – La dama lineare I
Il gioco della dama lineare si gioca fra due giocatori, che chiameremo Bianco e Nero, su una scacchiera di 12 caselle disposte in linea.
Ogni giocatore ha inizialmente 4 pedine del proprio colore, che indicheremo con B (per il Bianco) e N (per il Nero).
Useremo invece il carattere S per le caselle vuote.
All’inizio della partita, le quattro pedine di ogni giocatore occupano un estremo della scacchiera, e ci sono quattro caselle vuote fra i due giocatori: BBBBSSSSNNNN.
Durante il gioco, le pedine possono spostarsi e possono essere mangiate, come si vedrà più avanti.
Ad ogni momento durante una partita, la scacchiera dovrà contenere sempre 12 caselle: alcune saranno libere, altre occupate da pedine.
Ogni giocatore avrà da 0 a 4 pedine del proprio colore (se ne ha 0, ha perso e la partita è finita), ma deve sempre essere presente almeno una pedina di uno dei due giocatori.
Si scriva un programma che, data una stringa di simboli sull’alfabeto {B, S, N}, lasci sul nastro SI se la stringa rappresenta una configurazione valida della scacchiera, come definito sopra, o NO altrimenti.
Suggerimento: si noti che una configurazione è considerata valida in base al numero delle caselle e delle pedine presenti, ignorando le loro posizioni.
NASTRO INIZIALE | NASTRO FINALE | |
---|---|---|
BBBBSSSSNNNN | SI | |
BBBNSSSSSNNN | SI | |
BSNSN | NO | Troppo corta |
BSSSSBBBSSNNN | NO | Troppo lunga |
BBSBBBNNNNSS | NO | 5 B |
NSSSSSSSSSSS | SI | |
BNBSSSSSSNNN | SI | |
SSSSSSSSSSSS | NO | Ci vuole almeno una pedina |
Problema 4 – La dama lineare II
Durante una partita a dama, può essere utile poter ruotare la scacchiera, in modo da guardare le pedine dalla prospettiva dell’avversario.
Si scriva un programma che, data in ingresso una stringa rappresentante una scacchiera valida, la restituisca vista dal punto di vista dell’avversario.
NASTRO INIZIALE | NASTRO FINALE |
---|---|
BBSBBSSNSNNN | NNNSNSSBBSBB |
BSBBSSSSBSNN | NNSBSSSSBBSB |
NNNSNSSBBSBB | BBSBBSSNSNNN |
Problema 5 – La dama lineare III
I giocatori muovono a turno, similmente a quanto avviene nel gioco della dama; inizia sempre il Bianco.
Al proprio turno, un giocatore può muovere una propria pedina avanti di una casella, se la casella di destinazione è libera: per esempio, la prima mossa di una partita è obbligatoriamente
oppure può mangiare una pedina avversaria saltandola, se se la trova davanti e se la casella successiva è libera, come fa il bianco in questo esempio:
BBBSSBNSSNNN -> BBBSSSSBSNNNIn questo caso, se nella posizione di destinazione è ancora possibile mangiare una pedina avversaria, essa deve essere mangiata nella stessa mossa (doppio o triplo salto):
BBBSBNSNSNNN -> BBBSSSSSBNNN