Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
19
Task/Hofstadter-Q-sequence/D/hofstadter-q-sequence-1.d
Normal file
19
Task/Hofstadter-Q-sequence/D/hofstadter-q-sequence-1.d
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import std.stdio, std.algorithm, std.functional, std.range;
|
||||
|
||||
int Q(in int n) nothrow
|
||||
in {
|
||||
assert(n > 0);
|
||||
} body {
|
||||
alias mQ = memoize!Q;
|
||||
if (n == 1 || n == 2)
|
||||
return 1;
|
||||
else
|
||||
return mQ(n - mQ(n - 1)) + mQ(n - mQ(n - 2));
|
||||
}
|
||||
|
||||
void main() {
|
||||
writeln("Q(n) for n = [1..10] is: ", iota(1, 11).map!Q);
|
||||
writeln("Q(1000) = ", Q(1000));
|
||||
writefln("Q(i) is less than Q(i-1) for i [2..100_000] %d times.",
|
||||
iota(2, 100_001).count!(i => Q(i) < Q(i - 1)));
|
||||
}
|
||||
19
Task/Hofstadter-Q-sequence/D/hofstadter-q-sequence-2.d
Normal file
19
Task/Hofstadter-Q-sequence/D/hofstadter-q-sequence-2.d
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import std.stdio, std.algorithm, std.range, std.array;
|
||||
|
||||
uint Q(in int n) nothrow
|
||||
in {
|
||||
assert(n > 0);
|
||||
} body {
|
||||
__gshared static Appender!(int[]) s = [0, 1, 1];
|
||||
|
||||
foreach (immutable i; s.data.length .. n + 1)
|
||||
s ~= s.data[i - s.data[i - 1]] + s.data[i - s.data[i - 2]];
|
||||
return s.data[n];
|
||||
}
|
||||
|
||||
void main() {
|
||||
writeln("Q(n) for n = [1..10] is: ", iota(1, 11).map!Q);
|
||||
writeln("Q(1000) = ", Q(1000));
|
||||
writefln("Q(i) is less than Q(i-1) for i [2..100_000] %d times.",
|
||||
iota(2, 100_001).count!(i => Q(i) < Q(i - 1)));
|
||||
}
|
||||
31
Task/Hofstadter-Q-sequence/D/hofstadter-q-sequence-3.d
Normal file
31
Task/Hofstadter-Q-sequence/D/hofstadter-q-sequence-3.d
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import std.stdio;
|
||||
|
||||
int[100_000] Q;
|
||||
|
||||
void main() {
|
||||
Q[0] = 1;
|
||||
Q[1] = 1;
|
||||
|
||||
for (int i = 2; i < 100_000; i++)
|
||||
{
|
||||
Q[i] = Q[i - Q[i - 1]] + Q[i - Q[i - 2]];
|
||||
}
|
||||
|
||||
write("Q(1..10) : ");
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
write(" ", Q[i]);
|
||||
}
|
||||
writeln;
|
||||
|
||||
write("Q(1000) : ");
|
||||
writeln(Q[999]);
|
||||
|
||||
int lt = 0;
|
||||
for (int i = 1; i < 100_000; i++)
|
||||
{
|
||||
if( Q[i-1] > Q[i] ) lt++;
|
||||
}
|
||||
|
||||
writefln("Q(i) is less than Q(i-1) for i [2..100_000] %d times.", lt);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue