稲葉 一浩 (k.inaba) http://www.kmonos.net/ Python と プログラミングコンテスト 稲葉 一浩 (k.inaba) http://www.kmonos.net/

Slides:



Advertisements
Similar presentations
ACM/ICPC と アルゴリズム 「実践的プログラミング」 稲葉 一浩. 自己紹介 ﻪ 理Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 ﻩ 博士課程1年 ﻩXML を扱う専用言語の研究など ﻪ 個人的には ﻩ ﻯD.
Advertisements

第 5 章 2 次元モデル Chapter 5 2-dimensional model. Contents 1.2 次元モデル 2-dimensional model 2. 弱形式 Weak form 3.FEM 近似 FEM approximation 4. まとめ Summary.
なぜ今Pythonか? Pythonをお薦めする18の理由
2015/07/04 東海道らぐ 2015年7月オフな集まり in 名古屋 さとう
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
米国セキュリティ調査 (2002 CSI/FBI調査 攻撃場所)
This slide was a material for the “Reading PLDI Papers (PLDIr)” study group written by Kazuhiro Inaba ( ), under my own understanding of.
東京工科大学 コンピュータサイエンス学部 亀田弘之
2011/12/17(Sat) PHP AV binding.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング言語としてのR 情報知能学科 白井 英俊.
Quiz Tomorrow! Answer in Japanese as best you can. Ask Sensei to write vocab on the board. Use your TE/TA-Form tools. 日本と第二次大戦(だいにじたいせん)について、なにをしっている?
読んだもの P0254R0: Integrating std::string_view and std::string およびその関連スレッド 稲葉 一浩.
The Bar バー.
英語勉強会.
Chapter 11 Queues 行列.
Ex7. Search for Vacuum Problem
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
AP/5 2013年2月7日.
Ex8. Search for Vacuum Problem(2)
Lightweight Language Weekend ls-lRシェル
最適化ソルバーのための Python言語入門
AP 私の食生活 Write a paragraph summarizing the data you collected. Include some conclusions. Present to your partner. Up to 90 sec.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
Bottle/Pythonによる Webアプリ入門
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
ACM/ICPC World Finals への道

テキストの類似度計算
PHPの基礎と開発手法 Based on PHP5
Chapter 4 Quiz #2 Verbs Particles を、に、で
The Sacred Deer of 奈良(なら)
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
ストップウォッチの カード ストップウォッチの カード
情報の科学的 な理解(2) 情報科教育法 8回目 2005/6/4 太田 剛.
Input slides 1 – 11 – teacher says word - pupils repeat – word appears on click Ohayoo. おはよう。
ICFP プログラミングコンテストに (稲葉 一浩).
50年前のプログラミング言語 50年後のプログラミング言語
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
第10章 これはかなり大変な事項!! ~ポインタ~
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
Mathematicaによる固有値計算の高速化 ~ Eigenvalue calculation speed by Mathematica ~ 情報工学科 06A2055 平塚 翔太.
平成30年度高知工科大学教職科目 微分方程式特論I 11 高知大学教育学部技術教育コース 北川 晃.
お仕事にまったく役にたたない内容のコードレビューやりたいと思います。
けいご 敬語 Polite speech.
Nakano School of Business 経営情報ビジネス科 【 C言語入門(Test2)】
逐次プログラムの正当性(2) 帰納的アサーション法(フロイド法)
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
Ex7. Search for Vacuum Problem
アルゴリズムとデータ構造 はじめに 第1章 アルゴリズムと計算量
数値計算モジュール NumPy.
ロールプレイアクティビティ ある状況設定の中で、登場人物になりきり会話をします。 CAN-DO: 状況に応じた適切な質問をすることができる。
疑似乱数, モンテカルロ法によるシミュレーション
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
統計ソフトウエアRの基礎.
手書き文字の自動認識アプリケーション 15K1013 坂本 倖輝
コンパイラ 2012年10月1日
Created by L. Whittingham
This slide was a material for the “Reading PLDI Papers (PLDIr)” study group written by Kazuhiro Inaba ( ), under my own understanding of.
第八課文法二 Chapter 8 Grammar 2
もっていきます・もってきます.
発表者: 稲葉 一浩 複雑ネットワーク・地図グラフ セミナー 2017/1/19
Goal: I can understand more about the Japanese art of complaining
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
コンパイラ 2012年10月11日
第12章 乱数という業の深い存在 ~ランダムな値・他~
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
君ならどうする – ls-lRシェル Python編
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
就職活動.
Presentation transcript:

稲葉 一浩 (k.inaba) http://www.kmonos.net/ Python と プログラミングコンテスト 稲葉 一浩 (k.inaba) http://www.kmonos.net/

超特急自己紹介 言語ラブ(浮気性) 「みんなのPython」 つまり超初心者(Python歴3ヶ月) C++, JavaScript, D, Java, PHP, OCaml, Icon, Haskell, Erlang, Ruby, Python, … 「みんなのPython」 で Python はじめました 柴田さんありがとうございます つまり超初心者(Python歴3ヶ月) ”ビギナーのPython体験記”

プログラミングコンテスト? めちゃくちゃ色々種類があります 今日は特に 短時間で“Algorithm Quiz”を解くコンテスト Google Code Jam ACM/ICPC Sphere Online Judge Contest などなど

アルゴリズムクイズ : 例 『時刻表、路線図データ、出発駅、到着駅 がテキストで入力されます。 最短経路を計算するプログラム書いてね』 『時刻表、路線図データ、出発駅、到着駅 がテキストで入力されます。 最短経路を計算するプログラム書いてね』 『重さバラバラの重りがたくさんあります。 うまくバランスするように 2グループに分けるプログラム書いてね』

“Python イイ!!” と思ったポイント3点

1: Python の デコレータ! (メモ化)

デコレータ! 要は、関数を1枚ラップする関数 def decor(f): … @decor def func(a,b): … # func = decor(func) と同じ

デコレータ! キャッシング / メモ化 同じ引数が来たら、 2度目は前回の計算結果を即返すようにする (Algorithm Quizでは超頻出の手法) (※ 特にGoogle Code Jam系のコンテストで… ) Pythonなら、デコレータで綺麗にライブラリ化 (実装は省略…) @memoize def super_heavy_recursive_function(x): …

2: Python は 速い! (わりと)

速い! Psyco ( http://psyco.sf.net/ ) そんなに速くなるの? Python のコードを x86 の機械語にJITコンパイルして実行 そんなに速くなるの?

速く! アルゴリズム問題に対しては、なります! Psycoのページから引用 For common code, expect at least a 2x speed-up, more typically 4x. But where Psyco shines is when running algorithmical code --- these are the first pieces of code that you would consider rewriting in C for performance. If you are in this situation, consider using Psyco instead! You might get 10x to 100x speed-ups.

Psyco! 行列のかけ算 23.953 秒 2.984 秒 使用前: (300×300の行列で) 使用後: import psyco psyco.full() def matmult(a, b): n = len(a) c = [[0]*n for _ in range(n)] for i in range(n): for j in range(n): for k in range(n): c[i][j] += a[i][k]*b[k][j] return c 使用後: 2.984 秒

3: 標準ライブラリ Random (充実)

Random! プログラミングコンテストの 問題を作るとき 必須 問題を解くときも さくっとランダムテストが書けると 便利

Random! random() randint(a, b) seed(s) 0.0 ~ 1.0 の実数をランダムに返す 乱数列の”種”を初期化 おおくの言語の 標準乱数は ここまで

Random! getstate() / setstate(s) 乱数生成器の状態を記録/復元 『シード 0x12345678 で作ったランダムテストケースの 901234 番目のデータからバグが出るんですけど!!』 わりと珍しい あると便利

Random! choise(seq) sample(seq, k) shuffle(seq) seq の要素を1個ランダムに取り出す すごく珍しい とても便利

ご静聴 ありがとうございました