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

読者への課題:state パターンの適用

《課題》〈GoF〉State パターンを適用したものを作成してください。□ 3つの状態 comb/black/white を遷移します。 《Previous|4/24|Next》

第7章 オセロゲーム(trinity/hexagon)3/24, IronPython

《Previous|3/24|Next》 C#.use(better, IronPython=”WPF”) 《記事一覧》

何が問題にならないか

ここで注目して欲しいのは、既存のモジュール(オリジナルの仕様に準拠した Swing/Jython 版)と(変数名の違いを除いて)まったく同じ記述になっていることです。これは、要求仕様の変更に対して、既存のモジュールを変更する必要がなく、制約を受けない自…

テトリミノ:石の配置

既存のモジュール hexagon.py を再利用しながら、新たなモジュールの動作を検証するために、テストケースを作成します。 class Omino(object): def _shape(self, x, y, phase): self.phase = self._rotate1(phase) s = [] for n in self.mino1: s.append(Pol…

テトリミノ:石の回転

内周だけを回転させる場合と、外周とともに回転させる場合とで、分割統治が可能です。これによって、開放閉鎖原則に沿った記述が可能になります。 class Omino(object): def rotateClockwise(self): self.phase = self._rotate1(1) for e, n in zip(self.sha…

要求仕様の変更:テトリミノの回転

テトリミノの回転を実現するのに必要なオフセットを、次のように設定します。 内周/外周ともに、時計回りにオフセットを設定します。60度で回転するごとに、内周 mino1 は1つずつ、外周 mino2 は2つずつ、それぞれのオフセット値を進めます。 《Note》 オ…

第7章 テトリス(Hexagon)4/36, IronPython

《Previous|4/36|Next》 C#.use(better, IronPython=”WPF”) 《記事一覧》

《付録》exHoneyComb.py

# -*- coding: utf-8 -*- #=============================================================================== # Copyright (C) 2000-2008, 小泉ひよ子とタマゴ倶楽部 # # Change History: WPF examples # 2008/01/25, IronPython 1.1.1 (download) # 2008/…

状況設定

ここでは、Swing/Java で構築された既存のシステムを、WPF/C# で再構築するとともに、新機能を追加するような状況を想定しています。この課題では、既存のリソースとして、Swing/Jython で作成された、オリジナル版のゲームがあるものとします。要求仕様の変…

テストケース1:ゲームの初期設定

テストケースを起動すると、ウィンドウが開きます。先手/後手(黒/白)のコマが、各3つずつ提示されます。 オセロゲーム(trinity)を作成する過程で得られた、副産物です。この課題(hexagon)では、次の課題(trinity)への伏線を張り巡らせています。先…

第7章 オセロゲーム(trinity/hexagon)2/24, IronPython

《Previous|2/24|Next》 C#.use(better, IronPython=”WPF”) 《記事一覧》

IT

↑TOP ↑ I ♪ dict.items → dict 5. Built-in Types — Python v3.1.5 documentation ¶ dict.items Python.use(better) 2002-03-04 Python.use(better) #組み込み型 -- dict.items 2002-04-08 Python.use(better) 課題:ヒストグラム 2009-03-20 実録 はじめて…

IN

↑TOP ↑ I ↑IN ♪ list.index → list 5. Built-in Types — Python v3.1.5 documentation ¶ index() Python.use(better) 2002-02-15 Python.use(better) #list: step09 -- def __getitem__(self, key) 2002-01-17 Python.use(better) #組み込み型 -- list.index…

I

↑ TOP ↑ I. |IN|IT| ♪ import 7. Simple statements — Python 3.7.3 documentation ¶ 6.11. The import statement Java の素描 #2007-01-15 #010: リファクタリング:モジュールを利用する Python.use(better) #2002-01-01 #関数オブジェクト #2002-07-23…

IS

↑TOP ↑ I ♪ str.isalpha 5. Built-in Types — Python v3.1.5 documentation ¶ str.isalpha 2002-05-16 Python.use(better) 特殊メソッド __setattr__ 実録《12》データ構造(2)辞書《Python3.1》 - 続・ひよ子のきもち〈第3版〉 ♪ isinstance 2. Built-in …

某銀行システムと Python 3.0 の隘路(後篇)

年末を控えて「自宅の大掃除/職場の棚卸」といったところでしょうか。これを機に旧い資料は処分しようと中を覗いてみると、思わぬ再発見をすることがあります。引越の荷造りの最中にも、古い書籍や雑誌などに目を通し始めると、つい読み耽って作業が滞ったり…

Oh 脳《91》某銀行システムと Python 3.0 の隘路(後篇)

《Previous|2/2|Next》 Oh 脳: after ZERO《記事一覧》 《其之玖拾壱》某銀行システムと Python 3.0 の隘路(後篇)

読者への課題:set

さらにその理解を深めるために、読者のみなさんへの課題を提供します。 《課題1》union:(要素が重複しない)2つのリストを与えたときに、その和集合が得られるように、次の関数を定義してください。 >>> s1 = list("AB"); s1 ['A', 'B'] >>> s2 = list("…

《関連記事》

VDM++ 形式手法への誘い:Jython 篇 VDM++《3》Set に対する演算(1) - 続・ひよ子のきもち VDM++《4》Set に対する操作(2) - 続・ひよ子のきもち VDM++《5》Set に対する操作(3) - 続・ひよ子のきもち

《こちらに移動中です》

《Previous|5/5|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》

ソースコード:ISet.PrivFreeze()

メソッド ISet.PrivFreeze の定義を含む、ソースコードの断片を次に示します。 internal interface ISet : IEnumerable { void PrivFreeze();インターフェース ISet を実現するクラス(SetCollection/FrozenSetCollection)では、メソッド PrivFreeze を実現…

《こちらに移動中です》

《Previous|4/5|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》

ソースコード:SetHelpers.MakeSet(object, ISet)

静的メソッド MakeSet の定義を含む、ソースコードの断片を次に示します。 public static ISet MakeSet(object setObj, ISet set) { Type t = setObj.GetType(); if (t == typeof(SetCollection)) { return new SetCollection(set); } else if (t == typeof(…

クラス:SetHelpers

次に示す静的メソッド本体に共通する、次のような構造が見えてきます。 ISet set = SetHelpers.MakeSet(x, x); ... set.PrivFreeze(); return set;インターフェース ISet の規定に従う、インスタンス set を生成して、これをリターン値します。このとき、可…

《こちらに移動中です》

《Previous|3/5|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》

ソースコード:SetHelpers.Union(ISet, object)

# IronPython-1.1.2/Src/IronPython/Runtime/Set.cs static class SetHelpers { ... public static ISet Union(ISet x, object y) { ISet set = SetHelpers.MakeSet(x, x); IEnumerator ie = Ops.GetEnumerator(y); while (ie.MoveNext()) { set.PrivAdd(ie.…

ソースコード:SetCollection.Union(object)

(メソッド set.union に相当する)メソッド Union の定義を含む、ソースコードの断片を次に示します。他のメソッド intersection/difference/symmetric_difference についても、同様です。 # IronPython-1.1.2/Src/IronPython/Runtime/Set.cs public class …

《こちらに移動中です》

《Previous|2/5|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》

メソッド set.symmetric_difference

メソッド set.symmetric_difference のヘルプ情報を確認します。 >>> help(set.symmetric_difference) Help on method_descriptor:symmetric_difference(...) Return the symmetric difference of two sets as a new set. (i.e. all elements that are in ex…

メソッド set.difference

メソッド set.difference のヘルプ情報を確認します。 >>> help(set.difference) Help on method_descriptor:difference(...) Return the difference of two sets as a new set. (i.e. all elements that are in this set but not the other.)これを見て、2…