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