面試題--scala全排序過濾欄位
阿新 • • 發佈:2018-12-25
目錄
1、需求
2、程式碼
3、結果展示
————————————————————————————-
1、需求
求 1 to 4 的全排序, 2不能在第一位, 3,4不能在一起
2、程式碼
import util.control.Breaks._
/**
* Created by Administrator on 2017/9/22 0022.
*
* 1 to 4 的全排序
* 2不能在第一位
* 3,4不能在一起
*
*/
object LocalSpark extends App{
override def main(args: Array[String]): Unit = {
List(1 ,2,3,4).permutations.filter(list=>list(0) != 2).map(list=>{
var num =0
breakable{
for(x<- 0 to (list.size-1)){
if(list(x)==3 && x<3 && list(x+1)==4) break
if(list(x)==3 && x>0 && list(x-1)==4) break
num +=1
}
}
if (num <4){
List()
}else{
list
}
}).filter(list=>list.size>3).foreach(println(_))
}
}
3、結果展示
List(1, 3, 2, 4)
List(1, 4, 2, 3)
List(3, 1, 2, 4)
List(3, 1, 4, 2)
List(3, 2, 1, 4)
List(3, 2, 4, 1)
List(4, 1, 2, 3)
List(4, 1, 3, 2)
List(4, 2, 1, 3)
List(4, 2, 3, 1)