15分
http://ameblo.jp/programming/entry-10001212615.html
via
15 分のもやってみた - kozima の日記 - cadr group
データが扱える人を探せ! - 象徴ヶ淵
LINQのチュートリアル問題みたいな。
今度はsplitの書き直し含めて時間以内になんとか。
def(String.split)^(sep): if (sep == ""): .to_list() else: s := .istring() let(rec)^(&opt l, w=""): aif(s.readc()): if (it == sep): rec([w | l], "") else: rec(l, w+it) else: [w | l].reverse() def(whoCanSee)^(users, abilities, data): iota(users.length()).map^(i){ abilities[i].split(" ").filter^(a){a==data} && [users[i]] }.concat() whoCanSee(["kathy", "john", "dan", "steve", "cheryl", "tony"], ["users data", "data orders", "users permissions", "system users controls", "default", "admin users"], "users") # => ["kathy", "dan", "steve", "tony"]
やっぱり余計なconsing多いけどキニシナイ