Frage

Ich habe in einem Streit über auf SuperUser.com über nutzlose Antworten und fand mich das andere Plakat herausfordernd die Frage in Gehirnfick zu beantworten. Er hat mich auf es nicht nehmen, aber jetzt bin ich neugierig.

Das ganze Programm tun muss, ist CRLF conversion Endungen LF (dos-Stil auf Unix). Irgendwelche bf Coder um das kann helfen?

War es hilfreich?

Lösung

Hier gehen Sie:

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

Gehe davon aus, dass EOF durch einen Eingabewert von 0 angezeigt (dies ist die Standardeinstellung auf Rindfleisch, das ich zu Test verwenden und ist eine vernünftige Wahl, ich denke, es ist auch EOF unterstützt möglicherweise die Zeichen unverändert bleiben, aber ich didn‘ t-Test das). Auch wird davon ausgegangen, dass die Datei endet mit einem LF (eigentlich ist es das letzte Zeichen mit LF ersetzt). Handles CR korrekt, wenn nicht Teil eines CRLF Paar (das heißt, es gibt lone CRs).

Es dauerte vielleicht eine Stunde zu schreiben und zu testen, und das schließt Brainfuck von Anfang an zu lernen.

Andere Tipps

Dies ist ein bisschen kürzer, nur 41 Zeichen.

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

Es liest einen Wert in ein [0]. Er kopiert den gelesenen Wert in einen [1] und [2] und Subtraktionen 13 von einem [1]. Wenn a [1] nicht Null ist (was bedeutet, es ist kein CR), bringt es ein [2] und löscht ein [1]. Es löscht dann eine [2] und liest in einem [0] erneut und wiederholt sich.

Dies hat den zusätzlichen Vorteil, dass - da es ein [0] = 0 läßt jedes Mal, es liest - es sollte BF virtuelle Maschinen unterstützen, die EOF als 0 oder treat EOF als „keine Änderung“ zu lesen, die beide gemeinsam.

Da dies ersetzt nicht CRLF Paare mit LF, sondern nur Streifen CR, dies hängt nicht von der Annahme der Datei endet mit einem LF. Meine eigenen Tests mit dos2unix (zumindest die Cygwin eins) nicht anzeigt, dass lone CRs zurückgehalten werden.

Ein wenig kürzer und einfacher CR-Stripper:

,[-------------[+++++++++++++.[-]],]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top