diff -r da1f8c033b8e -r 94f5cce73a4f progs/pow.scala --- a/progs/pow.scala Thu Sep 19 19:25:13 2024 +0100 +++ b/progs/pow.scala Sun Sep 29 18:46:02 2024 +0100 @@ -1,3 +1,4 @@ + def concat(A: Set[String], B: Set[String]) : Set[String] = for (x <- A ; y <- B) yield x ++ y @@ -6,102 +7,11 @@ case n => concat(A, pow(A, n - 1)) } -def powT(A: Set[String], n: Int, acc: Set[String] = Set("")) : Set[String] = - n match { - case 0 => acc - case n => powT(A, n - 1, concat(acc, A)) - } - - -val A = Set("a", "b", "c", "d", "e") -val B = Set("a", "b", "c", "d", "") -pow(A, 4).size -pow(B, 4).size -powT(A, 4).size -powT(B, 4).size - - -val C = Set("a", "b") - -pow(C, 100).size -powT(C, 100000) - -val B = Set("aaa", "aaaa") -concat(A, B).size // -> 3 - - - -val A = Set("1", "2", "3", "") -val B = Set("1", "2", "3", "4", "5", "6", "") -concat(A, B).size // -> 28 -pow(B, 3).size val A = Set("a", "b", "c", "d") -pow(A, 4).size // -> 256 - val B = Set("a", "b", "c", "") -pow(B, 4) -pow(B, 4).size // -> 121 -pow(B, 3).size - - -val B2 = Set("a", "b", "c", "") -pow(B2, 3).size // -> 40 - -val C = Set("a", "b", "") -pow(C, 2) -pow(C, 2).size // -> 7 - -pow(C, 3) -pow(C, 3).size // -> 15 - - -//val A = Set("a", "b", "c", "d") -//pow(A, 4).size - -//val A = Set("a", "b", "c") -//pow(A, 5).size - -//val A = Set("a", "b", "") -//pow(A, 5).size - - -for (n <- (0 to 6).toList) - yield pow(B, n).size - +pow(A, 4).size +pow(B, 4).size - - -val A = Set("a", "b", "c") -pow(A, 3) -pow(A, 3).size - -val B = Set("a", "b", "") -pow(B, 4) -pow(B, 4).size - -val C = Set("a", "") -pow(C, 4) -pow(C, 4).size - -val SA = Set("a", "b", "c", "d") -val SB = Set("0", "1", "2", "3", "4", "5", "6") - -concat(SA, SB).size - - -val SA2 = Set("ab", "a", "c", "d") -val SB2 = Set("bc", "c", "2", "3", "4", "5", "6") - -concat(SA2, SB2).size - - -/* -((a b) c) d -a (b (c d)) -(a b) (c d) -(a (b c)) d -a ((b c) d) -*/