Scala

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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。