2007-01-01から1年間の記事一覧
フィボナッチベンチ - 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…
任意のコードを実行するBookmarklet Ver1.1.1 (Kanasansoft Web Lab.) 似たようなものは(ページに直接埋め込むタイプ)自分でも適当に書いて使ってた。 別窓で開くとポップアップブロックに引っかかるのが難だが,編集しやすいのが気に入ったのでちょっと自分…
map,forEachの2つめ以降の引数 - ロックスターになりたい あなごる的にはありがたくない機能だったりする。 print([1,2,3].join('\n')) → [1,2,3].map(print) // (6?)
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…
JavaScriptでArray.fill - Thousand Years おお,賢い。これなら何でも詰められる。 eval版はこんな感じか。 Array.withAll = function(obj, num){ return (num = Number(num)) > 1 ? eval('0,function($){return['+ Array(num).join('$,') +'$]}')(obj) : […
配列の初期値を指定する方法の処理速度検証 (Kanasansoft Web Lab.) ループに比べて遅いのは当然としても,そもそも split はこの用途に全く向かないのだった(マッチ部分を捨てるため先読み表現を使わざるを得ず,効率が*激しく*悪い)*1。 素直に match を用…
「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
最近のGSTは正規表現が使えるらしく,試しに look'n'say を解いてみた。 残念ながらあなごるでは(バージョンが古すぎて)未対応なのでここに晒してみる。 |k s|k:=stdin nextLine. 1to:12 do:[:c|s:=''. k displayNl onOccurrencesOfRegex:'1+|2+|3+'asRegex …
たぶん 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なら三文字でいけそう?と思い試してみたら… javascript:alert(NaN == NaN + 1) これは驚いた*1。isNaN()なんてものがあるのはこういうわけか。 というわけで,jsでの答えは八文字っぽい。 *1:NaNは全ての数値と…
smalltalkが結構面白くなってきた*1ので,処理系を入れてみることにした。 GNU Smalltalkのサイトをチェック。Win用のバイナリは無さそう*2。 仕方がないのでCygwinを導入することに。 何故かダウンロード途中に失敗のダイアログが沢山出る。 ダウンロード元…
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…
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…
「配列の初期値を指定する方法」の「一文字の文字列しか指定できない制限」の打破を試みる (Kanasansoft Web Lab.) ループして一つずつ代入すればいいような?(そんな野暮はしない前提かな)制御文字を使うとか。 Array.stringFilled = function(num, str){ i…
Typing Test English - 10FastFingers.com 英単語だけだと結構速く打てるらしい。日本語のローマ字入力でこのスピードは無理。
#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%も行けるかどうか。
#3703 4,5,9行目がひどい有様。||= 演算子さえあれば…。
murky-satyr (62) → 51b (60)true ≒ 1 を承知でなぜかこの発想が無かった。アルゴリズムは合ってただけに悔しい。
ムシマルの法則 /// プロンプトで変換 /// javascript:(function(q,p){do{p=(function($){$=$.split('');for(var e='マムツシラルリニソンレフつしいこ',i=0,l=$.length,x;i
文字列関連。 'string'.charAt(5) → 'string'[5] // IEには無い機能。 (7) 'string'.charCodeAt(0) → 'string'.charCodeAt() // デフォは0。 (1) 'string'.length → 'string'[-1] // SpiderMonkeyの謎仕様。 (3)
(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")); })({…
a&&b → a&b a||b → a|b // a, b は真偽値。(1) bit/算術演算において true が 1 に,false が 0 に変換されることを利用する。
ビット演算系のイディオム。ゴルフ以外でも有用? 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進文字列…
L=リスト!作る -300px 200px 位置 200px 400px 大きさ。 「|x| s=「x%3<1」!なら「『Fizz』」そうでなければ「『』」実行。 「x%5<1」!なら「s=s+『Buzz』」実行。 L!(「s==『』」!なら「x」そうでなければ「s」実行)書く。…
anarchy golf*1用の書き方をいくつか。各コメント末の括弧内は稼いだバイト数。 i=0,$=readline() → $=readline(i=0) // 引数を取らない関数に何か渡しても怒られない。(1) print(a.join(' ')) → print.apply(0,a) // printに渡した引数が空白区切りで出力さ…