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

SelfAssigner done

.st

!SelfAssigner class methodsFor: 'initialization'! isolate superclass := nil! ! SelfAssigner isolate! 咀嚼するも何もこれだけでいいのだった。恐るべしSmalltalk。 st> #i <+ 'hoge'! SelfAssigner new "<0x19c4ee00>" st> i size! 4 st> i ~ 7; f: [:…

SelfAssigner

.st

i++ > i+=1 > i:=i+1やはりインクリメントやら自己代入が無いのはゴルフ的によろしくない,ということでなんとかしてみる。 Object subclass: #SelfAssigner instanceVariableNames: 'value' classVariableNames: '' poolDictionaries: '' category: 'Experi…

js.golf.html[0] = 'Game of Life'

.js

先を越されてしまったのでゴルフしてみた。 <body onload="setInterval(function(){v=P.innerHTML W=v.indexOf(n='\n')+1;L='■';f='' for(i in v){for(s=6,j=9;j--;)s-=L!=v[i-1+(j/3|0)*W-W+j%3] f+=-~i%W?s&&s-(v[i]==L)?'□':L:n}P.innerHTML=f},99)"><pre id=P> □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□…</pre></body>

多忙

ふらたんパッチ

.st

……に気持ちだけ対応。似て非なる挙動*1。 shortest_abbreviation相当も一応用意したが,アルゴリズムがアホなので長いメソッドだと検索が終わらず使い物にならない。(−−) Golf.Global は Golf.Dic に統合。 $ ./gost.st - GNU Smalltalk ready st> Array ? #…

Kanasan.JS 読書会#2

.js

Google グループ 探し回った挙句*1前日に難波であっさり手に入れたサイ本を持って行ってきた。 amachang,nantoさん,tonyu作者等々スゴイ人沢山。大盛況。 Flex面白そう。速いのはいいこと。 アンケートに書きそびれたけど,学生に優しい値段設定は是非「Ke…

納得

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

js.bml[13] = 'admin-kun'

がんばれ! アドミンくん の一気読み支援。 javascript:with({from:1,to:106})(function(a,r,x){for(;from<=to;)r[x++]=a.join(('00'+from++).slice(-3));return r.join("<br>").replace(/001_/,'001')})(['<img src="http://www.atmarkit.co.jp/fwin2k/itpropower/admin-kun/','/admin','_l.gif">'],[],0) 取得範囲を前のほうで設定するようにしてみた…

今日のGoST

.st

CodeRepos に間借り。 結局 Golf クラスを作ってまとめることにした。 Object subclass: #Golf instanceVariableNames: '' classVariableNames: 'Dic Global' poolDictionaries: '' category: 'Golf'! Golf.Dic := Dictionary new. Golf.Global := Dictionar…

Palindromic Quine

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

文字列の(セパレータを挟んだ)繰り返し

文字列繰り返し - Higé au lait 敢えて再帰でという趣向かな。でも空気読まずに普通に書く。 JavaScript String.prototype.repeat = function(n, sep, a){ (a = [this]).length = n; return a.join((sep || '') + this); }; 既に模範解答があるので少し奇を…

3.0

.st

GNU Smalltalk 3.0 released | GNU Smalltalk ゴルフ目的でしか使ってない自分には(あなごるで採用されない限り)あまり関係なかったりする。 とはいえ Object subclass: #Any instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' catego…

#<>

.st

#caseOf:otherwise:が簡単すぎたので,ちょっと捻ってRuby風のcaseを。 !Object methodsFor: 'rubylike-case'! <> cases cases do: [:a| a key =? self and: [ | v | ^((v := a value) isKindOf: BlockClosure) ifTrue: [ v value ] ifFalse: [ v ] ] ]. ^ni…

#caseOf:otherwise:

.st

http://ja.doukaku.org/comment/5174/ Smalltalk版switch。直感的で解りやすい。 !Object methodsFor: 'switching'! caseOf: cases cases do: [:a| self = a key value and: [ ^a value value ] ]. ^nil! caseOf: cases otherwise: owBlock ^(self caseOf: c…

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長いのだった…

js.doukaku[1] = '役判定'

http://ja.doukaku.org/comment/5186/ このほうがスマートだったか。 function doukaku121r(hand){ var R = [], rd = {A:1, T:10, J:11, Q:12, K:13}; var flush = /^(?:S+|H+|D+|C+)$/.test(hand.toUpperCase().replace( /[2-9TJQKA]/g, function(r){ ++R[r…

?{.}

.st

短くなったとはいえ,他の言語が2バイト(?:)で済ませてしまうところを8バイト(T:F:)も叩くのは忍びない。 そこで配列を利用したシンプルな条件演算子もどきを追加してみる。 !Boolean methodsFor: 'golf'! ? a | o | o := self ifTrue: [ a first ] ifFals…

メソッド検索を賢く

.st

昨日のgoruby GoSTに訳すと「oOOR:d:」で「onOccurrencesOfRegex:do:」が呼べる感じ。 !Object methodsFor: 'golf'! doesNotUnderstand: m | a s k | a := m arguments size. s := (((k := m selector) inject: '' writeStream into: [:s :c| c <= $Z and: […

Rhino 1.7 互換性メモ

.js

Array/Stringのクラスメソッド print(Array.every, Array.map, String.replace, [].reduce) undefined undefined undefined undefined未定義。従来通りcall/applyしたいときはprototypeか適当なインスタンスから呼ぶ必要あり。reduceがフライング実装されて…

サボり気味

飽きてきたのか,ちょっと(?:難しめ|面倒)な問題になると解く気がしない。 エロと風俗情報満載 どう抜く? 119.gst $Ssy:'cal ',($*@1)! $ gst gost.st 119.gst -a 2008 2008 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We…

GoST@'New Year''s Day'

.st

例年の如くさださんを拝みつつ進捗公開。 !Object methodsFor: 'golf'! doesNotUnderstand: m | a s k | a := m arguments size. s := m selector, '*' copyReplaceAll: ':' with: '*:'. k := {m selector. self class}. ^m selector: (GolfDic at: k ifAbse…

HNY!