タグ

perlに関するyshlのブックマーク (30)

  • Perl6で記号Hello worldする - すぎゃーんメモ

    一番簡単なHello worldです。 ::('!{.(?'~^'.~!)~'~^')^.^^'~^'?!^?('~^'??)!{')('!?}}~~(!^~{~))(.{~('~^'))?^?.).(?.}?)().!~'~^'~!.?}?~.^.{?!)~}!).'~^'}!!.~(}(!?}~{!}).(('~^')^(^.(.)~?!.()!})?)')普通に実行できると思います。 $ cat hello.pl6 ::('!{.(?'~^'.~!)~'~^')^.^^'~^'?!^?('~^'??)!{')('!?}}~~(!^~{~))(.{~('~^'))?^?.).(?.}?)().!~'~^'~!.?}?~.^.{?!)~}!).'~^'}!!.~(}(!?}~{!}).(('~^')^(^.(.)~?!.()!})?)') $ perl6 hello.pl6 Hello,

    Perl6で記号Hello worldする - すぎゃーんメモ
  • Base64 decoder/encoder in Perl - 兼雑記

    http://shinh.skr.jp/obf/b64_dec.pl dXNlIE1JTUU6OkJhc2U2NDtwcmludCBlbmNvZGVfYmFzZTY0IGpvaW4nJyw8PjsKX19FTkRfXwo+ s//v62/e+s//v60/e+s//v44/e+s//v39/e+s//v39/e+s//join/+s//v32/e+s//base64/ss+ s//v95/e+s//decode/+s//v32/e+s//print/+s//v59/e+s//Base64/+s//v58/e+s//v58/e +s//MIME/+s//v32/e+s//use/s/evalこの Base64 ぽく見える物体は Perl コードで、実行すると引数で指定したファイルに対する base64 デコーダとして機能します。 $ perl b64_dec.pl b64_dec.pl >

    Base64 decoder/encoder in Perl - 兼雑記
  • 2010-07-10

    s XXchr length q YThisPerlCodeConvertsAnyPerlCodeIntY Xe xor s XXchr length q YThisPerlCodeConvertsAnyPerlCodeIntoAlphabetOnlyPerlCodeThisPerlCodeCon vertsAnyPerlCodeIntoAlphabetOnlyPerlCY Xe xor s XXchr length q YThisPerlC odeConvertsAnyPerlCodeIntoAlphabetOnlyPerlCodeThisPerlCodeConvertsAnyPerl CodeIntoAlphaY Xe xor s XXchr length q YThisPerlCodeConvertsAnyPerlCodeIn toAlphabetOnlyPerlCodeThisPe

    2010-07-10
  • 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
  • 記号でPolyglotプログラミング♪(RejectKaigi2009) | TAKESAKO @ Yet another Cybozu Labs

    RubyKaigi2009の最終日に同じ場所で開催された別のイベント「RejectKaigi2009」にて 「はじめてのRuby1.9プログラミング」と題して、記号Polyglotプログラミングの話をしてきました。 3分という限られた時間でありましたが、貴重な発表の機会を与えてくださりありがとうございます。 取り急ぎプレゼンで披露した記号Polyglotのプログラムを公開しておきます。 ■ hello.pl (という名前ですが、Perlの他にRubyJavaScriptでも実行できるプログラムです) "#{",$/*"}";%#=();$^_^=’?“;">)~${`&&@`{;:+`[[‘,$^_^=’/?")-=^{(=!".=.!,!)&&>’,$^_^=’`-+|{!?“*.((-+({:^(_^’,$^_=”^’+@$@&’^’^.@%@’.’$^_^"";’.$^_^"",’

  • The Quine Page (self-reproducing code)

    One day, several years ago, I came across an article in an old Byte on "self-reproducing programs".  I was a curious lad, and looked to see what the article was about.  It said, "Listing 1 is a C program which duplicates itself. When the program is run it produces (on the standard output) a file containing an exact copy of its own source code".  I was hooked immediately--these guys must be geniuse

  • [Program] fizzbuzz7.gif - 2008-10-25 - 兼雑記

    なんかブックマークに golf とかいうタグがついてるのが目に入って、ゴルフなんてロクにしてないのになぁとか思って、ちょっとゴルフして1言語足してみました。具体的には Befunge 。 http://shinh.skr.jp/dat_dir/fizzbuzz7.gif 前回との差分としては、 PerlRuby のコードを融合させた方が明らかに短くなるので融合させて、 z80 をちょっとはマジメにゴルフして、 Befunge 入る隙間を適当に作ってつっこんだというような感じです。したらまだなんか空いてたので by shinh とか入れといた。 z80 と x86 を人生を賭けて縮めたらもう一個くらいなんか入るんじゃないかという気はします。 VMWare fusion でヘンだとかはまぁ直したいけどまた今度。 ソースコードとかそのへん。 http://shinh.skr.jp/dat_

    [Program] fizzbuzz7.gif - 2008-10-25 - 兼雑記
  • fizzbuzz.gif - 兼雑記

    もんだいです。このファイルはなんでしょうか。 http://shinh.skr.jp/obf/fizzbuzz.gif

    fizzbuzz.gif - 兼雑記
    yshl
    yshl 2008/10/12
    polyglot / 解説は http://d.hatena.ne.jp/shinichiro_h/20081012 なんと z80、COM、起動イメージまで
  • Symbolic Polyglot - 兼雑記

    久々に優雅な時間を過ごしました。もう少し縮みますけど見た目を優先した面もあり。 http://ja.doukaku.org/comment/7271/ まめさんの偉業を見てから二大チューリング完全言語の共演を見たかったのでした。 Symbolic Polyglot Quine とかもできるだろうけど大変そうだなぁ。 Ruby の syntax highlight $/=' ';%#;$/=~('(?{'.(', =$ )'^'_@|_ @||').'$&`,'.('/-).+`&/-'^'__@@_@@@_').'<>})');"#;(___=->(_,*__){$.=/./=~_ $><<([*?`...$&][$.]&&[*$&...?{][$.]?[*?@..$&][~(/@./=~[*$/..?@]*''+_)]+$':_) __[$.]&&___[*__]})[*[*$<]]#"

    Symbolic Polyglot - 兼雑記
  • 全ての定理 - 2008-07-16 - 兼雑記

    そいやこんな話を会社でしました。 なんか true == false を証明したら全ての定理を証明できると聞きましたが、困ったことに私はそれを証明できたみたいです! 以下に Perl による証明を書きます! > perl -le 'print 0==1' > perl -le 'print 0==0' 1つまり Perl は真は 1 として表示されるみたいです。 > perl -le 'print true==false' 1つまり真! true == false が証明されました! PHP によっても証明できます。 > php5 -r 'print false=="false";' (1) > php5 -r 'print false==0;' (2) 1 > php5 -r 'print 0=="false";' (3) 1 > php5 -r 'print true=="false"

    全ての定理 - 2008-07-16 - 兼雑記
    yshl
    yshl 2008/07/16
  • 正規表現の文字クラス - 兼雑記

    Perl は正規表現とか " ではさまれた文字列の中にある変数とか配列を展開してくれるんですが、これは明らかに正規表現の文字クラス ([abc] とか書くヤツ) とブツかるわけです。 以下のコードは @a に 0-999 まで "x" っていう変数をつっこんでから s/$a[...]/y/; 的なことを実行して、 $_ に入ってる x を y に変えようとするコードをいくつか。 #!/usr/bin/env perl for ($i=0; $i < 999; $i++) { $a[$i] = "x"; } $_ = "x"; s/$a[12]/y/; print "12: $_\n"; $_ = "x"; s/$a[123]/y/; print "123: $_\n"; $_ = "x"; s/$a[-2]/y/; print "-2: $_\n"; $_ = "x"; s/$a[-22]

    正規表現の文字クラス - 兼雑記
    yshl
    yshl 2008/06/06
  • Perl の正規表現リテラル中の変数展開を読む

    Perl の正規表現リテラル中の変数展開では、文法上、 解釈にあいまいさが生じることがあります。 この文章では、Perl インタプリタのソースコードから、 実装上でどのようにあいまいさが解決されるのかを説明します。 更新履歴 2008-06-05: 公開 Perl の判断 Perl では、文字列リテラルや正規表現リテラルの中で変数展開を行えます。 use Test::More tests => 2; my $name = 'Alice'; $_ = "My name is $name"; is($_, 'My name is Alice', '$name として Alice が展開される'); s/$name/Bob/g; is($_, 'My name is Bob', 'Alice が Bob に置き換えられる'); しかし、正規表現リテラルのなかで配列の要素を展開する際には、 [ 〜

    yshl
    yshl 2008/06/06
  • perl - Hello World! バトン : 404 Blog Not Found

    2008年05月03日23:30 カテゴリ書評/画評/品評 perl - Hello World! バトン ったく、みんなして人使いが荒井由美。 【コラム】Hello Worldコレクション (6) Perl編 - 意外!?に多芸多才なスクリプト言語 | エンタープライズ | マイコミジャーナル はてなブックマーク - 【コラム】Hello Worldコレクション (6) Perl編 - 意外!?に多芸多才なスクリプト言語 | エンタープライズ | マイコミジャーナル というわけで、まずはリストの続き。 リストA Perl 5.10以降のsayを使う方法 use feature 'say'; say 'Hello, World!'; リストB Perl6::Sayで代用 use Perl6::Say; say 'Hello, World!'; リストC Pelr 5.10以降のIO::Ha

    perl - Hello World! バトン : 404 Blog Not Found
  • 2008-04-11

    itoa高速にするなら for(tmp=num;tmp>0;tmp /= 10) *p++; の処理は *p += log( num ) + 1; log(1) = 0 log(5) = 0.69897 log(10) = 1 log(50) = 1.69897 log(100) = 2 log(500) = 2.69897 log(1000) = 3 log(5000) = 3.69897 log(10000) = 4 log(50000) = 4.69897 log(100000) = 5 という感じです。 高速化するならこの辺りを物理演算ボードにまかすw もっと速いのは stdlib.h に定義されてる itoaですが。 行列 89, 93, 87, 88, 91, 87, 85, 90, 92, 91, 88, 90をプロツトする x <- c(89, 93, 87, 88, 91

    2008-04-11
  • http://www.ecclestoad.co.uk/blog/2005/06/02/sudoku_solver_in_three_lines_explained.html

    yshl
    yshl 2007/12/06
    3行数独ソルバ
  • 404 Blog Not Found:紹介 - 一つのファイルでperl,javascript,HTMLそしてGIF

    2007年11月05日23:30 カテゴリLightweight Languages 紹介 - 一つのファイルでperl,javascript,HTMLそしてGIF takesako['www']++; TAKESAKO @ Yet another Cybozu Labs: Real UNIX MAGAZINE Day ライトニングトーク 若輩者ながら、昨今のAjaxの技術のGIF89a(ハック)について newtype と oldtype の話を交えながら、ライトニングトークさせていただきました。これが、問題のソース。ちょっとだけ改変してあります。以下のリンクを追ってお試しあれ。 polyglot.(html|gif|pl) GIF89a(q=/*=);sub GIF89a{ print "Hello, Perl!"} __END__#*/1);function GIF89a(){ale

    404 Blog Not Found:紹介 - 一つのファイルでperl,javascript,HTMLそしてGIF
  • Symbolic quine - 兼雑記

    Perl で記号だけ (ASCII が 32-126 で ~/\W/ なものと改行のみ) で Quine を書く努力をしていました。なんか最初は 300Byte 近くだったんだけどゴルフしてるうちに 103Byte まで。 ($;=<<'' #&-!!*!%>{(\$;=<<'' $; )=~(' _ ^-^,'^'"`[;[?@(\$;^\$^)})')+ )=~(' _ ^-^,'^'"`[;[?@($;^$^)})') なんか色々やってるうちに Ruby の最短 に似てきたのでした。 追記: せっかくなので顔文字を埋めてみた。顔文字埋めてる場合じゃなくてまだ縮んだ。 何やってるかっていうとなんか ;''=~ から先が要は eval($;^$^) というコードを実行していて、 $;^$^ は xxxa+print"\$;=<<'_' ..." とかいう感じの自分自身を吐き出すコードにな

    Symbolic quine - 兼雑記
    yshl
    yshl 2007/10/18
    Quine 記号ゴルフ
  • Code Golf

    Several times a week I have to interview people for software engineering jobs. While some of the people I talk with are very smart and qualified, I have, on occasion, complained about the calibre of the average applicant to my wife (who is also a software engineer). So when she read about FizzBuzz she shot me an email. I read the blog entry and then perused the solutions that people were posting i

    yshl
    yshl 2007/10/04
    と Pascal、Java、BASIC で FizzBuzz と 128 bits
  • 2007-09-15

    http://shinh.skr.jp/obf/hello.gif GIFファイルには他の画像フォーマットには無い特徴があってそれは実行できたりすることです。 i@um ~> perl hello.gif Hello, world! i@um ~> ruby hello.gif Hello, world! bmp の方がめんどくて面白そう。 http://shinh.skr.jp/obf/hello.exe EXEファイルも当然実行できると気付きました。 $ ./hello.exe Hello, world! $ perl hello.exe Hello, world! $ ruby hello.exe Hello, world! さっき Shibuya.js のライブ中継かなんか見てたら TAKESAKO さんが似たようなことやってた。ブラウザの JS だと特にエラー出ない工夫とかはいら

    2007-09-15
  • 2007-06-18

    http://shinh.skr.jp/dat_dir/poly_quine.txt 基的には上記 4言語の Polyglot quine 。あとまぁ C と PHP でも Quine になる。あなごるだと m4 なんかもまぁ。 C++ が標準準拠してない気がするので気になるなら main に int をつけると良い。 実行は以下みたいな。 i@colinux ~/wrk/ag> diff poly_quine.txt =(gcc -xc =(php =(perl =(python =(ruby poly_quine.txt))));./a.out) i@colinux ~/wrk/ag>はてなのシンタクスハイライト (vim のなんだっけ) を試してみる。 C++ #include/* s='''*/<stdio.h> main(){char*_;/*==;sub _:lvalue{$

    2007-06-18
    yshl
    yshl 2007/06/18
    polyglot quine の作り方