タグ

ブックマーク / shinh.hatenablog.com (51)

  • ppencode 2 - 任意の Perl コードを予約語だけの Perl コードに変換する - 兼雑記

    @TAKESAKO さんが ppencode を作ってから 10 年経って、私が任意の Perl コードを小文字だけに変換するスクリプトを書いてからでも5年経つらしいですが、なんか任意の Perl コードを予約語だけの Perl コードに変換するスクリプトができました。 http://shinh.skr.jp/obf/ppencode.html オリジナルの ppencode に敬意を表していろいろ雰囲気を似せておきました。割と色んな予約語が使われるようにしてみたりとか。 これは Perl が予約語だけあれば Turing complete ということなので、副産物として Quine もできました。 http://golf.shinh.org/reveal.rb?Quine/shinh+%28keywords%29_1431106882&pl なんというか、 ppencode があれば後は

    ppencode 2 - 任意の Perl コードを予約語だけの Perl コードに変換する - 兼雑記
    TAKESAKO
    TAKESAKO 2015/05/09
    shinhさんの新作がヤバすぎる件…(10年間のPerl界の未解決問題が一気に解決、マジ凄い) → ppencode 2 - 任意の Perl コードを予約語だけの Perl コードに変換する
  • 2012-08-27 downcase_quine.rb - 兼雑記

    小文字英語(と空白)だけで書かれた、 ruby 1.8 で動く Quine (ただし 32bit 環境限定) 。久しぶりにおおーという感じのコードになりました。 http://golf.shinh.org/reveal.rb?Quine/shinh+%28downcase%2C+mame%29_1346029732&rb 追記: 32bit 環境限定じゃなくて短くなったバージョンも作りました。 http://shinh.skr.jp/dat_dir/downcase_quine.rb このコードを作るのに考えたことなどを書いてみます。 id:ku-ma-me さんの方法 きっかけは id:ku-ma-me さんのこのスライドの話を聞いたことからでした。 http://www.slideshare.net/mametter/ruby-2012 ruby 1.9 で小文字英語だけでプログラムを

    2012-08-27 downcase_quine.rb - 兼雑記
    TAKESAKO
    TAKESAKO 2012/08/28
    @shinh さんによる #spro12 後日談:小文字英語(と空白)だけで書かれたRuby1.8で動くQuine(ただし32bit環境限定)が凄すぎる
  • Tinycc on NaCl - 2011-10-03 - 兼雑記

    http://shinh.skr.jp/nacltcc/tinycc.html Native Client がリリースされてから、ブラウザで C のコード即実行できたらキモいよなーと思ってました。ただ Native Client がなかなか JIT 対応してくれなかったから遊べなかったのですが、なんか最近見直したら JIT サポートされていたようだったので。 コードはこのへんとかに。まだバグバグです。簡単に落ちると思います。 https://github.com/shinh/nacltcc/ 箇条書き感想: Native Client はキモはとても面白い技術だと思うんですが、まだまだ環境が追いついてきてないなぁという感じ ドキュメントがあんまり無い。主に nacl_dyncode_create の第一引数と、ファイル関係 API をゴマかす手段を探すのに時間がかかりました naclpor

    Tinycc on NaCl - 2011-10-03 - 兼雑記
    TAKESAKO
    TAKESAKO 2012/01/09
    Tinycc on NaCl おおお
  • symmetric hello - 2010-05-26 - 兼雑記

    見た目が対称ってのはどうかなぁと思って作ってみました。端末で見やすくしたくて、横幅を 80 文字以内におさえようとしてたら、何故か横幅ゴルフみたいな感じになってきて無駄に細くなりました。 ______={}//\\{}=______ _=+[]//\\[]+=_ ______.___=""+[][++_]//\\[_++][]+""=___.______ ____=""+{}//\\{}+""=____ ______._=""+!_//\\_!+""=_.______ __=""+!!_//\\_!!+""=__ ___=_+_+_+_+_//\\_+_+_+_+_=___ _______=____[___]//\\[___]____=_______ _________=____[_]//\\[_]____=_________ ___________=______.___[_]//\\[_

    symmetric hello - 2010-05-26 - 兼雑記
    TAKESAKO
    TAKESAKO 2010/12/24
    どう見てもクリスマスツリー!! RT @kazuho 「Quine にするとかはやればできると思うのですが、デカくなると見た目が悪くなるよなぁ…」 / symmetric hello - 2010-05-26 - 兼雑記
  • 2010-05-22 [Program] 回文 - 兼雑記

    http://d.hatena.ne.jp/TAKESAKO/20100519/1274240074 回文ってのは一行コメントある言語だとゴルフでもしない限り自明すぎてどうでもいいわけですけど、一行コメントが無い言語とかだとそれなりに面白くて、 OCaml なんかだと ksk さんが \ をうまく使っておられたりとか。 http://d.hatena.ne.jp/KeisukeNakano/20070602/1180788051 ゴルフになるとひっくりかえした方にも意味を持たせたいものですが、しかしそんなことは普通のプログラムだとほぼ不可能(機械語ならちょっとくらいならできそう)だと思うんですが、 Quine だとどうせプログラム文をまるっと埋め込む必要が出てくることから、逆向いてる方にそっちの役割をしてもらっているこういうヤツとかは面白いなぁと思いました。 http://golf.sh

    2010-05-22 [Program] 回文 - 兼雑記
    TAKESAKO
    TAKESAKO 2010/05/24
    おおお。さすが@shinhさん!すばらしい QT @mircbot shinh submits 1800B of Brainfuck for Palindromic Quine, ranking #1 (10000pts).
  • 2009年度言語雑談会 - 兼雑記

    なんか例年あるよくわからない雑談会を id:kmizushima さんが主催してくれました。最初は6人とかだったけど今年は15人とかいたらしい。 私は最近うなされがちなメモリがどうこうという話をしてみました。言語機能の紹介とかじゃなくて俺の欲しい機能を喋るだけでかつ要求は自分でもきちんと言語化できてない感じなのでアレなのですが。 http://shinh.skr.jp/dat_dir/memori/000.html id:ytqwerty さんによるとそれほとんど Ada でできるよとのこと。私の理解が正しければ、初期化時に特殊な方法で渡した実行時パラメータを使って構造体のレイアウトを自由にいじれる感じなんだと思う。私の要求のうち初期化以降にメモリをいじらない系はだいたいいけそう。 Ada はあの文法さえなければいい子そうだよなぁと思ったのは何度目だろうか。 あとまぁ一つ一つはあの言語なら

    2009年度言語雑談会 - 兼雑記
    TAKESAKO
    TAKESAKO 2010/01/27
    ぼくのほしいメモリのなんか「GPU上のメモリとか?」→なるほど、計算には使わない手かー
  • multix.rb - 兼雑記

    http://github.com/shinh/multix/blob/master/multix.rb Boost.MultiIndex とかのはなし…は聞いてないんだけどスライドを見て、そういやこういうの Ruby こそ欲しいようなそうでもないような…ということで適当に書きました。途中でやる気が尽きたので、使いものにならんです。なんか遅いしインターフェイス足りないまくりだし。あと 。私が使う気が起きない限り放置しそうです。 というかなんというか要は二分木が欲しいというのもあるので、せっかく書いた splay tree くらいはなんか単体で使えるようにしてもいいかも。 感想としては splay tree っていうか tree の operation っていつも思うんですが難しい。よく間違える。 hash って基簡単なのに tree より使い勝手が良い感じがあるのはえらいと思う。 Rub

    multix.rb - 兼雑記
    TAKESAKO
    TAKESAKO 2009/12/24
    「Ruby でこういう template でやりたいようなことはとてもやりにくい気がした。」
  • qif2.rb - 兼雑記

    http://d.hatena.ne.jp/ku-ma-me/20091116/p1 なんか qng 見た時に GIF でやってみるかなーと思ってたんだけど mame さんがやってしまったので、パクリです。 http://shinh.skr.jp/obf/qif2.gif eval(q=%(require'zlib';c='eJxNUkFv40QUngZLa43Q1 oceOHBwJ3Vix4ljd9uqIZ5sW9Hudg9ld4+4VrdJvaohieqk bJ1kg4IlxK6FxIUTWnGIEIJw4cSpQuIfcObILyg9wR4o740 DIlLyzfvmzfe+9172uFYhyvdfPn5JiJwQ8ZFy24q0LBFlR5 G2VYWQidqYXxGiEpJsKXJuGw7FdKb3gEuW5eQMsEjflF4L/ FxF/peH37yHzxeTSxG/8ckl

    qif2.rb - 兼雑記
    TAKESAKO
    TAKESAKO 2009/12/17
    diff =(perl =(ruby1.9 =(ruby qif2.gif))) qif2.rb すげー
  • SDL夏 - 兼雑記

    http://gonypage.jp:10080/proj/wiki/SDL_2009%E5%A4%8F とりあえず今回のネタはこのへん。 http://shinh.skr.jp/koneta/#wsock Gimiteさんのweb-socket-rubyとweb-socket-jsに依存しています。 情報処理若手の会で作ってたらで期間中にきたので、そっちでも発表してみました。その後、 SDL 全然関係ないので意味もなくあいこんちゃんを飛ばしてみた。 デモは一日くらいは放置しておきます。発表の様子はニコニコに上げていただけるっぽいので、上げてもらったら切ると思います。要 flash 。 flash をブロックする設定とかになってると動きません。そうでなくても動かないかも。 http://shinh.org/wsock/tc.html 追記: なんかデモ用にプレゼンテーションやってる人以外が

    SDL夏 - 兼雑記
  • ゴルフ場のなかみ - 兼雑記 (2009-09-29)

    最近ゴルフ場を新しいマシンに引越そうとしていて、ついでなのでシステムをもうちょっと丁寧にパッケージ化しようとしてます。そのついでとして、現在のゴルフ場について内部がどうなってるか、ということを少しまとめてみようと思いました。 結構似たようなことをするサービスもあるんですが(codepadとかllevalとか)、そのへんのコードとかは全く参考にしてないので、そういうのを見た方がいいかもしれませんし、あとゴルフ場固有の事情も色々あったりするかもしれません。まぁでも日語でそのへん書いてるのはあんまり見たことがないので、多少参考になる部分もあるかもしれません。 今作業中のコードは github に入れていっています。 apt で入らないパッケージの処理以外はだいたい入ってるはずですが、まだ足りないものとかあるかもしれません。 http://github.com/shinh/ags システム自体は

    ゴルフ場のなかみ - 兼雑記 (2009-09-29)
  • PRML Hackathon - 兼雑記

    http://sites.google.com/site/ikomadokushokai/prml/hackathon01 場違いながら行ってきた。なんかみんな学習器の方を作っててえらいなぁと思った。遅れて来ていきなり写真撮影とかしてる感じだった。 僕は以前超適当に書いたトランプ画像認識をベースに、以前は Ruby 部分多かったのをほぼ C++ で SVM 使ってやる感じに大幅改造というか書き直していました。 学習データはこいう綺麗なの13枚: http://shinh.skr.jp/tmp/prml_queen.jpg 評価はこいうので: http://shinh.skr.jp/tmp/prml_before.jpg 実際こうなる(小さく A とか 2 とか書いてある): http://shinh.skr.jp/tmp/prml_after.png なにかしら 100% にしたいなーと思

    PRML Hackathon - 兼雑記
  • ICFPそのものについて 2009-09-12 - 兼雑記

    完全にド素人なわけで、どうせほとんど何言ってるかわからんのだろうなぁと思ってたんですが、意外とわかるものももあったので書いておこうかと。わかると言っても、どうやってやったかとかまではなかなかわからんくて、モチベーションくらいがわかればそれだけでも嬉しいという幸せな話でして。 プロシーディングはここにあるみたいだ。 http://portal.acm.org/toc.cfm?id=1596550&coll=portal&dl=ACM&type=proceeding&idx=SERIES824&part=series&WantType=Proceedings&title=ICFP&CFID=505049525&CFTOKEN=505049525 以下、たぶん間違ってたりそんなことは重要なことではないということを書いてたりします。 Organizing Functional Code for P

    ICFPそのものについて 2009-09-12 - 兼雑記
    TAKESAKO
    TAKESAKO 2009/09/13
    ICFP そのものについて
  • 1st prize in ICFP Programming Contest 2009 - 兼雑記

    なんか優勝しちゃったようです。それでエジンバラにいます。というわけでこの一年は C++ のわるくちを言うことはゆるされません。くれぐれも、気をつけて下さい。 勝因としては、まぁ運が良かったんだろうなーという。9位だったのに verification round で 1位になったそうですし。もうちょいポジティブに評価するならテストケース変わっても動く程度に robust だったってことですかねぇ。 なにか速報してくれてる方がいたのでリンクを。 http://twitter.com/liyanghu/status/3691832714 写真

    1st prize in ICFP Programming Contest 2009 - 兼雑記
  • html5-developers-jp オフ会 - 兼雑記

    http://groups.google.co.jp/group/html5-developers-jp/browse_thread/thread/122c2490348a3432 というわけでなんか行って喋ってきました。こうこの手のイベントで web とかで見たことがあるとかな人がいないってのはすごいなぁと思いました。なにか完全に直行してるというか。 プレゼン資料を置いておきます。 http://shinh.skr.jp/dat_dir/layout_tests/000.html 内容はというと、 WebKit で rendering 結果や JavaScriptAPI とかのテストに使われている、 layout tests という枠組について説明して、テストの追加とかだけなら割と簡単にできるからみんなテスト書いてください!! というような話をしようと思ったのでした。 実際のところ

    html5-developers-jp オフ会 - 兼雑記
  • Quine いろいろ - 兼雑記(2008-11-02)

    Quine の難しい点はたぶん、 自分自身を出力しようとして永久に書き終わらないよギャース クォート文字列中にクォート文字を入れられないよギャース という2点じゃないかなぁと思います。前者は変数を使えば簡単です。後者はクォート文字をエンコードできるようにしてやる、っていうのがまぁ基的な考えかたではないかと思いますが、これは色々方法があります。一般的な作り方としては以下とかがすごくわかりやすかったです。 http://d.hatena.ne.jp/KeisukeNakano/20070814/1187070401 format 系 多くの言語で手軽に書ける…と思う。 %s で自分自身を出力できる && クォート文字列は %c で、っていうのが基的な発想。 Ruby だと、 printf a="printf a=%c%s%c,34,a,34",34,a,34 とかが基形。いくつか短くする

    Quine いろいろ - 兼雑記(2008-11-02)
  • Symbolic Polyglot Quine - 兼雑記

    題字の通り。作ろうかなぁと思いつつ作ってなかったので作りました。 http://shinh.skr.jp/obf/sym_poly_quine.txt 一応ある程度サイズは気にして作りましたが、細かいゴルフとかは全然してません。 Perl がなんか知らんけど SEGV しやがるので eval の中でやりたい処理を全部外でやってるので長くなってしまった…まぁブラウザの認識とかしてないとはいえ TAKESAKOさんのhello の半分以下ですんでるんでいいんじゃないかな。 ブラウザで試す場合はこのへん。 IE 以外だったら大抵のブラウザで大丈夫なんじゃないでしょうか。 IE は文字列の中の一文字を [] で取ってこれないのでアウト。 ある程度短くしようとしてたので、エスケープとかがわけわからんくならないように基的にバックスラッシュ封印してコードを書く必要があって、バックスラッシュ封印すると必

    Symbolic Polyglot Quine - 兼雑記
    TAKESAKO
    TAKESAKO 2009/07/22
    おおおおおおお、すげええええ
  • stack overflow - 兼雑記

    まぁ 3 つとも stack overflow してるわけですが、題字の通り自己参照に思いをはせていたのでした。ゲーデルエッシャーバッハをチマチマ読んでることが関係していると思われる。当は無限ループになると思って書き始めたのだけど、正規表現を実行する部分がどうしても再帰になってしまって、stack 使い切ってしまうのだった。 一個目はデコードすると単に do$0 。自分読む一番ダサい方法だと思う。 二個目は http://d.hatena.ne.jp/shinichiro_h/20070119#1169154728 で教えてもらった前回マッチした正規表現を使う機能で、正規表現内に埋められた実行コードを再帰的に実行してます。なんというか実行してる段階ではマッチしてない気がするんだけど、なんでうまくいくんかなぁという疑問が。 三個目は、デコードすると、 eval $;^XXXみたいな文字列が

    stack overflow - 兼雑記
  • 2009-07-19

    http://d.hatena.ne.jp/TAKESAKO/20090716/1247750262 via http://d.hatena.ne.jp/sugyan/20090717/1247842750 を見て、なんか書いてみるかなぁと。下記3つのコードは一定の期間をおいて SEGV するコードなのですが、共通のテーマに基づいて書かれてます。 SEGV の理由は何でしょうか。 一個目。邪道。でもゴルフでたまに使えるんだよね。 ''=~('(?{'.('_/_ '^';@{:').'})')二個目。一番短いけどこの挙動は長い間知らなかったので結構わからん人多いんじゃないかな。 $_=~'(?{$_=~""})'三個目。読むのはそんなに難しくないけど、書くのは結構大変。新しく書こうと思ったけど結局使い回しでいいやという。 ($;=<<'' _(_@{**+(\$;=<<'' $; )=~(

    2009-07-19
    TAKESAKO
    TAKESAKO 2009/07/19
    おおお。二個目の挙動は今回初めて知りました。
  • 記号ゴルフ - 兼雑記

    可能な限り記号だけでプログラムを書き、その短さを競う(使ったアルファベットと数字の数が少ない方が勝ち、同点ならバイト数が少ない方が勝ち)というゲームを考えました。 とりあえず Hello world! が得意なプログラマとして、サックリと Hello world! を Ruby で書いてみました。適当に書いてみて 189Byte 。アルファベットはゼロ。 $_='';_=$.+$.;__=_*=_;_*=_;___=_+=_;_+=_;_+=__+=__;$_<<_;_+=___;$_<<_-=$.+$.+$.;$_<<_+=__-$.;$_<<_;$_<<_+=$.+$.+$.;$_<<___<<_+__<<_<<_+=$.+$.+$.;$_<<_-=__-$.-$.;$_<<_-__<<___+$.;$><<$_<<$/1行のファイルに保存すること。手で書いただけのものだからまだまだ縮

    記号ゴルフ - 兼雑記
  • 更新履歴兼雑記 - Perl記号ゴルフとAcme::EyeDrops

    ここからが題です。 Perl は頭がおかしいです。すごすぎる。この感動を伝えたいと思います。まず Perl の基からです。 Hello world! を書きましょう。 ''=~('(?{'.('[[).[|`%,,/`[/[@$'^'+)@@/^(@@@@@,@),@').'! "})')えーと。このくらいわかりますよね。これは Hello world という一番簡単なプログラムなのでわからない人はちょっとプログラムの才能が無いです。嘘ですが。 Perl では記号だけでは出力もできないかな、というような話をしていたところ、 Acme::EyeDrops の出力は記号だけで出力してるぞ、ということでした。これは見たことがあったのですが、確かに今見ると記号だけです。で、これの出力の意味を理解してたんですが、なんともすごいものでした。書いてから後で Perl ヤロウどものことだから既に常識だ

    更新履歴兼雑記 - Perl記号ゴルフとAcme::EyeDrops
    TAKESAKO
    TAKESAKO 2009/07/09
    おおお