Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
54
Task/Padovan-sequence/Scala/padovan-sequence.scala
Normal file
54
Task/Padovan-sequence/Scala/padovan-sequence.scala
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
object Padovan extends App {
|
||||
|
||||
val recurrences = new collection.mutable.ListBuffer[Int]()
|
||||
val floors = new collection.mutable.ListBuffer[Int]()
|
||||
val PP = 1.324717957244746025960908854
|
||||
val SS = 1.0453567932525329623
|
||||
|
||||
for (i <- 0 until 64) {
|
||||
recurrences += padovanRecurrence(i)
|
||||
floors += padovanFloor(i)
|
||||
}
|
||||
|
||||
println("The first 20 terms of the Padovan sequence:")
|
||||
recurrences.slice(0, 20).foreach(term => print(s"${term} "))
|
||||
println("\n")
|
||||
|
||||
println(s"Recurrence and floor functions agree for first 64 terms? ${recurrences == floors}")
|
||||
println("")
|
||||
|
||||
val words = createLSystem()
|
||||
|
||||
println("The first 10 terms of the L-system:")
|
||||
words.slice(0, 10).foreach(term => print(term + " "))
|
||||
println("\n")
|
||||
|
||||
print("Length of first 32 terms produced from the L-system match Padovan sequence? ")
|
||||
val wordLengths = words.map(_.length)
|
||||
print(wordLengths.slice(0, 32) == recurrences.slice(0, 32))
|
||||
|
||||
def padovanRecurrence(n: Int): Int = {
|
||||
if (n <= 2) 1 else recurrences(n - 2) + recurrences(n - 3)
|
||||
}
|
||||
|
||||
def padovanFloor(aN: Int): Int = {
|
||||
scala.math.floor(scala.math.pow(PP, aN - 1) / SS + 0.5).toInt
|
||||
}
|
||||
|
||||
def createLSystem(): List[String] = {
|
||||
var words = List("A")
|
||||
var text = "A"
|
||||
|
||||
while (words.length < 32) {
|
||||
text = text.flatMap {
|
||||
case 'A' => "B"
|
||||
case 'B' => "C"
|
||||
case 'C' => "AB"
|
||||
}
|
||||
words = words :+ text
|
||||
}
|
||||
|
||||
words
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue