How to resolve the algorithm Recaman's sequence step by step in the Objeck programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Recaman's sequence step by step in the Objeck programming language
Table of Contents
Problem Statement
The Recamán's sequence generates Natural numbers. Starting from a(0)=0, the n'th term a(n), where n>0, is the previous term minus n i.e a(n) = a(n-1) - n but only if this is both positive and has not been previousely generated. If the conditions don't hold then a(n) = a(n-1) + n.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Recaman's sequence step by step in the Objeck programming language
Source code in the objeck programming language
use Collection.Generic;
class RecamanSequence {
function : Main(args : String[]) ~ Nil {
GenerateSequence();
}
function : native : GenerateSequence() ~ Nil {
a := Vector->New();
a->AddBack(0);
used := Set->New();
used->Insert(0);
used1000 := Set->New();
used1000->Insert(0);
foundDup := false;
n := 1;
while (n <= 15 | <>foundDup | used1000->Size() < 1001) {
next := a->Get(n - 1) - n;
if (next < 1 | used->Has(next)) {
next += 2 * n;
};
alreadyUsed := used->Has(next);
a->AddBack(next);
if (<>alreadyUsed) {
used->Insert(next);
if (0 <= next & next <= 1000) {
used1000->Insert(next);
};
};
if (n = 14) {
str := ToString(a);
"The first 15 terms of the Recaman sequence are : {$str}"->PrintLine();
};
if (<>foundDup & alreadyUsed) {
"The first duplicate term is a[{$n}] := {$next}"->PrintLine();
foundDup := true;
};
if (used1000->Size() = 1001) {
"Terms up to a[{$n}] are needed to generate 0 to 1000"->PrintLine();
};
n++;
};
}
function : ToString(a : Vector) ~ String {
out := "[";
each(i : a) {
out += a->Get(i)->Get();
if(i + 1 < a->Size()) {
out += ',';
};
};
out += ']';
return out;
}
}
You may also check:How to resolve the algorithm Sparkline in unicode step by step in the JavaScript programming language
You may also check:How to resolve the algorithm Arbitrary-precision integers (included) step by step in the dc programming language
You may also check:How to resolve the algorithm Sum multiples of 3 and 5 step by step in the EasyLang programming language
You may also check:How to resolve the algorithm Continued fraction/Arithmetic/Construct from rational number step by step in the J programming language
You may also check:How to resolve the algorithm K-means++ clustering step by step in the Raku programming language