Lo struzzo Simone si sposta solo nelle direzioni dei quattro assi cardinali (Nord, Sud, Est, Ovest).
Ogni suo passo misura 1 metro.
Dovete scrivere un programma che, data una sequenza di spostamenti di Simone, misuri quant’è la distanza fra il punto di partenza e il punto di arrivo.
Dati in input
Il file input.txt contiene la sequenza degli spostamenti.
Tale file è costituito da un’unica riga di testo, contenente una sequenza di S, N, E, O (che indicano gli spostamenti nelle direzioni Sud, Nord, Est, Ovest rispettivamente).
La sequenza è terminata da un *.
Ad esempio, il file di input NNESO* dice che Simone si sposta di due metri a Nord, poi di un metro verso Est, poi di un metro verso Sud, e quindi di un metro a Ovest.
Dati in output
Il programma, dopo aver letto il file di input, deve calcolare la distanza in metri fra il punto di partenza e il punto di arrivo, e scriverla su un file di nome output.txt.
Più precisamente, il file output.txt deve contenere un’unica riga.
Su questa riga dovrà comparire il numero intero corrispondente al quadrato della distanza.
Assunzioni
- Il file di input non contiene altri caratteri oltre a quelli precisati.
- Il numero complessivo di spostamenti contenuti nel file di input è minore o uguale a 100000.
- Importante! Il programma non deve scrivere nulla sul video, e non deve interagire con l’utente. Deve solo leggere il file di input e scrivere il file di output.
- L’esecuzione del programma deve terminare entro 5 secondi.
Esempi
| input.txt | output.txt | |
|---|---|---|
| 1 | NNSEEESNOENNS* | 13 |
| 2 | NNESOS* | 0 |
| 3 | OSOS* | 8 |
Program OII_2001_Lo_struzzo_Simone;
Var
fIN, fOUT: Text;
px, py,
risposta: LongInt;
c : Char;
begin
px:=0;
py:=0;
Assign(fIN, 'input.txt');
Reset(fIN);
While(Not Eof(fIN)) do
Begin
Read(fIN, c);
case(c) of
'N': Inc(py);
'E': Inc(px);
'S': Dec(py);
'O': Dec(px);
end;
End;
Close(fIN);
risposta:=px*px+py*py;
Assign(fOUT, 'output.txt');
Rewrite(fOUT);
write(fOUT, risposta);
Close(fOUT);
end.