'"" "" "'" "'" "" "" "'" "" '"" "" "" "" "" "" "" "" "" "" "" "" "'" "" "" "" "" '"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" '"" "" "" ""' "" "" "" "'" "" "" "" "" "" "" "" "'" """" "" "'" "" "" "" "'" "" "" "" '"" "" "" "" "" "" "" ""' "" "" "" "" '"" "" "" ""' "" "" "" "" "" "" "" "" '"" "" "" "'" "" "" "" "" "" "" "" "" '"" "" "" "" "" "" "" ""' "" "" "" "" "" "" "" "" "" "" """" "'" "" "" "" "" "" "" "" "'" "" "" "" '"" "" "" "" "" "" "" ""' " "" "" "" "'" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "'" "" "" " "" '"" "" "" ""' "" "" "" "" "" "" "" "" '"" "" "" "" "" "" "" """'" "" "" "" "'" "" "" "" "" "" "" "" "'" "" "" "" "" "" "" "" "" "" " "" "" "'" "" "" "" "'" "" "" "" '"" "" "" "" "" "" "" ""' "" "" "" "" '"" "" "" ""' "" "" "" "" "" "" "" "" '"" "" "" "'" "" "" "" "'"" "" "" "" '"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""' "" "" " "" "'" "" "" "" "" "" "" "" "'" "" "" "" "" "" "" "" "" "'" "" "" "" "" '"" "" ""' "" "'" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "'" "" "" ""' "" "'" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" '"" "" "" "" "" "" "" ""' "" "" "" '"" "'" "" "" "" "'" "" "" "'" ""' "" "" "" "" '"" "" "" "" "" "" "" "" "" "" "" ""' "" """" "" '"" "" "" "" "" "" "" "'" "" "" "" "" "" "'" "" ""' "" "'" "" "" "" "'" "" "" "" "'" "" "" "" '"" "" "" "" "" "" "" ""' "" "" "" "" '"" "" "" "'" "" "" "" "" "" "'" "" "" "" "" "" "" "" ""' "" """ "" "'" "" "" "" "'" "" "" "" '"" "" "" "" "" "" "" ""' "" "" "" "" '"" "" "" ""' "" "" "" "" "" "" "" "" '"" "" "" "'" "" "" "" "" "" "" "" "'" ""' "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "'"" "" "" ""' "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " "'" "" "" "" "'" "" "" "" "" "" "" "" "'" "" "" "" "" "" "" ""' "" "' "" "" "" "" "'" "" "" "'" "" "" "" "" "" '"" "" "" "" "" "" "" """'" "" "" "" "'" "" "" "" "" "" "" "" "'" "" "" "" "" "" "" "" "" "" " '"" "" "" ""' "" "" "" "" "" "" "" "" '"" "" "" "'" "" "" "" "" "" "" "" "" '"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "'" "" '"" "'" ""' "" "'" ""' "" "'" ""' "" "" "" "" "" "" "" "" "" "" "" "" "" '""' "" "'" "" "" "" "" "" "" ""' "" '"" "" "" "" "" ""' "" '""' "" "'" "" "" "'" "'" ""' "" '"" "" ""' "" '"" "'" "" "'"' "" "" """ '""' "" '"" "'" "" "" "'" "'" "" '"" "" "" ""' "" "
Explicación
Este programa es equivalente a un pseudocódigo como este:
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 las siguientes asignaciones variables:
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)
Como puede ver, evité la ranura variable 0 porque 0es una constante muy larga para escribir.
Entonces leemos cada carácter y almacenamos el valor en ambos cpy ch. Lo modificaremos, cppero lo conservaremos chpara poder imprimirlo si es necesario. Seguidamente restamos los números 65, 4, 4, 6, etc. cppara verificar si se trata de cada uno de los 10 posibles caracteres vocales en ASCII (tenga en cuenta que el último no necesita ser una asignación).
vssiempre contiene 3 menos que el número de vocales que aún se pueden imprimir. Comienza en 0, por lo que se pueden imprimir 3 vocales. Cuando llega -3, dejamos de imprimir vocales.
Si nos encontramos con una no vocal (incluido el espacio), ejecutamos print(ch)seguido de vs = 0. Como probablemente haya adivinado, esto restablece el contador de vocales.
Si encontramos una vocal , ejecutamos ((--vs)+4) ? print(ch) : (++vs). Analicemos esto:
- disminuir
vs;
- si el valor es ahora
-4, hemos ido demasiado lejos, así que no imprima nada, pero incremente de vsnuevo para -3que sigamos negándonos a imprimir vocales;
- de lo contrario, imprime el personaje.
aaYYAAaaaAERGH.