check integer divisible by 3 using finite state machine
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# Copyright © 2013 KuoE0 <kuoe0.tw@gmail.com>
#
# Distributed under terms of the MIT license.
"""
"""
table = [[0, 1], [2, 0], [1, 2]]
def stat_transfer_recursion(stat, x):
if x > 0:
return stat_transfer(table[stat][x & 1], x >> 1)
return stat
def stat_transfer_iteration(stat, x):
stat = 0
while x > 0:
stat = table[stat][x & 1]
x = x >> 1
return stat
def divisible_3(x):
return stat_transfer_iteration(0, x) == 0
if __name__ == "__main__":
import sys
for i in range(int(sys.argv[1])):
print i, divisible_3(i)