好きをブチ抜く

「好き」をブチ抜く

本、映画、科学、哲学、心理、すごい人の考え方など。あらゆる情報を編集したい。

Lisp入門 条件分岐【Land of Lisp勉強メモ#4】

記事の内容 Lisp入門の勉強として、書籍『Land of Lisp』の内容をまとめる。 今回は、第4章条件分岐についてだ。 対称性という感覚を持ちながら、学んでいきたい。 記事の内容 nilと()の対称性 条件分岐 ifとその仲間たち 条件式のテクニック 比較関数の方針…

Lisp入門 リストとコンスセル 【Land of Lisp勉強メモ#3】

記事の内容 Lisp入門として、書籍Land of Lispの内容をまとめていく。 今回の記事では、3章の内容について勉強する。 シンタックスとセマンティクス、リストとコンスセルについてだ。 記事の内容 Lispの形式と意味 Lispはコードとデータをどう区別するか リ…

Lisp入門 変数と関数【Land of Lisp勉強メモ#2】

記事の内容 Lisp入門書である「Land of Lisp」の勉強メモ。 第2章の内容についてのまとめ。 プログラムを書く土台となる変数と関数の定義方法について学習。この記事にまとめてみる。 記事の内容 グローバル、ローカルな変数と関数 コマンドまとめ 関連記事 …

Pythonで平方根を求める 2分探索の利用【Pythonで数学パズル】

記事の内容 今回は、pythonに慣れるために簡単な数学パズルのようなものに挑戦します。そのテーマは、「平方根を求める」です。どのようにコードを欠けば、効率よくある数の平方根を求めることができるのか、いろいろと工夫してみましょう。python初心者の方…

プログラミング無料学習サイトCODEPREPを使ってみた感想

記事の内容 最近では、どんどんプログラミングの重要性が認識されてきました。それにともない、プログラミングの学習環境も、たくさん発展してきています。 そんな中、ウェブ上で無料で学習することができるサイトもあります。 今回は、そんな無料で学習でき…

PyTorchで深層学習入門 手書き数字画像データMNISTの実装

記事の内容 今回は、深層学習(ディープラーニング)を手軽に実装するためのライブラリである「pytorch」を紹介します。 実際に、深層学習入門の定番である、手書き文字認識にチャレンジしてみます。・深層学習の基礎はなんとなくわかっている ・pytorchを使っ…

証明=プログラム!? 【カリーハワード同型対応】 計算と論理の奥深い関係

この記事の問いと内容 論理と計算との間には深い関係がある。現在のコンピュータサイエンスでは、その応用範囲は広い。 ・計算可能であるとはどういうことか? →理念 ・具体的には、どのようにして計算は行われるのか? →計算モデル論 ・計算手順をうまく記…

【数理論理学、数学基礎論、プログラム理論、計算論】 おすすめ入門本 まとめ

記事の内容 この記事では、数理論理学、数学基礎論、プログラム理論、計算論などの分野にまたがるおすすめな本を紹介したい。 軸として、「コンピュータは数学者になれるか」という本を挙げたい。この本では、巻末にて、さらなる専門書が紹介されている。こ…

【コンピュータは数学者になれるのか?】 人工知能は数学できるか?「証明すること」を深ぼる

この記事の問いと内容 この記事では、「コンピュータは数学者になれるのか 数学基礎論から証明とプログラムの理論へ」という本を紹介したい。数学、論理学、人工知能、プログラムをまたぐ、とんでもなくエキサイティングな本になっている。 ・数学者の数学と…

Haskell 【関数と型 入門】 関数、多引数関数の正体に注意

記事の内容 関数型言語であるHaskellについてまとめたい。今回の記事では、おもに、「関数と型」についてまとめる。Haskellを使用する際には、中心的な概念になる。この使い方こそ、手続き型言語とは、大きく違うところである。関数型言語の特徴をつかむため…

Pythonで数学パズル 最適な関係の組み合わせ 最大独立集合問題

記事の内容 今回の記事では、基礎的な知識だけで解ける数学パズルを紹介します。プログラミング、python初心者にとってはいい練習になるはずです。それに、アルゴリズムで問題を解くということのいい実践になります。 専門的には、最大独立集合問題と呼ばれ…

Pythonで数学パズル 天秤で異なるコインを見つけよ 分割統治法

記事の内容 アルゴリズムの練習として有名なものに、「天秤を使って偽造硬貨を見つける」というパズルがあります。今回の記事では、この問題をpythonで解いてみます。基礎的な文法さえわかれば挑戦できるパズルなので、ぜひ初心者の方もチャレンジしてみてく…

