2007-01-01から1年間の記事一覧

ST > RB ?

フィボナッチベンチ - Smalltalkのtは小文字です 意外。 というのも,一昨日あたりから GST と Ruby で SPOJ を解き始めていたのだが… PROBLEM RESULT TIME MEM LNG TEST AC 0.12 71232 ST TEST AC 0.01 3148 RUB FCTRL2 AC 0.32 71232 ST FCTRL2 AC 0.06 32…

js.bml[4] = 'Run!++'

任意のコードを実行するBookmarklet Ver1.1.1 (Kanasansoft Web Lab.) 似たようなものは(ページに直接埋め込むタイプ)自分でも適当に書いて使ってた。 別窓で開くとポップアップブロックに引っかかるのが難だが,編集しやすいのが気に入ったのでちょっと自分…

js.golf.pseudo_tips[0]

map,forEachの2つめ以降の引数 - ロックスターになりたい あなごる的にはありがたくない機能だったりする。 print([1,2,3].join('\n')) → [1,2,3].map(print) // (6?)

js.bench[2] = eval || Function

.js

Array.withAll - ellaneous ついでに比べてみた。 Array.withAllE = function(obj, num){ /// with eval /// return (num = Number(num)) > 1 ? eval('0,function($){return['+ Array(num).join('$,') +'$]}')(obj) : [obj]; }; Array.withAllF = function(o…

Array.withAll

.js

JavaScriptでArray.fill - Thousand Years おお,賢い。これなら何でも詰められる。 eval版はこんな感じか。 Array.withAll = function(obj, num){ return (num = Number(num)) > 1 ? eval('0,function($){return['+ Array(num).join('$,') +'$]}')(obj) : […

js.bench[1] = split || match

.js

配列の初期値を指定する方法の処理速度検証 (Kanasansoft Web Lab.) ループに比べて遅いのは当然としても,そもそも split はこの用途に全く向かないのだった(マッチ部分を捨てるため先読み表現を使わざるを得ず,効率が*激しく*悪い)*1。 素直に match を用…

x == x + 1

「x == x + 1」解答篇 - 西尾泰和のはてなダイアリー の続き。GNU Smalltalk*1: |x| x := 1e8. (x + 1 = x) print! ドリトル: x=9!17 pow。ラベル!(x==x+1)作る。Xtal: x: 1.0e+8; (x == x + 1).p; *1:07-11-30 訂正:x = x + 1 → x + 1 = x

look n say with: Regex

最近のGSTは正規表現が使えるらしく,試しに look'n'say を解いてみた。 残念ながらあなごるでは(バージョンが古すぎて)未対応なのでここに晒してみる。 |k s|k:=stdin nextLine. 1to:12 do:[:c|s:=''. k displayNl onOccurrencesOfRegex:'1+|2+|3+'asRegex …

n == n + n

.js

たぶん inf 以外も なるほど,四文字だったか。 javascript:(function(o,x,y,a,n,s,i){for(i in o){eval(s='n = '+o[i]);alert([s,x+a+eval(x),y+a+eval(y)].join('\n'))}})({8:'Infinity', 4:'1e16'}, 'n == n + 1', 'n == n + n', ' => ')

n == n + 1

.js

n == n + 1 - 西尾泰和のはてなダイアリー jsなら三文字でいけそう?と思い試してみたら… javascript:alert(NaN == NaN + 1) これは驚いた*1。isNaN()なんてものがあるのはこういうわけか。 というわけで,jsでの答えは八文字っぽい。 *1:NaNは全ての数値と…

GST install

smalltalkが結構面白くなってきた*1ので,処理系を入れてみることにした。 GNU Smalltalkのサイトをチェック。Win用のバイナリは無さそう*2。 仕方がないのでCygwinを導入することに。 何故かダウンロード途中に失敗のダイアログが沢山出る。 ダウンロード元…

js.bml[3] = 'Pass View'

404 Blog Not Found:javascript - パスワードを確認するbookmarklet alertだとコピペ出来なくて不便なのでpromptに。 ほんの少し高速化(とゴルフ)。 javascript:(function(F,a,x,i){for(i=F.length;i--;)if(F[i].type.toLowerCase()=='password')a[x++]=(F[i…

js.bml[2] = 'Site Search'

http://kengo.preston-net.com/archives/003439.shtml 要するに…。 javascript:(function(p){if(p)open('http://www.google.co.jp/search?as_sitesearch='+document.domain+'&q='+encodeURIComponent(p))})(prompt('Site Search',document.selection?documen…

Array.stringFilled

.js

「配列の初期値を指定する方法」の「一文字の文字列しか指定できない制限」の打破を試みる (Kanasansoft Web Lab.) ループして一つずつ代入すればいいような?(そんな野暮はしない前提かな)制御文字を使うとか。 Array.stringFilled = function(num, str){ i…

10-fast-fingers

Typing Test English - 10FastFingers.com 英単語だけだと結構速く打てるらしい。日本語のローマ字入力でこのスピードは無理。

js.bml[1] = 'BF->JS compiler'

#3981 のBookmarklet版。 投稿するつもりで書いたものの,長くなりすぎて見苦しいのでここへ。 javascript:s='',o={'>':'m[p+=1]|=0;','<':'m[p-=1]|=0;','+':'m[p]=m[p]+1&255;','-':'m[p]=m[p]-1&255;',',':'m[p]=get().charCodeAt()&255;','.':'put(c(m[p…

さて、どう書く?

「ドリトル追加しました」 まずは万歳。…とは言え,マゾいどころの騒ぎでは無い。20%も行けるかどうか。

js.doukaku[0]

#3703 4,5,9行目がひどい有様。||= 演算子さえあれば…。

js.golf.tips[4] = 'Sphenic Numbers'

murky-satyr (62) → 51b (60)true ≒ 1 を承知でなぜかこの発想が無かった。アルゴリズムは合ってただけに悔しい。

js.bml[0] = 'Musimaru Law'

ムシマルの法則 /// プロンプトで変換 /// javascript:(function(q,p){do{p=(function($){$=$.split('');for(var e='マムツシラルリニソンレフつしいこ',i=0,l=$.length,x;i

js.golf.tips[3]

文字列関連。 'string'.charAt(5) → 'string'[5] // IEには無い機能。 (7) 'string'.charCodeAt(0) → 'string'.charCodeAt() // デフォは0。 (1) 'string'.length → 'string'[-1] // SpiderMonkeyの謎仕様。 (3)

js.bench[0] = 'effective "with"?'

.js

(function($){ var bench = function(f){ for(var t = new Date, i = 1024; i--;) f(); return (new Date - t) / 1024; }, c = bench(function(){}), r = [], k; for(k in $){ r.push(k +': '+ (bench($[k]) - c) +" [ms]") } confirm(r.join("\n\n")); })({…

js.golf.tips[2]

a&&b → a&b a||b → a|b // a, b は真偽値。(1) bit/算術演算において true が 1 に,false が 0 に変換されることを利用する。

js.golf.tips[1]

ビット演算系のイディオム。ゴルフ以外でも有用? Math.floor(i) → i|0 // iはint32の範囲内。(10) if(i!=-1) → if(~i) // ~-1 === 0 を利用。(3) (i+1)/2 → -~i/2 (i-1)/2 → ~-i/2 // 優先順位を変えて括弧を外す。 (2) +('0x'+h) → '0x'+h|0 // 16進文字列…

FizzBuzz.dtl

L=リスト!作る -300px 200px 位置 200px 400px 大きさ。 「|x| s=「x%3<1」!なら「『Fizz』」そうでなければ「『』」実行。 「x%5<1」!なら「s=s+『Buzz』」実行。 L!(「s==『』」!なら「x」そうでなければ「s」実行)書く。…

js.golf.tips[0]

anarchy golf*1用の書き方をいくつか。各コメント末の括弧内は稼いだバイト数。 i=0,$=readline() → $=readline(i=0) // 引数を取らない関数に何か渡しても怒られない。(1) print(a.join(' ')) → print.apply(0,a) // printに渡した引数が空白区切りで出力さ…

Hello, hateda!