タグ

ブックマーク / mametter.hatenablog.com (13)

  • アニメ「Sonny Boy」の『難解』プログラムの解説 - まめめも

    『Sonny Boy』というアニメが放送されています。学校が異次元に漂流してしまい、超能力に目覚めた生徒たちがサバイバルしながら、さまざまな奇妙な現象の裏にあるルールを解き明かし、元の世界に変える方法を探す、というストーリーです。ルールが分かったあとで何度も見直したくなります。 anime.shochiku.co.jp さて今回、『Sonny Boy』に、プログラムを寄稿しました。プログラムでおもしろいCGを作ったとかではなく、プログラムの実行の様子そのものが『Sonny Boy』の5話の中で放送されました。 こういうプログラムです。 nankai.rb このプログラムがどういうものだったかを解説します。 どんなプログラム? 実行すると、「難解」という文字がほどけてなくなるアニメーションをします。 起動したらまず、プログラム自身が画面に表示されます。 しばらくしたら「難解」が左から右へほど

    アニメ「Sonny Boy」の『難解』プログラムの解説 - まめめも
  • どうぶつしょうぎ名人 - まめめも

    どうぶつしょうぎ AI を作りました。絶対に勝てません。無力感を味わってください。 ref: http://mame.github.io/dobutsu-shogi-master どうぶつしょうぎとは 3 マス x 4 マスの単純化された将棋です。ライオン(王相当)、ぞう(1 マスしか進めない角行)、キリン(1 マスしか進めない飛車)、ひよこ(歩相当、にわとりに成ったら金相当)の 4 種類の駒を動かして、相手のライオンを取るか、トライ(ライオンを一番奥の行まで運ぶ、ただし直後に取られる場合はだめ)に成功すれば勝ちです。詳しくは Wikipedia の記事を見てください。 どうぶつしょうぎは後手必勝であることが知られています(研究報告)。つまり、後手が正しくプレイする限り、先手は絶対に勝てません。どうぶつしょうぎ名人は常に正しくプレイするので、先手のあなたは絶対に勝てません。 なんで作ったの

    どうぶつしょうぎ名人 - まめめも
    tanakaBox
    tanakaBox 2017/02/12
  • あけましておめでとうございます 2015 - まめめも

    あけましておめでとうございます。日のプログラマには古来より「正月はフラクタル」という習わしがあります。正月はフラクタルに触れて心穏やかに過ごそうというものです。 今年は L-system で遊んでみました。以下でススキっぽいのが描けます。 $ ruby 2015-fractal.rb 7 20 X X:A-[[X]+X]+A[+AX]-X A:AA出力には Sixel を使ってみました。mltermで動作確認。 コッホ曲線。 $ ruby 2015-fractal.rb 4 90 A A:A+A-A-A+Aドラゴン曲線。 $ ruby 2015-fractal.rb 16 90 AX X:X+YA+ Y:-AX-YC 曲線。 $ ruby 2015-fractal.rb 13 45 A A:+A--A+ヒルベルト曲線。 $ ruby 2015-fractal.rb 6 90 X X:-Y

    あけましておめでとうございます 2015 - まめめも
  • Ruby で内包表記 - まめめも

    Ruby 会議 2007 - Log0610-S5 RubyKaigi でみんな感動したと噂の Dave Thomas さんの講演のログ。やっぱり内容自体はどうでもよくて、ここが気になりました。 たとえば list comprehension がほしい。 Haskell の内包表記 (内包表現) とか確かにかっこいいけれど、Ruby の文法に Haskell の内包表記の文法を入れるのは明らかに無理だし、Python みたいな文法 ([x**2 for x in range(10)] みたいなの) は勘弁して欲しいですよね。それに、今の Ruby でも (ネタの範疇なら) 似たようなことができそう。そこで、以下のようなコードが動くようなものを作ってみました。 # [ x^2 | x <- [0..10] ] みたいなもの p list{ x ** 2 }.where{ x.in(0.

    Ruby で内包表記 - まめめも
  • 2014-01-04

    C 言語のプログラムの汚さで競い合うプログラミングコンテスト、The 22nd International Obfuscated C Code Contest の今年の結果が公開されました。 http://www.ioccc.org/years.html#2013 相変わらずの変態ぞろいですのでぜひご覧ください。既報の通り、ぼくは以下の 4 つの賞を貰いました。 Most lazy SKIer Most recyclable Most tweetable 1-liner Most solid それぞれ順次紹介していきたいと思います。 ref: http://ioccc.org/2013/endoh1.c #ifndef SKI #define A(x)B(x##0)B(x##1)B(x##2)B(x##3)B(x##4)B(x##5) #define B(x)C(x##0)C(x##1)C

    2014-01-04
    tanakaBox
    tanakaBox 2014/01/11
    クッソワラた
  • Quine リレー - まめめも

    ref: https://github.com/mame/quine-relay/ 以下は、自分自身を出力する REXX プログラムを出力する Python プログラムを出力する R プログラムを出力する (...略...) を出力する Scala プログラムを出力する Ruby プログラムです。合計 50 言語を使います。 eval$s=%q(eval(%w(B=92.chr;N=10.chr;n=0;e=->(s){s.gsub(/[#{B+B+N}"]/){B+(N==$&??n:$&)}};E=->(s){'("'+e[s]+'")'} ;d=->(s,t=?"){s.gsub(t){t+t}};D=->(s,t=?@){s.gsub(B){t}};Q=->(s,t=?$){s.gsub(t){B+$&}};puts(eval(%q("objectXQRX extendsXApp{

    Quine リレー - まめめも
    tanakaBox
    tanakaBox 2013/07/17
    凄すぎ
  • TAPL の訳本「型システム入門 -プログラミング言語と型の理論-」が発売されます - まめめも

    プログラミング言語の「型」の定番書と言われる Types and Programming Languages (通称 TAPL) の翻訳が、ついに 3 月 26 日に発売されます。 型システム入門 −プログラミング言語と型の理論−posted with amazlet at 13.03.01Benjamin C. Pierce オーム社 売り上げランキング: 598 Amazon.co.jpで詳細を見る (↑アフィリエイトなのでクリックするなよ!) (個人的に) 読んで欲しい人たちへ 「型」の教科書ということで、わりと Ruby の対極にあるような内容ですが、Ruby ユーザ (動的型付き言語しか知らない人) にこそ読んで欲しいと思ってます。 PHP しか知らない人が PHP の良さを語るのが滑稽なように *1 、型がないことのメリット・デメリットを語るには、気で型がある言語の考え方を

    TAPL の訳本「型システム入門 -プログラミング言語と型の理論-」が発売されます - まめめも
    tanakaBox
    tanakaBox 2013/03/03
    期待。
  • Lightweight Language AHP : おすすめ軽量言語診断 - まめめも

    http://dame.dyndns.org/misc/llahp/ 30 問の質問に答えると、PerlPythonRubyPHP の中からあなたの価値観に合った言語を教えてくれる AHP です。各言語を以下の 4 つの評価基準で評価してください。 実行速度 コードを高速に実行できる。 開発環境 ライブラリ、ドキュメント、IDE などが充実している。 記述性 短く簡潔に、メンテナンス性の高いコードが書ける。 変態性*1 遊び心や信念がある (Acme::* 、TOOWTDI 、DRY 、callcc など) 。 AHP の詳細は前のセクションを見てください。「評価基準が作為的」とか言われそうですが、いいのを思いつかなかっただけなので許してください。「書きやすさと読みやすさがあるから記述性などとひとくくりにはできない」とかも言われそうですが、気合いでひとくくりにしてください。 ち

    Lightweight Language AHP : おすすめ軽量言語診断 - まめめも
    tanakaBox
    tanakaBox 2013/01/28
    落ちてたので、こちらをブクマ。
  • brainfuck-dialect quine generator - まめめも

    それでも @mametter ならっ・・・! RT @bonotake: quineの作りがいがありそうな…作んないけど RT @masahiro_sakai: ジョジョ言語わろた http://bit.ly/d0RUUR http://twitter.com/masahiro_sakai/status/9091442089 brainfuck の命令文字を置換しただけの俺言語は結構ある *1 ので、いちいち quine を作るのは面白くありません。そこで、命令文字の割り当てから、その言語での quine を自動生成するソリューションを開発しました。 brainfuck の quine の生成。 $ ruby19 bfd-quine-gen.rb bf > quine.bf $ beef quine.bf > quine2.bf $ diff quine.bf quine2.bfたぶん一番

    brainfuck-dialect quine generator - まめめも
  • Ruby とすてきな難読化 - まめめも

    (これは Ruby Advent Calendar jp: 2009 の 16 日目の記事です。) Ruby は読みやすいプログラムを簡単に書ける言語ですが、読みにくいプログラムも簡単に書けます。 今回は、Ruby でできるかんたんな難読化のテクニックを 4 つ紹介します。 1. Integer#to_s を使う方法 Integer#to_s *1 は、何進数として文字列化するかを引数で指定できます。普通は 2 、10 、16 くらいしか使わないと思いますが、実は 36 まで指定できます。 0.to_s(36) #=> "0" 1.to_s(36) #=> "1" ... 8.to_s(36) #=> "8" 9.to_s(36) #=> "9" 10.to_s(36) #=> "a" 11.to_s(36) #=> "b" ... 34.to_s(36) #=> "y" 35.to_s(

    Ruby とすてきな難読化 - まめめも
    tanakaBox
    tanakaBox 2009/12/21
    ほほう。
  • 山手 quine - まめめも

    t="+,m-n./mAm0o1p23a4q56r7sBt89u-t-1:v;A<w4x=y1z>[?]A^@CD_ CD_EsF`GHmIJbKa*l";eval$s=%w{F=%q{ceY8#<DvO1=x&t9CSOqMYkzH U.kCpz+Vo8hB.1AF&tq21+$/IrMY]U.aDd!-1y!4MMGQm6m?bYh($QMYpX s4g,x1UlbNKH?>NzbisMn?sT@m3,F.Abb`xW!r%'%Ybee>xkUfjf[(*^Nd Xo_"@hQh%Fx*q[iB7EM"suSG8GVOIzceg/O=4CL,d[-k]twgVP`&wcfaT` 2M)j8sFY?(HKzOrVCHO_694[Uq8g @i/i;tMBG#;-;B]rV[])`3'<os^. OV(SA<=ok%m[iV#qt[&dJ7SIdB;/ VUnVIrH;hEJ*QWD"E+

    山手 quine - まめめも
    tanakaBox
    tanakaBox 2009/12/04
    す・すげぇ
  • SAT ソルバで数独を解く方法 - まめめも

    数独は非常に SAT に変換しやすい問題です。全部参考文献 *1 に載っている内容ですが、なるべくわかりやすく説明してみます。ちょっと長いです。 SAT とは まず SAT をごく簡単に説明します。すでに SAT を知っている人はここは読み飛ばしてください。 命題論理式の形の一つに乗法標準形のというのがあります。変数か変数の否定 (リテラルと言います) を or だけでつないだ式 (節と言います) を and だけでつないだ論理式のことを言います。つまり以下みたいな形です。 ( a1 or !a2 or ... or an) and ( b1 or !b2 or ... or !bn) and ... and (!z1 or z2 or ... or !zn)SAT は「a1 や zn などの変数にうまく true か false を代入して、上の式全体を true にできるか」という問題

    SAT ソルバで数独を解く方法 - まめめも
    tanakaBox
    tanakaBox 2008/01/23
    未読。エイトクイーンとおんなじような感じ?
  • なぜλ計算はλ計算と呼ばれているのか - まめめも

    π計算のπは、λ計算のλからギリシャ文字順に選んだそうです *1 。僕も "process" の p だと思ってました。では、λ計算はなぜλなのか。λはアルファベットの l の祖先ですが、"function" には l は現れません。これは学生時代に調べたことがあって、答えは表記の変遷の中にありました (?) 以下 [1] によります。まず、パラドックスで有名なバートランド・ラッセルは、x を受け取って 2x+1 を返す関数を次のように書いていました。 つまり仮引数の上にハットを置く。これにちなんで、λ計算の生みの親であるアロンゾ・チャーチは次のように書きました。 しかしチャーチの文章を出版するとき、当時の印刷技術ではハット付きの文字が印刷できなかった (!) ので、 ^x.2x+1と写植屋さんが書き換えてしまいました。さらに、これをみた別の写植屋さんが ^ をλと勘違いしてしまった (!

    なぜλ計算はλ計算と呼ばれているのか - まめめも
    tanakaBox
    tanakaBox 2007/11/20
    λの由来。面白かった。
  • 1