pythonで難読化するやつ

execさえなんとかなれば記号だけでもプログラミングできそう

pypack.py

import sys

"""
_ = 1
__ = 2
___ = 4
____ = 8
_____ = 16
______ = 32
_______ = 64
"""

def pack(s):
    code = '_=()==();__=_+_;___=__+__;____=___+___;_____=____+____;______=_____+_____;_______=______+______;'
    r = []
    for c in s:
        n = ord(c)
        r.append('+'.join(['_'*(i+1) for i in range(7) if n&(1<<i)]))
    p = ','.join(r)
    code += 'exec("%c"*{})%({})'.format(len(s),p)
    print code

def main():
    if len(sys.argv) > 1:
        f = open(sys.argv[1])
        pack(f.read())
        f.close()
    else:
        print 'usage: pypack.py file'

if __name__ == '__main__':
    main()

fizzbuzz.py

for i in range(1,100):
    if i%15 == 0:
        print 'FizzBuzz'
    elif i%3 == 0:
        print 'Fizz'
    elif i%5 == 0:
        print 'Buzz'
    else:
        print i

fizzbuzz_packed.py

_=()==();__=_+_;___=__+__;____=___+___;_____=____+____;______=_____+_____;_______=______+______;exec("%c"*171)%(__+___+______+_______,_+__+___+____+______+_______,__+_____+______+_______,______,_+____+______+_______,______,_+____+______+_______,__+___+____+______+_______,______,__+_____+______+_______,_+______+_______,__+___+____+______+_______,_+__+___+______+_______,_+___+______+_______,____+______,_+_____+______,___+____+______,_+_____+______,_____+______,_____+______,_+____+______,__+____+_____+______,__+____,______,______,______,______,_+____+______+_______,__+___+______+_______,______,_+____+______+_______,_+___+______,_+_____+______,_+___+_____+______,______,_+___+____+_____+______,_+___+____+_____+______,______,_____+______,__+____+_____+______,__+____,______,______,______,______,______,______,______,______,_____+______+_______,__+_____+______+_______,_+____+______+_______,__+___+____+______+_______,___+_____+______+_______,______,_+__+___+______,__+___+_______,_+____+______+_______,__+____+_____+______+_______,__+____+_____+______+_______,__+_______,_+___+_____+______+_______,__+____+_____+______+_______,__+____+_____+______+_______,_+__+___+______,__+____,______,______,______,______,_+___+______+_______,___+____+______+_______,_+____+______+_______,__+___+______+_______,______,_+____+______+_______,_+___+______,_+__+_____+______,______,_+___+____+_____+______,_+___+____+_____+______,______,_____+______,__+____+_____+______,__+____,______,______,______,______,______,______,______,______,_____+______+_______,__+_____+______+_______,_+____+______+_______,__+___+____+______+_______,___+_____+______+_______,______,_+__+___+______,__+___+_______,_+____+______+_______,__+____+_____+______+_______,__+____+_____+______+_______,_+__+___+______,__+____,______,______,______,______,_+___+______+_______,___+____+______+_______,_+____+______+_______,__+___+______+_______,______,_+____+______+_______,_+___+______,_+___+_____+______,______,_+___+____+_____+______,_+___+____+_____+______,______,_____+______,__+____+_____+______,__+____,______,______,______,______,______,______,______,______,_____+______+_______,__+_____+______+_______,_+____+______+_______,__+___+____+______+_______,___+_____+______+_______,______,_+__+___+______,__+_______,_+___+_____+______+_______,__+____+_____+______+_______,__+____+_____+______+_______,_+__+___+______,__+____,______,______,______,______,_+___+______+_______,___+____+______+_______,_+__+_____+______+_______,_+___+______+_______,__+____+_____+______,__+____,______,______,______,______,______,______,______,______,_____+______+_______,__+_____+______+_______,_+____+______+_______,__+___+____+______+_______,___+_____+______+_______,______,_+____+______+_______)