Scala 将贴图中的元素与贴图的其余部分进行比较

Scala 将贴图中的元素与贴图的其余部分进行比较,scala,Scala,我试图从地图中选择最后一个元素,并将其与地图中的其他最后一个元素进行比较,以确定所选元素是较高还是较低 到目前为止,我可以让它从用户输入中选择元素,但无法解决如何循环地图并使其与其他元素进行比较: def menu(f: (String) => (String, Int)) = { print("Number > ") val data = f(readLine) println(s"${data._1}: ${data._2}") } 以下是元素来源的地图: val mapda

我试图从地图中选择最后一个元素,并将其与地图中的其他最后一个元素进行比较,以确定所选元素是较高还是较低

到目前为止,我可以让它从用户输入中选择元素,但无法解决如何循环地图并使其与其他元素进行比较:

def menu(f: (String) => (String, Int)) = {
print("Number > ")
val data = f(readLine)
println(s"${data._1}: ${data._2}")

}
以下是元素来源的地图:

val mapdata = Map(
  "A1" -> List(9, 7, 2, 0, 0, 2, 7, 9, 1, 2, 4, 1, 9, 6, 5, 3, 2, 3, 7, 2, 8, 5, 4, 5, 1, 6, 5, 2, 4, 1),
  "B2" -> List(0, 7, 6, 3, 3, 3, 1, 2, 9, 2, 9, 7, 4, 7, 3, 6, 3, 9, 5, 2, 9, 7, 3, 4, 6, 3, 4, 3, 4, 1),
  "C3" -> List(8, 7, 1, 8, 0, 5, 8, 0, 5, 9, 7, 5, 3, 7, 9, 8, 1, 4, 6, 5, 6, 6, 3, 6, 8, 8, 7, 4, 0, 6),
  "D4" -> List(2, 9, 5, 7, 3, 8, 6, 9, 7, 9, 0, 1, 3, 1, 3, 0, 0, 1, 3, 8, 5, 4, 0, 9, 7, 1, 4, 5, 2, 9),
  "E5" -> List(2, 6, 8, 0, 3, 5, 2, 1, 5, 9, 4, 5, 3, 5, 5, 8, 8, 2, 5, 9, 3, 8, 6, 7, 8, 7, 4, 1, 2, 3),
  "F6" -> List(2, 7, 5, 9, 1, 9, 2, 4, 1, 6, 3, 7, 4, 3, 4, 5, 9, 2, 2, 4, 8, 7, 9, 2, 2, 7, 9, 1, 6, 9),
  "G7" -> List(6, 9, 5, 0, 8, 0, 0, 5, 8, 5, 8, 7, 1, 6, 6, 1, 5, 2, 2, 7, 9, 5, 5, 9, 1, 4, 4, 0, 2, 0),
  "H8" -> List(2, 8, 8, 3, 2, 1, 1, 8, 5, 9, 0, 2, 1, 6, 9, 7, 9, 6, 7, 7, 0, 9, 5, 2, 5, 0, 2, 1, 8, 6),
  "I9" -> List(2, 1, 8, 2, 4, 4, 2, 4, 9, 4, 0, 6, 9, 5, 9, 4, 9, 1, 8, 6, 3, 4, 4, 3, 7, 9, 1, 2, 6, 6)
)
例如,我选择H8,它的最后一个元素是6

然后我想将它与所有最后的元素进行比较,并说它是高于还是低于最后的每个元素


提前谢谢

我不确定我是否理解正确。您可以通过调用last来访问列表的最后一个元素

