<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/groupwork/">
    <title>groupwork @ ウィキ</title>
    <link>http://w.atwiki.jp/groupwork/</link>
    <atom:link href="https://w.atwiki.jp/groupwork/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>groupwork @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-01-23T14:23:04+09:00</dc:date>
    <utime>1295760184</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/24.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/groupwork/pages/15.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/24.html">
    <title>フレーム</title>
    <link>https://w.atwiki.jp/groupwork/pages/24.html</link>
    <description>
      -ソフトウェアフレーム
--ソフト名→str
--ソフトID→str→IDでインスタンス作るからスロットではない
--ベクターのページのURL→str
--ダウンロードURLの直リン→str
--検索用キーワード集→str
--簡単な説明→str
--詳細説明→str
--画像→jpgのファイル名だからstr
--対応OS→Str？OSフレーム？
--カテゴリー→str?カテゴリフレーム？
--フリー、シェアなどソフトの種類→str?種類フレーム？
--作者→作者フレーム
--ユーザー評価値→int
--評価ユーザー数→int
--ユーザーコメント→コメントフレーム
--バージョン　ｓｔｒ？（ダウンロードページにある）
--サイズ　いんｔ（ダウンロードページにある）
--インスコされたか否か（これは正規表現とは関係ないけど）

OSフレームは作らなくてSTRで十分良いかな
-カテゴリフレーム
--親カテゴリ
--子カテゴリ
インスタンス用に自分のカテゴリ名

-作者フレーム
--作者名→str
--作者ハンドル→str
--作者ID→str→インスタンス用
--作者HP→str
--作品→ソフトウェアフレームが入る

-コメント詳細フレーム
--ヘッダ（ナンバー、日付、ハンドルネーム）→str→インスタンス用→おそらくユニークだろう・・・完全ではないが
--soft-ID　どのソフトウェアのコメントか
--タイトル→str
--ボディ→str    </description>
    <dc:date>2011-01-23T14:23:04+09:00</dc:date>
    <utime>1295760184</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/23.html">
    <title>最新版</title>
    <link>https://w.atwiki.jp/groupwork/pages/23.html</link>
    <description>
      16日15時
planner→こーへーのフォルダから　647行目にエラー、文の最後にtaticっていう意味不明な文字が書いてあったのでそれを消した
　　　→確認したところ直樹があっぷしたplannerの変更部分は適応済み
ぐい→こーへーのフォルダから。（なべちゃんがアップしたGui2をplannerと合体するように改訂したやつ）
pぐら→最新
ぶろっく→[[課題8]]にあっぷしてあったやつから    </description>
    <dc:date>2010-12-16T15:20:36+09:00</dc:date>
    <utime>1292480436</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/22.html">
    <title>課題9</title>
    <link>https://w.atwiki.jp/groupwork/pages/22.html</link>
    <description>
      ***[課題9]
独自仕様を考案して実装せよ． 

-LEX,MEA仕様の競合戦略解消プログラム作成中…
-でも精度悪い
----
-- オペレータをファイル読み込み出来るメソッド作成  -- こーへ  (2010-12-06 23:51:57)
-- initOperatorsメソッドを以下のように変更
-- ここではoperatorsとOperatorクラスのIF,ADD,DELETEはVectorからArrayListに変更している

