パーソナルブログメモリ

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

Haskell OCamlで文字列操作

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

こんな問題に遭遇しました。

 

文字列が与えられ、同じ文字列がつながっていたら削除していきます。最後に残る文字を答えてください。

ただし一回の削除は同時に行っていきます。この問題をHaskellとOCamlでも解いてみます。

はまったのはやはりCharまわりでしたか、 [Char]でString型にできます。

文字列sのn番目は s!!n Char型になります。

文字列同士の連結は ++ 忘れてます。

 

こちらのほうがハマりました。String.length s ここに付きます。あと同じは= 違うは<>  

他の言語の記号と間違えてもエラーにならないのでなかなか見つかりませんでした。

文字列sのn番目は s.[n] これはCharになり Char.escaped s.[n]でString型に変換します。

文字列の連結は ^ 。全体的に書き方は、もう少し良さげなのあると思います。

少し過去を振り返ってChar.はopen Char;;を先頭行につければ省略できます。

String.もopen String;;を先頭行につければ省略できるはず。

 

やってみましたが2行目のコメントを外すとescapedが動かなくなる。まだまだ謎は多い。

 


最新の画像もっと見る

コメントを投稿

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