1
整数の配列を左右にシフトする必要があるとします。Scalaで配列と行列をシフトする方法
val shl : Array[Int] => Array[Int] = a => (a drop 1) :+ 0
val shr : Array[Int] => Array[Int] = a => 0 +: (a dropRight 1)
も、私は今、私はshl
とshr
を一般化したい
val shlm: Array[Array[Int]] => Array[Array[Int]] = _ map shl
val shrm: Array[Array[Int]] => Array[Array[Int]] = _ map shr
上下
val zeros: Int => Array[Int] = n => Array.fill(n)(0)
val shum: Array[Array[Int]] => Array[Array[Int]] = m => (m drop 1) :+ zeros(m.length)
val shdm: Array[Array[Int]] => Array[Array[Int]] = m => zeros(m.length) +: (m dropRight 1)
を左右する整数の行列をシフトする必要があるとし行列を上下にシフトするためにそれらを再利用する。あなたはどうしますか?
ありがとうございます。 'ClassTag'は実行時リフレクションを意味しますか? – Michael
はい、Scalaランタイムライブラリには、配列を構築するための具象クラスに関する情報が必要です(http://stackoverflow.com/questions/16921168/scala-generic-method-no-classtag-available-for-tへの回答を参照) 。 – devkat
ああ、そうだね... 'Array'の代わりに別のクラスを使うと、この問題を実行時リフレクションなしで解決できますか? – Michael