clozure cl /Emacs/Mac OS X環境で exercism.io のcommon lispにチャレンジした。
quicklisp はインストール済み。
exercism-mac-64bit.tgz を解凍して、~/binに移動する。
tar -zxvf exercism-mac-64bit.tgz mv exercism ~/bin/
API KEYは、アカウントのページにある。これをコピーして設定する。
exercism configure --key=KEYKEYKEY.....
問題を取得する。
exercism fetch
デフォルトでは、ホームディレクトリの下に exercism というフォルダを作成してそこに問題をおいてくれるようだ。
New: 19 problems
Bob (clojure) /Users/fu7mu4/exercism/clojure/bob
Bob (coffeescript) /Users/fu7mu4/exercism/coffeescript/bob
Bob (cpp) /Users/fu7mu4/exercism/cpp/bob
Leap (csharp) /Users/fu7mu4/exercism/csharp/leap
Bob (elixir) /Users/fu7mu4/exercism/elixir/bob
Leap (erlang) /Users/fu7mu4/exercism/erlang/leap
Sum Of Multiples (fsharp) /Users/fu7mu4/exercism/fsharp/sum-of-multiples
Leap (go) /Users/fu7mu4/exercism/go/leap
Leap (haskell) /Users/fu7mu4/exercism/haskell/leap
Bob (javascript) /Users/fu7mu4/exercism/javascript/bob
Point Mutations (lisp) /Users/fu7mu4/exercism/lisp/point-mutations
Hamming (lua) /Users/fu7mu4/exercism/lua/hamming
Bob (objective-c) /Users/fu7mu4/exercism/objective-c/bob
Bob (ocaml) /Users/fu7mu4/exercism/ocaml/bob
Bob (perl5) /Users/fu7mu4/exercism/perl5/bob
Bob (python) /Users/fu7mu4/exercism/python/bob
Hamming (ruby) /Users/fu7mu4/exercism/ruby/hamming
Bob (scala) /Users/fu7mu4/exercism/scala/bob
Leap (swift) /Users/fu7mu4/exercism/swift/leap
cd ~/exercism/lisp/point-mutations
ls
これで問題がゲットできた。
Emacs で slime を起動して quicklisp で lisp-unit を呼びこむ。
(ql:quickload "lisp-unit")
(ccl:cwd "~/exercism/lisp/point-mutations/")
この辺で問題をよんで、dna.lispを編集する。
それで、ここでユリ裁判。
(load "dna") (load "point-mutations-test.lisp")
あ、失敗らしい。
To load "lisp-unit":
Load 1 ASDF system:
lisp-unit
; Loading "lisp-unit"LARGER-DISTANCE: 1 assertions passed, 0 failed.
NO-DIFFERENCE-BETWEEN-IDENTICAL-STRANDS: 1 assertions passed, 0 failed.
| Failed Form: (DNA:HAMMING-DISTANCE "AGG" "AGACAACAGCCAGCCGCCGGATT")
| Expected NIL but saw 1
|
| Failed Form: (DNA:HAMMING-DISTANCE "AGACAACAGCCAGCCGCCGGATT" "AGACATCTTTCAGCCGCCGGATTAGGCAA")
| Expected NIL but saw 4
|
| Failed Form: (DNA:HAMMING-DISTANCE "AGACAACAGCCAGCCGCCGGATT" "AGGCAA")
| Expected NIL but saw 18
|
INVALID-TO-GET-DISTANCE-FOR-DIFFERENT-LENGTH-STRINGS: 0 assertions passed, 3 failed.SMALL-HAMMING-DISTANCE-IN-MIDDLE-SOMEWHERE: 1 assertions passed, 0 failed.
NO-DIFFERENCE-BETWEEN-EMPTY-STRANDS: 1 assertions passed, 0 failed.
COMPLETE-HAMMING-DISTANCE-IN-SMALL-STRAND: 1 assertions passed, 0 failed.
Unit Test Summary
| 8 assertions total
| 5 passed
| 3 failed
| 0 execution errors
| 0 missing tests
ま、こんなものでしょう。
ちょっと誤解していた。長さが違ったらnilを返さないといけないのか。
なお、解けたらこうやって回答を送信して、
exercism submit ~/exercism/lisp/point-mutations/dna.lisp
次の問題をゲットする。
exercism fetch