新型インフルエンザ

新型インフルエンザにかかってしまったようなので
診断された経緯などを書きます


日曜日正午くらい     なんか喉だけが痛い状態
月曜日午前0時くらい    足が筋肉痛みたいに痛くなる
月曜日午前4時30分くらい  目眩がするので熱を測ったら38度だった
月曜日午前5時くらい    専用受付に連絡 
             今緊急で病院に行って検査しても
             インフルエンザかどうか分からない
             仮に陽性だったとしても薬が1日分
             しか出ないと言われる
             →体力温存して朝病院に行くようにする
月曜日9時         病院に行かなければならないが
             どうしても体調が悪いため
             病院に行く時間を延ばす
月曜日11時        病院へ行く


病院に行ってすぐ先生から「インフルエンザだと思うよ」といわれました
咳の感じとか熱の出方鼻水などがもうそのまんまインフルエンザの
症状そのものらしいです
検査をしても発熱してからギリギリ8時間のため検査をしても
陽性が出ないかもしれないけれど検査
時間的なもの?で検査結果はインフルエンザA型B型ともに反応無し
新型インフルエンザの場合はちょっと従来のインフルエンザとは
違ってる事も多いようで
インフルエンザの症状そのものなのに何回検査しても出なくて
最終的に血液検査をして分かったりする事もあるそうです
先生はインフルエンザの検査キットを時間をおいて使う事も考えたそうですが
今現在インフルエンザの検査キットが不足しているため1人の患者に
数回検査キットを使うのが難しいとの事 また血液検査をしたところで
血液検査の結果が出るのは恐らく治癒した後だと思われる事
を告げられ再度の検査はしない方向に決めました
ただ先生の所見で明らかに新型インフルエンザとの事なので
タミフルを処方されて今現在服用しています
昨日は熱が38度のあたりで推移していましたが 
今は熱も下がって落ち着き始めています
だけどまだ倦怠感や咳や鼻水はまだまだ続いています
今は誰にも感染していない事を願うのみです

今度は不正な値を入力した時にフィボナッチを止めるようにする

昨日schemeでフィボナッチを書いたので今度はhaskell!と思っていたら
また問題が出されました・・・

この条件だと(fib (- 1))とかfib(1.2)で止まらないコードになる

ということで不正な値を入力した時にアラートを返すコードを書こう!
という事になり書いてみました

(define (fib n) 
  (cond ((= n 0) 0)
        ((= n 1) 1)
        ((>= n 2)(+ (fib (- n 1)) (fib (- n 2))))
        (else (display "入力が不正です"))))

そして不正な値を入れて実行してみると

gosh> (fib "hoge")
*** ERROR: Number required, but got "hoge"
Stack Trace:
_______________________________________
gosh> (fib 7)
13

アラートが出て来ない!!!!
なんでアラートが出て来ないか分からなかったのでアドバイスを受けて
とりあえずR5RSの日本語のPDFをDownloadしてnumber?で検索して読みました
なんとなくしか分からなかったけど
もしアラートを出したいのなら書いたフィボナッチのコードを更に
true or falseに分岐させてfalseの場合にアラートを
出すようにしたらいいという事に気付きました
さてココまで分かったけど・・・ってあれれ?????

gosh> (define (fib n) 
  (cond ((= n 0) 0)
        ((= n 1) 1) 
        ((>= n 2)(+ (fib (- n 1)) (fib (- n 2))))
  (else (display "入力が不正です"))))
fib
gosh> (fib 0.2)
入力が不正です#<undef>
gosh> (fib "hoge")
*** ERROR: Number required, but got "hoge"
Stack Trace:
_______________________________________

私的には"hoge"とか文字列を入れても"入力が不正です"って
返ってくると思っていた
だけどNumber required, but got "hoge"のerrorをみると
["hoge"はあったけど数を入れて]と言っているので
"入力が不正です"って返って来なくてもいいのかな???
文字列じゃなくて不正な値を入れたら止まってはいると思うんだけど・・・
いろいろ自信がない。:゚(。ノω\。)゚・。
文字列と数字なのでオブジェクトの型は違うけど
不正な数字入力の場合も不正な文字列を入力の場合も同じように
アラートをを返してこなくちゃダメなのかな?
同じところをホントぐるぐるまわっていました・・・orz

