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

316人阅读 评论(0) 收藏 举报
分类:

目录

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)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    【个人简介】
    个人资料
    • 访问:435521次
    • 积分:7114
    • 等级:
    • 排名:第3618名
    • 原创:282篇
    • 转载:23篇
    • 译文:24篇
    • 评论:90条
    博客专栏