Pythonで数学パズル 8クイーン問題を解く forとcontinue

記事の内容 今回の記事は、プログラミングの問題としてはそこそこ有名な「Nクイーン問題」をPythonで解いてみます。「問題解決のpythonプログラミング 数学パズルで鍛えるアルゴリズム思考法」という本からの引用になります。本書は、pythonを用いて基礎的な…

Pythonで数学パズル タプルのリストとソートでパズルを解く

記事の内容 「問題解決のPythonプログラミング 数学パズルで鍛えるアルゴリズム的思考法」という本を紹介します。 この本に載っているパズルを解きながら、楽しくアルゴリズムを学べる記事になります。 Python初心者の方にも、プログラミング初心者の方にも…

Pythonで数学パズル リストとタプルのちょっとした応用

記事の内容今回の記事では、「問題解決のPythonプログラミング 数学パズルで鍛えるアルゴリズム的思考」という本で紹介されている簡単な数学パズルを解きたいと思う。難易度も優しく、基礎的なコードを知っていれば楽しむことができる。 プログラミング初心…

【遊戯王と論理的思考】楽しく学べて教育にいいんじゃない?

遊戯王って楽しいし、頭も鍛えられる!! 突然ですが、遊戯王というカードゲームを知っていますか? そして、やっていて「頭も鍛えられるじゃん!」と感じたことはないでしょうか? 私自身、そう感じています。楽しみながら頭も鍛えられるカードゲームってす…

チューリングの考えるキカイ 【書評・まとめ】 コンピュータにできることとできないこと

記事の内容 ・チューリングのどんなアイデアが、コンピュータサイエンスの基礎になっているのか ・AIには何ができて何ができないのか ・「計算する」とはどういうことか ・万能チューリング機械でも、「計算できない問題」とは何か コンピュータの発展は、現…

【ゲーデルの不完全性定理】入門案内 おすすめ本まとめ

不完全性定理に興味ある人へ 「ゲーデルの不完全性定理」という言葉、みなさんは聞いたことがあるでしょうか?簡単に言うと、その名前の通り、数学(の一部)におけるある限界を示した定理です。私自身、この定理の存在を知って以来、その人類の英知の香りに…

【ひろゆき名言】とにかくまずは完成させろ!動かせ!!

プログラミング、ものづくりの姿勢 プログラミングやものづくりの姿勢において、ひろゆき氏の考え方がためになりました。ブログ運営も含め、すべてのものづくりに通じます。とくに、初心者の方にとっては重要なところです。 ・プログラミングの学習を投げ出…

Haskell入門③ 再帰

こちらのページでまとめています。 qiita.com

Haskell入門② パターンマッチ

値を手軽に分解する方法パターンマッチ ある種のデータが従うべきパターンを指定できる。引数の構造で場合分けする。関数定義の際に、パターンマッチを使って、関数の本体を場合分けできる。これによって、読みやすいコードが書ける。 sayMe :: Int -> Strin…

Haskell入門① リスト内包表記

リスク内包表記についてまとめます。 Prelude> [x*2 | x <- [1 .. 10]] [2,4,6,8,10,12,14,16,18,20] リスト[1 .. 10]から要素を取り出し、その値をxが受けとるという意味。 | より前の部分は出力を表す。 条件(述語)を追加できるのが便利。 Prelude> [x*2…

Python フィボナッチ数 数値の各桁の和

この本から出題 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/16メディア: Kindle版この商品を含むブログ (9件) を見る Q11フィボナッチ数列 フィボナッチ数列のうち…

行列をpythonで

なぜ行列を使いたいのか? 行列を使うとたくさんの連立方程式を一つの式で表せる。行列表記がとても便利。 リストとベクトルは違う! a0 = [1,2,3] + [1,2,3] >>[1, 2, 3, 1, 2, 3] ベクトルはnumpyで import numpy as np x1 = np.array([1,2,3]) print(x1) …

リスト探索をpythonで

線形探索 配列から要素を探索するアルゴリズム。 左端から順に、目的数と比較していく。 def liner_search(aList, val): for x in aList: if x == val: return True return False 2分探索 整列された配列から要素を探索するアルゴリズム。 配列の中心から目…

基本ソートをpythonで

バブルソート def bubble_sort(array): n = len(array) for i in range(n-1): for j in range(n-1,i,-1): #開始、終了、ステップ ''' iが左端。つまり最小値。左端であるiをソート済みにし、 開始n-1つまり右端に戻る。 ''' if array[j] < array[j-1]: tmp =…