SlideShare a Scribd company logo
1 of 30
プログラミングHaskell 11章

切符番号選び
     @dekosuke
概略




 数字遊び @ twitter
 切符番号選び

 切符番号選びの高速化




                   2
数字遊び




   ランダムな4つの数字から、10を作ろう!


                           3
数字遊び




   Easy! => 3+2+7-2


                       4
数字遊び




TLを眺めてみると、
問題によっては、難易度高い・・・

                   5
数字遊び




   累乗で解決!


             6
数字遊び




さらに難易度上昇


           7
数字遊び




   絶対値とルートで解決!?・・・


                      8
数字遊び

絶対値とルートで解決!?・・・




                  9
数字遊び



 上のTwitterの数字遊びは、使える演算が明
  示されていないあいまいさがある(それ
  が面白さにつながる点も)
 使える演算をちゃんと決めよう!




                        10
切符番号選びのルール



   正数のリストが与えられる
 リストから好きな数だけ選んで正数を使
  い、四則演算を行える
 計算途中で0以下になってはいけない




                       11
切符番号選びのルール


[Int] -> [(Expr, Int)]

整数のリストから、四則演算で作られる式
とその答えのリストが作られる
欲しい数は、その中に「ある」か「ない」
かのどちらか


                         12
切符番号選びのルール




というわけで、切符番号選びのプログラム
を書きましょう!




                  13
切符番号選び

data Op = Add | Sub | Mul | Div
--演算

valid :: Op -> Int -> Int -> Bool
apply :: Op -> Int -> Int -> Int
--演算が正当かどうかと、演算を行う関数
--Maybe?...

                                    14
切符番号選び

data Expr = Val Int | App Op Expr Expr
--式

eval :: Expr -> [Int]
--式の評価 (実質Maybe)

--整数の組み合わせを作るため、次から
色々関数を定義します
--Val は適宜省略します
                                         15
切符番号選び

subs :: [a] -> [[a]]
subs [] = [[]]
subs (x:xs) = yss ++ map (x:) yss
         where yss = subs xs

--リストの全ての部分集合を作る
--集合のべき乗(2^X)
--subs [1, 2] = [[], [2], [1], [1,2]]
                                        16
切符番号選び


perms :: [a] -> [[a]]
perms [] = [[]]
perms (x:xs) = concat (map (interleave x)
(perms xs))

--集合のpermutation(並び替え)


                                            17
切符番号選び



choices :: [a] -> [[a]]
choices xs = concat (map perms (subs xs))

--全ての部分集合を含んだ順列を作る



                                            18
切符番号選び


solution :: Expr -> [Int] -> Int -> Bool
solution e ns n = elem (values e) (choices ns)
&& eval e == [n]

--式eを構成する数値がリストnsに含まれて
いる かつ 式eを評価すると値nになる


                                                 19
切符番号選び

全ての解答を探す関数solutionsを作りたい

solutions :: [Int] -> Int -> [Expr]
--solutions (数のリスト) 正解値-> 数のリスト
が生成元の式で、評価すると正解値になる
もの
-- solutions [1,2,3] 3 = [Val 3, Add 1 2, Add 2 1]

                                                20
切符番号選び

split :: [a] -> [([a],[a])]
split [] = []
split [_] = []
split (x:xs) = ([x],xs):[(x:ls,rs)|(ls,rs) <- split xs]

--集合を全ての場所で2つに割る
-- split [1,2,3,4] = [([1],[2,3,4]), ([1,2],[3,4]),
([1,2,3],[4])]

                                                          21
切符番号選び

split :: [a] -> [([a],[a])]
split [] = []
split [_] = []
split (x:xs) = ([x],xs):[(x:ls,rs)|(ls,rs) <- split xs]

--集合を全ての場所で2つに割る
-- split [1,2,3,4] = [([1],[2,3,4]), ([1,2],[3,4]),
([1,2,3],[4])]

                                                          22
切符番号選び

combine :: Expr -> Expr -> [Expr]
combine l r = [App o l r | o<-ops]
ops :: [Op]
ops = [Add,Sub,Mul,Div]

--2つの式にすべての演算を適用
--[Add 式1 式2, Sub 式1 式2, Mul 式1 式2, Div
式1 式2]

                                          23
切符番号選び

exprs :: [Int] -> [Expr]
exprs [n] = [Val n]
exprs ns = [e | (ls, rs) <- split ns, l<-exprs ls, r<-
exprs rs, e<-combine l r]