/* 
  * ファイルからオペレータを読み込むメソッド
  * ファイルの書き方の例は
  *
  * NAME	RULE
  * IF		pattern1
  * 		patten2
  * ADD	addition
  * DELETE	remove
  * 
  * @param	ファイル名
  * @ret	読み込み成功時は0,Exception時は-1,読み込み途中で失敗した場合は途中までの行数
 */
 private int initOperators(String filename) {
  operators = new ArrayList&lt;Operator&gt;();
  try{
  BufferedReader bf = new BufferedReader(new FileReader(filename));
  
  String line = bf.readLine();
  int errorLine = 1;
  //System.out.println(errorLine +&quot;:&quot;+line);
  while(true) {
	  if(line == null){
		  return errorLine;
	  }
	  String name = null;
	  ArrayList&lt;String&gt; theIfList = new ArrayList&lt;String&gt;();
	  ArrayList&lt;String&gt; theAddList = new ArrayList&lt;String&gt;();
	  ArrayList&lt;String&gt; theDeleteList = new ArrayList&lt;String&gt;();
    </description>
    <dc:date>2010-12-07T01:05:41+09:00</dc:date>
    <utime>1291651541</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/21.html">
    <title>課題8</title>
    <link>https://w.atwiki.jp/groupwork/pages/21.html</link>
    <description>
      ***[課題8]
三角形の上には四角形を乗せることができないという制約を扱えるようにせよ．

-ソースは課題8の下に貼っときます。
-ブロックの色や形（以下要素）は具体化に縛りが付いた制限付き変数（その要素を持ったブロックでしか具体化されないだけで他は?xとかと一緒）として扱ってるので、オペレーターのリストの?yをsquareに変えるだけで行けました。
-ただ、var2メソッドと、BlockOp.isHaveメソッド、Unifier.tokenMatchingメソッドが間違ってたから動かなかった。

変数はrenameメソッドでリネームされるので、square5とかになるんだけど、変数かどうか判定するvar2メソッドが、ブロックの要素と完全一致しないと変数と判定しない仕様になってました。
var2メソッドを以下に変更
	boolean var2(String str1) {
		// ブロックの要素（色、形）なら変数
		//return BlockOp.elements.contains(str1);
		Iterator ite = BlockOp.elements.iterator();
		while(ite.hasNext()) {
			if(str1.startsWith((String) ite.next())) {
				return true;
			}
		}
		return false;
	}
同様の理由でBlock.isHaveメソッドを以下に変更
	boolean isHave(String element) {
		if(element.startsWith(this.name) || element.startsWith(this.color) 
				|| element.startsWith(this.shape)){
			return true;
		}
		return false;
	}

Unifier.tokenMatchingメソッドは、(var2,var2),(var,var2)(var2,var)の組に対応してなかった。この場合は何か知らんけどvarMatchingに投げとけば動くので、
	boolean tokenMatching(String     </description>
    <dc:date>2010-12-16T14:34:31+09:00</dc:date>
    <utime>1292477671</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/20.html">
    <title>課題7</title>
    <link>https://w.atwiki.jp/groupwork/pages/20.html</link>
    <description>
      ***[課題7]
初期状態と目標状態(ゴール)をテキストファイルで編集できるようにせよ．

----
- GUI上で目標と初期状態のtxt読み込めるようにしといた  -- たーけ  (2010-12-13 00:25:36)
#comment    </description>
    <dc:date>2010-12-13T00:25:36+09:00</dc:date>
    <utime>1292167536</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/19.html">
    <title>課題6</title>
    <link>https://w.atwiki.jp/groupwork/pages/19.html</link>
    <description>
      ***[課題6]
ブロックが操作される様子をGUIで表示せよ．

AWT(java.awt)のコンポーネントを自作するときはpaint()を直接オーバライドしますが、Swingのコンポーネント (JComponentの子孫)ではpaintComponent()をオーバライドします。Swingでは、paint()が３つのメソッド (paintBorder(), paintComponent(), paintChildren())を呼び出すからです。
引数のないrepaint()はpaint()を呼び出し、そしてpaint()がpaintComponent()を呼び出します。

あっはっは

**何かがおかしい
[[課題8]]適用後、挙動がおかしくなった。プランナーはPlace返してるのに、put on tableする。
具体的には、
スタート状態
ontable B
ontable A
clear B
clear A
handEmpty

ゴール状態
A on B
で
***** This is a plan! *****
pick up A from the table
Place A on B

て返ってくるけど、Aを持ちあげて、そいつを何故か床に置いちまうんだわこれがorz
よくわからんので、任せた！
変更前は問題なかった…よな？（なおき

----
- 結果を受け取って→表示でおｋ？  -- ｍｔ  (2010-12-08 11:11:23)
- とりあえずそれで  -- ko  (2010-12-08 17:49:26)
#comment    </description>
    <dc:date>2010-12-16T12:08:07+09:00</dc:date>
    <utime>1292468887</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/18.html">
    <title>課題5</title>
    <link>https://w.atwiki.jp/groupwork/pages/18.html</link>
    <description>
      ***[課題5]
グループでスムーズに開発を進めるためには，役割分担，進捗状況の管理，情報共有などが必要になる．このとき，何に気をつけるべきか，必要なことは何かを，グループ作成書類Grep6で考察せよ．

----
- 全員が数行分くらい考えてここに書く  -- こーへ  (2010-12-07 00:18:03)
- んで、だれか担当決めてまとめる  -- こーへ  (2010-12-07 00:18:23)
- 役割分担　 話し合い 個々の能力を把握し、適材適所 極端に負担を偏らせない 途中でも臨機応変に仕事を分担 助け合い 自分の強み、弱みを客観的に把握しておくことが重要、構成員に伝えておく    進捗状況の管理 全体を管理する人間を決め、極端な遅れがあれば支援させる。 大きな問題を発見した際や、行き詰まった時には相談。 各課題ごとに話し合う機会をもうける。    情報共有 Wikiなどを利用し、情報を一カ所に集めておく。 必要な機能として、全員に編集可、どこからでも閲覧可等 作成したものを置く場所を決めておく。 新しく情報が追加された際や、情報の変更、更新があった場合の通知  -- そらうみ  (2010-12-13 14:20:21)
- 見にくくなったー  -- そらうみ  (2010-12-13 14:21:03)
- なんかあったら箇条書きでもなんでもいいから書いてくれ　文章にまとめるから  -- そらうみ  (2010-12-13 14:21:48)
- 与えられた問題にたいする多視点から得られる解決策を話し合い、改善していくことが重要。ここで言う多視点とは各個人の能力の違いにおいてあらわれてくる価値観の違いとも見ることができる（ｂｙ　打矢さん）  -- こーへ  (2010-12-15 20:58:22)
#comment    </description>
    <dc:date>2010-12-15T20:58:22+09:00</dc:date>
    <utime>1292414302</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/17.html">
    <title>課題4</title>
    <link>https://w.atwiki.jp/groupwork/pages/17.html</link>
    <description>
      ***[課題4]
教科書のプログラムでは，ブロックの色や形を考えていないので、色と形を扱えるようにせよ。具体的には，Aが赤で三角形，Bが青で四角形，Cが黄で四角形とし，色と形を使ってゴールを指定できるようにせよ. 例えば，&quot;red on blue&quot; や&quot;square on blue&quot;のように．

-Blockの名前、色、形を構造体みたいにして持てばいいだけじゃないの？ってことで試してみる（なおき
-とりあえずBlockクラスはそれっぽくできてる。blue on redみたいな文からblueとredがブロックだっていう判定まではできた。（なおき
-色とか形を名前に置き換えるところを作成中（なおき

-Blockクラスをちょい変えた。あとBlockについてごにょごにょするBlockOpクラスを増やしてみた。
-BlockOpクラスにブロックのlist作らない方がいいかもしれないからその辺はまた考える。

-Block.javaはブロックを定義するBlockクラスとブロックの追加とかインデックス調べたりするBlockOpクラスからなる
import java.util.HashSet;
import java.util.ArrayList;

class Block {
	String name = new String();
	String color = new String();
	String shape = new String();

	Block(String initName, String initColor, String initShape) {
		this.name = initName;
		this.color = initColor;
		this.shape = initShape;

	}

	boolean isHave(String element) {
		if (this.name.equals(element) || this.color.equals(element)
				|| this.shape.equals(element)) {
			return true;
		}
		return false;
	}

}

class BlockOp     </description>
    <dc:date>2010-12-12T20:39:14+09:00</dc:date>
    <utime>1292153954</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/16.html">
    <title>課題3</title>
    <link>https://w.atwiki.jp/groupwork/pages/16.html</link>
    <description>
      ***[課題3]
教科書のプログラムでは，最初にinitGoalListメソッドで&quot;B on C&quot;, &quot;A on B&quot; というゴール文字列を与えている．これを，ユーザが何らかの方法で入力して指定できるように変更せよ．

-完成済み
課題６につなげつつ改良するからここにかくと情報遅くなりそう
方針だけ
-mainでGui呼び出し
-startでゴールを初期化するメソッドを呼び出すところをGui用に作ったメソッドで初期化するように変更
-Gui.java
[[最新版]]は俺のフォルダからもらってくれ

----
#comment    </description>
    <dc:date>2010-12-08T11:07:01+09:00</dc:date>
    <utime>1291774021</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/groupwork/pages/15.html">
    <title>課題2</title>
    <link>https://w.atwiki.jp/groupwork/pages/15.html</link>
    <description>
      ***[課題2]
教科書のプログラムでは，オペレータ間の競合解消戦略としてランダムなオペレータ選択を採用している．これを，あらかじめオペレータに優先度を付けておき，優先度が高いものから適用するような競合解消戦略に変更せよ．

-オペレータをキューに入れてクルクル回せばループしないし、いいんじゃないでしょーか
-つーことで作ってみます。
----
- それいいやん  -- mt  (2010-12-06 09:14:59)
- でも２回連続でリムーブしなきゃいかんとき、リムーブ→ピックアップ→リムーブ→ピックアップ　とかのループにならんかな？  -- mt  (2010-12-06 09:15:51)
----
- たぶんなるけど、そのループを解消すんのはむずそうだな  -- こーへ  (2010-12-06 23:49:10)
- 一回使ったインスタンシエーションを使わなくするor優先度を下げるなどでなんとかなるかも…  -- こーへ  (2010-12-06 23:50:01)

----
- 競合自体を起こさなくするためのゴールリストのソートアルゴリズム　--　こーへ
- 説明は長くなるから、ソースだけ。聞きたいことあったら聞いてちょん  -- こーへ  (2010-12-15 21:02:49)

/*
  * ゴールリストをプランニングしやすい順番にならべかえるメソッド
  * 
  * @param	ゴールリストを表すArrayList&lt;String&gt; goalList
  */
 public void sortGoals(ArrayList&lt;String&gt; goalList){
	 /*
	  * step 1
	  *
	  *それぞれのゴール要素をADDリストに持つオペレータを1つずつ決定する
	  */
	 ArrayList&lt;Operator&gt; theOperators = new ArrayList&lt;Operator&gt;();
	 HashMap&lt;Operator,String&gt; operatorsMap = new HashMap&lt;Operator,String&gt;();
	 for(int i = 0; i &lt; goalList.size(); ++i){
		 ArrayList&lt;    </description>
    <dc:date>2010-12-15T22:00:09+09:00</dc:date>
    <utime>1292418009</utime>
  </item>
  </rdf:RDF>
