.groovy

はてブRSSの一括登録

リニューアルでいい感じになったので少し積極的に活用してみることにした。単語と閾値の組に適当なフィード名を付けて Google Reader 用に OPML を吐く。 dic = [ Ruby: 3, Groovy: 2, xyzzy: 1, 筒井康隆: 1, 中島みゆき: 1, // ... ]; println "" new groo…

Error

Ioのせい。 - たばさの - Rubyist 出るのは 1B でも出るけど標準出力の方に吐いちゃうので実質出ないというか。 io = ['io', '-e', '-'].execute() println "Err:\n$io.err" println "Out:\n$io.in" Err: Out: Exception: argument 0 to method '-' must be …

'0' in 0~1000

0〜1000に含まれる0をカウントする - os0x.blog for(var i=0,c='';i<1001;++i)c+=i+'';alert(c.match(/0/g).length); ふむ。とりあえず for(i=c='';i<1001;)c+=i++;alert(c.match(/0/g).length) 枝葉を落として 53B。IE/Safari を捨てるなら // ↓ match/leng…

-l

で起動できる超簡易HTTPモードの概要。処理の中身は src/main/groovy/ui/Groovy(Main|SocketServer).java にある。 localhost のルートで待つ。デフォルトのポートは 1960。 -n/-p 同様リクエスト一行毎に指定したスクリプトを実行。 ファイルを指定した場合…

"$System.in"

で入力が取れる仕組みを今更ながら追ってみた。 // groovy-1.5.7/src/main/groovy/lang/GString.java 148-157 public String toString() { StringWriter buffer = new StringWriter(); try { writeTo(buffer); } catch (IOException e) { throw new StringWr…

qsort

using System; def qsort(a : list[IComparable]){ | [] => [] | _ => def g = n => a.Filter(x => x.CompareTo(a.Head) == n); qsort(g(-1)) + g(0) + qsort(g(1)) } def r = Random(DateTime.Now.Millisecond); Console.Write(qsort($[r.Next()|_ in [0..9…

Functor

元ネタ: http://dev.zeraweb.com/introducing-functor/ class Functor { Functor(Closure c){ with c } def rules = [] def proc = { ...a -> exec a } def given(Object[] args){ def pat = args as List rules << [pat, pat.pop()] } def exec(...args){ …

連続するアレゴルフ

なんか見覚えある問題だけどネタ元がネタ元だけに流行ってるなぁとか思ってたら完全に乗り遅れた。 一番短そうなのを写経だけでも。 a=[1,3,4,5,6,12,13,15] r=[] a.each{r&&n-1==(a=[]+r[-1])[-1]?r[-1]=[a[1],it]:r<<it} print r ArrayList#getAt の気が利かないせいで冗長になってしまう。 > ruby -e "p [][1]; p [][-1]" nil nil </it}>…

カウンタ付きクロージャ

LL Golf のラストでshinh先生がおっしゃっていたことを受けて呼ばれた回数を内外から参照できるクロージャというのを実現できないかと試行錯誤した結果↓ ExpandoMetaClass.enableGlobally() ({ def loopCounts = [:] def getProp = { String name -> def c =…

circle art

a=[] s='={y,x->(a[y]=a[y]?:[])[x]=' evaluate"c$s'o'};e$s'*'};$System.in;a.any{println it.sum{it?:' '}}" タイムアウトする103B。gorubyの63Bと同じ方針。 + groovy.util.Eval の存在を知る。-1B。 a=[] s='={y,x->(a[y]=a[y]?:[])[x]=' Eval.me"c$s'o'…

ゆの 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 <…

木、子→親

Schemeはまだまともに書けないのでGroovyで挑戦。 Tree = ['Root', ['Spine', ['Neck', ['Head']], ['RClavicle', ['RUpperArm', ['RLowerArm', ['RHand']]]], ['LClavicle', ['LUpperArm', ['LLowerArm', ['LHand']]]]], ['RHip', ['RUpperLeg', ['RLowerLe…

9と12

JavaScript1.7の機能に加え,nn氏の活躍によって記録が一新されつつある。もうちょい頑張ればCに追いつけるかも知れない。 Groovytimeoutに苦しみながらもここまで来たが,これより上に行くのは難しそう。

tr/.-/52/

2008-05-17 Groovy では短点と長点を 5 と 2 に置き換えて、云々とした方が短いようです。 nn氏の解法は最短では無いものの,timeoutを避ける素晴らしいやり方なのです。 以下,通らない113B。 print"$System.in".replaceAll('[.-]+/?'){i=1 (it-'/').each{i…

(42;)

groovy> x = (42;) Result: [org.codehaus.groovy.runtime.CurriedClosure@2cd728, org.codehaus.groovy.runtime.CurriedClosure@1e1a0ee] groovy> [x[0](), x[1]()] Result: [42, null] groovy> (it;it)*.getUncurriedArguments() Result: [[0], [1]] 謎す…

無名再帰

http://d.hatena.ne.jp/sumim/20080501/p1の続き。 GST [:n| n < 2 ifTrue: [ n ] ifFalse: [ n * ((BlockClosure block: thisContext method) value: n - 1) ] ] value: 10 ContextPart>>#receiverがなぜかnilを返すのでこういう形に。 Groovy { n -> n < 2…

Golf.with{ Groovy(2) }

http://b.hatena.ne.jp/tarte/20080425#bookmark-8264934 …気付かなんだ。恥ずかしいので一応ゴルフ(とTips)。 homeOnTheRange.groovy (106B) a="$System.in".split()*.toLong() i=0 print~(a- -~a).collect{x=(a-~-a)[i++] it-x?it+'-'+x:x}.join(', ')+'.'…

Groovyでどう書く

Rubyでどう書く?:連続した数列を範囲形式にまとめたい - builder by ZDNet Japan print args[0].split()*.toInteger().sort().inject([[[]]]){ r, v -> r[-1][-1] + 1 == v ? r[-1] << v : r << [v] r }.collect{ it.size > 2 ? it[0, -1].join('-') : it …

String#minus(Object target)

http://golf.shinh.org/reveal.rb?Drop+first+line/hoozie/1206128779&groovy 正規表現が使えるとは知らなんだ。かなり便利。

Golf.with{ Groovy(1) }

ゴルフに向かない仕様のまとめ。 evaluate が重い 繰り返し使うとほぼタイムアウト。 exec が変 何かやり方があるのかも知れないが,どうもうまくいかない。 除算の結果がBigDecimal*1 *2 割るたびにキャストする羽目に。「 x.intdiv(y) 」なんてのもあるけ…

Golf.with{ Groovy(0) }

ゴルフ向け機能のまとめ。 GString 「 "${式}" 」が基本だが,単なるメンバアクセスの場合は {} が要らない。 // echo.groovy (17) print"$System.in" しかもなにやら怪しげな挙動。なぜこれで成立するのか謎。 spread // transposeLines.groovy (67) System…

Groovy

System.in を使うとなぜか exec 扱い。 先生,標準入力が無いのはツライです。