--数値のリストを全て一回ずつ使った式す
べてを返す (本当はこれは遅い(後述) )

                                                         24
完成

solutions :: [Int] -> Int -> [Expr]
solutions ns n = [e|ns' <- choices ns, e<-exprs
ns', eval e==[n]]
--与えられた数を生成する式をすべて探す

が、遅い… (4分 @ モダンなマシン)
(Sub 1 2) <- こういう式が途中に出たら打ち
切りたい

                                                  25
高速化

type Result = (Expr, Int)

combine' :: Result -> Result -> [Result]
combine' (l,x) (r,y) = [(App o l r, apply o x y)|o <-
ops, valid o x y]

--2つのExprに対して、validな演算すべてを
適用

                                                   26
高速化

results :: [Int] -> [Result]
results [] = []
results [n] = [(Val n, n) | n>0 ]
results ns = [res | (ls,rs) <- split ns, lx<-results ls,
ry <-results rs, res<-combine' lx ry]

--数値のリストを、すべて使った式を作っ
て評価する
-- [1,2] -> [(Add 1 2, 3), (Mul 1 2, 2)]
                                                      27
高速化


solutions' :: [Int] -> Int -> [Expr]
solutions' ns n = [e|ns' <- choices ns, (e,m)<-
results ns' , m==n]

--式を作るうえでvalidでない演算は早めに打
ち切る
--10数秒 @ モダンなマシン

                                                  28
高速化



さらに工夫を…
・足し算や掛け算は可換なので
 (Add 2 3) と (Add 3 2)は片方でいい
・(Mul x 1) は自明なので除去
これらの条件をvalidに入れ込む


                               29
高速化


・solutionsは元の数のリストに対して階乗
で計算量が増大する
・組合せ爆発
・式の途中で計算を打ち切ると、組合せの
増加速度を抑えられる→小さな工夫が指数
的に効く


                           30

More Related Content

What's hot

解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リストRuo Ando
 
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数Taketo Sano
 
XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐XMLProJ2014
 
D上の関数の極値の問題
D上の関数の極値の問題D上の関数の極値の問題
D上の関数の極値の問題nabeshimamasataka
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Tetsuya Yoshida
 
第二回ミーティングスライド
第二回ミーティングスライド第二回ミーティングスライド
第二回ミーティングスライドnullzine
 
D上の関数の極値の問題
D上の関数の極値の問題 D上の関数の極値の問題
D上の関数の極値の問題 政孝 鍋島
 
D上の関数の極値の問題
D上の関数の極値の問題D上の関数の極値の問題
D上の関数の極値の問題nabeshimamasataka
 
コードを書けば複素数がわかる
コードを書けば複素数がわかるコードを書けば複素数がわかる
コードを書けば複素数がわかるTaketo Sano
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCamlHaruka Oikawa
 
ナンプレ解析ツール
ナンプレ解析ツールナンプレ解析ツール
ナンプレ解析ツールkstmshinshu
 
データ圧縮
データ圧縮データ圧縮
データ圧縮Joe Suzuki
 
ex-7. Excel での乱数
ex-7. Excel での乱数ex-7. Excel での乱数
ex-7. Excel での乱数kunihikokaneko1
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法nitoyon
 
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数kunihikokaneko1
 
ex-6. Excel でのルックアップ
ex-6. Excel でのルックアップex-6. Excel でのルックアップ
ex-6. Excel でのルックアップkunihikokaneko1
 

What's hot (20)

解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リスト
 
fanscala1 2 scalaの基本
fanscala1 2 scalaの基本fanscala1 2 scalaの基本
fanscala1 2 scalaの基本
 
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数
 
XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐
 
D上の関数の極値の問題
D上の関数の極値の問題D上の関数の極値の問題
D上の関数の極値の問題
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会
 
第二回ミーティングスライド
第二回ミーティングスライド第二回ミーティングスライド
第二回ミーティングスライド
 
D上の関数の極値の問題
D上の関数の極値の問題 D上の関数の極値の問題
D上の関数の極値の問題
 
D上の関数の極値の問題
D上の関数の極値の問題D上の関数の極値の問題
D上の関数の極値の問題
 
コードを書けば複素数がわかる
コードを書けば複素数がわかるコードを書けば複素数がわかる
コードを書けば複素数がわかる
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
 
ナンプレ解析ツール
ナンプレ解析ツールナンプレ解析ツール
ナンプレ解析ツール
 
データ圧縮
データ圧縮データ圧縮
データ圧縮
 
ex-7. Excel での乱数
ex-7. Excel での乱数ex-7. Excel での乱数
ex-7. Excel での乱数
 
PRML 第14章
PRML 第14章PRML 第14章
PRML 第14章
 
R_note_01_ver1.1
R_note_01_ver1.1 R_note_01_ver1.1
R_note_01_ver1.1
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
 
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
 
機械学習
機械学習機械学習
機械学習
 
ex-6. Excel でのルックアップ
ex-6. Excel でのルックアップex-6. Excel でのルックアップ
ex-6. Excel でのルックアップ
 

Viewers also liked

Data.mapについて
Data.mapについてData.mapについて
Data.mapについてdekosuke
 
プログラミングHaskell 第五章
プログラミングHaskell 第五章プログラミングHaskell 第五章
プログラミングHaskell 第五章dekosuke
 
スマートフォンについて その1
スマートフォンについて その1スマートフォンについて その1
スマートフォンについて その1dekosuke
 
スタートHaskell 第二章
スタートHaskell 第二章スタートHaskell 第二章
スタートHaskell 第二章dekosuke
 
Android UIの罠
Android UIの罠Android UIの罠
Android UIの罠dekosuke
 
Javascript本19章まとめ
Javascript本19章まとめJavascript本19章まとめ
Javascript本19章まとめdekosuke
 
Ga nonogram
Ga nonogramGa nonogram
Ga nonogramdekosuke
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkVolker Hirsch
 

Viewers also liked (8)

Data.mapについて
Data.mapについてData.mapについて
Data.mapについて
 
プログラミングHaskell 第五章
プログラミングHaskell 第五章プログラミングHaskell 第五章
プログラミングHaskell 第五章
 
スマートフォンについて その1
スマートフォンについて その1スマートフォンについて その1
スマートフォンについて その1
 
スタートHaskell 第二章
スタートHaskell 第二章スタートHaskell 第二章
スタートHaskell 第二章
 
Android UIの罠
Android UIの罠Android UIの罠
Android UIの罠
 
Javascript本19章まとめ
Javascript本19章まとめJavascript本19章まとめ
Javascript本19章まとめ
 
Ga nonogram
Ga nonogramGa nonogram
Ga nonogram
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 

Similar to Programming Haskell Chapter 11 切符番号選び

F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
Analyze by StatsModels or Numpy
Analyze by StatsModels or NumpyAnalyze by StatsModels or Numpy
Analyze by StatsModels or NumpyToshiki NOGUCHI
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5Kenta Hattori
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミングOuka Yuka
 
Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理wada, kazumi
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
行列計算アルゴリズム
行列計算アルゴリズム行列計算アルゴリズム
行列計算アルゴリズムTakuo Tachibana
 
ベイズ推論による機械学習入門 第4章
ベイズ推論による機械学習入門 第4章ベイズ推論による機械学習入門 第4章
ベイズ推論による機械学習入門 第4章YosukeAkasaka
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)Satoshi Yamada
 
