carriage-return dos2unix brainfuck

carriage return - Puerto dos2unix para brainfuck



carriage-return (3)

Aqui tienes:

,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.

Supone que EOF se indica con un valor de entrada de 0 (este es el valor predeterminado en beef, que solía probar y es una opción razonable; creo que también podría admitir que EOF deje el carácter sin cambios, pero no probé eso ). También supone que el archivo termina con un LF (en realidad, reemplaza el último carácter con LF). Maneja el CR correctamente si no forma parte de un par CRLF (es decir, genera CR solitarios).

Tomó tal vez una hora para escribir y probar, y eso incluye aprender Brainfuck desde el principio.

Me metí en una discusión sobre SuperUser.com sobre respuestas inútiles y me encontré desafiando al otro póster a responder la pregunta de manera ingeniosa. No me aceptó, pero ahora tengo curiosidad.

Todo lo que el programa debe hacer es convertir los finales de línea CRLF a LF (dos-style a unix). ¿Algún programador de BF que pueda ayudar?


Esto es un poco más corto, solo 41 caracteres.

,[[->+>+<<]>-------------[>.<[-]]>[-]<<,]

Lee un valor en un [0]. Copia el valor de lectura en un [1] y un [2] y resta 13 de un [1]. Si un [1] no es cero (lo que significa que no es un CR), coloca un [2] y borra un [1]. Luego borra un [2] y lee en un [0] nuevamente y repite.

Esto tiene la ventaja adicional de que, dado que deja un [0] = 0 cada vez que lee, debería admitir las máquinas virtuales BF que lean EOF como 0 o traten a EOF como "sin cambios", y ambas son comunes.

Dado que esto no reemplaza los pares CRLF con LF, sino que simplemente elimina las CR, esto no depende de asumir que el archivo termina con un LF. Mis propias pruebas con dos2unix (al menos el de Cygwin) no indican que se retengan los CR solitarios.


Exprimidor de CR ligeramente más corto y más simple:

,[-------------[+++++++++++++.[-]],]