[Scala] machの深いネストの予防方法(についての確認&練習) 投稿日時: 2012年9月16日 投稿者: tmyymmt 1 https://gist.github.com/2382341についての確認&練習。 // see https://gist.github.com/2382341 // scalaz for only solution3 import scalaz._ import Scalaz._ object SolutionForMultiNestedMatchforMyStudy { def f(num: Int): Option[Int] = { num match { case 0 => Some(1) case 1 => Some(2) case 2 => Some(3) case _ => None } } def solution1(num: Int): Int = { f(num) match { case Some(v1) => { f(v1) match { case Some(v2) => { f(v2) match { case Some(v3) => v3 case _ => -3 } } case _ => -2 } } case _ => -1 } } def solution2(num: Int): Int = { val v1 = f(num) val v2 = v1.flatMap(f) val v3 = v2.flatMap(f) (v1, v2, v3) match { case (Some(_), Some(_), Some(result)) => result case (Some(_), Some(_), None) => -3 case (Some(_), None, None) => -2 case _ => -1 } } def solution3(num: Int): Int = { f(num).toSuccess(-1).flatMap(f(_).toSuccess(-2)).flatMap(f(_).toSuccess(-3)).fold(identity, a => a) } def solution4(num: Int): Int = { (for { v1 <- f(num).toRight(-1).right v2 <- f(v1).toRight(-2).right v3 <- f(v2).toRight(-3).right } yield v3).merge } def solution5(num: Int): Int = { val v1 = f(num).getOrElse { return -1 } val v2 = f(v1).getOrElse { return -2 } f(v2).getOrElse { return -3 } } def example { (0 to 3).foreach{n => println(solution1(n))} println (0 to 3).foreach{n => println(solution2(n))} println (0 to 3).foreach{n => println(solution3(n))} println (0 to 3).foreach{n => println(solution4(n))} println (0 to 3).foreach{n => println(solution5(n))} } }
Scalaで16進数文字列とバイト列の相互変換 修正版 投稿日時: 2012年9月15日 投稿者: tmyymmt 返信 Scalaで、16進数文字列からバイト列への変換と、バイト列から16進数文字列への変換。(16進数文字列以外の入力は削除するように修正した。) object HexBytesUtil { def hex2bytes(hex: String): Array[Byte] = { hex.replaceAll("[^0-9A-Fa-f]", "").sliding(2, 2).toArray.map(Integer.parseInt(_, 16).toByte) } def bytes2hex(bytes: Array[Byte], sep: Option[String] = None): String = { sep match { case None => bytes.map("%02x".format(_)).mkString case _ => bytes.map("%02x".format(_)).mkString(sep.get) } // bytes.foreach(println) } def example { val data = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21 21" val bytes = hex2bytes(data) println(bytes2hex(bytes, Option(" "))) val data2 = "48-65-6C-6C-6F-20-57-6F-72-6C-64-21-21" val bytes2 = hex2bytes(data2) println(bytes2hex(bytes2, Option("-"))) val data3 = "48656C6C6F20576F726C642121" val bytes3 = hex2bytes(data3) println(bytes2hex(bytes3)) } }
Scalaで16進数文字列とバイト列の相互変換 投稿日時: 2012年9月14日 投稿者: tmyymmt 返信 Scalaで、16進数文字列からバイト列への変換と、バイト列から16進数文字列への変換。 object HexBytesUtil { def hex2bytes(hex: String): Array[Byte] = { if(hex.contains(" ")){ hex.split(" ").map(Integer.parseInt(_, 16).toByte) } else if(hex.contains("-")){ hex.split("-").map(Integer.parseInt(_, 16).toByte) } else { hex.sliding(2,2).toArray.map(Integer.parseInt(_, 16).toByte) } } def bytes2hex(bytes: Array[Byte], sep: Option[String] = None): String = { sep match { case None => bytes.map("%02x".format(_)).mkString case _ => bytes.map("%02x".format(_)).mkString(sep.get) } // bytes.foreach(println) } def example { val data = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21 21" val bytes = hex2bytes(data) println(bytes2hex(bytes, Option(" "))) val data2 = "48-65-6C-6C-6F-20-57-6F-72-6C-64-21-21" val bytes2 = hex2bytes(data2) println(bytes2hex(bytes2, Option("-"))) val data3 = "48656C6C6F20576F726C642121" val bytes3 = hex2bytes(data3) println(bytes2hex(bytes3)) } }
放射性物質汚染に関するリンクと、低線量地域での対策 [暫定版] 投稿日時: 2012年9月14日 投稿者: tmyymmt 1 外部被曝 基準について。1mSv/yを守るなら単純計算で約0.11μSv/h。ちなみに、腹部CT1回は約10mSv。チェルノブイリの避難区域指定は2mSv/y(約0.23μSv/h)。ウクライナは1mSv/y(約0.11μSv/h)で移住権。らしい。 新・全国の放射能情報一覧 http://new.atmc.jp/ 測ってガイガー! http://hakatte.jp/ 早川由紀夫 放射能汚染地図(七訂版) http://kipuka.blog70.fc2.com/blog-entry-535.html 要最新版をチェック 早川先生の放射能汚染地図(5訂版)の汚染状況をウクライナの避難地域指定に合わせて着色しなおし重ねたもの http://fkuoka.blog.fc2.com/blog-entry-416.html 自分の生活の行動範囲を実際に測ってみる。そして、測ってガイガー!にアップ 黒い物質 https://maps.google.co.jp/maps/ms?msid=208348429529311620996.0004be6c4d6bc326ab9b6&msa=0 南相馬の”黒い物質”「測定器自身が死んでしまうというほどの猛烈な放射線を発生する物質」小出裕章氏8/28INsideOUTジャーナリスト志葉玲さんに聞く(内容書き出し) 内部被曝 低線量地域では外部被曝より内部被曝対策が重要。政府の基準値はザル、特に子供向けとしてはNG。 食品の放射能データ検索 http://oku.edu.mie-u.ac.jp/food/ けいとうさぎ http://www.keitousagi.com/ pal system http://www.pal-system.co.jp/topics/radiation/index.html Oisix http://www.oisix.com/shop.g6–shinki–earthquake_radiation_shinki__html.htm?mi2=shinki_gNav 大地を守る会 http://www.daichi.or.jp/info/news/2011/0516_2882.html 高線量地域での対策 避難。引っ越し、転職。 低線量地域での対策 以下は、外部被曝防止。 外出後はシャワーを浴びる。たまに靴の裏を洗い流す。 外出時は雨に濡れない。放射性物質が雨で流れにくい場所には近づかない。 以下は、内部被曝防止。 外出時は常にN95以上のマスクをつける。極力粒子を肺に入れないように。 飲食料は生協など政府の基準値より厳しい検出限界値を採用している所から購入する。 放射性物質の検査の有無と検出限界値が分からない外食や給食はなるべく避け、弁当に。 TVや新聞以外、ネットなどで、放射性物質を蓄積しやすい食材に関する最新ニュースを常にチェックする。 食材についてのブログ記事を検索する。なければ、食品メーカーに電話して産地と検査態勢を聞きブログに書く。 産地偽造は多々あるようなので、産地だけを頼りに食材を買わない。