fannkuch.scala-2.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 70 行

SCALA
70
字号
/* * The Computer Language Shootout * http://shootout.alioth.debian.org/ * * contributed by Andrei Formiga */object fannkuch{  def main(args: Array[String]) = {    val n = Integer.parseInt(args(0))    var maxFlips = 0    var permN = 0    var k: int = 0    var temp: int = 0    var first: int = 0    var flips: int = 0    var perm0: Array[int] = new Array[int](n)    var perm: Array[int] = new Array[int](n)    var rot: Array[int] = new Array[int](n)    while (k < n) { perm(k) = k + 1; rot(k) = 0; k = k + 1; }    while (rot(n - 1) < n) {      if (permN < 30) {	k = 0	while (k < n) {	  Console.print(perm(k).toString())	  k = k + 1	}	Console.println	permN = permN + 1      }      flips = 0      k = 0      while (k < n) { perm0(k) = perm(k); k = k + 1; }      first = perm0(0)      while(first != 1) {	k = 0	while (k < first / 2) {	  temp = perm0(k); perm0(k) = perm0(first - 1 - k); perm0(first - 1 - k) = temp;	  k = k + 1	}	first = perm0(0)	flips = flips + 1      }      if (flips > maxFlips) maxFlips = flips      temp = perm(0); perm(0) = perm(1); perm(1) = temp;      rot(1) = rot(1) + 1      var j = 1      while (j < n - 1 && rot(j) > j) {	rot(j) = 0	j = j + 1	k = 0  	while (k < j) {	  temp = perm(k); perm(k) = perm(k + 1); perm(k + 1) = temp;	  k = k + 1	}	rot(j) = rot(j) + 1      }    }    Console.println("Pfannkuchen(" + n + ") = " + maxFlips)  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?