2005-05-05 18:05:01

JAVA5.0でGO!!

テーマ:ブログ

「おれSTRUTS使ってWEBアプリつくれる」



とかそんなのはできて当たり前のことである。



部品を決まったとうりに組み立てていくだけだからである。


けど、ここでは部品をつかって自分の頭で考えて作っていかなければならない。

 

自信があるなら実際にやってみよう。そんなに時間はかからないはずだ。



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
難易度 超簡単 目標時間 15分


あなたには3つの文字列の配列があたえられます。

一つ目の配列はユーザー名の配列。


{"usrA","usrB","usrC"}


2つ目の配列はそのユーザーが扱うことのできるデータの文字列の入った配列。扱うことの
できるデータが2個以上ある場合はデータがスペースで区切られています。


{"data1 data3","data2 data4","data3 data5 data6"}


3つ目の配列はデータの配列が入っています。


{"data1"}


あなたは3つ目の配列のなかにあるデータをすべて扱うことのできるユーザを探さなければなりません。


上の例の場合: usrA



クラス名:
ReportAccess

メソッド名:
whoCanSee

引数タイプ:
String[], String[], String[]

リターン:
String[]

メソッド:
String[] whoCanSee(String[] userNames, String[] allowedData, String[] reportData)

定義

1.ユーザーの名前は1から50個までの文字で構成される。
2.ユーザーの名前は1から50、もしくは 'a'から'z'の文字で構成される。
3.allowDataにはユーザーの名前と同じ文字列が含まれるかもしれない。
4.allowDataは'a'から'z'や' 'で構成される文字列である。
5.reportDataは1から50、もしくは'a'から'z'の文字で構成される。


例1)

{"joe", "nick", "ted"}
{"clients products", "products orders", "clients orders"}
{"clients", "products"}

Returns: {"joe" }


例2)

{"kathy", "john", "dan", "steve", "cheryl", "tony"}
{"users data", "data orders", "users permissions", "system users controls", "default", "admin users"}
{"users"}

Returns: {"dan", "kathy", "steve", "tony" }


例3)

{"jim", "scott", "barbara"}
{"users order products", "products shipping", "tracking products orders"}
{"admin"}

Returns: { }

注)この問題はTOPCODER INCが出題していたものをおれが適当に訳したものです。
  著作権はTOPCODER INCにあります。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>














今日はGENERICをつかってみた。


import java.util.ArrayList;
import java.util.LinkedList; import java.util.TreeMap;

public class ReportAccess {   public String[] whoCanSee(String[] user,String[] data, String[] report){    TreeMap<String,LinkedList<String>> m = new TreeMap<String,LinkedList<String>>();    int index = 0;    for(String usrdata: data){     String[] d = usrdata.split(" ");     LinkedList<String> l = new LinkedList<String>();     for(String eachdata: d){      l.add(eachdata);     }     m.put(user[index++],l);    }    ArrayList<String> list = new ArrayList<String>();    for(String usrName: m.keySet()){     LinkedList datalist = (LinkedList)m.get(usrName);     boolean hasAlldata = true;     for(String r: report){      if (!datalist.contains(r)){       hasAlldata = false;       break;      }     }     if (hasAlldata) list.add(usrName);    }    String[] namelist = new String[list.size()];    list.toArray(namelist);    return namelist;   }

}

AD
いいね!した人  |  コメント(5)  |  リブログ(0)

programmingさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

5 ■Scalaで

class ReportAccess {
type AS = Array[String]
def whoCanSee(user: AS, allowed: AS, report: AS) =
allowed.map(_.split(" ")).zip(user).filter(report.toSet subsetOf _._1.toSet).map(_._2)
}

4 ■groovyで

class ReportAccess{

def whoCanSee(userNames, allowedData, reportData){
assert userNames.size() == allowedData.size()

def users = []
for( def i in 0..<userNames.size() ){
users << [userName:userNames[i], allowedData:allowedData[i].tokenize()]
}

users.findAll{ it.allowedData.containsAll(reportData) }.userName
}
}

new ReportAccess().with{
assert whoCanSee(
["joe", "nick", "ted"],
["clients products", "products orders", "clients orders"],
["clients", "products"]
) == ["joe"]

assert whoCanSee(
["kathy", "john", "dan", "steve", "cheryl", "tony"],
["users data", "data orders", "users permissions", "system users controls", "default", "admin users"],
["users"],
).sort() == ["dan", "kathy", "steve", "tony" ].sort()

}

3 ■アダルト

アダルトサークルをご紹介!素敵なきっかけ探し!アダルト好きな方にはお薦め

2 ■アダルト

アダルトな一時を楽しめる…素敵なアダルトライフを求める女性様より朗報です。

1 ■アダルトな時間には優雅な楽しみがあるのです

アダルト

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。