' '' '' ' ' '''' '' '' ' ' '' ' ' '' '' '''' ' ' '''' '''' '' '' '' '' "'" "" "" "" "" ' '' '' '' '' ' ' '' '' '''' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' ''""" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' ''""" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' ''"" ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' '''"" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' ''" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" ' '' "' '' '' ''" "" ' '' '' ''' "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" """" "' '' '' ''" ' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' '' '' "' '' '' "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' "' '' "' '' '' '' ''"' '' ''" "' '' ' ' '' '' '' '''' '' '' '' ' ' '' '' '' '''' '' '' ''"' '' ''"" "" ' '' '' '' ''' "" "" "" " ' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' "' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' '' '' "' ''""" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' '' ''"' '' '' '' ''' '' '' '' ''' "" "" "" "" ' '' '' '' "' '' "' '' '' '' '' ' ' '' '' ''''" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "' '' '' ''" ' '' "' "" "" "" "" " ' '' '' '''" "" ' '' '' '' ''' "" "" "" "" ' '' '' ''"" ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" ' '' "' '' '' '' ''" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ' ' '' ' ' '' '' '' '''' '''' ''' "" "' ''" ' '' "'"" "' ''" ' '' "' '' "' ''" ' ''"' '' '' '' '' ' ' '''' ' ' '''' " ' '' '' "" ' ''' "" " ' '' '' '' '''" "" "" "" ' ''' "" "'" ' '' '' '' ' ' '''' "' "" " ' '' '' '''" " ' '' ' ' '''' '' '' '''" " ' '' ' ' '' '''''" "" """" ' ''' "" ' '' ' ' '' '' '''' "' '' ' ' '' '' '' '''' ''
Spiegazione
Questo programma equivale a pseudocodice in questo modo:
while (cp = (ch = read)) + 1 {
(
(cp -= 65) ? // A
(cp -= 4) ? // E
(cp -= 4) ? // I
(cp -= 6) ? // O
(cp -= 6) ? // U
(cp -= 12) ? // a
(cp -= 4) ? // e
(cp -= 4) ? // i
(cp -= 6) ? // o
(cp - 6) ? // u
0
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
) ? ((--vs)+4) ? print(ch) : (++vs) : {
print(ch)
vs = 0
}
}
con le seguenti assegnazioni variabili:
0 (unused) (13 bytes)
1 cp ( 4 bytes; occurs 20× in the code)
2 vs ( 7 bytes; occurs 5× in the code)
3 ch (10 bytes; occurs 3× in the code)
Come puoi vedere, ho evitato lo slot variabile 0 perché 0è una costante così lunga da scrivere.
Quindi leggiamo ogni personaggio e memorizziamo il valore in entrambi cpe ch. Modificheremo cpma ci terremo in chgiro in modo da poterlo stampare se necessario. Sottraggiamo successivamente i numeri 65, 4, 4, 6, ecc. cpPer verificare se si tratta di ciascuno dei 10 possibili caratteri vocali in ASCII (nota che l'ultimo non deve essere un compito).
vscontiene sempre 3 in meno del numero di vocali che è ancora possibile stampare. Inizia da 0, quindi è possibile stampare 3 vocali. Quando raggiunge -3, smettiamo di stampare vocali.
Se incontriamo una non vocale (incluso lo spazio), eseguiamo print(ch)seguito da vs = 0. Come probabilmente hai indovinato, questo azzera il contatore delle vocali.
Se incontriamo una vocale , eseguiamo ((--vs)+4) ? print(ch) : (++vs). Analizziamo questo:
- decremento
vs;
- se il valore è ora
-4, siamo andati troppo lontano, quindi non stampare nulla, ma incrementare di vsnuovo in -3modo che continueremo a rifiutare di stampare vocali;
- altrimenti, stampa il personaggio.
aaYYAAaaaAERGH.