2009-10-07 16 views
17

Dostałem się do argument over on SuperUser.com o bezużytecznych odpowiedziach i znalazłem się wyzywający inny plakat, aby odpowiedzieć na pytanie w brainfuck. Nie zabrał mnie na to, ale teraz jestem ciekawy.Port dos2unix do brainfuck

Wszystko, co musisz zrobić, to przekonwertować końcówki linii CRLF na LF (dos-style to unix). Czy ktokolwiek z programistów BF może pomóc?

+3

+1 ode mnie dla każdego, kto kod stanowisk pracy; ^) – Toad

+0

będę go dopasować :) –

+0

przyjąłem pierwszą odpowiedź roboczą, ale ktoś, kto postów (inny, oczywiście) działający program wciąż dostaje awans. –

Odpowiedz

23

Proszę bardzo:

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

Zakłada się, że EOF jest wskazywany przez wartość wejściowego od 0 (jest to ustawienie domyślne na wołowinę, które służy do testowania i jest rozsądnym wyborem; myślę, że może również wspierać EOF pozostawiając postać niezmienioną, ale tego nie przetestowałem). Zakłada się także, że plik kończy się LF (w rzeczywistości zastępuje on ostatni znak LF). Obsługuje CR poprawnie, jeśli nie jest częścią pary CRLF (to znaczy, że generuje samotne CR).

Może zająć godzinę, aby napisać i przetestować, a to obejmuje naukę Brainfuck od samego początku.

+0

ha! nie mam jeszcze działającego kompilatora. jakoś przeoczyłem wołowinę w repozytoriach Debiana. dzięki! –

+0

działa w moim przypadku testowym. wygrałeś! –

+0

Imponujące! kudos +1 – Toad

24

To jest trochę krótsza, tylko 41 znaków.

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

Odczytuje wartość na [0]. Kopiuje wartość odczytu do [1] i [2] i odejmuje 13 od [1]. Jeśli a [1] jest niezerowe (co oznacza, że ​​nie jest to CR), umieszcza [2] i usuwa a [1]. Następnie kasuje [2] i ponownie czyta [0] i powtarza.

Ma to tę dodatkową zaletę, że - ponieważ pozostawia [0] = 0 za każdym razem, gdy czyta - powinna obsługiwać wirtualne maszyny BF, które odczytują EOF jako 0 lub traktują EOF jako "bez zmian", z których oba są pospolite.

Ponieważ nie zastępuje pary CRLF z LF, ale raczej usuwa CR, nie zależy to od założenia, że ​​plik kończy się na LF. Moje własne testy z dos2unix (przynajmniej Cygwin) nie wskazują, że samotne CR są zachowane.

+0

działa na wołowinie, działa z moją próbą. to jest całkiem proste, bez zbłąkanych CR lub cokolwiek innego. dobra robota. –

+0

Oto ona! Miła, przydatna aplikacja napisana w bezużytecznym języku. Gratulacje! +1. BTW, właśnie tworzę kompilator widłowy o nazwie Brain Force. Niedługo ją zaprezentuję. : D Będę używał tego kodu, aby go przetestować. –

+0

Czy język jest naprawdę bezużyteczny, jeśli można go użyć? =) –

2

Nieco krótsze i prostsze CR-striptizerkę:

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