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

1 から 1000 まで続けて書いてできる整数…を Squeak Smalltalk でいろいろと

1から15まで続けて書くと123456789101112131415となる。これを1つの整数と考えると、この数は21けたで,1が8回使われている。このように、1からある整数まで続けて書いてできる整数について、次の各問いに答えよ。 (1)1か…

あなごる Quine を Squeak Smalltalk で

http://golf.shinh.org/reveal.rb?Quine だーっ。 Quine キボンヌとか言っておいて、いざとなったら気づいていないし。orz Squeak Smalltalk だと、49B 。 thisContext method decompileString allButFirst:8 あ、もっといいのがあった。で、38B 。 []method…

必要に応じて前後の要素にもアクセスできる each 2

id:sumim:20070614:p1 の続き。 spiral さんに #peek を使ってはどうかというコメントをいただいて、なるほどその手があったか…と気がついたので。 Smalltalk には「位置指定可能ストリーム(a PositionableStream)」というものがあって、順序付きコレクシ…

『クロージャによる超軽量並行プロセス』を Squeak Smalltalk で 3

id:sumim:20070618:p2 の続き。 普通にクラスを使ったオーソドックスなものも書きました。もちろん、送受信には #> を。w Object subclass: #Channel instanceVariableNames: 'receivers senders' Channel >> initialize senders := OrderedCollection new.…

『ランキングの集計』を考える

まめめも - [Ruby] ランキングの集計 こういうのはまだ出ていないみたいなので。集計したカウント(重複を排除後、ソート)本位にループを回します。ポイントは Hash#select で同じ順位の要素を集めてまとめて処理していること、でしょうか。 ary = %w(foo b…

『クロージャによる超軽量並行プロセス』を Squeak Smalltalk で

第11回 クロージャによる超軽量並行プロセスの簡単実装法:ITpro jijixi さんや rubyco さんの Ruby 版とは少し趣を変えて、クラスではなくクロージャ(正確にはブロック…)で。newc はチャンネルを生成するブロックとして記述し、send、recv については、ブ…

『クロージャによる超軽量並行プロセス』を Squeak Smalltalk で 2

id:sumim:20070618:p1 からの続き。 フリップフロップ機構はなんのために必要なのかな…と疑問だったので、状態遷移など調べていて謎が解けました。元記事の OCaml の例では、Senders と Receivers が同時に必要となる状況がないのを利用して、空となったそれ…

必要に応じて前後の要素にもアクセスできる each

Greenbear Diary - eachで回してるときの次の要素がほしい こういうのはまだ出ていないみたいなので…。与えたブロック引数の個数をみて適当に割り振ります。 class Array def ya_each(&block) n_args = block.arity.abs mid = n_args / 2 ds = (0...n_args).…

サンタクロース問題を Squeak Smalltalk で 4

id:sumim:20070612:p1 の続きで、こんどは結城さんの 結城浩のはてな日記 - サンタクロース問題を解く(Java) における Java 版を Squeak Smalltalk に。 Ruby と違って Java だと Smalltalk へ直訳っぽく…というのは無理みたいで、書いていていろいろと発見…

サンタクロース問題を Squeak Smalltalk で 5

id:sumim:20070613:p1 の続き。lethevert is a programmer - Java: Re: サンタクロース問題 の Java 版を Squeak Smalltalk で。Java における何ごともクラスで表現するスタイルを踏襲するのは思いのほか大変だと分かったので(^_^;)、お気楽なブロックを使っ…

サンタクロース問題を Squeak Smalltalk で 3

id:sumim:20070608:p1 の続き。 rubyco(るびこ)の日記 - サンタクロース問題を解く(Ruby) で rubyco さんの書いた Ruby 版を、Squeak Smalltalk への意訳にチャレンジ。…と申しましても、Ruby と Smalltalk は互いによく似た部分があるため、例によってほ…

サンタクロース問題を Squeak Smalltalk で 2

id:sumim:20070607:p1 の続き。 jijixi さんの JoCaml 版に触発されて、トナカイとこびとたちが独立したスレッドになっていてチョーかっこいいっ!&ところでこのサンタってぜんぜん寝ないですげー勤勉に働いてなくなくね?版。 | トナカイたち こびとたち …

サンタクロース問題を Squeak Smalltalk で

今日の一行 - [お題] サンタクロース問題 Squeak Smalltalk のスレッドは、処理を記述したブロック [...] に fork を送信することで、手軽に作ってフォークさせられます。ただ、よほどのことがない限り、他へは制御を渡さないので(^_^;)、今回の求められてい…

ミュータブルな Bignum とコンテキストの変更

まめめも - もんだい お呼びでない…とは知りつつも、Squeak Smalltalk だとどうなのかなーと考えたので。 Squeak Smalltalk では、Ruby と違い、Ruby でいうところの Bignum にあたる LargePositiveInteger と LargeNegativeInteger (〜のインスタンス。正…

“Tell, Don't Ask” vs "Ask, Don't Touch"

OOP

L'eclat des jours - なんで? 経由で、The Pragmatic Programmers, LLC: Tell, Don't Ask というのがあるのを知って、ナンダッテーッ!?とか思って読んでみたら、たんなる“ask”違いでした(^_^;)。前者は「(前もってあれこれ)尋ねるな」で、後者は「(メ…

一般化 した FizzBuzz を Squeak Smalltalk で

今日の一行 - FizzBuzz一般化 お題の趣旨をはげしく取り違えていることはご容赦いただくとして、3 に対する Fizz、5 に対する Buzz というように、数値とその倍数の時に置き換える語の任意のペアを与えられるように、メソッド #replaceAllMultiplesAccording…