技術memo

関数型ゴースト

演習

任意型リストのsplit/join

ご無沙汰してます。忙しさにかまけて、あまり技術の勉強メモすら捗らない昨今です。 Twitterでお題が出されていたので、それとなくF# でやってみました。

シーケンスのソート後の順番を、元の順番を保ったまま取得したい

Twitterでお題が出されたので、F# でやってみました。 sortして、indexとzipして、またsortし直すなんて、「ずいぶんとダサいコードを書いてるのね!」って思いました。*1 例のコードの「人」と「車」のデータ型にcarRankingとhumanRankingとがあるのも、型…

Scheme(Gauche)でポイントフリースタイル風味

;; リスト(ツリー)を平坦化する。 (define flatten (letrec ((flatten-rev (fold$ (lambda (x acc) (if (list? x) ;; xがlistなら再帰呼び出し結果をaccの先頭に追加 ((compose (fold$ cons acc) reverse flatten-rev) x) ;; それ以外なら単にxをaccの先頭に…

FSharperならこう書く(A Poker Game Program) #FsAdvent

これはF# Advent Calendar 2014の8日目の記事です。 前日はk_disposeさんのF#のlintツールであるFSharpLintを使ってみる - Qiitaでした。 今日は、 「F#をやってる人って普段どんなコードを書いているの?」 「何を考えてプログラミングしてるの?」 とお思…

基礎プログラミング演習(1),(2)をF# でやってみた

元々お手本コードを割と関数型風に書いていたので、ほとんどそのまま一対一対応で移植する形になりました。 比較すると、記法がどれほど簡潔かわかるんじゃないでしょうか。

基礎プログラミング演習(2)

前回の演習(基礎プログラミング演習(1) - 技術memo)と同メンバーで、また似たようなプログラミング演習問題をやってみる会を開きました。 問題 コマンドラインで動くじゃんけんゲームを作りましょう 仕様 初めに「出す手を入力してください(g:グー、c:チョキ…

コナミコマンドができるまでひたすらランダムなキー入力を生成する

Twitter Webでコナミコマンドが使えると話題になっていたので、演習問題がてらやってみます。 仕様 擬似乱数のシード値は外部から指定する 生成する記号の個数の上限を、外部から指定する キー入力される可能性のある記号の一覧(↑↓←→AB)は、固定とする 特定…

基礎プログラミング演習(1)

ご無沙汰してます。 ややあって、友人のプログラミング初心者2人とプログラミング勉強お泊まり会をしましたので、そのレポート的なものを残しておきます。 条件など 2人はプログラミング初心者 入門書の前半くらいまで読みかけ 使用言語は、一人がC++、もう…