Microsoft PowerPoint - tus-lecture.ppt

Similar documents
2. 主 婦 パートの 能 力 2.6 個 人 正 社 員 経 験 主 婦 パートの 9 割 以 上 が 正 社 員 経 験 あり 主 婦 パートに 正 社 員 (または 正 職 員 )でどのくらいの 期 間 働 いていたかを 聞 いたところ 全 体 の 91.6%に 正 社 員 で 働 いた 経

121025 資料4 国民年金保険料の後紊制度の実施状況等について

<96DA8E9F2E786C73>

<834A838A834C C2E786C7378>

貿易投資相談ニュース臨時増刊号

この冊子は 募集要項 ( 願書 ) ではありませんので, 試験時間 場所等の記載はありません 出願 ( インターネット出願 ) を行う前に, 必ず 募集要項 (76 ページ参照 ) を確認してください 目 次 平成 31 年度入試の主な変更点 1 インターネット出願について 2 1. アドミッション

<4D F736F F D D918C9A8DDE92B28DB895F18D902E646F6378>

目 次 第 1 章 はじめに 1 1 本 研 究 の 目 的 先 行 研 究 本 研 究 の 構 成 略 語 収 集 の 方 針 10 第 2 章 原 形 分 割 単 位 (1): 段 2 1 略 語 構 成 過 程 における 原 形 分 割 段 の

<4D F736F F D EC096B A A B C835E815B91E D865F959F8C9A8EA996668BE682CC915391CC95FB88C42E646F63>

PRIMERGY SX960 S1/SX980 S1/SX910 S1 システム構成図 (2012年8月版) 樹系図

<81798B9B89EE97DE817A95FA8ECB945C945A93788C8B89CA2E786C7378>

<94CC94848C6F97F02E786C7378>

Dsub 高周波コンタクト

2017 年度決算短信集計 連結 合計 ( 市場第一部 市場第二部 マザーズ JASDAQ)(1) 業種集計社数 ( 単位 : 社 百万円 %) 売 上 高 ( 営業収益 ) 営業利益 経常利益 2017 前年度比 前年度比 前年度比 全産業 3,250 72

リスニング ⑴~⑸のAの 発 話 に 対 するBの 問 いの 答 えとして 最 も 適 当 なものを,それぞれ 1~4の 中 から1つ 選 び,その 番 号 を 解 答 欄 にマークしなさい (25 点 ) ⑴ ⑵ ⑶ ⑷ ⑸ 1

<4D F736F F D20959F89AA8D5D A E838B8CF097AC875595F18D908F FA95B68DC58F4994C5816A2E646F63>

<4D F736F F D20315F FA57EBB79B8735FB0F2B6A9A5ABA870A5DFA5FAB6A9B0AAAFC5AE61A8C6B0D3B77EC2BEB77EBEC7AED55FA4E9A4E5C3FE5FBDD7A4E5C3FE5F4C494E45A A A8CFA5CEAE74B2A7AABAA4C0AA52A1D

40

Microsoft Word - 王鼎棫 doc

プロシーディングス A Study of Hedge Accounting in the Japanese Banking Industry Masayuki Matsuyama, Development Bank of Japan Inc. Research Institute of Capita

Ⅲ 学生の受け入れ 1 学部 学科 大学院研究科 専門職大学院の志願者 合格者 入学者数の推移 < 学部 > 学部名 工学部 学科名 電子情報工学科 入試の種類 2007 年度 2008 年度 2009 年度 2010 年度 2011 年度 一般入試 志願者

~ 4 NHK 25. 9% 38% 23. 6% 63. 9% 3? 倾化? http / /blogos. com /article /80142 / http / /opinion. huanqiu. co

第5期科学技術基本計画における目標値・指標

61_設計建設14A_本文正誤表

2016年度招生簡章 持有留學以外的其他簽證者(在日本居住)

Microsoft Word - ジャーナル表紙.doc

<93FC8E8E8D4C95F197708C8F C E786C73>

2. 中 日 成 语 现 状 及 特 点 2.1 现 代 汉 语 中 的 四 字 成 语 起 源 于 中 国 的 四 字 成 语 简 洁 生 动 寓 意 深 刻, 且 朗 朗 上 口, 是 汉 字 文 化 圈 重 要 的 财 产 根 据 刘 长 征 等 (2007) 和 张 正 生 (2014) 的

