Hellow world と書かずに、Hellow worldと表示
「プログラム内にHellow world を書かずに、Hellow world を表示させる」という息抜きをしました。
今回は、引数ではなく、配列に数値を溜め込んで、ascii 文字にして表示させるという方法。配列内の数値操作には、+-{}[] を使います。
- +
- カウンターを1上げる
- -
- カウンターを1下げる
- {
- カウンターを100上げる
- }
- カウンターを10下げる
- [
- 次の文字へ
- ]
- 前の文字へ
例
- 「+{{}}+」= [182]
- 「+{{[+{}}}-]}}+」= [182,70]
#!/usr/bin/env python # -*- encoding: utf-8 -*- import logging _BUFFER_ = [] _INDEX_ = 0 def parse (s, ns=0): global _BUFFER_ global _INDEX_ if len(_BUFFER_) <= _INDEX_: _BUFFER_ += [0 for n in range(0, _INDEX_ +1)] if s[ns] == '+': _BUFFER_[_INDEX_] += 1 elif s[ns] == '-': _BUFFER_[_INDEX_] -= 1 elif s[ns] == '{': _BUFFER_[_INDEX_] += 100 elif s[ns] == '}': _BUFFER_[_INDEX_] -= 10 elif s[ns] == '[': _INDEX_ += 1; elif s[ns] == ']': if _INDEX_ > 0: _INDEX_ -= 1 if len(s) <= ns+1: return parse(s, ns+1) if __name__ == '__main__': f = "+{+}[{-}[{++}+[{--[{-}[{}}+++[[{-[{-}[{[{}}-[{--}}}]---]}++}]}]--}]]++++]}]--}}]+}++}]}}]}}" parse(f) for n in _BUFFER_: print "%c" % (n+32)