アメリカの大学で奮闘中

アメリカの大学でプログラミングを学ぶべくコンピューターサイエンス学部に留学したものの挫折し数学科に転部した著者が、自分の挫折ポイントを踏まえて数学、プログラミング、アルゴリズムついてできる限り分かりやすく解説してみるブログ。*できる限り記事の内容は技術的な間違いをしないように気をつけていますが、もし間違いがあれば教えていただけると助かります。

コンピューターサイエンス、プログラミング

JavaScriptの基本文法をpythonと比較してマスターしよう!③

関数 定義の仕方 pythonの場合 def add(a,b): return a+b JavaScriptの場合 const add = function(a,b){ return a+b; }; 呼び出し方は両方とも同じです。 add(1,2) add(1,2) アロー関数 *新しいJavaScriptではアロー関数といって以下の書き方もできます con…

JavaScriptの基本文法をpythonと比較してマスターしよう!②

繰り返し処理 while文 num = 10 while num >0: print(num) num -= 1 while (num >0){ console.log(); num -= 1; } for文 for i in range(num): print(i) for (let num = 10; num<10; num -=1){ console.log(num); } この場合、num -=1をnum --と書くことも可…

JavaScriptの基本文法をpythonと比較してマスターしよう!①

上がpythonの書き方で、下がJavaScriptの書き方です。 出力 print() console.log(); コメントアウト # // 計算 + - * / %で、pythonとJavaScriprで変更なし 変数 変数の定義の仕方 blog = "アメリカの大学で奮闘中" let blog = ""アメリカの大学で奮闘中"; …

Web開発かアプリ開発かまだ決め切れていないエンジニアはJavaScriptを学びなさい

少し攻めたタイトルになってしまったのですが、今回の記事ではプログラミングを学び始めたor就活でエンジニア就職をする予定だけど何を勉強すればいいか分からない人で、特にWEB開発とアプリ開発で迷っている人をターゲットにしています。 結論から言うと、…

マルコフ連鎖②~グラフを考える~

前回の記事の続きです。 astrostory.hatenablog.com この記事ではマルコフ連鎖をグラフとして見ていきます。なお、今回も例は前回の記事の天気の例を利用します。 簡単に再度説明しますと 晴れ、曇り、雨という3つの状態があり、そのいずれかの状態から別の…

クイックソート(Quicksort)を解説してみた by Python

クイックソートとはデータの集合をある決まりに従って並び替えるソートアルゴリズムの一種です。クイックソートはクイックと付いているだけあって早く処理できる方法になります。 今回は array = [5,4,6,9,2,7,8,1,3] → array = [1,2,3,4,5,6,7,8,9] arrayの…

マージソート(Mergesort)をPythonで解説してみた

マージソートとはソート(並び替え)アルゴリズムの一種で、与えられたリストに対して一定のルールのもとで並び替えるアルゴリズムです。 具体的な例で考えていきましょう 具体例 arrに数字の入ったリストを仮定してみます。 arr = [12, 11, 13, 5, 6, 7] こ…

(連結リスト)線形リストと循環リスト

*以前の連結リストの記事の続きです。 astrostory.hatenablog.com 今回は前回の連結リストの続きです。前回は片方向リストと双方向リストの解説を行いました。その時に使った例の連結リストは線形リストでした。 連結リストには線形リストと循環リストがあ…

片方向リストと双方向リストを大学生が解説してみた by python

以前の記事で連結リストの実装を簡単に紹介しました。 astrostory.hatenablog.com 実を言うと前回は連結リストの中でも一番シンプルで簡単な線形リストの片方向連結リストの解説を行いました。 ですが実際は連結リストはいくつかの種類があり、今回の記事で…

Hash Tableのアルゴリズム

Hash Tableはデータをハッシュ関数で変換したキーの示すテーブル(表)に埋め込むデーター構造です。 5個のハッシュテーブルの場合 ________ |________| ← キー0のデータ |________| ← キー1のデータ |________| ←…

プログラミング初心者にはPythonがおすすめな理由

