Padovan sequence: Difference between revisions
Content added Content deleted
(Added Easylang) |
No edit summary |
||
Line 2,561: | Line 2,561: | ||
Length of first 32 strings produced from the L-system = Padovan sequence? true |
Length of first 32 strings produced from the L-system = Padovan sequence? true |
||
</pre> |
</pre> |
||
=={{header|Scala}}== |
|||
{{trans|Java}} |
|||
<syntaxhighlight lang="scala">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 |
|||
} |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
The first 20 terms of the Padovan sequence: |
|||
1 1 1 2 2 3 4 5 7 9 12 16 21 28 37 49 65 86 114 151 |
|||
Recurrence and floor functions agree for first 64 terms? true |
|||
The first 10 terms of the L-system: |
|||
A B C AB BC CAB ABBC BCCAB CABABBC ABBCBCCAB |
|||
Length of first 32 terms produced from the L-system match Padovan sequence? true |
|||
</pre> |
|||
=={{header|Swift}}== |
=={{header|Swift}}== |