Padovan sequence: Difference between revisions

Content added Content deleted
No edit summary
No edit summary
Line 2,311: Line 2,311:


The first 32 recurrence terms and L System lengths are the same.</pre>
The first 32 recurrence terms and L System lengths are the same.</pre>



=={{header|R}}==
<syntaxhighlight lang="R" line># Function to calculate Padovan sequence iteratively
padovan_sequence <- function(n) {
recurrences <- numeric(n)
recurrences[1:3] <- c(1, 1, 1)
if (n > 3) {
for (i in 4:n) {
recurrences[i] <- recurrences[i-2] + recurrences[i-3]
}
}
recurrences
}

# Function to calculate Padovan floor
padovan_floor <- function(aN) {
PP <- 1.324717957244746025960908854
SS <- 1.0453567932525329623
floor((PP^(aN - 1)) / SS + 0.5)
}

# Function to create L-system
create_l_system<- function() {
words <- c("A")
text <- "A"
while (length(words) < 32) {
text <- strsplit(text, "")[[1]] # Split the string into a list of characters
text <- sapply(text, function(char) {
if (char == "A") {
return("B")
} else if (char == "B") {
return("C")
} else if (char == "C") {
return("AB")
}
})
text <- paste(text, collapse = "") # Collapse the list back into a single string
words <- c(words, text) # Append the new word to the list
}
words
}


# Main script
num_terms <- 64
padovan_seq <- padovan_sequence(num_terms)
floors <- sapply(0:(num_terms-1), padovan_floor)

cat("The first 20 terms of the Padovan sequence:\n")
cat(padovan_seq[1:20], sep=" ", end="\n")
cat("\n")

cat("Recurrence and floor functions agree for first 64 terms?", all(padovan_seq == floors), "\n\n")

words <- create_l_system()

cat("The first 10 terms of the L-system:\n")
cat(words[1:10], sep=" ", end="\n")
cat("\n")

cat("Length of first 32 terms produced from the L-system match Padovan sequence? ")
word_lengths <- sapply(words, nchar)
cat(all(word_lengths[1:32] == padovan_seq[1:32]))</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>