2019-01-05

Post かって cron シャット ダウン タイミング howm ブログ EmacsLisp 428571428571 ... スクリプト 出来損ない チンパンジー フロイド Java ソース Haskell その他 チック アルゴリズム 試行錯誤 プログラミング おかげ マイナス コード 素因数 skip drop モナド あたり クソザコ うんこ ボキャブラリー 英単語 Basic 2400 ver シリーズ Google Translate Emacs Company mode インデント

日常

記事のPostもう少しどうにかならんのかってなってる。

寝るの22:00くらいでcronで指定してるの23:30くらいだから全く機能していない。

シャットダウンのタイミングでとか考えたけどあまりシャットダウンしないしな。

そんで忘れて次の日に投稿するわけだけど、投稿するときに日付がズレる。

う〜ん(チンパン定期)。

howmの修復できてないしブログもかけてないのでクソ。

しかしながら今日は悪いことだけではなかった。

数学

EmacsLispも書いたからそろそろ本編進めたい。

読み進めていくと循環小数というものがあった。例えば 3 / 7で答えが0.428571428571...と循環するようなものを指すらしい。

スクリプトで検出したいと思った。しかしながら私は出来損ないのほぼチンパンジーなので検出方法がわからない。

とりあえずググってみたら

フロイドの循環検出法を学んだ

Javaのソースがあるが、肝心の循環検出法の言葉や図による説明がなかったので、別のものを探してみる。

Rでフロイドの循環検出法を可視化する

Rはほとんど触らないんだけどここの図がわかりやすかった。

そういえばHaskellで循環小数を入力するとどうなるんだろうか。

当然途中で切れる。だから自前の関数が必要だと判断した。

その他色々と車輪の再発明チックな関数も作った。

が肝心のアルゴリズムが組み立てられない。

試行錯誤(チンパン並)してみたが、できなかった。

人権、そろそろ取り上げられても仕方がない領域へと突入している。

てかプログラミング何年かやってるけどいまだに頭が追いつかない。特にHaskellやってると頭がぐるぐるしてくる。

でもそのおかげでマイナスなこととか忘れることができるので非常に楽しく苦しむことができる。

そして苦しんだ分だけコードが書いたあと気持ちよくなれる。

読み進めていくとやっと素因数分解が出てきたので関数を作ってみる。

skip :: Integer -> [Integer] -> [Integer]
skip n (x:xs)
  | n > 1 = skip (n - 1) xs
  | otherwise = xs

primeNumberListInternal :: Integer -> Integer -> [Integer] -> [Integer]
primeNumberListInternal n maxSize fList
  | n >= maxSize || maxSize <= 0 = fList
  | otherwise = primeNumberListInternal (n+1) maxSize (fList \\ [x | x <- [n*2,n*3..maxSize]])

primeNumberList :: Integer -> [Integer]
primeNumberList max = primeNumberListInternal 2 max [1..max]

-- 素因数分解
factorial :: Integer -> [Integer]
factorial n
  -- 素数ならそのまま返す
  | n `elem` (primeNumberList n) = [n]
  -- 素数で割り切れるなら
  | n `mod` possibleDivFirstPrimeNumber == 0 = (factorial possibleDivFirstPrimeNumber) ++
                                            (factorial (n `div` possibleDivFirstPrimeNumber))
  | otherwise = []
  where possibleDivFirstPrimeNumber = List.head $ List.filter
                                      (\x -> (n `mod` x) == 0) $ skip 1 $ primeNumberList n

これは・・・できてるということでいいんだよな。明日また確認しよう。

skipという関数を書いた後に気がついたが、drop普通にあった。辛い。

とりあえず素因数分解の関数書けたのでよしとしよう。

チンパンなのですごH本モナドあたりから先の内容まっっっっっっっっったく理解してないから初歩的なことしかできない。

また理解する為に時間を割く必要がある。

英語

現状の英語力はクソザコうんこマンなので下記の本を使ってボキャブラリーから整えていく。

速読速聴・英単語 Basic 2400 ver.3 (速読速聴・英単語シリーズ)

単語の学習しかしてない。ゆえにこれくらいしか書くことないので今後は書かなくても良いかもしれない。

それとHaskellで関数作る時にGoogle Translateで調べまくってたけどあれも一応学習に入れてもいい・・・のだろうか。

それにしてもEmacsでHaskell書いてるけど設定が悪くてCompany-modeぜんぜん効かないし、インデントもなんか変だ。

明日修正してみよう。

今日やったこと

明日やること

comment:

Tweet

Home