開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Scala (プログラミング言語)
Learning Scala: Practical Functional Programming for the JVM (Jason Swartz (著)、O'Reilly Media)のPart Ⅰ. (Core Scala)、Chapter 6.(Common Collections)、Exercises 3.(No. 2464)を解いてみる。
その他参考書籍
Exercises 3.(No. 2464)
コード(Emacs)
#!/usr/bin/env scala-2.11
def first[A](items: List[A], count: Int): List[A] = items take count
def firstWithForLoop[A](items: List[A], count: Int): List[A] = {
(for (i <- 0 until count) yield items(i)).toList
}
def firstWithFoldLeft[A](items: List[A], count: Int): List[A] = {
items.foldLeft(Nil: List[A]) {
(a: List[A], i: A) => if (a.size >= count) a else i::a
}.reverse
}
def firstWithHeadAndTail[A](items: List[A], count:Int): List[A] = {
if (count == 0) Nil
else items.head :: firstWithHeadAndTail(items.tail, count - 1)
}
val l = List('a', 't', 'o')
val n = 2
println(first(l, 2))
println(firstWithForLoop(l, 2))
println(firstWithFoldLeft(l, 2))
println(firstWithHeadAndTail(l, 2))
入出力結果(Terminal, REPL(Read, Eval, Print, Loop))
$ ./sample3.scala List(a, t) List(a, t) List(a, t) List(a, t) $
0 コメント:
コメントを投稿