progs/pow.scala
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 03 Oct 2025 10:10:33 +0100
changeset 997 a4212e8bdcad
parent 964 d3e22099963d
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
964
d3e22099963d updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 882
diff changeset
     1
365
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     2
def concat(A: Set[String], B: Set[String]) : Set[String] =
564
638663141103 updated
Christian Urban <urbanc@in.tum.de>
parents: 525
diff changeset
     3
  for (x <- A ; y <- B) yield x ++ y
365
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     4
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     5
def pow(A: Set[String], n: Int) : Set[String] = n match {
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
  case 0 => Set("")
882
ccb28148bdf3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 801
diff changeset
     7
  case n => concat(A, pow(A, n - 1))
365
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     8
}
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     9
650
b34efa58f7d5 updated
Christian Urban <urbanc@in.tum.de>
parents: 638
diff changeset
    10
b34efa58f7d5 updated
Christian Urban <urbanc@in.tum.de>
parents: 638
diff changeset
    11
365
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
val A = Set("a", "b", "c", "d")
9b71dead1219 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    13
val B = Set("a", "b", "c", "")
964
d3e22099963d updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 882
diff changeset
    14
pow(A, 4).size
d3e22099963d updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 882
diff changeset
    15
pow(B, 4).size
577
1d6043a87a3e updated
Christian Urban <urbanc@in.tum.de>
parents: 572
diff changeset
    16
1d6043a87a3e updated
Christian Urban <urbanc@in.tum.de>
parents: 572
diff changeset
    17