タグ

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

  • 放射線耐性 Quine (1 文字消しても動く Quine) - まめめも

    ref: https://github.com/mame/radiation-hardened-quine 放射線はメモリエラーを引き起こすらしいです。そんな放射線が飛び交う過酷な環境でも、できることなら Quine したい。 ということで、プログラム内の 1 文字をランダムに消しても元のプログラムを出力する、なんともロバストな Quine を書きました。*1 何を言っているかわからないと思いますが、こんなふうに動くものです。 # ランダムに 1 文字消すスクリプト $ cat mutate.rb src = $<.read src[rand(src.size), 1] = "" print src # rrquine.rb からランダムに 1 文字消したプログラムを生成する $ ruby mutate.rb rrquine.rb > broken.rb # 壊れたプログラムを実行する (

    放射線耐性 Quine (1 文字消しても動く Quine) - まめめも
    TAKESAKO
    TAKESAKO 2014/02/20
    すごいw → まめめも 2014-02-19 ■[Ruby] 放射線耐性 Quine (1 文字消しても動く Quine)
  • 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 リレー - まめめも
    TAKESAKO
    TAKESAKO 2013/07/16
    @mametterさん新作Quineリレー
  • RubyKaigi 2010 終了 - まめめも

    参加してました。 「超絶技巧 Ruby プログラミング」の発表資料と、発表で使ったソースコードを以下に置いておきます。 ref: http://dame.dyndns.org/misc/rubykaigi2010/rubykaigi2010-endoh.ppt ref: http://dame.dyndns.org/misc/rubykaigi2010/rubykaigi2010-endoh.zip 追記: slideshare にもアップロードしました。でも一部崩れてるので、なるべく ppt でご覧ください。 @mrkn さんに「pdf に直してからアップロードすればよい」と教えてもらいました! 超絶技巧 Ruby プログラミング - Esoteric, Obfuscated Ruby ProgrammingView more presentations from mametter. 動

    RubyKaigi 2010 終了 - まめめも
    TAKESAKO
    TAKESAKO 2010/08/31
    #rubykaigi 「超絶技巧 Ruby プログラミング」おおお。ku-ma-meさんに一度お会いしてみたかった!><
  • 山手 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 - まめめも
    TAKESAKO
    TAKESAKO 2009/12/10
    はてなスター☆つけた → 山手 quine - まめめも
  • 「Rubyist Magazine へのたより」の解説 - まめめも

    ref: http://jp.rubyist.net/magazine/?0027-Comments#l12 というのを書いてみました。ruby 1.6.8 、1.8.2 、1.8.7 、1.9.1 、trunk で動作確認しています。 #!/usr/bin/env ruby "cFkEAVkIgFhAQIBZgZx2dp TtM44M6CUpSUlSlKWBKYpSlJSVK UpGEpcZJ0dnTtMlwMlYEF0IDg8IWwSA AQSAW24wHG5bBJWAJJBbSUCESVsGk4eWkFk CX0AAB3OUTM52kGZYlKVFaYlJCUAACUpSkIaUYJ RYdKUQ6cdEBkA8BAEAIiABiABCIEAAI2BZBCKXJTsqc 53rjEPJSlYiqUpEpWQklJkaKpOkilACJ3kXMqcJ 3qTkWGBYB1oB".spl

    「Rubyist Magazine へのたより」の解説 - まめめも
  • quine リレー - まめめも

    Update (2013-07-15): I improved this program to 50-language version. 50 言語版にパワーアップさせました。 これはこのプログラム自身を出力する Unlambda プログラム、を出力する Whitespace プログラム、を出力する brainfuck プログラム、を出力する Java プログラム、を出力する C プログラム、を出力する Haskell プログラム、を出力する OCaml プログラム、を出力する Lua プログラム、を出力する Perl プログラム、を出力する Python プログラム、を出力する Ruby プログラム、です。 # ruby l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t .s

    quine リレー - まめめも
    TAKESAKO
    TAKESAKO 2009/09/17
    >最終的に得られる出力 QuineRelay2.rb は最初の Ruby プログラムと一致するはず。
  • アンダースコアだけで Ruby プログラムを書くライブラリ _ - まめめも

    を作りました。github にアップロード済み。 ref: http://github.com/mame/_/tree/master インストール 自己責任で。 $ gem install mame-_ --source=http://gems.github.com/ サンプル Hello, world! プログラム *1 。 require "_" ____ _ _____ ____ __ ____ ____ __ ___ ____ __ __ _ ______ _____ ___ _ _ ___ _____ ______ ____ _ _ ____ _ _ ____ _ ____ __ __ ___ _ ______ ___ ____ __ ______ ____ _ ____ ____ __ _ ____ _ _ ___ _____ _____ _ ______ ____ _ ___

    アンダースコアだけで Ruby プログラムを書くライブラリ _ - まめめも
  • RubyKaigi 2009 参加記録 - まめめも

    なんだかいろいろありました。以下、個々の感想。敬称略で。 1 日目 Using Git and GitHub to Develop One Million Times Faster (Scott Chacon) 開始ぎりぎりに到着。git の説明はまあいいかなーと思ってマシンの設定やらネットワークの設定やら自分の発表資料の見直しやらしていたら終わってしまっていた。 Ruby の数 (後藤謙太郎) どういう主張なのかよくわからなかった。(覚えてないだけかも) Real ってたまに聞くけど何か知らない (発表でもよくわからなかった) ささださんの Float の VALUE 埋め込みは哲学的にどうなんだろう などが気になったけれど、時間が押してたので遠慮した。 Ruby の標準乱数生成器とその改良案 (村田賢太) 要約すると「Ruby の乱数生成器は生成ステートを出力できないからダメ」という話

    RubyKaigi 2009 参加記録 - まめめも
  • rrencode for 1.9 - まめめも

    rrencode は指定された文字列を出力するプログラムを記号だけで合成するプログラム、ですが、Ruby 1.9 では ?. とかが文字列を返すようになってしまったので動きません。 そこで 1.9 用に別の実装を作ってみました。Hello, world! はこちら。 _=[*' '..?~]*'';$><<_[(___=_=~/@/).+_=~/\(/]+_[(__=_=~/_/).+_=~/&/]+_[ __+@@_=_=~/\-/]+_[__+@@_]+_[(@_=_=~/~/)-@@_=_=~/\//]+", "+_[@_.-_=~/'/ ]+_[@_-@@_]+_[@_.-_=~/,/]+_[__.+_=~/\-/]+_[__.+_=~/%/]+?!+$/$ ./ruby _=[*' '..?~]*'';$><<_[(___=_=~/@/).+_=~/\(/]+_[(__=_=~/

    rrencode for 1.9 - まめめも
  • Grass 処理系 - まめめも

    プログラミング言語 Grass の Ruby 1.9 による処理系です。 # parse A, L = Struct.new(:m, :n), Struct.new(:code) code = File.read(ARGV[0]) code = code.gsub("\uFF37", "W").gsub("\uFF57", "w").gsub("\uFF56", "v") code = code.gsub(/[^wWv]/, "") code = code[/w.*\z/m].split(/v/).map do |sub| sub = sub.scan(/w+|W+/) arity = sub.first[0] == "w" ? sub.shift.size : 0 sub = sub.each_slice(2).map {|n, m| A[n.size - 1, m.size - 1]

    Grass 処理系 - まめめも
  • LL Future に参加した - まめめも

    あいさつできた人もあいさつしそびれた人も、みなさんおつかれさまでした。簡単に感想を。 基調講演 初 Larry Wall 。内容は Perl 6 専用 Language Update って感じ。あの文法拡張性はそりゃあ開発遅れるよなあ。 Larry は「文法の拡張性のアイデアは他の言語も盗むだろう」とか言ってたけど、そう簡単に盗めるもんじゃないし、matz はたぶん盗みたがらないと思った。 LL で未来を発明する 豪華ゲストによるパネルだけど、豪華ゲストが生かし切れてなかった感じが残念。 サイコー!? フレームワーク 正直期待してなかったけど、意外に面白かったセッション。 Seaser2 は Rails の思想は Java でも実現できるぜみたいな説明だったけど、Rails の思想を都合のいい部分しか見てない感じ。まあ僕は Rails 使ったこともないけど。 Rails は eval とか

    LL Future に参加した - まめめも
    TAKESAKO
    TAKESAKO 2008/09/01
    【若さみなぎるハッカーすげーのセッションになってた】
  • coverity やばい - まめめも

    PPL サマースクール 2008が告知されています。内容はおおいわさんのFail-Safe Cと、coverity 社の人による Thread Analyzer for Java とかいうツールの紹介だそうです。 それとは関係ないんですが、coverity 社がやってる Coverity Scan というサービスがあります。coverity 社の製品の Prevent という静的解析ツールのデモみたいなもので、Apache とか OpenSSL とかのオープンソースプロジェクトに対して Prevent で検査した結果を無償提供してくれています (参考) 。ただし脆弱性のヒントになる可能性があるので、各プロジェクトの開発者のみに公開。 ここぞとばかり Ruby のコミッタ権限を活用して Ruby の結果を見せてもらったんですが、これ、かなりすごいです。 鬼車が /x{1,1}/ でメモリリー

    coverity やばい - まめめも
  • 記号だけで brainfuck インタプリタ - まめめも

    Ruby 1.9 の新機能のひとつに「lambda { ... } を -> { ... } と書ける」というのがあります。この表記は反対意見が根強い *1 ですが、確実にすばらしい点があって、全部記号だということです。これによって Ruby が記号だけでチューリング完全になります *2 。 デモとして、brainfuck インタプリタを記号だけで書いてみました。 $___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<< _;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/ )..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?

    記号だけで brainfuck インタプリタ - まめめも
    TAKESAKO
    TAKESAKO 2008/06/27
    【Ruby 1.9 の新機能のひとつに「lambda { ... } を -> { ... } と書ける」というのがあります。】
  • RubyKaigi 2008 参加 - まめめも

    初参加してきました。今更バッジ。 自分の発表 初参加ついでに「テストベースコードリーディングのすすめ」というタイトルで初発表しました。コミッタかつスピーカで参加費無料というありがたい身分だったので、それにこたえるべくそれなりにがんばってみたつもりです。楽しんでいただけていたら幸いです。 id:sshi さんに「真面目なのかネタなのかわからなかった」と言われていますが、自分でもわかりません。こんなことを漠然と考えながらやってたという感じ。ただ「僕は『新人は下積みをするもの』だと思う」だけはネタ。というか嘘です。あと「そんな簡単にテストコード書けるもん?」はどうなんでしょうね。実際にやってみて思ったのは、最初にコードを読むだけ読んで理解したつもりになっても、テストを書いてみると思うとおりにカバーされないことが結構あって、動かしてみると理解できてないことに気づくなぁ、ということ。百見は一実行にし

    TAKESAKO
    TAKESAKO 2008/06/23
    【初参加ついでに「テストベースコードリーディングのすすめ」というタイトルで初発表しました。】
  • RubyKaigi 2008 のライトニングトークスで発表します - まめめも

    http://jp.rubyist.net/RubyKaigi2008/?LT 「Ruby のテストの増強担当」と書いてますが、自称です。所属が理論科学グループとかいう怪しい宗教みたいな名前ですが、大学時代に所属していたコンピュータ系のサークルです。

    RubyKaigi 2008 のライトニングトークスで発表します - まめめも
  • Rubyfuck ライブラリ - まめめも

    Rubyfuck というライブラリを作ってみました。以下の美しい Ruby のプログラムは Hello, world! を出力します。 Rubyfuck.new do |_| _.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_[ _.>_.+_.+_.+_.+_.+_.+_.+_.>_.+_.+_. +_.+_.+_.+_.+_.+_.+_.+_.>_.+_.+_.+_.>_.+_.<_.<_.<_.<_.-_]._.>_.+_.+_. /_.>_.+_./_.+_.+_.+_.+_.+_.+_.+_./_./_.+_.+_.+_./_.>_.+_.+_./_.<_.<_. +_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_./_.>_./_.+_.+_.+_./_.-_. -_.-_.-_.-_.-_./_.-_.-_.-_.-_.-_.

    Rubyfuck ライブラリ - まめめも
  • LL 魂 - まめめも

    Lightweight Language Spirit を覗いて来ました。出不精だったりなんだったりでこの手のイベントは初めてでしたが、面白かったです。 IO の if の実現の仕方に感動しました。 Clean の一意型ってモナドよりずいぶん簡単そうですね。デメリットはないのかな。 Lua や Scala もいじってみたいです。 オレ様言語や VM 魂はもっと深く狭くいった方がよかったかも。パネラー同士が喧嘩するくらいがちょうどいいよね (?) 新機軸なプレゼンは変な学会で実践されまくってるという噂 *1 ですが、実際に見てみるとやっぱり面白いですね。 4 分発表すごいなあ。サイボウズラボすごいなあ。 Coq で brainfuck インタプリタが書けないです (関係ない) 。 イメージファイト!は今回の発表賞だと思いました。 xbyak の Ruby モジュールが欲しいです。 なんかすご

    LL 魂 - まめめも
  • brainspace : brainfuck to whitespace - まめめも

    whitespace のコードはちょっと書きにくいので、brainfuck のソースコードを whitespace に翻訳するプログラムを作った。brainfuck は書けるけど、whitespace はちょっと……という人向け。 http://dame.dyndns.org/misc/brainspace/ brainfuck のコードに whitespace で注釈をつけるプログラム、とも言える。whitespace は読めるけど brainfuck はちょっと……という人にも。 出力が莫大なので、サンプルは続きに。 >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]< .#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------

    brainspace : brainfuck to whitespace - まめめも
    TAKESAKO
    TAKESAKO 2007/06/21
    「brainf*ckにwhitespaceで注釈を付けるアプリ」
  • コードでプレゼン - まめめも

    昨晩は眠かったので、Java への不満を自然言語で語るという男らしくないことをしてしまいました。男は黙ってコードで語れ。ということで「コードでプレゼン」です。 s="1o,%+0s[|JcqM_OF-qdVn'gsbj&lw0)I+[h1rGsG)dMOt{?RzsV'Gj26<m/3[J}3c,*)<)R'?]L@ EEJYUadI8;v2fE=pY$29GE0peF:aF(o~ef8_meJyJeA:4Za|C1kzog}Li5bgMw_`Y]wM5BWuHT8:)yM (oK/XSNCO~_5(T;68|iKpX_{9rCw*{i2o,y_VtFR|1H1NdD^J9T+%&[c2E6]Sub'Va5Q^`OKxjL.vln +yybck|3'oxEFU>ZgXG]~)h(5p.M9%Kv(EvavBc8ktK__sbV;)>3u,Y_xi(7{F[,1/?5XcqipHAB9BV

    コードでプレゼン - まめめも
    TAKESAKO
    TAKESAKO 2007/06/12
    > 男は黙ってコードで語れ。
  • FizzBuzz を swf で Golf - まめめも

    takesako さんという方が FizzBuzz を swf で golf されていた。159 bytes らしい。面白い。 でもまだまだ余裕があるように感じたので 30 分ほどいじったら、150 bytes になった。以下 swf とソース。 http://dame.dyndns.org/misc/fizzbuzz-swf-golf/fizz150.swf http://dame.dyndns.org/misc/fizzbuzz-swf-golf/fizz150.txt やったことは、アルゴリズムの変更 *1 と、試行錯誤による最適化 *2 だけ。確か swf は圧縮が施されている (アルゴリズムとか詳しいことは忘れた) ので、バイトコード自体の数を小さくしてもよい結果になるとは限らないのがポイント、というか苦痛。究極的には圧縮アルゴリズムがどう動くかを考えながらやらないといけないです

    FizzBuzz を swf で Golf - まめめも
    TAKESAKO
    TAKESAKO 2007/06/09
    おお
  • 1