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> |
|||