SurveyMonkey分析 - Export

CVIM2009-yoshinaga.dvi

CRG 2019 パーツリスト.xlsx

全 日 本 博 士 協 会 の 皆 さんは 留 学 を 通 じて さまざまな 形 で 日 中 友 好 の 活 動 を 行 い きっ と 皆 さん 心 中 の 平 和 がいつか 地 球 上 に 訪 れるでしょう 当 時 札 幌 農 学 校 と 呼 ばれた 北 海 道 大 学 の 初 代 教 頭 として

<93FC8E8E8D4C95F197708C8F C2E786C73>


OZ Brake Pad for BMW 純正センサー取り付けできません ( 非対応です ) 1 series X 1 3 series X 3 MODEL TYPE YEAR MODEL 価格は税抜です 現在 品番価格 BP001 BP002 BP003 BP004 BP005

スライド 1

物件毎チラシ1-4-2

目 录 1 学 长 寄 语 2 留 学 前 准 备 2-1 留 学 计 划 表 2-2 院 校 规 划 2-3 语 言 考 试 2-4 院 校 申 请 2-5 留 学 费 用 2-6 签 证 2-7 行 前 准 备 3 留 学 生 活 3-1 留 学 路 上 3-2 实 用 信 息 3-3 学 习

< D F8089BB95F18D902D392E786C73>

中 文 摘 要 本 專 題 旨 在 探 究 台 灣 與 日 本 的 水 果 產 業 發 展 現 況 及 問 題 點, 及 兩 者 水 果 種 類 產 地 和 進 出 口 狀 況 同 時, 透 過 問 卷 調 查, 藉 此 了 解 消 費 者 的 消 費 習 慣 及 需 求, 提 供 水 果 商 進

The NVivo Toolkit

2 华 子 岗 飞 鸟 去 不 穷, 连 山 复 秋 色 上 下 华 子 岗, 惆 怅 情 何 极 苍 茫 的 天 空 中, 成 群 的 鸟 儿 向 南 飞 翔 着, 一 群 又 一 群, 接 连 不 断 连 绵 起 伏 重 重 叠 叠 的 山 峦 又 是 一 片 秋 色 我 有 时 登 上 华 子

2 留 学 项 目 1 北 海 道 大 学 招 收 中 国 国 家 建 设 高 水 平 大 学 公 派 研 究 生 项 目 学 生 的 通 知 项 目 信 息 来 源 : 国 际 合 作 部 项 目 简 介 : 国 家 留 学 生 基 金 委 每 年 通 过 国 家 建 设 高 水 平 大 学 公

Microsoft Word doc

新宮川水系の濁度情報 ( 平成 31 年 1 月 12 時の濁度 ) 確定版 濁度 ( 度 ) 各地点の濁度 上野地地点 五百瀬地点 十津川第一発電所放水口地点 重里地点 十津川第二発電所放水口地点 宮井地点 九重地点 志古地点

Microsoft Word - 小论文终稿.docx

Forst Import 車種適合表

2016/6/30 時点で修理受付可能な機種を掲載しています 通常修理料金品名 型式 修理終了年月 その他 体重体組成計 HBF 年 7 月終了 体重体組成計 HBF-202 体重体組成計 HBF-203 体重体組成計 HBF 年 6 月終了 体重体組成計 HBF

<48508F4390B38CB48D E FA C092E88AED88EA C FD82E786C73>

Ps22Pdf


少 数 民 族 虐 殺 は 正 しかった 中 国 共 産 党 唐 山 学 習 班 班 員 の 日 記 ( 楊 海 英 ) 少 数 民 族 虐 殺 は 正 しかった 中 国 共 産 党 唐 山 学 習 班 班 員 の 日 記 楊 海 英 目 次 一 日 記 資 料 の 背 景 二 造 反 派 が 回



