Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
24
Task/Perfect-shuffle/Scala/perfect-shuffle.scala
Normal file
24
Task/Perfect-shuffle/Scala/perfect-shuffle.scala
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
object PerfectShuffle extends App {
|
||||
private def sizes = Seq(8, 24, 52, 100, 1020, 1024, 10000)
|
||||
|
||||
private def perfectShuffle(size: Int): Int = {
|
||||
require(size % 2 == 0, "Card deck must be even")
|
||||
|
||||
val (half, a) = (size / 2, Array.range(0, size))
|
||||
val original = a.clone
|
||||
var count = 1
|
||||
while (true) {
|
||||
val aa = a.clone
|
||||
for (i <- 0 until half) {
|
||||
a(2 * i) = aa(i)
|
||||
a(2 * i + 1) = aa(i + half)
|
||||
}
|
||||
if (a.deep == original.deep) return count
|
||||
count += 1
|
||||
}
|
||||
0
|
||||
}
|
||||
|
||||
for (size <- sizes) println(f"$size%5d : ${perfectShuffle(size)}%5d")
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue