勉強会用くじ引きスクリプト

scala勉強会で、今回から、席をくじ引きで決めようという話が出ていたのでとりあえずつくってみた。

// randomが本当にrandomかどうかが微妙。時刻とかを関連させて、ちゃんとrandomな数生成したほうがいいだろうか?
// めんどくさいのでSourceは閉じませんw

val 座れる人数 = 11

val str = scala.io.Source.fromURL("""http://api.atnd.org/events/users/?event_id=9889""").mkString

val usersNodeSeq = scala.xml.XML.loadString(str) \\ "nickname"

val users = usersNodeSeq.map{ _ . text }

val 座れる人 = new collection.mutable.HashSet[String]

while( 座れる人.size < 座れる人数 ){

  座れる人 += users(scala.math.random * users.size toInt)

}

座れる人 foreach println

追記

twitterでつぶやいたら、即座に反応きて、util.Randomってものを知り、それでつくってみる。
10行以内だぜ!(`・ω・´)
(読み易くはないが、そんなこと使い捨てのプログラムなんだから知らんw)

っていうかC#も同じくらい完結にかけるんですね

val 座れる人数 = 11

val str = scala.io.Source.fromURL("""http://api.atnd.org/events/users/?event_id=9889""").mkString

val usersNodeSeq = scala.xml.XML.loadString(str) \\ "nickname"

val users = usersNodeSeq.map{ _ . text }

util.Random.shuffle(users) take 座れる人数 foreach println

おまけ

意味もなく1行(というか1つの式)にしてみる。

util.Random.shuffle( xml.XML.loadString( io.Source.fromURL("""http://api.atnd.org/events/users/?event_id=9889""").mkString) \\ "nickname" map { _ . text } ) take 11 foreach println