Microsoft Word - æŒ°âŸƒâŸ–ã•’æł´æŒ°å‹ƒ30㕆10,19確å®ı㕂㕕髟瀇帇仉è�·äº‹éŸ²ã…»æŠ¥å¸¸çfl�æ´»æfl¯æ‘´ç·‘咋争æ¥�費ㇳㅼㅛ表 - ㇳã…flã…¼ (è⁄ªå‰Łä

組別:日文組

KW プライスリスト (VOLKSWAGEN) 車種 モデル 年式 ( 月 / 年 ) 許容耐荷重 Front 許容耐荷重 Rear 対応出力 (kw) ラインアップ減衰力調整トップマウント ダウン量 Front ダウン量 Rear 本体価格 ( 税抜 ) 旧価格 本体価格 ( 税抜 ) 新価格 A


先生別耍我

C 場 : 海 上 漁 業 環 境 與 執 法 主 持 人 : 蔡 副 署 長 日 耀 ( 行 政 院 農 業 委 員 會 漁 業 署 ) C-1 報 告 人 : 台 灣 漁 業 管 理 制 度 與 執 法 歐 教 授 慶 賢 ( 國 立 臺 灣 海 洋 大 學 環 境 生 物

求人 求職者賃金情報 10 月 局 計 求人賃金 求職者希望賃金情報 ( 常用 ) ( 単位 : 円 ) 求人賃金 求職者希望賃金 求人 求職者賃金情報 男 上限平均下限平均男女 専門 技術職 286, , , ,514 事務職 204, ,156 2

< E937893FC8E8E8EC08E7B8C8B89CA C668DDA A2E786C73>

C/C++ - 文件IO

<DADDBCDECCB0C4DECCA7DDBDB2AFC191CE899E955C2E786C73>

富士河口湖町 鳴沢村小中学校 平成 30 年度水質検査結果 1. 学校飲料水水質検査 項目 学校名 基準値 測定日 採取場所 天 候 気 温 水 温 残留濃塩度素 0.1mg/L 以上 色 度 5 度以下 濁 度 2 度以下 臭 気 異常でないこと 味 異常でないこと 水素イ濃オ度ン 5.8 以上

品質管理における寸法検査完成されたソリューションの提供

GREETNG 致 辞 JBAN 2016 暨 二 十 周 年 大 会 举 办 时 间 :2016 年 8 月 1 日 ( 周 一 )~ 8 月 4 日 ( 周 四 ) 举 办 地 点 : 东 21 东 京 酒 店 大 家 一 起, 握 住 梦 想! 一 个 小 小 的 气 球, 就 能 为 空 间

技术写作技巧在日汉翻译中的应用

<444D D91906C906C8DDE D B838B817C A957A2E786C73>



来 解 释 们 所 引 起 的 语 法 现 象 具 体 而 言 就 是, 我 们 将 使 用 信 息 结 构 来 描 写 们 的 用 法 本 文 的 构 成 如 下 首 先 我 们 讨 论 们 的 基 本 用 法 然 后 简 单 地 说 明 汉 语 概 数 结 构 的 分 类, 指 出 各 个 类

017_読物15_周.indd

修正 廃番他 修正 変更該当箇所 ページ番号 LOST+FOUND STANDARD COLLECTION CATALOGUE PRICE LIST 更新日 : 品番名称色 W (mm) H (mm) D (mm) 呼称 備考 メーカー希望小売価格 ( 税別 ) 修正 変更価格

㉘歯周疾患検診等結果

第14回太田カップ2018結果.xlsx

ISSN Print ISSN ISSN ISSN mag/back number.html c

目 录 第 一 篇 入 门 学 习 1. 五 十 音 图 学 习 P3 2. 日 语 发 音 学 习 P5 第 二

投影片 1


様式 -1 氾濫範囲図

2015 春 节 联 欢 会 语 和 中 国 的 时 事, 同 时 也 让 我 学 到 了 很 多 其 它 宝 贵 的 东 西 比 如 说 如 何 和 他 人 交 往 认 识 她 之 前, 我 不 知 道 推 心 置 腹 这 个 成 语, 我 也 从 来 没 跟 别 人 建 立 过 深 厚 的 友

投資部門別取引状況 Trading by Type of Investors ( 日経 225 先物 / Nikkei 225 Futures) 株式会社大阪取引所 Osaka Exchange, Inc 年 05 月第 2 週 2017/05 week2 ( 05/08-05/12 )

投資部門別取引状況 Trading by Type of Investors ( 日経 225 先物 / Nikkei 225 Futures) 株式会社大阪取引所 Osaka Exchange, Inc 年 04 月第 4 週 2018/04 week4 ( 04/23-04/27 )

Microsoft PowerPoint - PLDI11

Microsoft PowerPoint - PLDI7

R220_平均価額(確)_ _ XLS

RN201508_cs5_0723.indd

名古屋市港区入船一丁目 1 番 20 号 TEL: FAX: 更新日 : 2018/12/28 LCL スケジュール名古屋積み PAGE 1 PAGE 2 PAGE 3 PAGE 4 PAGE 5 PAGE 6 PAGE 7 PAGE

科学计算的语言-FORTRAN95


30 现 代 汉 语 (12 级 ) 31 应 用 文 写 作 (11 级 )

立 德 树 人 与 外 语 教 育 中 国 教 育 学 会 外 语 教 学 专 业 委 员 会 是 研 究 基 础 教 育 外 语 教 学 的 全 国 性 群 众 性 外 语 教 师 学 术 团 体, 致 力 于 推 进 中 国 基 础 教 育 外 语 教 学 的 改 革 和 发 展, 提 高 中

博 士 論 文 19 世 紀 上 海 方 言 動 詞 研 究 2014 年 度 王 一 萍 熊 本 学 園 大 学 大 学 院 国 際 文 化 研 究 科 国 際 文 化 専 攻

平成 15 年 9 月 1 日現在 世帯数 総数 男 女 [ 本庁管内 ] 国府台 1 丁目 401 1, 丁目 丁目 411 1, 丁目 405 1, 丁目 664 1,

日本医療安全調査機構_年報0_表紙

17:1018:20 18:3020: :0019:00 A 17:0019: SMT1 10:3012:30 SMT 10:4016:20 SMT2-A 13:3016:15 OD 8:4511:20 OE 9

ぶつかり稽古ランキング 2016/5/31 現在 前回順位 1 酒井 28 戦 26 勝 2 敗 石田 32 戦 26 勝 6 敗 小山 72 戦 57 勝 15 敗 高木 51 戦 38 勝 13 敗 寺谷 37 戦 27 勝 10


<4D F736F F D20315F FA57EBB79B8735FA578A55FA5ABA451AB48B0AAAFC5A4A4BEC75FA4E9A4E5C3FE5FBDD7A4E5C3FE5FA741BBA1A95FA9C7A4A3A95FA9C72DB24CBDCDA578A4E9A9C7B2A7ACFCADB92E646F63>

Microsoft PowerPoint - lt06-13&14p.ppt

14年度MF_09短大66_p02-14[植].indd

Transcription:

TUTScheme の利用 京都大学情報学研究科通信情報システム専攻湯淺研究室 D1 平石拓 2005/10/18 Scheme Scheme Lispの方言の一つ (cf. Common Lisp, Emacs Lisp) リスト処理 対話環境 デバッグがしやすい 小さい言語仕様 (50ページ). 高い拡張性. C(C99) は538ページ Common Lisp( 第 2 版 ) は1029ページ GC( ごみ集め ) 継続オブジェクト... TUTScheme Schemeの実装の1つ. 湯淺先生, 小宮先生 ( 豊橋技科大 ) 開発 利用手段 メディアセンターの端末 http://www.pro.ics.tut.ac.jp/~komiya/download/ から入手 Windows(Cygwin 版もあり ) Mac OS X RedHat Linux 1

起動 終了 $ tus TUTScheme version 1.4g (C) Copyright Taiichi Yuasa SC> (+ 3 4) 7 SC> (bye) Bye. $ 起動 終了処理系によっては (exit), (quit) 対話環境の利用 SC> (+ 3 4) 7 (+ 3 4) の評価値 SC> (* (+ 1 2) (- 10 7)) 9 (* (+ 1 2) (- 10 7)) の評価値 SC> 1234 1234 1234の評価値 SC> "abc" "abc" "abc" の評価値 変数定義 (1) SC> (define x 10) x SC> x 10 SC> (* x (+ x 3)) 130 SC> (set! x 24) 24 SC> x 24 x という名前の変数を定義 x (x+3) x の値を変更 2

変数定義 (2): 局所的な変数 SC> (let ((x 10) (y 20)) (* x (+ x y))) 300 SC> x Error: x is an unbound symbol.... 関数定義 (1) SC> (define (square x) (* x x)) square SC> (square 10) 100 SC> (square (* 3 4)) 144 関数定義 (2) n! を求める関数 SC> (define (fact n) (if (= n 0) 1 (* n (fact (- n 1))))) fact SC> (fact 10) 362800 n=0 の時 n=0 でない時 3

記号 (1) (quote 記号 ) スペシャル フォーム SC> (quote x) x SC> (quote cat) cat SC> (define x (quote y)) x SC> x y 記号 (2) 記号 でも同じ意味 SC> x x SC> cat cat SC> (define x y) x SC> x y リスト (1) Lispにおける最も重要なデータ型の1つ データ ( 要素 ) の 並び を表す (1 2 3 4 5 6 7 8 9 10) (we eat rice) ((a b c) x y (1 2)) など 4

リスト (2) SC> (list 1 2 3 4) (1 2 3 4) SC> (list w x (list y z)) (w x (y z)) SC> (define x 4) x SC> (list x (* x 5)) (4 20) SC> (list) () 空リスト リスト (3) リストの要素がわかっている場合は (quote 記号 ) でもよい SC> (x y) (quote (x y)) と同じ (x y) SC> ((x y) 1 2 (a b c)) ((x y) 1 2 (a b c)) SC> (define (square x) (* x x)) (define (square x) (* x x)) リストを扱う関数 (car, cdr) SC> (car (a b c d)) リストの先頭要素 a SC> (cdr (a b c d)) 先頭要素を除いたリスト (b c d) SC> (car (cdr (cdr (a b c d)))) c SC> (cdr (cdr (cdr (cdr (a b c d))))) () 5

リストを扱う関数 (cons) リストの先頭に要素を追加 SC> (cons we (eat rice)) (we eat rice) SC> (cons never (cdr (we eat rice))) (never eat rice) SC> (cons (a b c) (x y z)) ((a b c) x y z) SC> (cons single () ) (single) リスト処理関数の定義例 SC> (define (my-length x) (if (null? x) 0 (+ 1 (my-length (cdr x))))) my-length SC> (my-length (a b c d)) 4 式の評価 (+ (* 3 2) 5) や (define x 30) なども それ自身は単なるリスト SC> (list + (list * 3 2) 5) (+ (* 3 2) 5) システムがこのリストを 評価 すると 関数呼び出し式 として処理を行い 値を返す システムが評価できるデータを フォーム という フォームでないデータを評価しようとすると エラーになる 6

フォームの分類 (1) リスト フォーム 関数適用 ( 関数 式 1 式 n ) 1. 関数 と 式 1 ~ 式 n を評価 2. 関数を 式 1 ~ 式 n の評価結果に適用 スペシャル フォーム define, set!, quote, if など特定の記号で始まるリスト それぞれのスペシャルフォームごとに決まった評価方法 マクロ フォーム ( 関数適用とは違う ) マクロを表す記号で始まるリスト ( 詳細は省略 ) フォームの分類 (2) 記号 変数の値が評価値になる SC> (define x 30) x SC> x 30 SC> + #<function +> フォームの分類 (3) その他のデータ 数値や文字列などは それ自身が評価値となる SC> 123 123 SC> abcde abcde 7

cons セル (1) 例 1: (we eat rice) の内部表現 we eat rice () :cons セル car 部 cdr 部 cons セル (2) 例 2: (define x (we eat rice)) (define y (cons they (cdr x)) x: y: we eat rice () they cons セル (3) (cons データ 1 データ 2 ): car 部と cdr 部がそれぞれ データ 1, データ 2 であるコンス データを返す SC> (cons rice ()) (rice) SC> (cons eat (cons rice ())) (eat rice) SC> (cons we (cons eat (cons rice ()))) (we eat rice) 8

cons セル (4) ドット ペア SC> (cons x y) (x. y) ドット リスト x y SC> (cons x (cons y z)) (x y. z) x y z cons セル (5) 破壊的操作 SC> (set-cdr! x 123) (we. 123) SC> (set-car! x y) ((they eat rice). 123) x: we 123 eat rice () y: they 入出力関数 (1) 出力関数 SC> (write (a b c)) (a b c)(a b c) システムの出力 ( 評価値 ) write 関数の出力 SC> (begin (write (a b c)) (newline)) (a b c) write 関数の出力 #t システムの出力 ( 評価値 ) 9

入出力関数 (2) SC> (define (square x) (write (list x x)) (newline) (* x x)) square SC> (square (* 3 4)) (x 12) 144 入出力関数 (3) 入力関数 SC> (read) abcde ( キーボードから入力 ) abcde システムの出力 ( 評価値 ) SC> (begin (display input: ) (fact (read))) input: 11 ( キーボードから入力 ) 39916800 ( プロンプト ) ファイル入出力 (1) SC> (define out (open-output-file outfile )) out SC> out #<port to outfile> SC> (write (fact 7) out) (fact 7) の結果を outfile に書き込む 5040 SC> (newline out) #t SC> (close-output-port out) #t 10

ファイル入出力 (2) SC> (define in (open-input-file infile )) in SC> (read in) infile からデータを1つ読み込む data SC> (read in) #<end-of-file> ファイルの終端に達した場合 SC> (close-input-port in) #t ファイル入出力 (3) (call-with-output-file ファイル名 関数 ): 指定されたファイルへの出力ポートを引数として 関数 を呼び出し, その返り値を返す. (call-with-input-file ファイル名 関数 ): 指定されたファイルへの入力ポートを引数として 関数 を呼び出し, その返り値を返す. 関数 は 1 引数でなければならない 実行終了後 ファイルは自動的に閉じられる ファイル入出力 (4) 例 :1 2, 2 2,..., 99 2 の値をファイルに書き出す (call-with-output-file square99 (lambda (out) (do ((n 1 (+ 1 n))) ((>= n 100)) (write (* n n) out) (newline out)))) 11

ファイル入出力 (5) 例 : ファイルから全てのデータを順に読み込んで画面に表示する (call-with-input-file infile (lambda (in) (do ((dat (read in) (read in))) ((eof-object? dat)) (write dat) (newline)))) プログラム ファイル (load ファイル名 ): ファイルに書かれているフォームを順に 全て評価する SC> (load square.scm ) Loading square.scm... Finished. square.scm SC> (square 4) 16 関数実行のトレース (trace 関数名 ): 関数のトレースを開始 (untrace 関数名 ): トレースをやめる 標準ではないが, たいていの処理系で使える. 12

関数実行のトレース ( 使用例 ) SC> (trace fact) #t SC> (fact 2) 1>(fact 2) 2>(fact 1) 3>(fact 0) 3<(fact 1) 2<(fact 1) 1<(fact 2) 2 代表的な組み込み関数 ( 数値 ) 加減乗除 (+ 数値 1 数値 n ) (- 数値 1 数値 n ) (* 数値 1 数値 n ) (/ 数値 1 数値 n ) (remainder 整数 1 整数 2 ) : 割り算の余り (cf. modulo) 比較 (= 数値 1 数値 n ) (< 数値 1 数値 n ) (> 数値 1 数値 n ) (<= 数値 1 数値 n ) (>= 数値 1 数値 n ) 代表的な組み込み関数 ( リスト ) (length リスト ) (append リスト 1 リスト n ) (reverse リスト ) 13

代表的な組み込み関数 ( 等号 論理演算 ) 等号 (eq? データ1 データ2 ) (eqv? データ1 データ2 ) (equal? データ 1 データ 2 ) 論理演算 (not データ 1 ) (and データ1 データn ) 特殊フォーム (or データ1 データn ) 特殊フォーム 代表的な組み込み関数 ( データ型述語 ) (number? データ ) (integer? データ ) (symbol? データ ) (pair? データ ) (list? データ ) (null? データ ) (string? データ ) その他の組み込み関数 ヘルプ機能 (tus, guileなど ) (apropos 文字列 ): 文字列 を含む組み込み関数 スペシャルフォーム マクロの一覧を表示する. 14

レポートについて ソースコードは手書き厳禁! 適当なところで改行. インデント (emacs 推奨 ). コメント ( ; を使う ) もできるだけつけること. (define (square x) (write (list x x)) (newline) (* x x)) レポートについて ソースコードは手書き厳禁! 適当なところで改行. インデント (emacs 推奨 ). コメント ( ; を使う ) もできるだけつけること. (define (square x) (write (list x x)) ; 追加 (newline) ; 追加 (* x x)) ( 参考 ) TUTSchemeのマニュアル 今回扱わなかった関数等の説明 http://www.yuasa.kuis.kyoto-u.ac.jp/~komiya/tus-man/tus/ http://winnie.kuis.kyoto-u.ac.jp/~okuno/lecture/05/introalgds/ 15