ScalaでVerticalCode
とりあえず作った
import scala.collection.mutable.BitSet class VerticalCode(nums:Array[Int]) { val length = 32 var data = Array[BitSet]() this.insertNums(nums) def insertNums(nums:Array[Int]) = { for (i <- 0 until nums.length) { val diff = if (i > 0) nums(i) - nums(i-1) else nums(i) if (diff > -1) this.insertNum(diff, i) } } def insertNum(num:Int, index:Int) = { val binary = num.toBinaryString val diff = binary.length - this.data.length for (i <- 0 until diff) this.data = this.data :+ BitSet() for (digit <- binary.length to 1 by -1) { if (binary(digit - 1).toString.toInt == 1) this.data(this.data.length - digit) += index } } def dump() { this.data.foreach { bitset => var line = "" for (i <- 0 until this.length) line += (if(bitset(i)) "1" else "0") println(line) } } } object TryVerticalCode { def main(args:Array[String]) { val vc = new VerticalCode(Array(0,1,2,4)) vc.dump() } }