Juggler sequence: Difference between revisions

Added C++ solution
m (→‎{{header|Phix}}: added oinline link)
(Added C++ solution)
Line 178:
15845: l[n] = 139, d[n] = 23889, i[n] = 43
30817: l[n] = 93, d[n] = 45391, i[n] = 39"</lang>
 
=={{header|C++}}==
{{trans|Go}}
<lang cpp>#include <cassert>
#include <iomanip>
#include <iostream>
#include <string>
 
#include <gmpxx.h>
 
using big_int = mpz_class;
 
auto juggler(int n) {
assert(n >= 1);
int count = 0, max_count = 0;
big_int a = n, max = n;
while (a != 1) {
if (a % 2 == 0)
a = sqrt(a);
else
a = sqrt(big_int(a * a * a));
++count;
if (a > max) {
max = a;
max_count = count;
}
}
return std::make_tuple(count, max_count, max, max.get_str().size());
}
 
int main() {
std::cout.imbue(std::locale(""));
std::cout << "n l[n] i[n] h[n]\n";
std::cout << "--------------------------------\n";
for (int n = 20; n < 40; ++n) {
auto [count, max_count, max, digits] = juggler(n);
std::cout << std::setw(2) << n << " " << std::setw(2) << count
<< " " << std::setw(2) << max_count << " " << max
<< '\n';
}
std::cout << '\n';
std::cout << " n l[n] i[n] d[n]\n";
std::cout << "----------------------------------------\n";
for (int n : {113, 173, 193, 2183, 11229, 15065, 15845, 30817, 48443,
275485, 1267909, 2264915, 5812827, 7110201, 56261531,
92502777, 172376627, 604398963}) {
auto [count, max_count, max, digits] = juggler(n);
std::cout << std::setw(11) << n << " " << std::setw(3) << count
<< " " << std::setw(3) << max_count << " " << digits
<< '\n';
}
}</lang>
 
{{out}}
<pre>
n l[n] i[n] h[n]
--------------------------------
20 3 0 20
21 9 4 140
22 3 0 22
23 9 1 110
24 3 0 24
25 11 3 52214
26 6 3 36
27 6 1 140
28 6 3 36
29 9 1 156
30 6 3 36
31 6 1 172
32 6 3 36
33 8 2 2598
34 6 3 36
35 8 2 2978
36 3 0 36
37 17 8 24906114455136
38 3 0 38
39 14 3 233046
 
n l[n] i[n] d[n]
----------------------------------------
113 16 9 27
173 32 17 82
193 73 47 271
2,183 72 32 5,929
11,229 101 54 8,201
15,065 66 25 11,723
15,845 139 43 23,889
30,817 93 39 45,391
48,443 157 60 972,463
275,485 225 148 1,909,410
1,267,909 151 99 1,952,329
2,264,915 149 89 2,855,584
5,812,827 135 67 7,996,276
7,110,201 205 119 89,981,517
56,261,531 254 92 105,780,485
92,502,777 191 117 139,486,096
172,376,627 262 90 449,669,621
604,398,963 327 172 640,556,693
</pre>
 
=={{header|F_Sharp|F#}}==
1,777

edits