僕の記事では一貫してpythonでアルゴリズムを紹介しています。それは僕が得意だからなのもありますが、何より読みやすさ書きやすさが理由です。 いろんなサイトでpythonは読みやすい言語だと紹介されていますが、なぜなのかをJavaと比べて紹介したいと思いま…

なぜ効率のいいアルゴリズムが大切なのか(Time Complexityの誘い)

まずは例題から alist = [1,11,5,9,13,4,3,7] このリストから13のインデックスを探すコードを考えてみてください。 今回は具体的なコードは書きませんが、おそらくforループで要素全体をインデックス0から調べる方法を考えたと思います。 この方法を使った…

<勉強法>プログラミングのエラーが起きたときのマインドセット  by python

以前プログラミングの上達法として自分の実際に行っている勉強法を紹介しました。 astrostory.hatenablog.com 今回はこの記事の続きです。 ですが、今回は勉強法ではなくマインドセットという少し怪しそうなものを紹介します。 自分はこのマインドセットを取…

選択ソート(Selectionsort)を丁寧に 解説してみた by Python

選択ソートとはデータの集合をある決まりに従って並び替えるソートアルゴリズムの一種です。 今回は array = [5,4,6,9,2,7,8,1,3] → array = [1,2,3,4,5,6,7,8,9] arrayの中身をリストを数字の小さい順に並び替える選択ソートを考えます。 ちなみにもしリス…

連結リスト(Linked List)を大学生が解説してみた by python

連結リストとはデーター構造の一種で、イメージしやすくいうとノードという箱のようなものにデータを格納してを他の箱と連結している構造をとっています。 図解するとこのような感じになります。 連結リストの図解 ノードを実際にコードで書いてみる class L…

再帰(Recursion)を使ってバイナリーサーチを書く by python

再帰(Recursion)について既に2個ほど記事を書きましたが、今回は再帰を使って二分探索(Binary Search)のコードを書いていこうかなと思います。 再帰とは何かを知りたい方向け。 astrostory.hatenablog.com 再帰の実践的な使い方を知りたい方向け。 astr…

フィボナッチ数列を再帰を使ったコードで書く  by python

*今回は再帰(Recursion)の少し発展的なでも有名な内容です。 もし再帰(Recursion) ってなに?ってなっている方はこちらを先にお読みください. astrostory.hatenablog.com 今回のテーマはタイトル通りフィボナッチ数列をプログラミングで表現するというも…

<超基礎>プログラミングの変数の使い方by python

レベル1 変数って何? まずは簡単な問題から Hello everyone, my name is Amy Hello everyone, my name is Kohei Hello everyone, my name is Muhammad と表示するコードを書いて見てください。 print() だけを使う方法 print("Hello everyone, my name is …

プログラミングの変数の定義と数学の=の違い 

今大学の2回生で数学とコンピュータサイエンスを勉強しています。 その知識を生かして、今回は「プログラミングの変数の定義と数学の=の違い」という問いを考察してみました。 プログラミングの変数の定義と数学の=の違い 多くの人が変数を定義の仕方を見…

<Recursion 再帰>コードをできるだけ短く書く技 by python

*この記事はforループと関数の知識がある人に向けて書いています 簡単な問題を出させてください。 「n!(nは任意の自然数) の計算結果を返す関数(factorial)をかいてください」 一番最初に思いつく方法はこれだと思います。 def factorial(n): num = 1 for…

<勉強法>プログラミング上達法 by python

*この記事は実際にプログラミングを勉強しているけど上達しないといった初心者に向けて書いています。 さらに前提として実際にコードをかけるようになりたい人を対象にしています。 今回は自分が実践して有効だったプログラミング(python)の勉強法を紹介…

プログラミングのエラーメッセージーの直し方(Python)

*この記事は実際にプログラミングを勉強しているけど、コードを書くときに躓いている人向けです。 僕がプログラミング初学者だった時、いつもエラー(Runtime Error)が直せず苦戦していました 今回の記事ではそんな経験から、エラーメッセージの読み方と有…