ノノグラムのヒント・正解表示用コード

やったこと

ノノグラムのヒントと正解を表示するためのコードを書いた。

なぜやったのか

昨日Rulloのコードを書いたときに、ノノグラムも同じように書けそうだと感じたため。

コード

クラス

import numpy as np
class nonogram:
    def __init__(self,x,answer):
        self.grid=np.zeros((x, x)) #実際にゲームで使うgrid(書き換えする)
        self.answer=answer #答え
        self.row=np.zeros((x)) #ヒント(行)
        self.line=np.zeros((x)) #ヒント(列)
    
    #ヒントの計算
    def make_hint(self):
        
        #ヒント(行)の計算
        for i,num in zip(self.answer,range(len(self.answer))): 
            self.row[num]=sum(i)    
        
        #ヒント(列)の計算
        for i in range(len(self.answer)):
            self.line[i]=sum([a[i] for a in self.answer])

    
    #gridの表示
    def show_pic(self,ans_mode=False):
        print("")
        print("\t",end="")
        for i in self.line:
            print(int(i),"\t",end="")
        print("")
        print("-"*len(self.grid)*15)
        print("\t\t",end="")
        print("")
        for i,r in zip(self.answer,self.row):
            print(int(r),"|\t",end="")
            for j in i:
                
                if j!=0 and ans_mode==True:
                    print("■\t",end="")
                elif j!=0 and ans_mode==False:
                    print(" \t",end="")
                else:
                    print(" \t",end="")
            print("")

実行

ans=np.array([[0,1,1,1,0],[1,1,1,0,0],[0,1,0,1,1],[0,1,1,0,1],[1,0,1,1,1]])      #答えのデータ  
data=nonogram(5,ans) #5*5のグリッドの表示
data.make_hint() #ヒントの生成
data.show_pic() #問題表示
data.show_pic(ans_mode=True) #答え表示

結果

 2   4   4   3   3   
---------------------------------------------------------------------------
        
3 |                     
3 |                     
3 |                     
3 |                     
4 |                     

    2   4   4   3   3   
---------------------------------------------------------------------------
        
3 |     ■ ■ ■     
3 | ■ ■ ■         
3 |     ■     ■ ■ 
3 |     ■ ■     ■ 
4 | ■     ■ ■ ■ 

メモ

np.zerosで Cannot interpret → np.zeros(3,1)みたいに指定できない

感想

このままではまだ不完全なので、そのうち以下の処理ができるコードを書きたい。
1. 画像から答えのデータを作成