タグ

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

  • 放射線耐性 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) - まめめも
    yshl
    yshl 2014/02/22
  • 漫画家「師匠→アシスタント」グラフ - まめめも

    をつくってみました。こちら。 ref: http://dame.dyndns.org/misc/comic-artist-relation/ 漫画家から、その漫画家のアシスタント経験がある漫画家へ矢印が引いてあります。 wikipedia の Category:日漫画家の記事をたどって、「師匠」とか「アシスタント」とかのセクションのリンクを機械抽出してます。誤認識などのミスは結構あると思いますので、おかしいなと思ったらコメントください。*1 Chrome でないととても遅いです。Chrome でひと通り作ってから Firefox で試したら重すぎてびっくりした。 フォロワーの集合 *2 が最大だったのは、手塚治虫、ではなく宮ひろ志でした。宮ひろ志からたどれる人は 75 人、石ノ森章太郎は 50 人、手塚治虫は 3 位の 41 人。ちょっと意外ですね。wikipedia の情報が不足

    yshl
    yshl 2011/05/06
  • Quine ruBy - まめめも

    略して QB 。 eval s||= %q(1;t= %w(s.gs ub!(/\e.* ?m/,"");[ [ 0x26e885c a844a879e27 a,519,48, 5 , 9],[20182686,600,48,5,1],[4366,611,48 , 5 ,15],[432803624050570,533,0]].map { | r,m,*d|s[m+=r%74,0],r="\e[#{d*";"}m", r /74while(r>0)};puts((z=32.chr)*5+"eval#{z *39}s||=\n#{z*5}%q(#{(1+n=s.to_i)%3}#{s[1 ..- 1]})\n\n"+z*9*n+"5YOV44GvUnVieWlzdO OBq +OB quOBo+OBpuOBj+OCjOOBo+OBpuOAgeOBjeOBo eOC k+OB qOOBi um

    Quine ruBy - まめめも
  • Merry Quine-mas 2010 - まめめも

    今夜は、年に一度の W. V. Quine の命日イブです。 %;';;X= %q(x=1; z="%c"% 32;eval %w(w=N= Merry =128;r= z*79+$/; ;p=open" / dev/dsp ","w"rescue$_;/ / ;eval"s rand(%s)"%$*[ d=0];a=[];s=(r+z+% (%;';;X=#{z* 3}%q(#{X});e val(X)) +r*=23).l ines.map{|l|l.chop+ r};t=proc{|y|s [y][x-1,w].sca n(/\S /){s[y+1][m=x -1+$` .size ,1]== z&&a< <[$&,m, y,s[y ][m]=$/]};y};t[ 23];f =(0.. 1071) .map{|i|c,x,y =a.shuffle!. pop;s [y][x]=z

    Merry Quine-mas 2010 - まめめも
  • The Qlobe - まめめも

    RubyConf に参加するためには、やっぱり 山手 quine みたいに東京限定ネタは通じにくいですよね。これからは Quine もグローバルでないといけないと感じました。 でも世界的に有名な環状線とか知らないので、世界的に有名な回るものを書いてみました。 v=0000;eval$s=%q~d=%!^Lcf<LK8, _@7gj*LJ=c5nM)Tp1g0%Xv.,S[<>YoP 4ZojjV)O>qIH1/n[|2yE[>:ieC "%.#% :::##" 97N-A&Kj_K_><wS5rtWk@*a+Y5 yH?b[F^e7C/56j|pmRe+:)B "##% ::##########" O98(Zh)'Iof*nm.,$C5Nyt= PPu01Avw^<IiQ=5$'D-y? "##: ###############" g6`YT+qLw9k^ch|K'),tc 6ygIL8x

    The Qlobe - まめめも
  • 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 終了 - まめめも
  • 任意の Ruby プログラムをアルファベットだけにするプログラム - まめめも

    数字もまぁなんか消せると思う。 任意の Ruby プログラムをアルファベットと数字だけにするプログラム とサラッと言われているのだけれど、思いつくのにかなり苦労しました。なんとか 2 つの方法を見つけた。 出題から 1 年半以上経っているので、以下にぼくの回答を書きます。みたくない人は見ないでください。 ポイントは、任意の文字列を構成する各 ASCII コードをどうやってアルファベットだけで作るか、というところです。 Hello, world class String def inspect concat begin dup ensure replace String nil concat concat concat concat size concat concat size concat concat size concat size concat begin size ensure

    任意の Ruby プログラムをアルファベットだけにするプログラム - まめめも
  • kernel-mode quine - まめめも

    そういえば C で quine 書いた覚えがないなー、あと Linux のカーネルモジュール書いてみたいなー、と思ったので、練習として Linux のカーネルモジュールで quine を書いてみました。 ref: http://github.com/mame/kernel-mode-quine ビルド方法。まず、環境にあわせて Makefile の KDIR をいじってください。Ubuntu ならいじらなくてもいけるかも。Debian だと linux-headers とか入れればこのままで行けるかも。とにかく make が通れば OK 。 $ vi Makefile $ makeinsmod でカーネルにロードする。素人が書いたカーネルモジュールなので、何が起きても知りません。 $ sudo insmod ./quine.ko/proc/quine ができてるはず。 $ ls /proc

    kernel-mode quine - まめめも
  • ModanShogi quine - まめめも

    この記事は Quine Advent Calender 2014 の 103 日目になりました。ref: http://gihyo.jp/dev/column/01/prog/2010/aprilfool2010-01 ref: http://route477.net/d/?date=20100402#p01 で紹介されている yhara さん作の言語で quine を書きました。 以下のように走らせます。生成も実行も Ruby 1.9 でないと動きません。Strict モード対応は、後進のためにとっときます。 $ ruby19 quine.shogimodan.gen.rb > quine.shogimodan $ ruby19 bin/shogimodan quine.shogimodan > quine2.shogimodan $ diff -q quine.shogimodan q

    ModanShogi quine - まめめも
  • 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 - まめめも
  • doublehelix: 二重らせん Ruby プログラミングライブラリ - まめめも

    ref: http://github.com/mame/doublehelix/ Hello, world! プログラム。 require "doublehelix" AT A--T T---A G----C G----C G----C T---A G--C AT GC T--A G---C T----A A----T T----A G---C C--G AT CG A--T A---T C----G A----T G----C G---C G--C CG GC A--T T---A C----G G----C A----T T---A C--G GC TA T--A C---G G----C A----T T----A C---G A--T AT AT C--G A---T T----A G----C T----A G---C T--A TA CG G--C C---G A----T T

    doublehelix: 二重らせん Ruby プログラミングライブラリ - まめめも
  • 今日は Quine の命日です - まめめも

    間違った発音をしている人が結構いるみたいですが、quine の読みは「クワイン」です。かくいうぼくも、さかいさんに教えてもらうまで「クエイン」とか読んでました。 quine は自分自身を出力するプログラムの呼称ですが、これは Willard van Orman Quine という哲学者の名前に由来しています。彼の主要な業績は「経験主義の 2 つのドグマ」だそうです。全く意味がわかりません。わかる範囲では 自己言及について研究した "Yields falsehood when preceded by its quotation" yields falsehood when preceded by its quotation という命題のパラドックスを提案した 回路設計とかでたまに聞く QM 法を提案した (Q の人) くらいでしょうか。 Willard Van Orman Quine の息子

    今日は Quine の命日です - まめめも
    yshl
    yshl 2009/12/26
  • Merry Quine-mas - まめめも

    open("/dev/dsp","wb"){|h|s=%q{d=["-KQW[UZbgu*HNT+]TNOOOTZ+cZTUUUUUZbagmssUZbagm ss+wmpgja+KQW[dfnu","-KEKOINV[W*HBH+QHBCCCHN+WNHIIIIINVU[aUUINVU[aUU+YOR[^I+KEK OXZbW","-W[acg vsc*TZ`+eaaaaa--vucavuca+eadsvs+W[dgvrtc","-K991LIL77777dIIIII-- LKKILKKI+Mad[ ^U+K991LHJK"].map{|l|l.unpack("C*").map{|c|[(c/6-4)*12/7-8,"012 35b"[c%6,1]. hex]}*4};y=32.chr;l="@"+[(m="Jnx4sn3sgd1")+"vnqkc!6sgd2Lnqc4gz r4bnld

    Merry Quine-mas - まめめも
  • 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 とすてきな難読化 - まめめも
  • 山手 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 - まめめも
    yshl
    yshl 2009/12/06
  • qif 画像 - まめめも

    こぴぺ用。 Y,E=%q~260|0!e0*h0($0j0($"!e0($"f0e0($0!e0*p;4f4#.q9!&8*%"1( }+0!,e4|8,e<.%}e6#g4*};!(4*%})2!e09$"u91&(#6}f0(%+#u0)6"1(7, v0.,*%"<8{9!(4+2}!(4*%90}<.'#<(}$"!e0($")n48$6!(0($".!e0($"$ e0w0($")k0r4*%"<8$"!9!&8*%"<0|0($"#&0()0i;f=87$};!(4+6"!e0j; f0(',}91(4+3e0($j;!.8)2}}}}}}},4"!e0($"!2i2!i0)e0e0(#$0($"!e 0(,0}}o0(%2"1(4~,%~y;0('&!e=8}}q9!($"!"<0}}}}}}y0g4f0+2}441$ !}g;0&<}h2$11!{0!q0}h0m0|20!

    yshl
    yshl 2009/11/22
  • The self-description set (自己記述集合) - まめめも

    THIS IS "THE SELF-DESCRIPTION SET " WHERE: = 731024063570851866511465264858993450227206304418681785374039 = 1431487833696853176700157431078133300807345625216694848607 270563208155416337169196351358980580604619006940957434879772 028845592243617643316119085595555875582798798158387973177961 695587578188817228313270884309874099454731913241985765682402 48022473309669651780595847504292806610094920992439

    yshl
    yshl 2009/11/07
  • bf2piet: brainfuck から Piet への変換 - まめめも

    esoteric language 好きなら一度は見たことのあるはずの画像プログラミング言語 Piet をまじめに勉強してみました。 どんな言語か簡単に説明すると、 画像がプログラムになる スタックを 1 個持つ (スタックマシン) befunge みたいに左上から右方向に実行が進む 色相と明度の差が命令を意味し、スタックに対する push/pop/加減乗除余や、進行方向の変更などを行う 黒は進行方向を変える壁、白は nop という感じで、サンプルコードを見てもなかなか意味不明でいい感じの言語です。 Piet の仕様についてはそのうち翻訳とかしたいけど、とりあえずは手始めに、Piet がチューリング完全であることを証明するべく、brainfuck から Piet への変換を作ってみました。 brainfuck の echo プログラム ,[.,] を変換して出来た Piet のプログラムは

  • Quine on chessboard - まめめも

    8 x 8 の市松模様な Quine 。1 マスは 2 文字で。 s= %( s= %( ); s[ 8] =s $> << s[ 0, 17 << 3] #C Y. En do h! ); s[ 8] =s $> << s[ 0, 17 << 3] #C これができる言語はあまりないんじゃないかな。Ruby と、Perl *1 と、一部の esoteric language くらい? HQ9+ なら超簡単。 Q+ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ *1:試してないけど、Perl ならできるに違いない

    Quine on chessboard - まめめも
    yshl
    yshl 2009/09/23
  • 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 リレー - まめめも