Changing every other instance of <B> in a file
Marcin 'Qrczak' Kowalczyk
qrczak at knm.org.pl
Tue Mar 27 16:44:56 EST 2001
Tue, 27 Mar 2001 15:57:04 -0500 (EST), Bob Kline <bkline at rksystems.com> pisze:
> %s GOT_B
> %%
> <GOT_B>\<B\> { printf("</B>"); BEGIN(0); }
> \<B\> { printf("<B>"); BEGIN(GOT_B); }
> %%
> main() { yylex(); }
> yywrap() { return 1; }
Nice. I think Haskell is not bad too:
------------------------------------------------------------------------
data State = Outside | Inside
main = interact (translate Outside)
translate _ [] = []
translate Outside ('<':'B':'>':s) = "<B>" ++ translate Inside s
translate Inside ('<':'B':'>':s) = "</B>" ++ translate Outside s
translate state (c:s) = c : translate state s
------------------------------------------------------------------------
Here is an obfuscated version:
import List; main = interact $ concat . snd . mapAccumL f 1 . tails
f x ('<':'B':'>':_) = (3-x, take x "</"); f x s = (x, take 1 s)
--
__("< Marcin Kowalczyk * qrczak at knm.org.pl http://qrczak.ids.net.pl/
\__/
^^ SYGNATURA ZASTĘPCZA
QRCZAK
More information about the Python-list
mailing list