La forma más corta de convertir expresiones de infijo a postfix (RPN) en C

Aquí se proporciona la formulación original (también puede probar su progtwig para la corrección).

Reglas adicionales:
1. El progtwig debe leer desde la entrada estándar y escribir en la salida estándar.
2. El progtwig debe devolver cero al sistema / progtwig llamante.
3. El progtwig debe comstackrse y ejecutarse con gcc -O2 -lm -s -fomit-frame-pointer.

El desafío tiene un poco de historia: la convocatoria de implementaciones cortas se anunció en el blog del concurso de progtwigción de Polonia en septiembre de 2009. Después del concurso, el código más corto tenía 81 caracteres de longitud. Más tarde, la segunda llamada se hizo para un código aún más corto y después del año matix2267 publicó su solución en 78 bytes:

main(c){read(0,&c,1)?c-41&&main(c-40&&(c%96<27||main(c),putchar(c))):exit(0);} 

¿Alguien que lo haga aún más corto o probar que esto es imposible?

Aquí hay una manera de reducir el código a 76 caracteres:

 main(c){read(0,&c,1)?c-41&&main(c-40&&putchar(c,c%96>26&&main(c))):exit(0);} 

Una versión más larga y comentada para mayor claridad:

 int main(int c) { if (read(0,&c,1)) { /* read char */ if (c-41) { /* if not ')' */ if (c-40) { /* then if not '(' */ if (c%96>26) { /* then if operator (not alphabet or ) */ main(c); /* recurse */ } putchar(c); /* print */ } main(c); /* recurse */ } } else exit(0); /* end program */ } 

Bueno, el verdadero ganador es el que escribió este pequeño código que proporcionó, pero puede modificarlo ligeramente para eliminar la salida:

 main(c){read(0,&c,1)?c-41&&main(c-40&&(c%96<27||main(c),putchar(c))):0;} 

Lo intenté y funciona.

No quiero romper ningún récord, pero publicaré esto de todos modos:

 #define x(z) while(p>##zs)putchar(*p--); main(c){ int s[9],*p=s-1; for(;read(0,&c,1);){ isalpha(c)?putchar(c):c=='('?(c=0):c==')'?(c=1):isdigit(c)?:(*++p=c); if(c==0){x()main(0);} if(c==1) break;} x(=)return 0;} 

Edición: Se corrigieron los problemas de corrección señalados por el comentario de kuszi.