パーソナルブログメモリ

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

Haskellでオセロのアルゴリズムを作る

2021-12-14 | ML系言語に挑む
Python3で作成したプログラムを見ていて、これならHaskellで作れそう ということで作成してみました。昨日の深夜 もうすっかり忘れています。過去記事を元にプログラムのパターンを 思い起こし(正確には真似ただけ)、作って上げてみると11位から55位 に後退。単にアルファベットもスコア化しただけで19位に戻りました。   はまった所 CharとStringの比較 . . . 本文を読む

OCaml と Haskell でリスト操作

2021-11-29 | ML系言語に挑む
問題 スペース区切りの文字列 s とスペース区切りの単語集 w がある。 大文字小文字関係なく文字列の単語が単語集にあればその文字数を*で置き換えた文字列 s' を答える。   簡単なリスト操作が必要な問題です。   OCaml エラーにひっかきまわされました。 このエラーの原因 一箇所だけです。 答えは22行目です。   完成 6 . . . 本文を読む

Haskell OCamlで文字列操作

2021-11-28 | ML系言語に挑む
こんな問題に遭遇しました。   文字列が与えられ、同じ文字列がつながっていたら削除していきます。最後に残る文字を答えてください。 ただし一回の削除は同時に行っていきます。この問題をHaskellとOCamlでも解いてみます。 はまったのはやはりCharまわりでしたか、 [Char]でString型にできます。 文字列sのn番目は s!!n Char型になります。 文字列同 . . . 本文を読む

階乗の後ろ0の桁数問題をPython3 OCaml Haskellで解いてみる修行

2021-11-28 | ML系言語に挑む
nの階乗(1*2*3*...*n)の結果、後ろに0は何桁ありますか?という問題。 昨日57%の正解率しかだせなかった解答がこちら。敗着として25を 5x5で5が2つあるという事に残り2分まで気が付かず。焦ってそこから 修正ができなかった昨日。2x5が10という所で2で割れる数と5で割れる数 のうち小さい方が0の桁数になる。   翌日、よく考えれば2と5だったら、5の数 . . . 本文を読む

OCaml Haskell 忘れないように3回目の注射のような作業

2021-11-15 | ML系言語に挑む
Python3だとこんな感じ OCamlとHaskellでやってみます。   一週間ぶりぐらいなんですがけっこうキレイに忘れています。   おもったよりはなんとかなりました。   Haskell開始時   このファイル名にはじごくと入っています。ほんとにこのあたりのデバッグ作業地獄でした。   さんざん確 . . . 本文を読む

Haskell Maybeを避ける

2021-11-13 | ML系言語に挑む
問題 拡張子と拡張子の簡易説明を取得して、ファイル名をいくつか受け取って分類する問題に挑戦。ファイル名の拡張子と拡張子は大文字、 小文字が混在しています。ファイル名もaとか"."だけとか悩ましいものもあります。ラスボスとして9999件対9999件のミサイル何発打っても 倒せないようなのが存在しています。(時間制限があります。感覚的に100msぐらいか?)   ラスボスに対して3 . . . 本文を読む

Haskell 盤を自在に書き換える

2021-11-12 | ML系言語に挑む
Haskellは問題を絞り込んで解いていくのに向いている言語なのかもしれない。盤を操作するとかには向いていない気もする。今回 挑んでみたのはマインスーパーの爆弾の位置から該当する数字を答えるというものひとマスまわりに2つ爆弾があったらその地点は 2とする。そろそろ盤を書き換えるという個人的には大問題に挑戦してみました。 なんとか解いています。cbd(countBoardの意味)を関数間に . . . 本文を読む

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

2021-11-12 | ML系言語に挑む
数独の解答判定の作成 9行 スペース区切りで数字が9個ずつ渡される。それが数独の解答として あっているか判定します。最初9行回して文字列を返してとか考えてたら返し方がわからなかったので (この時は)そのまま判定ルーチン飛ばしてみました。20、21、22の行、列、箱判定は27行書こうかとも 考えたのですが、あえて苦手な再帰のループを書いてみることにしました。10行ぐらいしか短くならな かった . . . 本文を読む

Haskell デバッグ風景 ( [Char]!!0 でCharに変換 )

2021-11-12 | ML系言語に挑む
一番に煮詰まっていた秋の深夜の一枚 12行目 return の文字列は ()で くくらないといけない (ML系言語の仕様のため 頻発するミス) 13行目 文字列の追加 ++ なのに一箇所間違えている (イージーミス) 16行目 input!!0は 一文字だけど [Char]という型になっています。これをCharにするために さらに先頭を取らないといけない 正解は input!!0!!0  . . . 本文を読む

Haskellで解いたオセロの問題で全力解説してみる2

2021-11-12 | ML系言語に挑む
Haskellで解いたオセロの問題で全力解説してみる の続きです。ソースと説明文が離れてしまったのでページを分けソースの再掲載から再開します。前回のあらすじ 文字列の追加は ++  intercalate リスト型に入った文字列を結合 関数名 引数 引数とスペース区切り lengthは文字列の長さ showは数値を文字列に変換 wordsは文字列をスペース区切り !!nは . . . 本文を読む

Haskellで解いたオセロの問題で全力解説してみる

2021-11-12 | ML系言語に挑む
 問題はオセロの盤面データ、自分の色、置く場所が与えられ置いてひっくり返した後の白 黒の数を答えるという もの例外としてすでに置かれていれば"NOPE" ひっくり返せない場所なら"NULL"を答えなければならない。盤の状態 は黒’B' 白'W' なしは '-'で8文字ずつ8行分渡される。自分の色と置く場所はスペース区切りで”B c4"とか渡される。 c4は3列4行目、 . . . 本文を読む

Haskell 早朝 川遊び

2021-11-11 | ML系言語に挑む
朝5時頃から開始 プログラムは1時間ぐらいで完成   THE RIVER I. 17、18行で再起する時のパラメータ入れ替えてますが、川を入れ替えても問題ないので遊んでみました。 一番悩んだのは最期の行 fromIntegralの検索     THE RIVER II. 朝 早すぎるからかもしれませんが、仕様がまったく頭に入ってきませんでした。 . . . 本文を読む

Haskell 修行中 近くの能力者を探し、アスキーアートを描き、バットマンが飛び回る

2021-11-11 | ML系言語に挑む
DEFIBRILLATORS 地表面間の距離を緯度経度から算出する問題。 小数点が "," だったりデータの区切りが";"だったり(16行目21行目で対応)微妙な違いが何気に難しい。       ASCII Art 大きなアスキーアートのアルファベットがデータとして与えられ文字列をそれに変換する問題 こちらは着手前の簡易設計   . . . 本文を読む

Haskell 雷(いかずち)にうたれる

2021-11-11 | ML系言語に挑む
何年か前にHaskellで挑戦して完全には解けなかった CodinGameのPower of Thor   先日挑戦して挑戦中のThor   どうしても今のスキルでは解けないとGitHubに置いてあったソースを見ていて 参考に作ってみたもの   そして何年か前のプログラムを導入してみたもの なんかコツをつかんだ気がする   . . . 本文を読む