sfondo
Il echoprogramma è così pulito. Puoi dirgli qualsiasi cosa e ripete perfettamente le tue parole, ogni volta! Quant'è fico! Deludente, ripete l'input tutto in una volta, indipendentemente dalla velocità di digitazione, che non è molto realistico. Dovremo sistemarlo.
L'obiettivo
Il tuo programma deve prendere il suo contributo da STDIN o equivalente più vicino. Deve leggere le righe dell'utente una alla volta, possibilmente mostrando qualche prompt, fino a quando non inseriscono una riga vuota. Successivamente, stampa le righe su STDOUT o sull'equivalente più vicino, nello stesso ordine in cui sono state fornite. L'ultima riga (vuota) non viene stampata e l'ultima riga stampata non ha bisogno di avere una nuova riga finale.
Inoltre, il programma deve preservare gli intervalli di tempo tra ciascuna riga: se l'utente ha impiegato xsecondi per inserire una riga, occorrerà xqualche secondo prima che il programma la stampi. Questo vale anche per la prima e l'ultima riga; la riga vuota non viene stampata, ma il programma attende comunque prima di terminare.
Esempio
Ecco una sessione di esempio con il programma. Tutte le azioni che non producono testo sono descritte tra parentesi e il prompt (opzionale) viene visualizzato come >.
[begin program]
> fhtagn[enter; 1.48s passed since starting program]
> yum yum[enter; 3.33s passed since previous enter]
> so cool![enter; 2.24s passed since previous enter]
> [enter; 0.23s passed since previous enter]
[wait 1.48s]fhtagn
[wait 3.33s]yum yum
[wait 2.24s]so cool!
[wait 0.23s, then end program]
Senza le azioni, la sessione è simile alla seguente:
> fhtagn
> yum yum
> so cool!
>
fhtagn
yum yum
so cool!
Regole e punteggio
I tempi di attesa dovrebbero essere precisi entro 0,01 secondi (in pratica, se l'essere umano medio non può dire la differenza, stai bene). Vince il conteggio di byte più basso e non sono consentite scappatoie standard . Se la tua lingua ha una funzione integrata proprio per questo compito, non puoi usarla.
yum yum, che era piuttosto ingombrante.