パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Haskell 数独の判定 何度でも再帰で回そう (文字列のスペースを全部取る)

2021-11-12 | ML系言語に挑む

数独の解答判定の作成 9行 スペース区切りで数字が9個ずつ渡される。それが数独の解答として

あっているか判定します。最初9行回して文字列を返してとか考えてたら返し方がわからなかったので

(この時は)そのまま判定ルーチン飛ばしてみました。20、21、22の行、列、箱判定は27行書こうかとも

考えたのですが、あえて苦手な再帰のループを書いてみることにしました。10行ぐらいしか短くならな

かったのですが、かなり抵抗は少なくなりました。

 

40行目のcutSpaceは宇宙を分断するルーチン ではなくて数独の盤を9x9文字の一次元にする前段階

文字列をスペース区切りのリストにする (splitOn " " s)(Data.List.Splitのimportが必要)

リストを空文字でつなげる interclate "" ["aa","bb"] (Data.Listのimportが必要)この2つをつないで

文字列からスペースを取っています。

 

41行目はalNumでバラバラにした文字列のリストをソートして(sort list)くっつけています。リストに1から9

までが1つずつ入っていれば”123456789”となります

 

42行目は文字列を1個ずつ[Char]型に変換しています。thenのあとの[c]はChar型を[Char]に変換してます

 

43行目midは文字列sのn番目からlengの長さ取得しています。文字列の先頭 nを捨てた文字列を返す。

(drop n s)さらに文字列を先頭からn個だけ返す(tale n s)を組み合わせています。

 

<参考文献>

https://www.codingame.com/training/easy/sudoku-validator


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。