面试题--scala全排序过滤字段

来源:互联网 发布:网络协议教程 编辑:程序博客网 时间:2024/06/14 19:20

目录

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)

原创粉丝点击