2013computer s1
2013computer s12013computer s1
2013computer s1munich1502
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京Yohei Sato
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3Kenta Hattori
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
第三回R勉強会
第三回R勉強会第三回R勉強会
第三回R勉強会Paweł Rusin
 
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへNaoki Kitora
 
070 統計的推測 母集団と推定
070 統計的推測 母集団と推定070 統計的推測 母集団と推定
070 統計的推測 母集団と推定t2tarumi
 

Similar to Programming Haskell Chapter 11 切符番号選び (20)

Pythonintro
PythonintroPythonintro
Pythonintro
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
Analyze by StatsModels or Numpy
Analyze by StatsModels or NumpyAnalyze by StatsModels or Numpy
Analyze by StatsModels or Numpy
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
行列計算アルゴリズム
行列計算アルゴリズム行列計算アルゴリズム
行列計算アルゴリズム
 
ベイズ推論による機械学習入門 第4章
ベイズ推論による機械学習入門 第4章ベイズ推論による機械学習入門 第4章
ベイズ推論による機械学習入門 第4章
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
 
2013computer s1
2013computer s12013computer s1
2013computer s1
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
第三回R勉強会
第三回R勉強会第三回R勉強会
第三回R勉強会
 
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
 
070 統計的推測 母集団と推定
070 統計的推測 母集団と推定070 統計的推測 母集団と推定
070 統計的推測 母集団と推定
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (8)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

Programming Haskell Chapter 11 切符番号選び