Padovan sequence: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1,846:
BCCABCABABBC
True</pre>
 
 
=={{header|MATLAB}}==
<syntaxhighlight lang="MATLAB">clear all;close all;clc;
% Calculate the sequences
padovan_sequence_20 = Padovan1(20)
padovan_approx_20 = Padovan2(20)
 
% Check if the sequences are equal for n = 64
are_sequences_equal = isequal(Padovan1(64), Padovan2(64))
 
 
% Generate the substitution system sequence
sequence_32 = createLSystem();
words = sequence_32(1:10)
 
% Check if the length of the substitution system sequence equals the Padovan sequence
are_lengths_equal = all( cellfun(@(ele) length(ele), sequence_32) ...
== Padovan2(32) )
 
function words = createLSystem()
words = {'A'}; % Initialize cell array with one element "A"
text = 'A'; % Current text is "A"
 
while length(words) < 32
newText = ''; % Initialize new text as empty
for i = 1:length(text)
switch text(i)
case 'A'
newText = [newText 'B']; % Append 'B' to new text
case 'B'
newText = [newText 'C']; % Append 'C' to new text
case 'C'
newText = [newText 'AB']; % Append 'AB' to new text
end
end
text = newText; % Update text with the new text
words{end+1} = text; % Append new text to words list
end
end
 
function padovan_sequence = Padovan1(nmax)
padovan_sequence = zeros(1, nmax);
padovan_sequence(1:3) = [1, 1, 1];
for n = 4:nmax
padovan_sequence(n) = padovan_sequence(n-2) + padovan_sequence(n-3);
end
end
 
function padovan_approx = Padovan2(nmax)
p = 1.324717957244746025960908854;
s = 1.0453567932525329623;
padovan_approx = floor(p.^(-1:nmax-2) / s + 0.5);
end</syntaxhighlight>
 
{{out}}
<pre>
padovan_sequence_20 =
 
1 1 1 2 2 3 4 5 7 9 12 16 21 28 37 49 65 86 114 151
 
 
padovan_approx_20 =
 
1 1 1 2 2 3 4 5 7 9 12 16 21 28 37 49 65 86 114 151
 
 
are_sequences_equal =
 
logical
 
1
 
 
words =
 
1×10 cell array
 
{'A'} {'B'} {'C'} {'AB'} {'BC'} {'CAB'} {'ABBC'} {'BCCAB'} {'CABABBC'} {'ABBCBCCAB'}
 
 
are_lengths_equal =
 
logical
 
1
</pre>
 
 
=={{header|Nim}}==
338

edits