schemeでフィボナッチ

ある日友人と飲んでた際にプログラミング言語を勉強して
使えるようになったのならフィボナッチくらい書けて当たり前
フィボナッチは初歩の初歩の初歩!という事を言われたので
ちょっと心配になりました
なので今まで勉強してきた言語でフィボナッチを書こうと決めました
Haskellは途中だしSICPも1章までしか読んでないしPythonは現在進行中ですが
やると決めたので!!!!
フィボナッチは公式は覚えてたのですがちゃんと内容を覚えていなかったので
ココでもう一度概要を把握

慚化式 (Fn-1)+(Fn-2) ただしF(0)=0 F(1)=1

Fnの1つ前と2つ前の答えを足したものがFnになるのですね
私はこの辺普通に間違った事を言っていましたw
さてこれをschemeで書く訳ですが私はカウンター積などが
ちゃんと使えないのでcondを使いました

(define (fib n) 
  (cond ((= n 0) 0)
    ((= n 1) 1)
    (else (+ (fib (- n 1)) (fib (- n 2))))))

4行目のfibを最初書き忘れてましたがcond~hoge else~と書く
文法のほうではあまり時間がかからずにかけました
(emacsからのコピペミスをしてた分の時間かかったかもorz)
そしてcond文の書き方はあともう1種類cond(fuga1)...(hoge1)
のような書き方があるのでそちらもかけるはずと思って書いていましたが
なかなかかけなくてかなり迷走しました

define (fib n) 
 (cond ((= n 0) 0)
       ((= n 1) 1)
       ((< n 2) (+ (fib (- n 2))(fib(- n 1)))))

最初のほうでこんなコードを書いてて
本当はn≦2を表現したいのに上のコードだと全然だめですよね
n=2の時はどうなってしまうの?みたいな・・・
そこで次に書いたコード

(define (fib n) 
  (cond ((= n 0) 0)
        ((= n 1) 1)
        ((=< n 2)(+ (fib (- n 1)) (fib (- n 2))))))

またこれもerrorなんですけど(=< n 2)がおかしい
そこで今度は=<の符号を別々にして<と>の符号の向きが違ってたので
そこを直したら大丈夫だろうと考えました

(define (fib n) 
  (cond ((= n 0) 0)
        ((= n 1) 1)
        (= (> n 2) (+ (fib (- n 1)) (fib (- n 2))))))

