2008-07-01から1ヶ月間の記事一覧

あなごるでやればいいのに

エロと風俗情報満載 どう抜く? これは問題が悪すぎる。マイナス評価も仕方ない。

irb -rgolf_ %*

速くなったし慣れてもきたのでirb代わりに使うことに。 igrbだと長すぎるからコマンド名はg。 golf_の中身はgolf_preludeをベースに適当に拡張。 とりあえずデバッグしやすいように以下を追加。 $G = [] def record_alias new, old $G << s = "#{old} -> #{n…

分割代入

.io

List <- := method(aList, obj := call sender foreach(i, v, if(v at(0) == 0x2A, # "*(var)" obj setSlot(v slice(2, -1), aList slice(i)); break, obj setSlot(v, aList at(i)))) aList ) Object w := method( call message arguments mapInPlace(code) …

動的alias

http://yowaken.dip.jp/tdiary/20080720.html#p02http://jarp.does.notwork.org/diary/200807b.html#200807201 関連して。キャッシュしてるとはいえ毎回method_missingを呼ぶよりは… @@ -2,6 +2,7 @@ @@golf_hash = {} def method_missing m, *a, &b t = @@g…

(Smalltalk at: #Golf) tips third

変換ネタ。 Number → ScaledDecimal X asScaledDecimal:6 " ↓ " 0s6coerce:X Symbol → String #symbol asString " ↓ " #symbol,0 Array of Characters → String String withAll:#($c$h$a$r$s) " ↓ " '',#($c$h$a$r$s) String → ByteArray 'string'asByteArra…

パッチのようなもの

gorubyを触ってて思ったこと。 Object#displayはselfを返して欲しい。 FloatもIntegerっぽく使いたい。(e.g. 100000.m → 1e5.m) class Object def display(out = $stdout) out.print self self end end class Float (0.methods - 0.0.methods).each do |meth…

count downとgorubyの罠

メソッドの短縮形を使うとローカルなグローバル変数(??)*1に対する副作用が働かなくて思ったように縮まない。これをなんとかするハックは無いものか。 *1:$_とか$&とか

flvpop

そんなわけでHTAで書き直し。 http://svn.coderepos.org/share/lang/javascript/flvpop/*1 せっかくなのでIEから直に使えるようにした。右クリックメニューから呼ばれた場合は自身をシェル実行しなおす。 REGEDIT4 [HKEY_CURRENT_USER\Software\Microsoft\In…

flvpop

一部のブログ記事の影響で動画サイトの利用頻度が増えつつあるため,作業しながら視聴しやすいようにプレイヤだけポップアップさせるのを書いた。 class FlvPop @usg = 'usage: flvpop url [width [height]]' @dic = { 'youtube.com/(?:watch\?v=|v/)([-\w]+…

NQueensとgoruby

これと出力形式がそっくりなので,安直にpermutationした中から合わないものを除くコードを書いたら三つ目がタイムアウト。もしやと思い拡張子をgrbに変えてみたら通ってしまった。噂に聞くYARV効果を初めて実感した次第。 + ところでgorubyのインストール方…

ゆの in Groovy

class X implements Comparable { def x = 365 X(_){ print _ } String toString(){ 'x' } static div(String _){ new X(_) } public div(Object _){ new X("スケッチ${this}") } int compareTo(_){ printf "%d %s", x, _; 0 } } _ = 'ひだまり' X / _ / X <…

ゆの in Tcl

proc X {/ _ / X < o} {puts ひだまりスケッチx365\ $o} X / _ / X < 来週も見てくださいね! ひねりようが無かったわけで。二行かかりませんでした。

dcl_C_と\b

盲点。 *1 これならstでも書ける。80B → 65B *1:\Gでないとダメと思い込んでた。yオプションは必要無かったのである。

dcl_C_とi/=9

ループを適当数回すのにこんな方法があったか。 js> for(n=9;n>1;print(n--,x))for(x=0,i=1;i/=n;)++x 9 339 8 358 7 382 6 415 5 462 4 537 3 678 2 1074 割る値を変えればある程度調整もできると。

dcl_C_とmethod

51b氏のアシストでIoならではのとてもキレイな解に辿り着いた。 最初からこういうコードを書けるようになりたい。

dcl_C_とputs

入力の最後に改行が無いケースがあるので-pとgsubのみだと40Bから縮まず。*1こういうときはputsを使うものらしい。 プログラミング言語 Ruby リファレンスマニュアル 末尾が改行で終っている引数に対しては puts 自身は改行を出力しません。 知らずに使って…

てぃくる

Schemeが手詰まり気味なので*1簡単そうなコレに浮気。 全部文字列。 文法上適宜空白を入れざるを得ず,ゴルフしても大して読みにくくならない。 8.4 → 8.5で色々追加されたらしくマニュアルにあるのに使えない機能が結構ある。 forよりwhile。 for {set i 0}…

(Smalltalk at: #Golf) tips second

使われないものたち。 ローカル変数 |x|x:=stdin nextLine " ↓ " X:=stdin nextLine Boolean>>#ifTrue:ifFalse: C ifTrue:[#t display]ifFalse:[#f display] " ↓ " C and:[#t display];or:[#f display] X:=C ifTrue:[#t]ifFalse:[#f] " ↓ " X:=#t.C or:[X:=#…

slope lines

リストの指定位置を更新する書き方が分からずVectorを使ったらダントツでビリ。 $ gosh -E 'let1 v #(0 1 2) (set! (ref v 2) 3) (print v) (exit)' #(0 1 3) $ gosh -E 'let1 l `(0 1 2) (set! (ref l 2) 3) (print l) (exit)' gosh: "error": no applicabl…

(Smalltalk at: #Golf) tips first

まずはsumimさんの記事の補足から。 アルファベットに続く式の区切りの「 . 」の直後にアルファベットはNG 数字もNG。 キーワードの「:」の直後にアルファベットはNG バージョンが上がったのでくっつけて書けるように。 数字の直後に d、e で始まるセ…