Coffee Time Challenges, Q13 How many を Squeak Smalltalk で

ときどきの雑記帖″ 2014年7月(下旬) 経由で。(ネタバレ注意) 13) How manyChallenge: ABCDEFGHIJ is a ten-digit-number. All of the digits are distinct. If 11111 divides it evenly, how many possibilities are there for ABCDEFGHIJ? Coffee Time Ch…

Squeak Smalltalk で 配列を交互に分配

http://blog.practical-scheme.net/shiro/20140518-alternating Squeak Smalltalk でならどう書くかなぁ…と、いろいろ考えてみたのですが、いまひとつしっくりくるものがないので、いくつか思いついた書き方をざっくばらんに晒しておきます。 お題は、#(x0 y…

誰得かわからないSqueak Smalltalkを使った関数型プログラミングっぽい話

当初、誰向けかわからないCommon Lispでの関数型プログラミング入門とその未来 - 八発白中 に例にあがっているコードを Squeak Smalltalk ならどう書けるかというような、少しは有益なことを書こうかと思っていたら、のっけからネタに走ってしまって失敗しま…

1からnまでの配列をシャッフルして偶然昇順に戻るまでをシミュレート

358 :デフォルトの名無しさん:2014/01/31(金) 05:31:38.44 まず、ユーザに1以上30以下の整数をひとつ、入力してもらう。これをnとする。 1〜nの整数を並べる。これをLとする。 ※Lをシャッフルする。 Lが偶然にも大きいものから小さいものへの順に並んでい…

SequenceableCollection >> #after: を使ってジャンケンの勝敗判定

Prologの話をしよう - CROSS2012・言語CROSS のコードが簡潔でよかったので、Squeak Smalltalk でも何か珍しい方法で簡潔に書けないかと考えて、いぜん見かけて使う機会がその後なかった #after:(実際には #after:ifAbsent: )というのを思い出したので、そ…

「1から10までの整数を、ランダムに100個生成して、その標準偏差を求める」プログラムを Squeak Smalltalk で

