added assignment 6 ex 2
This commit is contained in:
		
							
								
								
									
										38
									
								
								src/Assignment6/Ex2.sc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/Assignment6/Ex2.sc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  |  | ||||||
|  | def isPrime(i: Int): Boolean = | ||||||
|  |     i match { | ||||||
|  |         case i if i <= 1 => false | ||||||
|  |         case 2 => true | ||||||
|  |         case _ => !(2 to (i - 1)).exists(x => i % x == 0) | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | def primeSum(max: Int): List[(Int, Int)] = | ||||||
|  |     for { | ||||||
|  |         i <- (1 to max).toList | ||||||
|  |         j <- (1 to max).toList | ||||||
|  |         if (isPrime(i + j)) | ||||||
|  |     } yield (i, j) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def uniquePermutations(permutations: List[(Int, Int)]): List[(Int, Int)] = { | ||||||
|  |   permutations match { | ||||||
|  |     case Nil => Nil | ||||||
|  |     case (a, b)::rest if rest contains(b, a) => uniquePermutations(rest) | ||||||
|  |     case head::rest => head::uniquePermutations(rest) | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | def uniquePermutations2(permutations: List[(Int, Int)]): List[(Int, Int)] = { | ||||||
|  |   permutations.foldRight(List.empty[(Int, Int)])( | ||||||
|  |     (e, acc) => { | ||||||
|  |       e match { | ||||||
|  |         case (a, b) if acc contains (b, a) => acc | ||||||
|  |         case _ => e::acc | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | val perms = primeSum(10) | ||||||
|  | uniquePermutations(perms) | ||||||
|  | uniquePermutations2(perms) | ||||||
		Reference in New Issue
	
	Block a user