# your code goes here
#-*- coding: utf-8 -*-
"""
learnstock.pyプログラム
単純な帰納的学習の例題プログラム
パターン学習器
100個の学習データを読み込んで、
適合する10桁の2進数パターンを答えます
使い方 c:\>python learnstock.py < ldata.txt
"""
#モジュールのインポート
import math
import random
#グローバル変数
SETSIZE=100 #学習データセットの大きさ
CNO=10 #学習でデータの桁数(10社分)
GENMAX=10000 #解候補生成回数
SEED=7 #乱数のシード
#下請け関数の定義
#readdata()関数
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCiMtKi0gY29kaW5nOiB1dGYtOCAtKi0KIiIiCmxlYXJuc3RvY2sucHnjg5fjg63jgrDjg6njg6AK5Y2Y57SU44Gq5biw57SN55qE5a2m57+S44Gu5L6L6aGM44OX44Ot44Kw44Op44OgCuODkeOCv+ODvOODs+Wtpue/kuWZqAoxMDDlgIvjga7lrabnv5Ljg4fjg7zjgr/jgpLoqq3jgb/ovrzjgpPjgafjgIEK6YGp5ZCI44GZ44KLMTDmoYHjga4y6YCy5pWw44OR44K/44O844Oz44KS562U44GI44G+44GZCuS9v+OBhOaWuSBjOlw+cHl0aG9uIGxlYXJuc3RvY2sucHkgPCBsZGF0YS50eHQKIiIiCiPjg6Ljgrjjg6Xjg7zjg6vjga7jgqTjg7Pjg53jg7zjg4gKaW1wb3J0IG1hdGgKaW1wb3J0IHJhbmRvbQoKI+OCsOODreODvOODkOODq+WkieaVsApTRVRTSVpFPTEwMCAj5a2m57+S44OH44O844K/44K744OD44OI44Gu5aSn44GN44GVCkNOTz0xMCAj5a2m57+S44Gn44OH44O844K/44Gu5qGB5pWw77yIMTDnpL7liIbvvIkKR0VOTUFYPTEwMDAwICPop6PlgJnoo5znlJ/miJDlm57mlbAKU0VFRD03ICPkubHmlbDjga7jgrfjg7zjg4kKCiPkuIvoq4vjgZHplqLmlbDjga7lrprnvqkKI3JlYWRkYXRhKCnplqLmlbA=
MSAwIDAgMCAwIDAgMSAwIDAgMSAgICAgMQowIDEgMCAxIDAgMSAxIDEgMCAxICAgICAxCjAgMSAwIDAgMCAxIDEgMCAxIDAgICAgIDAKMSAwIDAgMSAxIDAgMSAwIDAgMSAgICAgMQoxIDAgMCAxIDEgMCAxIDEgMSAxICAgICAwCjAgMCAwIDAgMCAwIDEgMSAwIDAgICAgIDEKMSAxIDEgMSAwIDAgMSAxIDAgMSAgICAgMAowIDEgMSAxIDAgMSAxIDEgMCAxICAgICAwCjAgMCAxIDEgMCAxIDEgMSAwIDAgICAgIDAKMSAxIDEgMCAwIDAgMCAxIDEgMCAgICAgMAowIDAgMSAxIDEgMCAwIDAgMSAwICAgICAwCjEgMCAwIDAgMSAwIDEgMCAxIDEgICAgIDAKMCAxIDAgMCAxIDAgMCAwIDEgMSAgICAgMAowIDEgMSAwIDEgMCAwIDEgMSAxICAgICAwCjAgMCAxIDAgMSAwIDEgMCAxIDAgICAgIDAKMCAxIDEgMCAxIDEgMSAxIDEgMCAgICAgMAoxIDEgMCAwIDEgMSAxIDEgMCAwICAgICAxCjEgMCAwIDAgMSAxIDEgMCAwIDAgICAgIDEKMCAwIDEgMCAwIDEgMSAxIDAgMCAgICAgMAowIDEgMSAwIDAgMSAxIDEgMCAxICAgICAwCjEgMSAwIDEgMCAxIDEgMSAxIDEgICAgIDAKMSAxIDEgMCAxIDEgMSAwIDEgMCAgICAgMAowIDEgMSAwIDEgMSAxIDAgMCAxICAgICAwCjEgMSAxIDEgMSAxIDAgMCAwIDEgICAgIDAKMSAxIDEgMCAxIDAgMSAxIDEgMCAgICAgMAoxIDEgMSAwIDEgMCAwIDAgMCAwICAgICAwCjAgMCAwIDEgMSAxIDAgMCAxIDAgICAgIDAKMSAwIDEgMCAwIDAgMSAxIDEgMCAgICAgMAowIDAgMSAxIDEgMSAwIDEgMSAwICAgICAwCjEgMSAwIDEgMCAwIDAgMCAwIDEgICAgIDEKMCAxIDEgMSAwIDEgMCAxIDEgMSAgICAgMAoxIDEgMCAwIDAgMSAxIDAgMCAxICAgICAxCjEgMSAwIDEgMSAxIDEgMSAxIDEgICAgIDAKMSAwIDEgMCAxIDEgMCAxIDAgMSAgICAgMAoxIDEgMCAxIDEgMCAwIDEgMSAwICAgICAwCjAgMCAxIDAgMSAwIDEgMSAwIDEgICAgIDAKMCAxIDEgMSAxIDAgMCAxIDAgMCAgICAgMAowIDEgMSAwIDAgMSAxIDAgMCAwICAgICAwCjAgMCAwIDEgMCAxIDAgMCAwIDAgICAgIDEKMSAxIDEgMCAwIDAgMCAxIDAgMCAgICAgMAoxIDAgMSAxIDEgMSAwIDAgMSAwICAgICAwCjAgMSAwIDAgMSAwIDEgMSAwIDAgICAgIDEKMSAxIDEgMCAxIDEgMCAwIDAgMCAgICAgMAowIDAgMSAwIDEgMCAxIDEgMCAxICAgICAwCjEgMCAwIDEgMCAxIDEgMSAwIDAgICAgIDEKMSAxIDEgMCAxIDEgMCAwIDEgMCAgICAgMAowIDEgMCAxIDEgMSAxIDEgMCAxICAgICAxCjAgMSAxIDAgMCAxIDAgMCAxIDAgICAgIDAKMCAwIDAgMSAxIDEgMCAxIDEgMSAgICAgMAoxIDAgMSAwIDEgMCAxIDEgMSAwICAgICAwCjAgMSAxIDAgMCAwIDEgMCAwIDAgICAgIDAKMCAwIDEgMCAxIDAgMCAwIDEgMSAgICAgMAoxIDAgMSAwIDAgMSAxIDAgMCAwICAgICAwCjAgMCAwIDEgMCAwIDEgMCAwIDEgICAgIDEKMCAwIDEgMSAxIDEgMSAxIDEgMCAgICAgMAowIDAgMSAwIDEgMSAxIDAgMSAxICAgICAwCjAgMSAxIDAgMSAwIDAgMCAwIDAgICAgIDAKMCAwIDEgMSAwIDAgMCAxIDEgMSAgICAgMAowIDEgMCAxIDEgMSAwIDAgMSAwICAgICAwCjEgMSAxIDEgMCAwIDEgMCAxIDEgICAgIDAKMSAxIDEgMCAwIDEgMCAxIDEgMSAgICAgMAowIDEgMCAwIDAgMCAxIDAgMCAwICAgICAxCjAgMCAwIDAgMSAwIDAgMCAwIDEgICAgIDEKMSAxIDAgMCAxIDEgMCAxIDAgMSAgICAgMQowIDAgMCAxIDEgMCAxIDAgMCAxICAgICAxCjEgMSAxIDEgMSAwIDEgMSAwIDEgICAgIDAKMSAxIDEgMSAwIDAgMCAwIDAgMCAgICAgMAoxIDAgMSAxIDEgMCAxIDAgMCAxICAgICAwCjAgMSAwIDEgMCAxIDAgMSAxIDAgICAgIDAKMSAwIDAgMCAxIDAgMCAwIDAgMCAgICAgMQowIDEgMSAxIDAgMCAxIDEgMSAwICAgICAwCjAgMSAxIDEgMCAwIDAgMCAxIDEgICAgIDAKMSAwIDEgMSAwIDEgMSAxIDEgMSAgICAgMAoxIDEgMCAwIDEgMCAxIDAgMSAwICAgICAwCjAgMSAxIDAgMCAxIDAgMSAwIDEgICAgIDAKMCAxIDAgMCAwIDAgMSAxIDEgMCAgICAgMAowIDEgMSAwIDEgMCAwIDAgMSAxICAgICAwCjAgMSAwIDEgMSAxIDEgMSAwIDEgICAgIDEKMSAwIDAgMSAwIDAgMSAxIDEgMSAgICAgMAoxIDEgMCAxIDEgMSAxIDEgMCAwICAgICAxCjAgMCAwIDAgMCAxIDEgMSAxIDEgICAgIDAKMCAwIDAgMCAxIDAgMCAwIDAgMSAgICAgMQoxIDEgMCAxIDAgMSAxIDAgMCAxICAgICAxCjAgMCAxIDAgMCAxIDAgMCAwIDEgICAgIDAKMSAwIDEgMSAwIDAgMCAwIDAgMCAgICAgMAoxIDAgMSAxIDEgMCAwIDAgMCAwICAgICAwCjEgMCAwIDEgMSAxIDAgMSAxIDEgICAgIDAKMCAwIDEgMSAwIDAgMSAwIDAgMSAgICAgMAowIDAgMSAxIDEgMSAxIDAgMSAxICAgICAwCjAgMSAwIDEgMCAxIDAgMCAwIDEgICAgIDEKMSAwIDEgMSAxIDEgMSAwIDEgMSAgICAgMAoxIDEgMSAxIDEgMSAwIDAgMSAxICAgICAwCjAgMSAwIDAgMCAwIDEgMCAxIDEgICAgIDAKMSAwIDEgMSAxIDAgMCAwIDAgMCAgICAgMAowIDEgMSAxIDAgMCAwIDAgMSAxICAgICAwCjAgMSAxIDAgMSAxIDEgMCAwIDAgICAgIDAKMSAxIDAgMCAwIDAgMCAxIDAgMCAgICAgMQoxIDAgMSAwIDAgMCAxIDAgMCAwICAgICAwCjAgMCAxIDEgMSAwIDAgMCAwIDAgICAgIDAKMCAxIDAgMCAxIDAgMCAxIDEgMSAgICAgMA==
1 0 0 0 0 0 1 0 0 1 1
0 1 0 1 0 1 1 1 0 1 1
0 1 0 0 0 1 1 0 1 0 0
1 0 0 1 1 0 1 0 0 1 1
1 0 0 1 1 0 1 1 1 1 0
0 0 0 0 0 0 1 1 0 0 1
1 1 1 1 0 0 1 1 0 1 0
0 1 1 1 0 1 1 1 0 1 0
0 0 1 1 0 1 1 1 0 0 0
1 1 1 0 0 0 0 1 1 0 0
0 0 1 1 1 0 0 0 1 0 0
1 0 0 0 1 0 1 0 1 1 0
0 1 0 0 1 0 0 0 1 1 0
0 1 1 0 1 0 0 1 1 1 0
0 0 1 0 1 0 1 0 1 0 0
0 1 1 0 1 1 1 1 1 0 0
1 1 0 0 1 1 1 1 0 0 1
1 0 0 0 1 1 1 0 0 0 1
0 0 1 0 0 1 1 1 0 0 0
0 1 1 0 0 1 1 1 0 1 0
1 1 0 1 0 1 1 1 1 1 0
1 1 1 0 1 1 1 0 1 0 0
0 1 1 0 1 1 1 0 0 1 0
1 1 1 1 1 1 0 0 0 1 0
1 1 1 0 1 0 1 1 1 0 0
1 1 1 0 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 1 0 0
1 0 1 0 0 0 1 1 1 0 0
0 0 1 1 1 1 0 1 1 0 0
1 1 0 1 0 0 0 0 0 1 1
0 1 1 1 0 1 0 1 1 1 0
1 1 0 0 0 1 1 0 0 1 1
1 1 0 1 1 1 1 1 1 1 0
1 0 1 0 1 1 0 1 0 1 0
1 1 0 1 1 0 0 1 1 0 0
0 0 1 0 1 0 1 1 0 1 0
0 1 1 1 1 0 0 1 0 0 0
0 1 1 0 0 1 1 0 0 0 0
0 0 0 1 0 1 0 0 0 0 1
1 1 1 0 0 0 0 1 0 0 0
1 0 1 1 1 1 0 0 1 0 0
0 1 0 0 1 0 1 1 0 0 1
1 1 1 0 1 1 0 0 0 0 0
0 0 1 0 1 0 1 1 0 1 0
1 0 0 1 0 1 1 1 0 0 1
1 1 1 0 1 1 0 0 1 0 0
0 1 0 1 1 1 1 1 0 1 1
0 1 1 0 0 1 0 0 1 0 0
0 0 0 1 1 1 0 1 1 1 0
1 0 1 0 1 0 1 1 1 0 0
0 1 1 0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0 1 1 0
1 0 1 0 0 1 1 0 0 0 0
0 0 0 1 0 0 1 0 0 1 1
0 0 1 1 1 1 1 1 1 0 0
0 0 1 0 1 1 1 0 1 1 0
0 1 1 0 1 0 0 0 0 0 0
0 0 1 1 0 0 0 1 1 1 0
0 1 0 1 1 1 0 0 1 0 0
1 1 1 1 0 0 1 0 1 1 0
1 1 1 0 0 1 0 1 1 1 0
0 1 0 0 0 0 1 0 0 0 1
0 0 0 0 1 0 0 0 0 1 1
1 1 0 0 1 1 0 1 0 1 1
0 0 0 1 1 0 1 0 0 1 1
1 1 1 1 1 0 1 1 0 1 0
1 1 1 1 0 0 0 0 0 0 0
1 0 1 1 1 0 1 0 0 1 0
0 1 0 1 0 1 0 1 1 0 0
1 0 0 0 1 0 0 0 0 0 1
0 1 1 1 0 0 1 1 1 0 0
0 1 1 1 0 0 0 0 1 1 0
1 0 1 1 0 1 1 1 1 1 0
1 1 0 0 1 0 1 0 1 0 0
0 1 1 0 0 1 0 1 0 1 0
0 1 0 0 0 0 1 1 1 0 0
0 1 1 0 1 0 0 0 1 1 0
0 1 0 1 1 1 1 1 0 1 1
1 0 0 1 0 0 1 1 1 1 0
1 1 0 1 1 1 1 1 0 0 1
0 0 0 0 0 1 1 1 1 1 0
0 0 0 0 1 0 0 0 0 1 1
1 1 0 1 0 1 1 0 0 1 1
0 0 1 0 0 1 0 0 0 1 0
1 0 1 1 0 0 0 0 0 0 0
1 0 1 1 1 0 0 0 0 0 0
1 0 0 1 1 1 0 1 1 1 0
0 0 1 1 0 0 1 0 0 1 0
0 0 1 1 1 1 1 0 1 1 0
0 1 0 1 0 1 0 0 0 1 1
1 0 1 1 1 1 1 0 1 1 0
1 1 1 1 1 1 0 0 1 1 0
0 1 0 0 0 0 1 0 1 1 0
1 0 1 1 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 1 1 0
0 1 1 0 1 1 1 0 0 0 0
1 1 0 0 0 0 0 1 0 0 1
1 0 1 0 0 0 1 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0
0 1 0 0 1 0 0 1 1 1 0