あなごる

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(', ')+'.'…

js.golf.tips[6]

d[k]=++d[k]||1 // d[k] = d[k] ? d[k]+1 : 1 // ↓ // d[k]=-~d[k] // ~undefined === -1 を利用。uniqもcountも無いので割とよく使う。(3) [x,y]=['123','456'],print(+x+ +y) // ↓ // [x,y]=['123','456'],print(x- -y) // 数値としての和が欲しい場合。(1…

Morse decode

手に負え無さそうに見えたが,Wikipediaの二分木をそのまま配列(ヒープ?)で表してみたらそこそこ短くなった。Rubyに直訳したら100Bを超えたので,どうもやり方が違うらしい。 Groovyに移植したものは3つ目がタイムアウト。アップデート以降条件が厳しくな…

2.3.5

GSTのバージョンが2.3.5になり,最初から解き直す楽しみができた。 スクリプト末に「 ! 」が要らなくなったので,少なくとも1Bずつ縮む。

js.golf.tips[5]

1.7になったので,久々の続編。 for(i=0,s="string to iterate";c=s[i++];)print(c) /* ↓ */ for(i in s="string to iterate")print(c=s[i]) // IE・Rhinoでは不可能な操作(なので盲点だった)。 // SpiderMonkey専用? (4) /* ↓ */ for([i,c]in"string to it…

56K

タイムアウトさえしなければ R 向き。 cat(0:99999) 問題自体が4/1ジョークのつもりのような気もするが。

R

最初は意味不明だったが,ベクトルベースと知って納得。 しかし問題の選択肢が少なすぎて悲しい*1。 *1:テストケースが複数ある問題は全滅っぽい?

99

http://golf.shinh.org/p.rb?99+shinichiroes+of+hamaji jsでトップ。半年かかってようやく縮め方が分かってきた。 io/groovy*1はあと1バイトがどうにも。(−−) *1:どうにかなった。

初awk

なのだった。

String#minus(Object target)

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

caddyr

caddy経由で123を通すスクリプト。 http://gist.github.com/349539Io・Groovyと実行速度の遅い言語を触るようになり,これまでの「フォームに『 target=_blank 』をセットしてリターンキー連打」という超ローテクな手段では流石に辛くなってきたので作成。 …

二位

とても珍しい,Smalltalk健闘中の図。

Golf.with{ Groovy(1) }

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

Io golf tips second

変数名に記号を用いて空白を減らす odd-lines.io File standardInput readLines map(i,$,i%2>0or$println) ! $ ~ などコンパイル時にカッコが補われない(演算子に使われていない)もので。 Mutable な空文字列を得る方法 list join 「 ""asMutable 」より2バ…

Golf.with{ Groovy(0) }

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

caddy

便利だ。 CygwinだとWin版の言語を動かすのに少々細工が要る*1とかsqueezerがうまく動かない*2とかはあるけど。 *1:executers以下をいじるだけ *2:手動でちまちまやるほうが楽しいのでどのみち使わない

i to p afterward

Ioは最新版になったのに,件のコードは通らない。 caddyでチェックしてみると…*1 $ caddy -n i-to-p.io Loading testcases of 'infix to postfix' Test #1... OK Test #2... FAILED Output: kr/vgop*d*q/lzn*+hy/w*-j-x+ia*+c*s+*m//b/*u/e-f-/\n ug*i*d*b/h…

Groovy

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

i to p

infix to postfixにはRubyの特徴を活かした名回答があって,Ioでも同じアプローチが使える。 i-to-p.io (115) forward=setSlot("-",method(A,call message name print;self)) File standardInput readLines map(V,doString(V)" "print) …はずが,またしても…

Io golf tips first

やってみると結構トップが取れる。皆マジメに解いてないな。(−− ) 変数より do() Inverse problem: 76 → 70 メッセージ式の意識 Print numbers: 55 → 54 and と or は演算子 つまり括弧が省略できる。

Io begin

釣られて始めてみた。 http://www.iolanguage.com/scm/git/checkout/Io/docs/IoGuide.html / http://www.iolanguage.com/scm/git/checkout/Io/docs/IoReference.html 全てオブジェクト。スロットはプロパティかつメソッド。 構文はメッセージ式のみ*1。引数…

納得

false.to_sが""だとうれしい理由 よく考えたらSmalltalkのleapyearで同様の手法を使っていた。String>>#, が変なオブジェクトをうまく無視してくれる*1のを利用。 *1:x size が 0 を返す x なら '' と同じ

Palindromic Quine

http://golf.shinh.org/p.rb?Palindromic+Quine GoSTで。 ! "$,Q P!$"$!P Q,$" !

leapyear

http://golf.shinh.org/reveal.rb?leap+year/flagitious/1199295777&grb 00を中抜きした後mod 4で判定,でいいらしい。 JS for(;$=readline();)print($+' is '+($.replace(/00/,'')%4?'not ':'')+'a leap year.') 残念ながら普通にやるより1byte長いのだった…

宣言不要

GoSTをいじってるうちに,大文字で始まる変数に直接代入が利く*1ことを今更知った。 nilをAとかZとか(大文字なら何でもいい)で代用出来ることには気付いていたが,グローバル変数として普通に使えるとは。(−−;)変数宣言の分ちょっとずつ縮むので,送信し直さ…

言語別ランキング

anarchy golf - Results by a language anarchy golf - Results by a language anarchy golf - Results by a language 欲しかった機能が。(−−#)

GoST

gorubyに対抗してみる。 GoST.st !Object methodsFor: 'golf'! doesNotUnderstand: m | a s | a := m arguments size. s := m selector, '*' copyReplaceAll: ':' with: '*:'. ^m selector: (self class allSelectors asSortedCollection detect: [ :x | (x …

あなごるいじり

あなごるをコンパクトに表示してスクロール量軽減。連続投稿も。 [Patterns] Name = "anagol hacks" Active = TRUE URL = "golf.shinh.org/" Limit = 512 Match = "<form action="submit.rb*name="reveal">" "$SET(1=<form target=_blank action="submit.rb" method="POST" enctype="multipart/form-data">\n" "Name: </form></form>

echo: 21

神ゴルファーの一人でhttp://www.darrenks.com/golfscript/の作者でもあるflagitiousさんが最近 Smalltalk にも手を出し始めており,早速いくつか記録を更新している。 なんとか追いつこうとググったりマニュアルを眺めたりしていたら全然関係無いところの謎…

Mirroring Characters

kemcoさんに触発されてやり直したら結構縮んだ。 'hoge'.split('').reverse().join('') なんて書き方がゴルフに向くわけも無く。