Soumettre la recherche
Mettre en ligne
Quine
•
3 j'aime
•
2,069 vues
京大 マイコンクラブ
Suivre
やさしい Quine の作り方
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 20
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Incanterの紹介
Incanterの紹介
mozk_
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
洋史 東平
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Yasuo Tabei
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
フラクタル音楽 〜可視化と可聴化の世界〜
フラクタル音楽 〜可視化と可聴化の世界〜
Yu(u)ki IWABUCHI
明日機械学習に役立つかもしれない数学
明日機械学習に役立つかもしれない数学
Yu(u)ki IWABUCHI
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold
2018年度秋学期 画像情報処理 第11回 逆投影法による再構成 (2018. 12. 21)
2018年度秋学期 画像情報処理 第11回 逆投影法による再構成 (2018. 12. 21)
Akira Asano
Recommandé
Incanterの紹介
Incanterの紹介
mozk_
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
洋史 東平
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Yasuo Tabei
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
フラクタル音楽 〜可視化と可聴化の世界〜
フラクタル音楽 〜可視化と可聴化の世界〜
Yu(u)ki IWABUCHI
明日機械学習に役立つかもしれない数学
明日機械学習に役立つかもしれない数学
Yu(u)ki IWABUCHI
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold
2018年度秋学期 画像情報処理 第11回 逆投影法による再構成 (2018. 12. 21)
2018年度秋学期 画像情報処理 第11回 逆投影法による再構成 (2018. 12. 21)
Akira Asano
2020年度秋学期 画像情報処理 第11回 Radon変換と投影定理 (2020. 12. 4)
2020年度秋学期 画像情報処理 第11回 Radon変換と投影定理 (2020. 12. 4)
Akira Asano
PRML 2.3.9-2.4.1
PRML 2.3.9-2.4.1
marugari
Robot frontier lesson2
Robot frontier lesson2
Ryuichi Ueda
2020年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2020. 11. 27)
2020年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2020. 11. 27)
Akira Asano
2018年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2018. 12. 14)
2018年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2018. 12. 14)
Akira Asano
最初はExcelでいけると思ってたけど途中からしんどくなってきたデータのためのPython Pandas (複数インデックス編)
最初はExcelでいけると思ってたけど途中からしんどくなってきたデータのためのPython Pandas (複数インデックス編)
Study Group by SciencePark Corp.
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
Lt8 JavaScriptで配列をコピーする
Lt8 JavaScriptで配列をコピーする
Shingo Inoue
kagamicomput201806
kagamicomput201806
swkagami
Robot frontier lesson1
Robot frontier lesson1
Ryuichi Ueda
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
洋史 東平
CuPyでAx=bを解きたかった話
CuPyでAx=bを解きたかった話
kiyoshiiriemon
2019年度秋学期 画像情報処理 第12回 逆投影法による再構成 (2019. 12. 20)
2019年度秋学期 画像情報処理 第12回 逆投影法による再構成 (2019. 12. 20)
Akira Asano
Robot frontier lesson3
Robot frontier lesson3
Ryuichi Ueda
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Nagi Teramo
中級正規表現
中級正規表現
京大 マイコンクラブ
2019年度秋学期 画像情報処理 第11回 radon変換と投影定理 (2019. 12. 13)
2019年度秋学期 画像情報処理 第11回 radon変換と投影定理 (2019. 12. 13)
Akira Asano
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
京大 マイコンクラブ
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
京大 マイコンクラブ
Common Lisp入門
Common Lisp入門
京大 マイコンクラブ
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
Contenu connexe
Tendances
2020年度秋学期 画像情報処理 第11回 Radon変換と投影定理 (2020. 12. 4)
2020年度秋学期 画像情報処理 第11回 Radon変換と投影定理 (2020. 12. 4)
Akira Asano
PRML 2.3.9-2.4.1
PRML 2.3.9-2.4.1
marugari
Robot frontier lesson2
Robot frontier lesson2
Ryuichi Ueda
2020年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2020. 11. 27)
2020年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2020. 11. 27)
Akira Asano
2018年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2018. 12. 14)
2018年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2018. 12. 14)
Akira Asano
最初はExcelでいけると思ってたけど途中からしんどくなってきたデータのためのPython Pandas (複数インデックス編)
最初はExcelでいけると思ってたけど途中からしんどくなってきたデータのためのPython Pandas (複数インデックス編)
Study Group by SciencePark Corp.
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
Lt8 JavaScriptで配列をコピーする
Lt8 JavaScriptで配列をコピーする
Shingo Inoue
kagamicomput201806
kagamicomput201806
swkagami
Robot frontier lesson1
Robot frontier lesson1
Ryuichi Ueda
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
洋史 東平
CuPyでAx=bを解きたかった話
CuPyでAx=bを解きたかった話
kiyoshiiriemon
2019年度秋学期 画像情報処理 第12回 逆投影法による再構成 (2019. 12. 20)
2019年度秋学期 画像情報処理 第12回 逆投影法による再構成 (2019. 12. 20)
Akira Asano
Robot frontier lesson3
Robot frontier lesson3
Ryuichi Ueda
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Nagi Teramo
中級正規表現
中級正規表現
京大 マイコンクラブ
2019年度秋学期 画像情報処理 第11回 radon変換と投影定理 (2019. 12. 13)
2019年度秋学期 画像情報処理 第11回 radon変換と投影定理 (2019. 12. 13)
Akira Asano
Tendances
(17)
2020年度秋学期 画像情報処理 第11回 Radon変換と投影定理 (2020. 12. 4)
2020年度秋学期 画像情報処理 第11回 Radon変換と投影定理 (2020. 12. 4)
PRML 2.3.9-2.4.1
PRML 2.3.9-2.4.1
Robot frontier lesson2
Robot frontier lesson2
2020年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2020. 11. 27)
2020年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2020. 11. 27)
2018年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2018. 12. 14)
2018年度秋学期 画像情報処理 第10回 Radon変換と投影定理 (2018. 12. 14)
最初はExcelでいけると思ってたけど途中からしんどくなってきたデータのためのPython Pandas (複数インデックス編)
最初はExcelでいけると思ってたけど途中からしんどくなってきたデータのためのPython Pandas (複数インデックス編)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Lt8 JavaScriptで配列をコピーする
Lt8 JavaScriptで配列をコピーする
kagamicomput201806
kagamicomput201806
Robot frontier lesson1
Robot frontier lesson1
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
CuPyでAx=bを解きたかった話
CuPyでAx=bを解きたかった話
2019年度秋学期 画像情報処理 第12回 逆投影法による再構成 (2019. 12. 20)
2019年度秋学期 画像情報処理 第12回 逆投影法による再構成 (2019. 12. 20)
Robot frontier lesson3
Robot frontier lesson3
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
中級正規表現
中級正規表現
2019年度秋学期 画像情報処理 第11回 radon変換と投影定理 (2019. 12. 13)
2019年度秋学期 画像情報処理 第11回 radon変換と投影定理 (2019. 12. 13)
Plus de 京大 マイコンクラブ
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
京大 マイコンクラブ
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
京大 マイコンクラブ
Common Lisp入門
Common Lisp入門
京大 マイコンクラブ
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
Geometry with Unity
Geometry with Unity
京大 マイコンクラブ
セミコロンレスc++
セミコロンレスc++
京大 マイコンクラブ
エンジニアと健康
エンジニアと健康
京大 マイコンクラブ
女の子になれなかった人のために
女の子になれなかった人のために
京大 マイコンクラブ
Pietで競プロしよう
Pietで競プロしよう
京大 マイコンクラブ
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
京大 マイコンクラブ
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
京大 マイコンクラブ
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
京大 マイコンクラブ
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
Altseed
Altseed
京大 マイコンクラブ
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
Plus de 京大 マイコンクラブ
(20)
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
Common Lisp入門
Common Lisp入門
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
Geometry with Unity
Geometry with Unity
セミコロンレスc++
セミコロンレスc++
エンジニアと健康
エンジニアと健康
女の子になれなかった人のために
女の子になれなかった人のために
Pietで競プロしよう
Pietで競プロしよう
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
Altseed
Altseed
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
Quine
1.
Quine 大林一平 KMC/Dept. Math., Kyoto
U./JST CREST April 17th,2014 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 1 / 20
2.
自己紹介 大林一平 (ohai) 理学研究科数学教室 特定研究員 力学系 最近は歩行の数理モデルの相空間のグローバルな力学系 構造の解析 Ruby るりま (http://doc.ruby-lang.org) Ruby/SDL 大林一平
(KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 2 / 20
3.
Quine 実行した出力結果が自分自身と一致するプログラム ruby q.rb |
diff - q.rb ruby q.rb | ruby - | ruby - | diff - q.rb プログラマのプログラムによるエンターテイメント 実用的な意味はない 理論的には興味深い側面を持つ プログラムの持つ「情報の量」とは何だろう? といっ た問題に関係している 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 3 / 20
4.
例 x="x=%c%s%c; puts(sprintf(x,34,x,34))"; puts(sprintf(x,34,x,34)) 見やすさのために改行してあるけど 1
行です 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 4 / 20
5.
メッセージ Quine の魔術を解明する Quine は怖くない だれでも作れる
Quine 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 5 / 20
6.
作ってみよう puts "puts ???" ???
の所にこの文字列を置きたい このままだと無理 再帰的 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 6 / 20
7.
x="puts x"; puts
x 再帰させるためには名前を付けるとわかりやすい 変数に代入しておこう 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 7 / 20
8.
x="x=???; puts x";
puts x x= の部分がないので追加 ??? の部分がやはり文字列自身でないとだめ 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 8 / 20
9.
x="x=%s; puts x";
puts x ???の所を%s にしてみる sprintf を使おう 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 9 / 20
10.
x="x=%s; puts(sprintf(x,??))"; puts(sprintf(x,??)) sprintf にしてみた 文字列の対応するところも変更 ??には何を置くのだ 大林一平
(KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 10 / 20
11.
x="x=%s; puts(sprintf(x,x))"; puts(sprintf(x,x)) %s には文字列を埋めこみたかったのだ つまり
?? には x を置く 完璧! 動かしてみよう (q1.rb) 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 11 / 20
12.
x="x="%s"; puts(sprintf(x,x))"; puts(sprintf(x,x)) 文字列のダブルクオート (")
が足りない そこで文字列に追加 今度こそ 動かしてみよう (q2.rb) 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 12 / 20
13.
x="x="%s"; puts(sprintf(x,x))"; puts(sprintf(x,x)) 今度はバックスラッシュが足りない () じゃあバックスラッシュを追加… してもだめ バックスラッシュ使うのはだめだ 問題は文字列の中に
(") があること 何か別の表現が必要だ 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 13 / 20
14.
x="x=%s%s%s; puts(sprintf(x,??,x??))"; puts(sprintf(x,??,x,??)) %s で置きかえ! sprintf
でなんとかしよう ?? には何を置けばよい """ という文字列 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 14 / 20
15.
x="x=%s%s%s; puts(sprintf(x,""",x,""") puts(sprintf(x,""",x,""")) 置き換えた 文字列の中も置き換える必要あり さっきと同じ つまり""" という文字を使わずに"""
という文字 列を表現する方法はないか? 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 15 / 20
16.
x="x=%c%s%c; puts(sprintf(x,34,x,34))"; puts(sprintf(x,34,x,34)) 34 と
%c を使う ASCII 今度こそ完成 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 16 / 20
17.
まとめ Quine を作るこつ 変数 x
が指す文字列にその文字列を埋め込む x=”x=%s; ...”; sprintf(x,x) あとは言語仕様をごまかすための多少の工夫 誰でも Quine は作れます Quine は怖くない mame さんという super quine artist の作品がおす すめ 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 17 / 20
18.
応用例1 2.times{ x="2.times{ x=%c%s%c; puts(sprintf(x,34,x,34))
} puts(sprintf(x,34,x,34)) } 細胞分裂 Quine 実行するたびに倍になります 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 18 / 20
19.
応用例2 X y="puts(%c%s%c)"; x="y=%c%s%c; x=%c%s%c; puts(sprintf(sprintf(y,39,x,39), 34,y,34,34,x,34))"; puts(sprintf(sprintf(y,39,x,39), 34,y,34,34,x,34)) 大林一平
(KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 19 / 20
20.
Y puts('y="puts(%c%s%c)"; x="y=%c%s%c; x=%c%s%c; puts(sprintf(sprintf(y,39,x,39), 34,y,34,34,x,34))"; puts(sprintf(sprintf(y,39,x,39), 34,y,34,34,x,34))') X ->
Y -> X 大林一平 (KMC/Dept. Math., Kyoto U./JST CREST) Quine April 17th,2014 20 / 20
Télécharger maintenant