はてなキーワード: フィボナッチ数列とは
多くの数学者は最も美しい証明を見つけることに意欲を持っており、数学を芸術の一形態と呼ぶことがよくある。
「なんて美しい定理だろう」「なんてエレガントな証明だろう」と言う。
完璧な部屋の形状は、ルネッサンスの建築家によって、壁が一定の比率を持つ長方形の部屋であると定義され、それを「黄金分割」と呼んだ。
建築家は今日でも、最も調和のとれた部屋には黄金分割比があると信じている。
この数値は、多くの数学的現象や構造に現れる (例:フィボナッチ数列の極限)。
レオナルド・ダ・ヴィンチは、均整のとれた人体と顔の黄金分割を観察した。
西洋文化やその他の文明では、均整のとれた人体の黄金分割比は、上部 (へその上) と下部の間(へその下)にある。
モザイクは、固体部分(木、石、ガラスなど)を重なりや隙間なく平らな面に組み立てる芸術形式である。
その洗練された形式では、モザイクには認識可能なパターンがあり、それが 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ヶ月に一度会えたらいいなってくらいでいいや。
頭頂部に感じた彼女のお腹の感覚を思い出すと心がぽかぽかするからそれだけでいい。
これは恋・・・じゃないと思う。
僕はたぶん、同年代の中で何百番目くらいに算数が出来る小学生だった。たぶん『何十番目』には入れない。ただ4桁に落ちることもないと思う。
中学受験して、相応の学校には入った。別にそれが間違いだったとはいわないが、
『周りは皆、自分より出来るヤツ』だったのが思春期の心理に影響を与えなかったとは言い切れない。
(大学に入って自分の出身校を聞かれたときに正直に話すと「全国模試の順位1桁の人が居たりするの?」と聞かれ、「A君とかB君は取ってたと思うけど、みんな気にしてなかった」と言ってさらに驚かれた)
同学年に、数学がものすごく出来るヤツがいた。俺の同級生に『ウチの学年で一番数学出来たヤツって誰?』と聞いたら、8割方そいつの名前が挙がる。
・フィボナッチ数列の一般項を知って、√5が出てくるのが信じられなくて何度も計算し直した。
・自然対数の底eを知っていて、eの定義 lim x→∞ (1+1/n)^n も知っていたが、eが何のためにあるかは知らなかった。
…レベルが違いすぎると思った。
「ひとつがいの兎は、産まれて2ヶ月後から毎月ひとつがいずつの兎を産む。ひとつがいの兎は1年の間に何つがいの兎になるか?」
っていう問題と非常に関係が深いのがダヴィンチ・コードとかで有名になったフィボナッチ数列で、答えは F12 = 233匹になる。次の1年間ではこのそれぞれのうさぎが233匹に増殖すると考えると、あっというまにうさぎだらけになってしまうことがわかります。恐ろしいものです。
でもこの問題のうさぎは、不老不死で永遠に生き続けるわ性欲の塊で子をひたすら為し続けるわの地球にいるうさぎとぜんぜん別モノの宇宙うさぎなのでちょっとイメージが沸きづらい。
宇宙うさぎは寂しくても死なないつよいうさぎ。だけどときどき真っ赤な悲しい目で空を見つめることがある。その瞳に何が映ってるかは地球人には想像だにつかない。
さて、宇宙うさぎはずっと生まれてずっと生き続ける。でも、宇宙はそんなに甘い世界じゃないからやがて滅ぶ。だから宇宙うさぎはそのときに死ぬのだ。つまり、きみが宇宙うさぎだったとしたら、きみが生きてるうちに世界が滅ぶ確率は100%ってことになる。残酷な話だ。
宇宙うさぎは世界が滅ぶまで死なない。でもそんなの地球の人たちからするとおかしな話だ。だからあんまり宇宙うさぎの話は参考にならないのかもね。
具体的には、小学生うさぎ、高校生うさぎ、社会人うさぎ、老人うさぎの順で育って死ぬ。高校生うさぎから社会人うさぎになるときにひとつがいの子どもを産み、社会人うさぎから老人うさぎになるときにもひとつがいの子どもを産む。老人うさぎは誰にも看取られずに孤独死する。これが宇宙うさぎとの違いだ。
宇宙うさぎ:2歳になったらひとつがいの子どもを産む。以後ずっと産み続ける。しあわせ!
地球うさぎ:2歳になったらひとつがいの子どもを産む。3歳になってもひとつがいの子どもを産む。4歳になったら死ぬ。ふつう!
このような条件でn年目の地球うさぎの総数を E n と表すと、もういろいろ省くけどさっきのフィボナッチ数列に似た数列になって、
E n+3 = E n+1 + E n (n ≧ 2),
E 1 = E 2 = 1, E 3 = 2, E 4 = 3
とかそんな感じになって、もうさらに適当に投げると、どんどん等比数列に近づいていってその公比はだいたい 1.325 になる。
さてこのとき、いままでに存在したすべての地球うさぎの数と、世界が滅ぶ予定のn年目(もちろん、このn年目っていうのがいつかはわからない)に存在する地球うさぎの数の比率を出してみるとなんと 67.5% っていうものすごい比率になる。これがどういうことかというと世界が滅ぶn年目に生きている地球うさぎは、いままでに存在したすべての地球うさぎのうち 67.5% ということだ。きみはどの地球うさぎにもなる可能性があったわけだけど、そのうち 67.5% に当たってしまうときみが生きているときに世界が滅ぶことになるってことになる。これは由々しき事態だと思わない?
ただし、この話が成り立つために必要な仮定を認めちゃうことと、無限連鎖講のビジネスモデルを認めちゃうことはだいたい合ってるんだけどとりあえず投げとく。
@ITにて、@ITの「Rubyを最大63%高速化した中学生は超多忙!」というインタビュー記事が公開されています。
これまで、Lispの“仏さま”竹内郁雄氏、東大博士課程の女性プログラマ五十嵐悠紀氏、プログラミング言語Cyanを開発した高校生 林拓人氏、その続編(「国語ができる(=日本語できちんとした文章が書ける)人じゃないとプログラムは書けない」という竹内郁雄氏の発言の解説)に続く、連載物の一つである。
今回の記事の筑波大駒場付属中の3年生金井仁弘氏は、/.Jでも告知があった「セキュリティ & プログラミングキャンプ 2009」に参加し、Ruby1.9がRuby1.8よりフィボナッチ数列の計算で低速化しているのに着目、構造体の判定メソッドの一部をループの外に出すことで最大で約63%、全体で約8%の高速化に成功したと言う。また「RSA解読のためのフェルマーの小定理の証明」を授業で行っているなど、色々と興味深い内容だ。
皆さん、中三の夏に何してました?