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

任意の整数について、平衡三進記法の各桁の trit を収めた配列を返すメソッド

なんてものも書いてみました。 Integer >> balancedTritsArray | ternary zeroValue numDigits | self isZero ifTrue: [^ Array with: 0]. self radix: 3) allButFirst: 2. ^ (ternary as: Array) collect: [: digitChar | digitChar digitValue - 1] 14 bal…

平衡三進表記

Tiki の「天秤を 3 回だけ使って 12 枚のコインの中から重さの異なる 1 枚を見つける方法」数学クイズからたどって、STUDIO KAMADA さんの「天秤を n 回だけ使って 3n-3 / 2 枚のコインの中から重さの異なる 1 枚を見つける方法」という一般解経由で、クヌス…

増井さんの Dynamic Macro

bopperjpの日記経由で、ユビキタスコンピューティング時代のユーザインタフェースの発表資料より。 繰り返し 補完 これ、Squeak システムの again (alt-j/cmd-j) にこっそり仕込んでおくと便利そうですね。実際にどこまで便利かは、実装して使ってみないこと…

Zest and Marmalade

Python 界隈で著名な(そしてアンチ Ruby 、アンチ Smalltalk 派で知られるw)新山さんの たべすぎ・ねっと/メモ 経由で Lightweight Languages 2004(アブスト、発表資料)より。発表資料の Zest and Marmalade から Squeak VM で動く仮想イメージ一式が落…

続々: n 番目の組み合わせ

Shiro さん版を受けて、SequenceableCollection >> #combinations:atATimeAt: を改良してみました。 SequenceableCollection >> combinations: digits atATimeAt: target | size lastIndex | size _ self size. (size = target ifTrue: [(self first: 1), (s…

Shiro さんの組み合わせの数版を Smalltalk で

組み合わせの数を使うとこんな感じ? (let loop ((chars (string->list *chars*)) (str '()) (num *value*)) (if (= (length str) 16) (list->string (reverse str)) (let ((x (c (- (length chars) 1) (- 15 (length str))))) (if (> x num) (loop (cdr cha…

続: n 番目の組み合わせ

ループを排除して、心持ち、すっきりとさせてみました。心持ち。w SequenceableCollection >> combinations: digits atATimeAt: target | size sum ranges cursor digit | size _ self size. (size = target]. sum _ cursor > 1 ifTrue: [ranges at: cursor…

n 番目の組み合わせ

id:sumim:20041206#p1 の続き。c. も比較的、簡単そうなのでトライしてみました。 target chars target _ 99999999999999999. chars _ '!"#$%&''()*+,-./:;?@[\]^_`{|}~0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'. ^ chars combinati…

文字の配列を文字列にする

Ruby と違って Smalltalk の文字列(a String)は要素がすべて文字(a Character)の特殊なコレクションです。ただ、文字のみからなる配列を文字列にしたいとき、 #($a $b $c) asStringだと、 "=> '#($a $b $c)' "というように、元の配列の文字列表現になっ…

n 進数

Shiro さんのところの「Scheme:数遊び」経由で、nobsun さんところの「Cahier:2004-12-04」より。なるほど a. は n 進表記への変換というだけならば簡単だ…、というわけで何もせずに答えだけ確認してみました。 target chars size table "準備" target _ 999…