object A extends App {
  val mapdata: Map[String, List[Int]] = Map(
  "A1" -> List(9, 7, 2, 0, 0, 2, 7, 9, 1, 2, 4, 1, 9, 6, 5, 3, 2, 3, 7, 2, 8, 5, 4, 5, 1, 6, 5, 2, 4, 1),
  "B2" -> List(0, 7, 6, 3, 3, 3, 1, 2, 9, 2, 9, 7, 4, 7, 3, 6, 3, 9, 5, 2, 9, 7, 3, 4, 6, 3, 4, 3, 4, 1),
  "C3" -> List(8, 7, 1, 8, 0, 5, 8, 0, 5, 9, 7, 5, 3, 7, 9, 8, 1, 4, 6, 5, 6, 6, 3, 6, 8, 8, 7, 4, 0, 6),
  "D4" -> List(2, 9, 5, 7, 3, 8, 6, 9, 7, 9, 0, 1, 3, 1, 3, 0, 0, 1, 3, 8, 5, 4, 0, 9, 7, 1, 4, 5, 2, 9),
  "E5" -> List(2, 6, 8, 0, 3, 5, 2, 1, 5, 9, 4, 5, 3, 5, 5, 8, 8, 2, 5, 9, 3, 8, 6, 7, 8, 7, 4, 1, 2, 3),
  "F6" -> List(2, 7, 5, 9, 1, 9, 2, 4, 1, 6, 3, 7, 4, 3, 4, 5, 9, 2, 2, 4, 8, 7, 9, 2, 2, 7, 9, 1, 6, 9),
  "G7" -> List(6, 9, 5, 0, 8, 0, 0, 5, 8, 5, 8, 7, 1, 6, 6, 1, 5, 2, 2, 7, 9, 5, 5, 9, 1, 4, 4, 0, 2, 0),
  "H8" -> List(2, 8, 8, 3, 2, 1, 1, 8, 5, 9, 0, 2, 1, 6, 9, 7, 9, 6, 7, 7, 0, 9, 5, 2, 5, 0, 2, 1, 8, 6),
  "I9" -> List(2, 1, 8, 2, 4, 4, 2, 4, 9, 4, 0, 6, 9, 5, 9, 4, 9, 1, 8, 6, 3, 4, 4, 3, 7, 9, 1, 2, 6, 6)
  )

  val choice = "H8"
  val numberToBeCompared = mapdata.getOrElse(choice, throw new RuntimeException(s"couldn't find $choice")).last
  mapdata.filter(_._1 != choice)
    .values
    .foreach(list => {
      if (list.last > numberToBeCompared)
        println(s"${list.last} > $numberToBeCompared")
      else
        println(s"${list.last} <= $numberToBeCompared")
    })
}
对象A扩展应用程序{
val mapdata:Map[String,List[Int]]=Map(
“A1”->列表(9,7,2,0,0,2,7,9,1,2,4,1,9,6,5,3,2,3,7,2,8,5,4,5,1,6,5,2,4,1),
“B2”->列表(0,7,6,3,3,3,1,2,9,2,9,7,4,7,3,6,3,9,5,2,9,7,3,4,6,3,4,1),
“C3”->列表(8,7,1,8,0,5,8,0,5,9,7,5,3,7,9,8,1,4,6,5,6,3,6,8,8,7,4,0,6),
“D4”->列表(2,9,5,7,3,8,6,9,7,9,0,1,3,1,3,0,0,1,3,8,5,4,0,9,7,1,4,5,2,9),
“E5”->列表(2,6,8,0,3,5,2,1,5,9,4,5,3,5,5,8,8,2,5,9,3,8,6,7,7,4,1,2,3),
“F6”->列表(2,7,5,9,1,9,2,4,1,6,3,7,4,3,4,5,9,2,2,4,8,7,9,2,2,2,7,9,1,6,9),
“G7”->列表(6,9,5,0,8,0,0,5,8,5,8,7,1,6,6,1,5,2,2,7,9,5,5,9,1,4,0,2,0),
“H8”->列表(2,8,8,3,2,1,1,8,5,9,0,2,1,6,9,7,9,6,7,0,9,5,2,5,0,2,1,8,6),
“I9”->列表(2,1,8,2,4,4,2,4,9,4,0,6,9,5,9,4,9,1,8,6,3,4,4,3,7,9,1,2,6,6)
)
val choice=“H8”
val numberToBeCompared=mapdata.getOrElse(choice,抛出新的运行时异常(s“找不到$choice”)。最后
mapdata.filter(u._1!=选项)
价值观
.foreach(列表=>{
如果(list.last>numberToBeCompared)
println(s“${list.last}>$numberToBeCompared”)
其他的

println(s“${list.last}我可以使用用户输入比较两个元素,因此我可以比较A1的最后一个数字和B2的最后一个数字,例如,并说明哪个更高。我无法将一个元素与所有其他元素进行比较。谢谢,这肯定很有帮助!但是我如何显示“H8”“代替6?我如何显示其他字母而不是数字?我还要补充一点,我有一个功能,可以读取用户输入的内容,让他们输入要比较的两个元素。非常感谢!这太完美了!”)
1 <= 6
1 <= 6
0 <= 6
3 <= 6
9 > 6
9 > 6
6 <= 6
6 <= 6
val choice = "H8"
val numberToBeCompared = mapdata.getOrElse(choice, throw new RuntimeException(s"couldn't find $choice")).last
mapdata.filter(_._1 != choice)
  .foreach(entry => {
    if (entry._2.last > numberToBeCompared)
      println(s"${choice} > ${entry._1}")
    else
      println(s"${choice} <= ${entry._1}")
    })

H8 <= A1
H8 <= B2
H8 <= G7
H8 <= E5
H8 > D4
H8 > F6
H8 <= C3
H8 <= I9