はてなキーワード: フィボナッチ数列とは
「まぁ、ピタゴラスの定理なんて、あれはもう初歩の話よね。確かに、a² + b² = c² は中学生レベルでも理解できるけれど、そこに潜む深い代数的構造や、ユークリッド幾何学との関連性を本当に理解しているのかしら?あの定理の背後には、単なる平面上の直角三角形の話じゃなくて、リーマン幾何学や複素数平面を通じたさらに高度な次元の世界が見えてくるのよ。それに、ピタゴラスの定理を特別な場合とする円錐曲線や、楕円関数論まで考え始めると、幾何学の美しさっていうものがもっと深く見えてくるわけ。」
「それと、黄金比ね。もちろん、あのφ(ファイ)がどれだけ重要か、理解してる?単に無理数というだけじゃなく、数論的にも代数的にも特異な数なのよ。フィボナッチ数列との関係も美しいけど、そもそもあの比が自然界で頻繁に現れるのは、単なる偶然じゃないわ。代数的無理数としての特性と、対数螺旋やアファイン変換を通じた変換不変性が絡んでいるのよね。そういった数学的背景を理解せずに、ただ黄金比が「美しい」ってだけで済ませるのはちょっと浅はかだと思うわ。」
「あと、パルテノン神殿の話だけど、そもそも古代の建築家たちが黄金比だけでなく、より複雑なフラクタル幾何学や対称群に基づいた設計をしていたってことは、あまり知られてないのよね。建築の対称性は、単なる視覚的な美しさじゃなくて、群論や代数的トポロジーに深く結びついているわ。あなたが好きな絵画も、ただの黄金比じゃなく、もっと深い数学的な構造に従っているのよ。わかるかしら?」
多くの数学者は最も美しい証明を見つけることに意欲を持っており、数学を芸術の一形態と呼ぶことがよくある。
「なんて美しい定理だろう」「なんてエレガントな証明だろう」と言う。
完璧な部屋の形状は、ルネッサンスの建築家によって、壁が一定の比率を持つ長方形の部屋であると定義され、それを「黄金分割」と呼んだ。
建築家は今日でも、最も調和のとれた部屋には黄金分割比があると信じている。
この数値は、多くの数学的現象や構造に現れる (例:フィボナッチ数列の極限)。
レオナルド・ダ・ヴィンチは、均整のとれた人体と顔の黄金分割を観察した。
西洋文化やその他の文明では、均整のとれた人体の黄金分割比は、上部 (へその上) と下部の間(へその下)にある。
モザイクは、固体部分(木、石、ガラスなど)を重なりや隙間なく平らな面に組み立てる芸術形式である。
その洗練された形式では、モザイクには認識可能なパターンがあり、それが 2 つの異なる方向に繰り返され、中心も境界も優先方向も焦点も特定されない。
19 世紀には、数学的な観点から、タイリングには 17 個の対称性しか存在しないことが証明された。
アルハンブラ宮殿のモザイクは、考えられる 17 の対称性をすべて表していることが発見された。
タイリングを形成するとは、2 次元平面を幾何学的形状 (多角形または曲線で囲まれた形状) で重なりなく完全に覆うことを意味する。
タイリング画像を変更せずに仮想的に回転または反射できる場合、タイリングは対称と呼ばれる。
歴史上最も印象的なモザイクは、中世のイスラム世界で活躍した芸術家、特にスペインのアルハンブラ宮殿の美しく洗練されたモザイクを作成した芸術家によって制作された。
アルハンブラ宮殿は、グラナダの旧市街を見下ろす赤土の丘に、13 世紀初頭にムーア人によって建てられた。
ここは、膨大な量の模様、装飾品、書道、石の彫刻など、イスラム教の建築とデザインを展示するものである。
オランダ人芸術家MC エッシャーはアルハンブラ宮殿を 2 度訪れ、宮殿と周囲の中庭のタイルに見られる華やかな模様をスケッチし、カタログ化した。
これは、タイルが一定の間隔で表示または発生することを意味する。
何百年にもわたる熟練した建築、タイル張り、 (調和する力としての)対称性への深い敬意、(宗教と商業のための)幾何学の研究と知識により、17 の考えられる対称性グループすべてがアルハンブラ宮殿の壁に表現される。
自然界の結晶(雪の結晶、鉱物、宝石など) は、秩序と対称性規則に従って原子的に構築される。
非周期的タイリング、つまり周期性のないタイリングは 1960 年代に数学的に可能であることが証明されたが、当時は秩序はあっても周期性を持たない固体構造は自然界には存在しないと考えられていた。
1982 年、イスラエルのテクニオン大学のダン シェクトマン教授は、後に準結晶として知られる自然が作る非周期結晶の存在を予測した。
このような自然で作られた石は、ロシアの山岳地帯で最初に発見された。
2009年、この発見はプリンストン大学の教授であるポール・スタインハートによって科学的に発表された。
2011 年、シェクトマンはその予測によりノーベル化学賞を受賞した。
そうでないなら、美しさは見る人の目にあるか?
「1番目の数値と2番目の数値を足して3番目の数値にする」、「2番目の数値と3番目の数値を足して4番目の数値にする」、「3番目の数値と4番目の数値を足して5番目の数値にする」、……
という感じで作った数値の列がフィボナッチ数列ね。
で、このルールだけだと「1番目の数値と2番目の数値はどうやって決めるんだ?」ということになるんだけど、それは0と1だと決まってる。
この1番目と2番目のことをプログラミングっぽく書くと、
def Fib( n ):
if n == 1:
return 0
elif n == 2:
return 1
という感じ。
Fib( n )ってのが「n番目の数値(を計算する関数)」ね。
で、計算が必要になる3番目以降だけど、この文章の1行目に書いたことをこのFib( n )を使って書くと、
「Fib( 1 ) + Fib( 2 )を3番目の数値にする」、「Fib( 2 ) + Fib( 3 )を4番目の数値にする」、「Fib( 3 ) + Fib( 4 )を5番目の数値にする」、……
と書ける。
それぞれの文章の後半もFib()を使って書くと
「Fib( 1 ) + Fib( 2 )をFib( 3 )にする」、「Fib( 2 ) + Fib( 3 )をFib( 4 )にする」、「Fib( 3 ) + Fib( 4 )をFib( 5 )にする」、……
という要領。
nを使って一般的に書くと、「Fib( n-1 ) + Fib( n-2 )をFib( n )にする」ということになる。
def Fib( n ):
if n == 1:
return 0
elif n == 2:
return 1
elif n >= 3:
return Fib( n-1 ) + Fib( n-2 )
駄文なので最初にまとめておくと、知識ゼロ異業種から転職して何とかエンジニアとしての人生を始めました、という話。経歴がショボすぎて誰かの道標にすらならないだろうけど書き残しておく。実名で書く勇気はないので増田にて失礼。
PCを初めて触ったのは4歳の頃。
黒くてごついボディが幼心にぐっときたのを覚えている。この記憶があったためか、初めて自分で購入したPCはThinkPadだった。
我が家にインターネット開通。深夜に親が寝てからこっそり2chとニコニコ動画を見ていた。PS2でドラクエ8をやってグラフィックに感動する。まだプログラミングという言葉は知らない。母親のヒステリーと父親の拳骨に耐える日々だった。
地元の高校に進学。友人とホムペ(死語)を作成。html/CSSで文字の色か変えられたりアニメーションをつけられることに気付く。この頃もまだプログラミングに目覚めない。プログラム?理系の人がやるお仕事なんでしょ?という雑な認識であった。
もちろん文系学部に進学。人の視線が怖かったので前を向いて歩けず会話もままならなかったが、制服が可愛いという理由だけでお洒落カフェでバイトを始める。私は阿呆だが、この阿呆さないしは無鉄砲さでエンジニアになったと言っても過言ではない。
新卒入社した会社を3ヶ月で退職。支えてくれる彼くんとかもいなかったので実家でお通夜してた。鬱も発症して薬漬けになった。対面で人と話すことが難しいため、テキストベースで仕事ができる職を探し始める。ここでやっとプログラミングに出会う。
何にせよ無職だから時間は腐るほどある。ヨドバシでカモ丸出しの顔をしてThinkPadを買い、Javaで簡単なアルゴリズムを実装することから始めた。フィボナッチ数列を生成するとかクイックソートを実装するとか。あと5日ぐらいかけてServlet/JSPとMySQLでTODOリストを作った。
2ヶ月ほどJavaをやった頃、無謀にも機械学習に手を出し始める。本を一冊買って隅々まで読み込んだ。この頃から鬱が寛解し始める。プログラミングに夢中になって、1日12時間以上はPCの前に座ってひたすらコードを書いていた。不思議と疲れはなかった。ゲーム用に買ったデスクトップPCにそこそこ良いGPUがついていることが判明したので、Tensorflowでモデルもどきを作り、AI(笑)を組み込んだポートフォリオ用webアプリを3ヶ月かけて作成した。サンプルコードを超える範囲はドキュメントを読む、適宜技術書で知識を補うなどしてなんとかオリジナルと言えるコードをひねり出すこともこの頃覚えたと思う。なお肝心のモデルはチューニングは一切していないわ当然精度も悪いわでその筋の人が見たら鼻で笑うレベルであるが、一人でアプリケーションを作り切ることができたのは大いに自信に繋がった。
ポートフォリオを持って5社ほど受け、うち1社の小さな受託系企業に内定を貰い、無事職にありつくことができた。文系未経験第二新卒を雇う勇気を出してくれた会社には感謝しかない。
会社規模が小さいからか、個人の裁量が大きく、設計から実装、テストまで何でも任せてもらえた。良き上司に恵まれ、主にUnityやスマホアプリの開発を担当し、技術の奥深さ面白さに触れさせてもらった。自身が実装を担当したアプリが世に出ていくことの喜びみたいなものも味わえた。この会社は昨年度退職し、現在は500人規模の自社開発系企業でiOSアプリエンジニアをやっている。スキルは未熟だし対人恐怖的なものも治ってはいないけど、私はプログラミングが好きで、エンジニアとして骨を埋めたいとか身の程知らずにも思っている。
ご覧の通り、私は幼い頃からプログラミングに触れたりモノづくりをしていたわけではない。むしろ目覚めは遅い方である。そういう人でも興味があるなら、ITエンジニア目指してもいいんじゃないか、そうであってくれ、という気持ちで書いた。読んでくれてありがとう。プログラミングはいいぞ。
○朝食:なし
○昼食:カレー
○夕食:マクド(給料日前でお金があったから外食を続けちゃった、反省)
○調子
むきゅーはややー。
グラブルに浮気して早一年ぐらいたちましたが、ようやく程よい距離感で楽しめるようになったので、他ゲーをします。
このゲームは、プログラミングっぽいパズルゲーム。ぽいっていうか、割とそのんま。
今日は、ステージ23「一番小さいのは?」をクリアするところまでプレイ。
フィボナッチ数列がなんなのかいまいちわかってなかったから、それをググったりしてた時間があったとはいえ、割とな時間を使った。
そもそも変数が三ついるってことにピンと来てなかったし、初期配置の変数が0だったから、これを直接+=するって発想がなくて、一旦クローンして云々と色々回りくどいことをやってしまってた。
理想ステップ数があるからそれを目指そうとしてしまうけど、それを見てこねくり回すよりも、まずはわかりやすいコードを書くことを目標にした方がよさげだし、コメントもちゃんと書きたい。
というか、行数はともかくステップ数は超難しいので、早速諦めた、クリアだけでいいや。
楽しいのでクリアまではプレイしたいけど、このゲームで苦戦していることをここに書くと、5chのネタ的な意味じゃない本当の意味でのロジカルハラスメントを受けそうで怖いな。
(とは言っても、僕が底辺しょぼしょぼちんちん(陰茎の大きさ関係なくね?)であることは、明白だからあまり責めないで欲しい、こういうのをスラスラできるんだったら、もっと人生ままなってる気もする)
○グラブル
古戦場は8箱開けるだけの予定なので、さくっと終わらせたい。
まじな話をすると、N予備校のプログラミング入門コースやるのがオススメ。
一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。
月額1000円だけどしっかり勉強すれば一ヶ月の無料期間中に終わると思う。
もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラムで講師曰く去年はこれで二人エンジニア就職を決めたらしい。
内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職に必要な環境構築やセキュリティまでみっちりやる。
で講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。
↓みたいなことが学べる
----
Web ブラウザとは (Chrome, デベロッパーコンソール, alert)
はじめてのHTML (VSCode, HTML, Emmet)
さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)
HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)
はじめてのJavaScript (JS, ES6, エラー)
JavaScriptでの計算 (値, 算術演算子, 変数, 代入)
JavaScriptで論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)
JavaScriptのループ (ループ, for)
JavaScriptのコレクション (コレクション, 配列, 添字, undefined)
JavaScriptの関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)
JavaScriptのオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)
はじめてのCSS (CSS, セレクタ, background-color, border)
CSSを使ったプログラミング (transform, id, class)
Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)
診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)
診断機能の組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)
ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)
LinuxというOS (VirtualBox, Vagrant, Ubuntuのインストール, OS, CUIの大切さ)
コンピューターの構成要素 (ノイマン型コンピューター, プロセス, lshw, man, ps, dfの使い方)
ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)
標準出力 (標準入力、標準出力、標準エラー出力、パイプ、grep)
vi (vimtutor)
シェルプログラミング (シバン, echo, read, 変数, if)
通信とネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)
サーバーとクライアント (tmux, nc, telnet)
HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)
GitHubでウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)
イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)
GitとGitHubと連携 (git, ssh, clone, pull)
GitHubへのpush (init, add, status, インデックス, commit, push, tag)
Gitのブランチ (branch, checkout, merge, gh-pages)
Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)
集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)
アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)
ライブラリ (ライブラリ, パッケージマネージャー, npm)
Slackのボット開発 (slack, mention, bot)
HubotとSlackアダプタ (hubot, yo)
モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)
ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)
同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)
例外処理 (try, catch, finally, throw)
HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsのイベントループ, リスナー)
HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)
HTMLのフォーム (フォームの仕組み, form, input)
HerokuでWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)
認証で利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)
Cookie を使った秘密の匿名掲示板 (Cookie, Set-Cookie, expire)
UI、URI、モジュールの設計 (モジュール設計, フォームのメソッド制限, リダイレクト, 302)
フォームによる投稿機能の実装 (モジュール性, textarea, 303)
認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)
データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)
トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)
削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)
管理者機能の実装 (Web サービスの管理責任, 管理者機能の重要性)
デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)
脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)
XSS脆弱性の対策 (XSS, 適切なエスケープ処理, リグレッション)
パスワードの脆弱性の対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)
セッション固定化攻撃脆弱性の対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)
より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)
安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)
Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)
ExpressのAPI (app, Properties, Request, Response, Router)
GitHubを使った外部認証 (Passport, OAuth)
テスティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)
継続的インテグレーション (CircleCI)
クライアントのフレームワーク (Webpack, Chrome 以外のブラウザでもES6)
DOM操作のフレームワーク (jQuery, jQueryアニメーション, this)
AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)
WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)
RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)
テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)
インデックス (インデックス, 複合インデックス, Bツリー)
集計とソート (SUM, COUNT, ORDER BY, GROUP BY)
「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計、モジュール設計、MVC)
認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)
予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)
予定とユーザーの一覧の表示 (非同期処理, Promise, then)
出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)
海外の記事で、プログラマ採用試験でタイトルのような実装を試験に出す、というのをたまにみる。
こういうの見るたびに、答えがわからないので自分はまず落ちるだろうなと思う。
かと言って自分は底辺 && 向上心ゼロで使い物にならないか?と自問すると違うと思う。
今の会社でRailsのサービスを少なくとも4つ以上リリースしているし、バージョンアップなどの保守が2年以上できている。プライベートでgemを作ったりしているし、サーバの小規模なサーバであれば運用もできるくらいのLinuxの知識(小並感)もある。何よりプログラムを通して問題解決をするのが好きだ。
競技プログラミングには興味あるけど、今はLinuxへの興味のほうが強い。
歯医者すげー!
お茶飲みまくるせいでとれなくなった歯の着色が3000円でめっちゃ綺麗になった・・・
初診・歯石取りとかも込み。
家で喉乾いたときにはジュースよりはお茶がいいだろうと思ってたけど、お茶はコーヒーより着色しやすいらしいから、今後はトマトジュースにすることにする。
フロスはやってるんだけど、歯と歯の間しかとれてなかったっぽい。
結構ぎょっとするくらいまでフロスを歯と歯茎の間に食い込ませる必要があることがわかった。
閑話休題。
今日俺を見てくれたのは、いつぞやにお世話になったことを増田に書いた、おっぱいは小さいけどかわいい歯科衛生士さん。
顔が小さいけど目が大きくてくりくりしてきりっとしている。
でも全体的にはぽやーっとした感じ。そのギャップがいい。
無造作に口内に入れられた指を反射を装ってprprしたくなる衝動と戦うのが大変だった。
たおやかで細い指が口内を不意に動くもどかしさ。
でもやっぱり想像どおりかわいかった。
目を開けてたら口内を覗いてる彼女をガン見する感じになって恥ずかしすぎるから、ずっと目をつぶってた。
見つめ合うと素直におしゃべりできない。
西の善き魔女のルーンにならって、フィボナッチ数列を脳内で暗算し続けることで興奮しすぎずにすんだ。
300か400超えたあたりから怪しくなってくるから、何度も最初からやり直した。
うーんえっちいこと抜きにしても個人的にお近づきになりたいけど、30童貞にはそんな勇気はないな・・・
でも口内を無遠慮にきれいな指でかき回されて、口あけっぱなしのほげーって感じの情けない顔も見られた後で、「連絡先教えてくれませんか?今度どっか遊びに行きましょう(キリッ」とか口が裂けても言えねえ。
プライドなんか捨てちまえ当たって砕けろという考えもあるが、せっかく便利な場所にあるのに気まずくなって行けなくなるのも困る。
定期歯石取りの3ヶ月に一度会えたらいいなってくらいでいいや。
頭頂部に感じた彼女のお腹の感覚を思い出すと心がぽかぽかするからそれだけでいい。
これは恋・・・じゃないと思う。