ちゃんと答え返してくる!!
コレで安心して今朝方寝た訳なんですけどこのコードが不可解との
ご指摘があり考えてみました
このコードでちゃんと答えは返して来るんです
私的には(> n 2)であるならば (+ (fib (- n 1)) (fib (- n 2)))と=とみなして
答えを返してくると思ってたのですがこのコードを読み直してみると

        (= (> n 2) (+ (fib (- n 1)) (fib (- n 2)))

括弧の位置がおかしいかも?
私がやりたかったのは(n)の場合は(m)と返すというコードなのだから・・・
なので書き直すなら

        (= (> n 2)) (+ (fib (- n 1)) (fib (- n 2))

となってgoshでは#tが返って来た
これもまた指摘されたように=に対応するモノがないという事と
値がtrueであるならば=を返すって事かな??
この辺考えてるけどやっぱり分かってないと思う
そして以上の事を踏まえてかいたコードがこれ

(define (fib n) 
  (cond ((= n 0) 0)
        ((= n 1) 1)
        ((>= n 2)(+ (fib (- n 1)) (fib (- n 2))))))

>=だと大丈夫だけど=>ならerrorです
この辺は符号の優先順位の問題だと思うのでまぁいいか・・・
一番簡単に書けるはずのschemeのフィボナッチでこんなに躓いてて
HaskellとかPythonで書けるのか心配になって来た・・・orz
体調悪めなのでHaskellの分は明日中に書ければいいって事に決めました!
追記 ◯線形反復プロセス ×カウンター積 分かりにくくてゴメンナサイ

気がついたら同じ質問を再度していたので忘れないようにメモ

最近ghcの調子が悪いんです
この前もcat.hsをemacsで書いてrunghcでターミナル上で
実行させようと思ったら実行しないしghcも終了しない
この状態をどうにかしたかったのでHaskellの師匠でもある
id:ujihisaさんに相談をしてなんとか解決したのですが
私のghcがおかしかった理由は
標準入力からのバッファリングがなにかおかしいとの事でした
解決策として一旦パイプを間に挟む事でバッファしないようにしたら大丈夫になりました
そして今回は2〜3行しかないコードだったのでghciを使ってたんですけど
絶対に通るはずのコードまで通らない!!
そこでまたujihisaさんにghciがおかしいという話をしたら

ghciは    main = do print $ ...
                    print $ ...
各行がこの...のとこに入るような感じで処理されると思えばOK
素のHaskellを書くのとは違うよー

との事だったのですが実はその後重要な事に気付いちゃいましたorz
実は・・・ほぼ同じ質問2回目!!!
私って学習能力ないわ・・・
私のノートによると
[ghci使う時はletを使う とにかく使う おまじない]
って書いてありました・・・
更にあの頃はvimを使っていてghcのほうを使ってて
作ったファイル+2個のコンパイルが違うファイルができちゃって
毎回困惑してたのを思い出しましたw
もう同じ質問しないように戒め的メモとして書きました☆

怠けたい!

お出かけする時は大体本1冊とノートPCを持って行く事にしている
電車に乗ってる時や時間が空いた時やお勉強するのには必需品だから
という理由なんですが・・・別バックを持たないと入らないし
カワイイバックもなかなか使えない事があるのでこの事態を何とかしたい!
と思いiPhoneだけでお出かけ出来る方法を考えたりしてみました
PCで使っててiPhoneで使ってないのはシェルなのでiPhoneでせめて
インタプリタくらい使えないかなとか本は重いから電子書籍
またはPDF化したいなとか思って下調べなどしてました
シェルはiPhoneから使えるようになるのですがちょっと
入力が面倒なのでやっぱりPC持ち運びになりそうな予感
本についてはスキャナで取り込めばいいよね!とか考えてたんですが
スキャナで取り込むためには本をばらさなくちゃいけないということが
全くアタマに入って無くてあっさり断念・・・
本をばらすのは嫌なので無理です・・・
このままじゃどうやらお出かけする時の荷物の軽減は無理かな
けど楽したい!

最近実家に帰省した際に友人と遊んでいた際に言われたんですけど
私は大人になっても相変わらず変な子って言われちゃいましたorz
相変わらず大人になっても夢見る少女のような心を持ってるそうです・・・
今私が勉強してる事とか楽しいと思っている事をいろいろ話していたんですけど
どうやら普通?の感覚とは結構掛け離れてるそうです(゚∀゚lll)
普通っぽく見られるようにここは努力すべきなのかな(笑)

タスク

ちょっと怠けてるとビックリするぐらいタスクが膨れ上がって
かなり頑張らないと消費出来ない状態になってしまう
やる気がない時や体調を崩した時はタスクが膨れ上がりすぎて
どんどん負のスパイラルになっていってしまう
あとたまにタスクにいれる事を忘れてしまった作業などの締め切りが迫って
選択肢をかなり狭めてしまう場合もある
だから最近はiPhoneのメモにタスクをどんどん書き込んで
消費していくようにしている
iPhoneは毎日必ずチェックするし使うものなのでMacBook
タスクを管理するよりかなり効率的だと思う
ただあくまでメモなのでタスクを管理するチェックボックス
優先順位の格付けなどが出来ない事が不満点ではある
なのでiPhoneアプリでタスク管理関係のものを探してみようかと思っている
位置情報の関係で結局まだ使えていないセカイカメラ
明日とか明後日くらいに少し遠出して使ってみたいなぁ

セカイカメラ

セカイカメラiPhoneに入れました☆
早速遊ぼうと思ったんですが・・・

    1.端末情報を使う
    2.現在位置を取得して使う

1はいいとしても2はちょっと・・・無理かも・・・
エアタグもついてしまうし自宅&その周辺ではちょっと使えなさそう
とはいえ一応セットアップはしておきました
誰か実際に使ってみた人を探す&体験者のブログ探しをしているなう!