医学部5年。IT技術をもって僻地医療に貢献せんとする。 平凡な医大生がエンジニアとしてのスキルを身に着け僻地を帰るまでを追った奮闘記
今日 | 04/25 | 04/24 | 04/23 | 04/22 | 04/21 | 04/20 | 全参加数 | |
---|---|---|---|---|---|---|---|---|
総合ランキング(IN) | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 1,034,357サイト |
INポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
OUTポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
PVポイント | 2 | 8 | 8 | 12 | 4 | 8 | 4 | 46/週 |
大学生日記ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 11,563サイト |
医大生 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 621サイト |
IT技術ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 9,760サイト |
学生プログラマー | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 41サイト |
今日 | 04/25 | 04/24 | 04/23 | 04/22 | 04/21 | 04/20 | 全参加数 | |
---|---|---|---|---|---|---|---|---|
総合ランキング(OUT) | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 1,034,357サイト |
INポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
OUTポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
PVポイント | 2 | 8 | 8 | 12 | 4 | 8 | 4 | 46/週 |
大学生日記ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 11,563サイト |
医大生 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 621サイト |
IT技術ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 9,760サイト |
学生プログラマー | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 41サイト |
今日 | 04/25 | 04/24 | 04/23 | 04/22 | 04/21 | 04/20 | 全参加数 | |
---|---|---|---|---|---|---|---|---|
総合ランキング(PV) | 21,864位 | 21,732位 | 21,508位 | 21,481位 | 22,097位 | 22,274位 | 22,404位 | 1,034,357サイト |
INポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
OUTポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
PVポイント | 2 | 8 | 8 | 12 | 4 | 8 | 4 | 46/週 |
大学生日記ブログ | 84位 | 83位 | 82位 | 82位 | 84位 | 87位 | 86位 | 11,563サイト |
医大生 | 17位 | 17位 | 15位 | 15位 | 15位 | 16位 | 15位 | 621サイト |
IT技術ブログ | 303位 | 305位 | 300位 | 300位 | 308位 | 311位 | 314位 | 9,760サイト |
学生プログラマー | 1位 | 1位 | 1位 | 1位 | 1位 | 1位 | 1位 | 41サイト |
どうも!わくばです! 随分長らく放置してしまいましたが、無事医師国家試験終了しました! しばらく卒業旅行などいろいろあって記事を書くのが遅れてしまいました。 結果は必修92%, 一般臨床82%といった感じです! 合格ラインは必修80%, 一般臨床70%が通例ですので、確実に合格と言って差し支えないレベルです。 プログラミングにかまけてたせいで、去年の秋頃の段階だと成績かなりやばかったんですが、最後まで追い込んだ甲斐がありました。 今年はやはりコロナの蔓延もあって、受験の可否も気にしなきゃならずストレスでした_(:3」∠)_ また試験内容も、現場の医師不足を反映してるのかわかりませんが、かなり実…
今日のアルゴリズム(JS実装)〜Boyer Moore Algorithm〜
// どうも、わくばです! 最近は周りも国試を意識し始めて、少し焦りを感じてきました(笑) Webサービスの開発もありますし、新入生も入ってきたし、なんか気持ち的にもかなり追い込まれてました(笑) うまく両立していけるようにしないとです。 近況報告はこの辺にして、今回はBoyer Moore法を記事にしてみます。 まず言葉の整理をしておくと、テキストというのは検索対象の文字列、パターンは検索したい文字列を指します。例えばABCDEFGの中からDEFの文字列を検索する場合、ABCDEFGをテキスト、DEFをパターンと呼ぶことにします。 このアルゴリズムを理解する上でポイントとなるのは、ずらしテー…
どうも、わくばです。 E資格合格できました! その結果と感想、僕がとった勉強方法をお話できればと思います 結果 勉強方法と期間 お金、、、 感想 結果 得点は7割でした。笑 ギリギリ、、、 普通に難しかったです。僕の勉強が実装はほぼせず、JDLA認定講座とE資格黒本を一周した程度だったので、深いところに踏み込まれるとかなりしんどかったですね、、、 得点はかなり低いんですが、この間に6年生への進級試験なども並行していたりしていて、勉強時間などを加味するとかなり必要最低限でコスパ高く合格できたのではないかと思います。その点で参考にはなるかなと。 勉強方法と期間 勉強時間は合計120時間で、1日2時…
【ご報告】エンジニアとしてプロジェクトに参加させていただくことになりました。
どうも、わくばです! ずいぶん間があいてしまったんですが、実はタイトルにもある通り、フロントエンドエンジニアとしてプロジェクトに参加させていただける事になりまして、そちらのタスクで全然ブログが書けていませんでした。 就職とかインターンではなく、お金をもらえるものではありません。したがって仕事と呼べるものではないので「エンジニアとして」という表現が適切かはわかりませんが、やることは結構ガッツリエンジニアリングです。 大学をまたいで医学生のみで構成されているコミュニティがありまして、そこで医学生向けのWebサービスを立ち上げようということになり、そこにjoinさせてもらえたって感じです。 なのでま…
今日のアルゴリズム(JS実装)〜Rabin-Karp Algorithm〜
// どうも、わくばです! 今回はRabin-Karp algorithmです。どんどん重たくなってきたので、日をまたがないとできなくなってきました(汗)。まだまだですね。。。 Rabin-Karp algorithmはハッシュ関数を用いたマッチングアルゴリズムです。ハッシュ関数というのは暗号化というか何らかの値を返す たとえば探している文字列をaaabとし、検索対象の文字列をabaaaaabaaababaabなどとした場合、まずは探したいaaabという文字列をハッシュ関数に掛け数値化(出力Xが得られたとする)します。そして 検索対象のアルゴリズムから、最初の4文字をとってきてハッシュ関数にか…
今日のアルゴリズム(JS実装)〜Knuth Morris Pratt Algorithm〜
// どうも、わくばです! 今回はKMP algorithmです。これは意味がわかるまでかなり時間かかってしまいました。なんとなく言いたいことはわかるんですけど、それをアルゴリズムに起こすときにハテナが大量に(笑) KMPの探索部分はすぐしっくりきたんですが、Longest Proper Prefix which is Suffix (LPS) arrayをつくる部分が何をやってるのか全然わからなくて、、、(笑)。日本語の解説だとテーブルって呼んでるのも見かけますが、LPSと同じものです。 アルゴリズムそのものの解説はこの記事が非常にわかりやすいのでぜひ。 一週間で身につくアルゴリズムとデータ…
今日のアルゴリズム(JS実装)〜Naive String Pattern Matching〜
// どうも、わくばです! 今日からPattern Searchingに入りたいと思います。KMP AlgorithmやBoyer Moore Algorithmなどちょっと耳にしたことのある仰々しい名前のアルゴリズムが待っているジャンルなのでちょっと怖いです(小並感)。 まずはNaive String Pattern Matchingです。Naiveと付くときは「モジュールやライブラリなどのサブルーチンを使うと簡単に実装できるけど、あえてそれを用いないで実装する」場合を指すことが多いです。今回は、多分正規表現使えば簡単にできるけど、それをNaiveに実装するという意味なのだと思います。シンプ…
今日のアルゴリズム(JS実装)〜Exponential Search〜
// どうも、わくばです! 今日はExponential Searchです。Exponentialといのは指数関数的という意味です。理系学生は\(e^x\)や\(exp(x)\)でおなじみですよね。 このアルゴリズムは名前の通りで、指数関数的なインターバルを用いて飛び飛びに探索していくアルゴリズムです。Jump Searchと発想は近いと思いますが、Exponential Searchdでは最終的にBinary Searchを用いるので速いです。 以前記事にしたBinary Searchを添付しておきますので参考にしてみてください。 pyecracker99.hatenablog.com 以下…
今日のアルゴリズム(JS実装) 〜Interpolation Search〜
// どうも、わくばです! 今日はInterpolation Searchです。このアルゴリズムはBinary Searchの改造版で基本的な考え方は同じです。したがってソート済みの配列に適用する点は同じです。では何が違うのかというと、Binaryでは真ん中で半分にしていましたが、Interpolationでは分割点をもっと正確に計算しているという点です。確かに、何も考えずに真ん中で分けるのはあまりスマートではないですよね。せっかくソート済みなんだからもう少し絞れるだろ、というわけです。「あいさつ」という言葉を国語辞典で調べる場合、真ん中を開くことはしませんよね。あ行のように明らかに近いところ…
// どうも、わくばです! 今日は Jump Searchです。こちらもソート済みの配列を検索するアルゴリズムです。単純に言うとLinear Searchを端折った感じです。まず決まったintervalで飛び飛びに進んで探索をします。どのintervalにあるかわかったらその中でLinear Searchをして終わりです。 コードは以下のようになりました。 const jumpSearch = (array, value) => { let { length } = array let interval = Math.floor(Math.sqrt(length)); //これらは区画の両端。…
どうも、わくばです! 今日はBinary Sortです。ソートが前提の処理ですが、前回のLinear searchより速いと思います。 仕組みはこんな感じ 基準値を決める 基準値と探している値を比べる 基準値より大きければその基準値より上に的を絞る 基準値より小さければその基準値より下に的を絞る 一個になったらそれが答え 半分ちょを繰り返して探していくってことですね。 const binarySearch = (array, value) => { //まずソート。以前の記事を参照 const sortedArray = quickSort(array); //上限と下限を定義する //ここか…
今日のアルゴリズム(JS実装)〜Linear Search〜
// どうも、わくばです! Sortに関してはある程度有名なものをやり終えたので、Searchに入ろうと思います。 今日はLinear Searchです。一番簡単なサーチだと思います。 コードはこんな感じです。 function linearSearch(array, value){ let results = [] for(let i = 0; i < array.length; i++){ if(arr[i] === value){ results.push(i) } } return results ? results : -1 } console.log(linearSearch([1…
// どうも、わくばです! 今日はRadix Sortです。Bucket Sortに似てますね。Radixというのは基数とか根とか底とかいくつか訳がありますが、この例ではn進法のnのことです。 Radix Sortを簡単に説明すると、例えば10進法で考えるなら 0−9の計10個のバケットを準備する 配列を全部スキャンし、各要素の1桁目の値について0−9に分類してバケットに入れる(345という要素ならバケット5に入れる) 2を桁を上げて繰り返す。 といった感じです。比較ベースではないタイプのソートです。 コードはこんな感じになりました。 radixBaseはn進法のnのことです const ra…
どうも、わくばです! 今日はBucket Sortを勉強しました。バケツを用いた分割統治アルゴリズムで、Counting Sort の一般化と考えられます。実際、バケツサイズを1とすると同じ値のものだけが同じバケツに集約されていくので、Couting Sortと同様の処理になります。 バケツに分割して、それぞれのバケツでソートを実行し、統合するという典型的な仕組みです。 コードはこんな感じです。 //bucketSize : バケット一個あたりの要素数 const bucketSort = (array, bucketSize = 5) => { if (array.length < 2) {…
今日のアルゴリズム(JS実装)〜Counting Sort〜
// どうも、わくばです! 先日。E資格に申し込んだと言ったのですが、試験会場が都心しか空いていないことと、その他大学の実習の都合などいろいろ加味した結果、キャンセルして見送ることにしました。 JDLA認定は二年間有効なので、また機を見て受験しようと思います。 一応報告でした。 さて今日勉強したのは、Counting Sortです。まず出現回数をカウントし、その情報を回数と値がペアになるように別の配列に保持しておきます。今回は出現回数をvalue、何の値かをindexとして配列を作成しています。値をindexとすることで自然にソートされます。 以下がコードです。 const countingS…
// どうも、わくばです! 今日はShell Sortを学びました。これはInsertion Sort の応用なのでコードを見てイマイチピントこなかった方は以前書いたInsertion Sortをぜひ参考にしてみてください*1 Shell Sortは飛び飛びでグループを形成し、グループごとにInsertion Sortを繰り返していくソートです。由来に関しては諸説あり、飛び飛びの間隔が徐々に狭まっていく様子が、貝殻のすぼまっていく形状を想起させるという説と、シンプルに「ドナルド=シェル」という方が考案したからという説がありました。 コードはこんな感じです。 const shellSort = …
Big O notation の計算原理についてちゃんと調べてみた
// どうも、わくばです! アルゴリズムをいくつか勉強しているうちにBig O notationに関してだいぶ適当だったと感じてのでちゃんと調べてみました。が、結局わりと適当でオッケーみたいですね笑 MITのサイトや各種プログラミング学習サイトから引用しながら地味&&ラフに説明させていただきます。 まず気になっていたのが、\(\Theta()\)とか\(\Omega()\)とかの記号です。\(O()\)しか見聞きしたことなかったので一旦調べてみました。 freeCodeCampの記事では以下のようにありました。 Big O: “f(n) is O(g(n))” iff for some con…
// どうも、わくばです! E資格の申し込みを完了しました。2万は高いなあww もともとなんでE資格を受けようと思ったかというと、プログラミングの勉強を始めたとき医学と親和性高いものってことで人工知能やデータサイエンスの領域に的を絞っていて、背水の陣を敷くために8万のJDLA認定講座に登録したのが事の発端なんです。 なんて消極的な受験動機なんだ(笑) 勉強過程でアプリ開発の方に興味がそれまして、いまやE資格は「早く終わらせたいタスク」みたいな位置づけになってしまいました。10万近く使ったので、貧乏大学生としてはなんとしても意味あるものとして終えたいわけです(笑) 無駄話はさておき今日のアルゴリ…
// どうも、わくばです! 今日はJDLA認定講座の最後の試験でした。無事合格しましたので、これでやっとE資格試験を受験できます。 なんでこんなにめんどくさいのだ(笑) 機械学習は統計的な処理もしっかり含まれていて、医学でも役立つので何れにせよ頑張りきろうと思います。 さて今日のアルゴリズムですが、Merge Sortです。いくつかアルゴリズムをコードに起こしてきましたが、アルゴリズムのぱっと見の印象では意外と複雑さの検討がつきにくいですね。 ソート系は難易度低い印象ですがBubble Sortや今回のMerge Sortなど、所見でコードを書こうとするとなかなかしんどいです(笑) Merge…
今日のアルゴリズム(JS実装)〜Insertion Sort〜
// どうも、わくばです! 今日はInsertion Sortです。自分より前の要素を比較していって、自分より小さいものが現れたらその後ろに挿入するというアルゴリズムです。 コードは以下のような感じです。 const insertionSort = array => { for (let i = 1; i < array.length; i++) { //jの位置から比較しながら前に戻っていく let j = i; let temp = array[i]; //tempより小さいものがでてくるまでループ while (j > 0 && array[j - 1]> temp) { //自分より大…
「ブログリーダー」を活用して、わくば@構えは斜めさんをフォローしませんか?