昔のCマガジンに、プログラミング言語Jを用いると「1から10までの整数を、ランダムに100個生成して、その標準偏差を求める」プログラムは0.5^~(+/%#)2^~(-(+/%#))1+?100$10という1行だけで計算できることが誇らしげに書いてあった記事がありました。ループも…

「Rubyでどう書く?:連続した数列を範囲形式にまとめたい」を Squeak Smalltalk で

Rubyでどう書く?:連続した数列を範囲形式にまとめたい.いや,Rubyで書かない. – 上田ブログ なんか見覚えがあって前にも書いたような気もするのですが気にしない。 | shorten | shorten := [:array | (array inject: #() into: [:acc :xx | (acc notEmpt…

スティーブ・ジョブズ もうひとつの1995年ロングインタビュー

GUI

話題の 『スティーブ・ジョブズ1995 〜失われたインタビュー〜』 を iTunesストアで借りて観たのですが、インタビュワーがなんとなくいちいち煽り気味でむかつくのと、ゼロックスでの GUI との出会いのくだりがあっさりしているのが気にくわないので、同じ 1…

“SEND + MORE = MONEY”ソルバーを Squeak Smalltalk で その3

某所でナニした、ハードコードだけど総当たりでは恐らくこれが最もシンプルかつ最速の部類だろうというやつ。 | answers check n1 n2 n3 | answers := OrderedCollection new. check := [:S :E :N :D :M :O :R :Y | S > 0 and: [M > 0] and: [ (n1 := ((S*10…

「数値、文字、文字列リテラルを使わずに Hello World」を GNU Smalltalk で

こちらのお題でした。 https://codeiq.jp/ace/cielavenir/q431 挑戦受付開始後に Smalltalk も指定言語に追加されたので挑戦したのですが、処理系が明記されておらず困るも、おそらくは GNU Smalltalk なんじゃないかなぁとあたりを付けて書いてみました。 …

「数値、文字、文字列リテラルを使わずに Hello World」を Squeak Smalltalk で

Smalltalk は指定言語から外されているし、他の言語では真似できない方法なのでネタバレの心配もないだろう…と思ったのでこちらに。 | Hello World | Hello := World := nil. "for compiler" Transcript open. thisContext tempNames do: [:each | Transcrip…

○○And〜なクラス名

OO

http://codeiq.hatenablog.com/entry/2013/08/26/155959 寡聞にしてこの種の“オブジェクト指向”のコツというか作法というかを知らなかったのですが、Javaなどでは一般的なのでしょうか?ちなみに以下は遊びですが、Squeak Smalltalk で And を名前に含むクラ…

ランダムな文字列の中に隠された特定の文字列文字をマークするコードを Squeak Smalltalk で

http://codeiq.hatenablog.com/entry/2013/08/06/121542 | code out key | code := 'gtgtsgipgttptinggipsppaigsesgpetgstpatetisiesagaeaigttetepitiatsegssieeeeatepaaiagtpieataatppiitgiapsteitatiiatpetetetttgpetpaasipttssstpeeeggtiagtttegtiipestsa…

Squeak Smalltalk で、カスケードと thisContext を使って FizzBuzz

Ruby勉強会@札幌-26 - Ruby札幌 | Doorkeeper で Smalltalk(特に Squeak Smalltalk)の thisContext を含めた変態さん機能をご紹介した流れで、今まで書いたことのないタイプの FizzBuzz 実装を思いついたのでメモ。 Integer >> fizz ^self fizzBuzz: ((sel…

“アッカーマンの呪い”を Squeak Smalltalk で

設問6の解説:アッカーマンの呪い - スピード冒険野郎の操縦席 まず素直に #ifTrue:ifFalse: を使った条件分岐で。関数なのでクラスは定義せずブロック(無名関数)を使います。 | ack | ack := nil. ack := [:m :n | m = 0 ifTrue: [ n + 1 ] ifFalse: [ n …

再帰呼び出しを再帰呼び出しなしで実現 を Squeak Smalltalk で

読者のみなさんにもgotoのある言語で試すことをオススメします。 再帰呼び出しを再帰呼び出しなしで実現 - 西尾泰和のはてなダイアリー ということだったので goto も使える Squeak Smalltalk で書いてみました(違うw。 | VERBOSE stack functionResult sho…

Squeak Smalltalkで使用されている上位50位のセレクター(メソッド名)を抽出してみる

Smalltalk で「セレクタ−」というのは、0個以上の引数と組み合わせて「メッセージ」を構成する要素で、端的には通常の言語におけるメソッド名のようなものです。たとえば、arr at: 1 put: #something という Smalltalk の式があったとき、arr がレシーバー…

内接・外接する正多角形の辺の合計からの円周率計算を Squeak Smalltalk で

▼正“3の倍数”角形の場合 | m a b c | m := 9. c := 3. b := (Float pi / c) tan. a := (Float pi / c) sin. World findATranscript: nil. 0 to: m do: [:n | | d | d := c * (1 << n). Transcript cr; show: d -> ({a. b} * d). b := a * b / (a + b). a :=…

MVC、自分用メモ

OO

▼Reenskaug (XEROX PARC) 「MVC」/ Things - Model - View - Editor MVC / XEROX PARC 1978-79 変化しにくいインフォメーションと変化しがちなプレゼンテーションとの分離。メンタルモデルの記述としてのMVCは失敗(続きは DCI, Data - Context - Interactio…

Scalaのトレイトは実はトレイトじゃなくただのミクスイン

タイトルは釣りです。 まずおおざっぱに用語の整理をさせていただくと、ここで「トレイト」は、シェルリ(Nathanael Schärli)らが2002年頃に発表したTraitsやそれ用のエンティティ(trait)を指し、「ミクスイン(Mixin, mixin)」は従来からある実装の多重継…

「継子立て」を Squeak Smalltalk で

パラメトロン計算機: 継子立て 無限リストは使わず、破壊的に、どちらかというと物語の様子をシミュレートする気分で書いてみました。 | children removeAt removees fifteenth | children := (1 to: 30) asOrderedCollection. removeAt :=[:n | | allToRemo…

セクシー素数ベンチを Squeak Smalltalk で

「本家の5倍速? Pythonで実装したRuby処理系の「Topaz」が登場:Rails Hub情報局:エンジニアライフ」経由で「差が6となる素数ペアをリストアップする(割とRubyっぽい?)コード」の非効率な実装がベンチに使われていて面白そうだったので Squeak Smalltal…

「2点を通る直線から離れた位置にある点までの距離を求める」をSqueak Smalltalkで

2点を通る直線から離れた位置にある点までの距離を求める - 偏った言語信者の垂れ流し | a b c u v L | a := 2@2. b := 6@4. c := 4@5. u := b - a. v := c - a. L := (u crossProduct: v) / v r. L "=> 2.218800784900917 " つらつら Point クラスを眺めて…

DCI パラダイムの提唱者、レインスカウ氏の BabyIDE で遊ぶ 改訂版

BabyIDE については元エントリーのこちらの長い前振りを参照してください。 DCI パラダイムの提唱者、レインスカウ氏の BabyIDE で遊ぶ - Smalltalkのtは小文字です さらに比較的新しいバージョンの BabyIDE を念頭に、インストールの仕方からコードや操作の…

循環を使った FizzBuzz を Squeak Smalltalk で

http://chaton.practical-scheme.net/gauche/a/2012/08/09 http://ideone.com/JOdYf この方針では以前も書いたような気がしますが、Squeak Smalltalk で無理なく書くとこんな感じになりますか。 | fizz buzz | fizz := [:n | #('' '' 'Fizz') atWrap: n]. bu…

HollingBerries問題をSqueak Smalltalkで

Any other Smalltalkers want to take a crack at github.com/apauley/Hollin… my take is already there #smalltalk— Dale Henrichsさん (@dhenrichs) 6月 20, 2012経由で、 GitHub - apauley/HollingBerries: A fictional scenario implemented in multipl…

Inverse Fizzbuzz を Squeak Smalltalk で

@yuroyoro 経由で just another scala quant とりあえずブルートフォース版を Squeak Smalltalk に写してみた。PartialFunction はスルー。 | fizzbuzz all results io inverses answer | fizzbuzz := [:n | | str | str := ''. (n isDivisibleBy: 3) ifTrue…

10種類のカードをコンプするのにかかるガチャ回数の分布をSqueak Smalltalkで

コンプガチャのヤバさ加減 が面白かったので Squeak Smalltalk でも書いて試してみました。Smalltalk の Bag というのは C++ でいうところの multiset です(逆ですが^^;)。 | hist cards | hist := Bag new. cards := 1 to: 10. 1000 timesRepeat: [ | pla…

“Buzzになる数字をn個挙げる”をSmalltalkで

ときどきの雑記帖 2012 経由 “Buzzになる数字をn個挙げる”をScalaで - 裏紙 Buzzになる数字をn個挙げる - 日々常々 を Squeak Smalltalk で書いてみる。 | fizzbuzz buzzgen | fizzbuzz := [:n | | str | str := ''. (n isDivisibleBy: 3) ifTrue: [str := s…

Squeak Smalltalk でライフゲーム

Smalltalk を書くのは誰だろうw / Coderetreat in Drecom powered by AgileShibuya on Zusaar zusaar.com/event/269004 @zusaarさんから— Yuji(秒読み)さん (@yujiorama) 4月 21, 2012 クレジットカード現金化詐欺【業界人が教える口コミ情報】 ―というの…