Scalaでクイックソート
def qsort(a:List[Int]):List[Int] = a match{
case Nil => Nil
case x :: xs => {
val smaller = xs.filter(_ <= x)
val larger = xs.filter(_ > x)
qsort(smaller) ::: (x :: qsort(larger))
}
}
乱数を生成してソート
qsort((for (i <- 1 to 100) yield scala.util.Random.nextInt(100)) toList)
標準関数でソート
List(1,5,7,2,10,4) sortWith(_<_)
ランダムな文字列
(for (i<-1 to 10) yield scala.util.Random.nextPrintableChar) mkString
バイト配列を作成してfloatの値などを書き込む
import java.nio.{ByteBuffer,ByteOrder}
val ba = new Array[Byte](100)
val wb = ByteBuffer.wrap(ba)
wb.order(ByteOrder.LITTLE_ENDIAN)
wb.putFloat(3.1415F)
wb.putInt(1)
ファイルにfloatの値を書き込む
import java.io._
val f = new FileOutputStream("testfile")
val d = new DataOutputStram(f)
d.writeFloat(3.1415F)
d.close
ファイルからfloatの値を読み込む
import java.io._
val f = new FileInputStream("testfile")
val d = new DataInputStream(f)
val data = d2.readFloat
ファイルをすべて読み込みバイト配列に収容
import java.io._
val f = new FileInputStream("samplefile.v")
val bytes = new Array[Byte](f.available) //f.availableはファイルサイズを返す。
new BufferedInputStream(f).read(bytes)
f.close
バイト配列からファイルを作成
import java.io._
val a = Array[Byte](1,3,5,7,9)
val f = new FileOutputStream("testfile.bin")
f.write(a)
f.close
floatの値を等価のint(4バイト)に変換、またその逆
import java.lang._
val i = Float.floatToIntBits(3.1415F)
val f = Float.intBitsToFloat(i)
親配列[Byte]の位置nからの順列が、子配列[Byte]と一致するかどうかを調べる。
def commonSeq2(p:Array[Byte], c:Array[Byte], n:Int) = (0 to c.length-1) forall(i => p(n+i) == c(i))
素数かどうかの判定
def isPrime(i:Int) = i match {
case 1 => false
case 2 => true
case _ => (2 to math.sqrt(i).toInt+1).forall(i % _ != 0)
}
1から1000までの素数を求める
(1 to 1000) filter(isPrime)
16進数表示
printf("%02x",255)
時刻を表す文字列をparseする
import java.text.SimpleDateFormat
val df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
println(df.parse("2011/06/20 15:24:59"))
最終更新:2011年06月20日 15:26