def combinations
[T
](k
: Int, list
: List
[T
]) : List
[List
[T
]] = { |
if (k
<= 0 || k
> list.
length) { | Nil
| list.map(List(_))
| combinations(k-1, xs).map(head :: _) ::: combinations(k, xs)
| }
| }
| }
combinations: [T](Int,List[T])List[List[T]]
|
|
def isPrime
: Boolean
= { |
else !(2 to
(i-
1)).
exists(x
=> i
% x
== 0) | }
|
|
def goldbach
: Option
[List
[Int
]] = { |
val primes
= (3 to i
).
filter(x
=> S99Int
(x
).
isPrime).
toList | combinations(2, primes).find(_.foldLeft(0)((a,b) => a+b) == i)
| }
|
| }
i2S99: (Int)S99Int
scala
> def printGoldbachListLimited
(r
: Range, lowerBound
: Int
) = { | r.
foreach(i
=> i.
goldbach match { |
case Some
(List
(a,b
)) if a
> lowerBound
=> println
("%d = %d + %d".
format(i,a,b
)) | })
| }
printGoldbachListLimited: (Range,Int)Unit
scala
> def printGoldbachList
(r
: Range
) = { | printGoldbachListLimited(r, 0)
| }
printGoldbachList: (Range)Unit
ZGVmIGNvbWJpbmF0aW9uc1tUXShrOiBJbnQsIGxpc3Q6IExpc3RbVF0pIDogTGlzdFtMaXN0W1RdXSA9IHsKICAgICB8ICAgbGlzdCBtYXRjaCB7CiAgICAgfCAgICAgY2FzZSBOaWwgPT4gTmlsCiAgICAgfCAgICAgY2FzZSBoZWFkIDo6IHhzID0+CiAgICAgfCAgICAgICBpZiAoayA8PSAwIHx8IGsgPiBsaXN0Lmxlbmd0aCkgewogICAgIHwgICAgICAgICBOaWwKICAgICB8ICAgICAgIH0gZWxzZSBpZiAoayA9PSAxKSB7CiAgICAgfCAgICAgICAgIGxpc3QubWFwKExpc3QoXykpCiAgICAgfCAgICAgICB9IGVsc2UgewogICAgIHwgICAgICAgICBjb21iaW5hdGlvbnMoay0xLCB4cykubWFwKGhlYWQgOjogXykgOjo6IGNvbWJpbmF0aW9ucyhrLCB4cykKICAgICB8ICAgICAgIH0KICAgICB8ICAgfQogICAgIHwgfQpjb21iaW5hdGlvbnM6IFtUXShJbnQsTGlzdFtUXSlMaXN0W0xpc3RbVF1dCgpzY2FsYT4gY2FzZSBjbGFzcyBTOTlJbnQodmFsIGk6IEludCkgewogICAgIHwKICAgICB8ICAgZGVmIGlzUHJpbWUgOiBCb29sZWFuID0gewogICAgIHwgICAgIGlmIChpIDw9IDEpIGZhbHNlCiAgICAgfCAgICAgZWxzZSBpZiAoaSA9PSAyKSB0cnVlCiAgICAgfCAgICAgZWxzZSAhKDIgdG8gKGktMSkpLmV4aXN0cyh4ID0+IGkgJSB4ID09IDApCiAgICAgfCAgIH0KICAgICB8CiAgICAgfCAgIGRlZiBnb2xkYmFjaCA6IE9wdGlvbltMaXN0W0ludF1dID0gewogICAgIHwgICAgIHZhbCBwcmltZXMgPSAoMyB0byBpKS5maWx0ZXIoeCA9PiBTOTlJbnQoeCkuaXNQcmltZSkudG9MaXN0CiAgICAgfCAgICAgY29tYmluYXRpb25zKDIsIHByaW1lcykuZmluZChfLmZvbGRMZWZ0KDApKChhLGIpID0+IGErYikgPT0gaSkKICAgICB8ICAgfQogICAgIHwKICAgICB8IH0KZGVmaW5lZCBjbGFzcyBTOTlJbnQKCnNjYWxhPiBpbXBsaWNpdCBkZWYgaTJTOTkoaTogSW50KSA6IFM5OUludCA9IG5ldyBTOTlJbnQoaSkKaTJTOTk6IChJbnQpUzk5SW50CgpzY2FsYT4gZGVmIHByaW50R29sZGJhY2hMaXN0TGltaXRlZChyOiBSYW5nZSwgbG93ZXJCb3VuZDogSW50KSA9IHsKICAgICB8ICAgci5mb3JlYWNoKGkgPT4gaS5nb2xkYmFjaCBtYXRjaCB7CiAgICAgfCAgICAgY2FzZSBTb21lKExpc3QoYSxiKSkgaWYgYSA+IGxvd2VyQm91bmQgPT4gcHJpbnRsbigiJWQgPSAlZCArICVkIi5mb3JtYXQoaSxhLGIpKQogICAgIHwgICAgIGNhc2UgXyA9PgogICAgIHwgICB9KQogICAgIHwgfQpwcmludEdvbGRiYWNoTGlzdExpbWl0ZWQ6IChSYW5nZSxJbnQpVW5pdAoKc2NhbGE+IGRlZiBwcmludEdvbGRiYWNoTGlzdChyOiBSYW5nZSkgPSB7CiAgICAgfCAgIHByaW50R29sZGJhY2hMaXN0TGltaXRlZChyLCAwKQogICAgIHwgfQpwcmludEdvbGRiYWNoTGlzdDogKFJhbmdlKVVuaXQ=
Main.scala:1: error: expected class or object definition
def combinations[T](k: Int, list: List[T]) : List[List[T]] = {
^
Main.scala:14: error: expected class or object definition
combinations: [T](Int,List[T])List[List[T]]
^
Main.scala:16: error: expected class or object definition
scala> case class S99Int(val i: Int) {
^
Main.scala:30: error: expected class or object definition
defined class S99Int
^
Main.scala:32: error: expected class or object definition
scala> implicit def i2S99(i: Int) : S99Int = new S99Int(i)
^
Main.scala:33: error: expected class or object definition
i2S99: (Int)S99Int
^
Main.scala:35: error: expected class or object definition
scala> def printGoldbachListLimited(r: Range, lowerBound: Int) = {
^
Main.scala:41: error: expected class or object definition
printGoldbachListLimited: (Range,Int)Unit
^
Main.scala:43: error: expected class or object definition
scala> def printGoldbachList(r: Range) = {
^
Main.scala:46: error: expected class or object definition
printGoldbachList: (Range)Unit
^
10 errors found