Largest int from concatenated ints: Difference between revisions
Content added Content deleted
m (→Haskell Try all permutations method: (<$> -> fmap; needs fewer brackets)) |
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
||
Line 301: | Line 301: | ||
<pre>998764543431 |
<pre>998764543431 |
||
6054854654</pre> |
6054854654</pre> |
||
=={{header|C++}}== |
|||
<lang cpp>#include <iostream> |
|||
#include <sstream> |
|||
#include <algorithm> |
|||
#include <vector> |
|||
#include <string> |
|||
std::string findLargestConcat ( std::vector< int > & mynumbers ) { |
|||
std::vector<std::string> concatnumbers ; |
|||
std::sort ( mynumbers.begin( ) , mynumbers.end( ) ) ; |
|||
do { |
|||
std::ostringstream numberstream ; |
|||
for ( int i : mynumbers ) |
|||
numberstream << i ; |
|||
concatnumbers.push_back( numberstream.str( ) ) ; |
|||
} while ( std::next_permutation( mynumbers.begin( ) , |
|||
mynumbers.end( ) )) ; |
|||
return *( std::max_element( concatnumbers.begin( ) , |
|||
concatnumbers.end( ) ) ) ; |
|||
} |
|||
int main( ) { |
|||
std::vector<int> mynumbers = { 98, 76 , 45 , 34, 9 , 4 , 3 , 1 } ; |
|||
std::vector<int> othernumbers = { 54 , 546 , 548 , 60 } ; |
|||
std::cout << "The largest concatenated int is " << |
|||
findLargestConcat( mynumbers ) << " !\n" ; |
|||
std::cout << "And here it is " << findLargestConcat( othernumbers ) |
|||
<< " !\n" ; |
|||
return 0 ; |
|||
}</lang> |
|||
{{out}} |
|||
<pre>The largest concatenated int is 998764543431 ! |
|||
And here it is 6054854654 !</pre> |
|||
=={{header|C sharp|C#}}== |
=={{header|C sharp|C#}}== |
||
Line 377: | Line 342: | ||
<pre>The largest possible integer from set 1 is: 998764543431 |
<pre>The largest possible integer from set 1 is: 998764543431 |
||
The largest possible integer from set 2 is: 6054854654</pre> |
The largest possible integer from set 2 is: 6054854654</pre> |
||
=={{header|C++}}== |
|||
<lang cpp>#include <iostream> |
|||
#include <sstream> |
|||
#include <algorithm> |
|||
#include <vector> |
|||
#include <string> |
|||
std::string findLargestConcat ( std::vector< int > & mynumbers ) { |
|||
std::vector<std::string> concatnumbers ; |
|||
std::sort ( mynumbers.begin( ) , mynumbers.end( ) ) ; |
|||
do { |
|||
std::ostringstream numberstream ; |
|||
for ( int i : mynumbers ) |
|||
numberstream << i ; |
|||
concatnumbers.push_back( numberstream.str( ) ) ; |
|||
} while ( std::next_permutation( mynumbers.begin( ) , |
|||
mynumbers.end( ) )) ; |
|||
return *( std::max_element( concatnumbers.begin( ) , |
|||
concatnumbers.end( ) ) ) ; |
|||
} |
|||
int main( ) { |
|||
std::vector<int> mynumbers = { 98, 76 , 45 , 34, 9 , 4 , 3 , 1 } ; |
|||
std::vector<int> othernumbers = { 54 , 546 , 548 , 60 } ; |
|||
std::cout << "The largest concatenated int is " << |
|||
findLargestConcat( mynumbers ) << " !\n" ; |
|||
std::cout << "And here it is " << findLargestConcat( othernumbers ) |
|||
<< " !\n" ; |
|||
return 0 ; |
|||
}</lang> |
|||
{{out}} |
|||
<pre>The largest concatenated int is 998764543431 ! |
|||
And here it is 6054854654 !</pre> |
|||
=={{header|Ceylon}}== |
=={{header|Ceylon}}== |
||
Line 869: | Line 869: | ||
998764543431 |
998764543431 |
||
6054854654 |
6054854654 |
||
</pre> |
</pre> =={{header|Go}}== |
||
=={{header|Go}}== |
|||
<lang go>// Variation of method 3. Repeat digits to at least the size of the longest, |
<lang go>// Variation of method 3. Repeat digits to at least the size of the longest, |
||
// then sort as strings. |
// then sort as strings. |
||
Line 1,122: | Line 1,120: | ||
<pre>998764543431 |
<pre>998764543431 |
||
6054854654</pre> |
6054854654</pre> |
||
=={{header|JavaScript}}== |
=={{header|JavaScript}}== |
||
Line 1,281: | Line 1,280: | ||
<pre>998764543431 |
<pre>998764543431 |
||
6054854654</pre> |
6054854654</pre> |
||
=={{header|NetRexx}}== |
=={{header|NetRexx}}== |
||
Line 1,375: | Line 1,372: | ||
[998764543431, 6054854654] |
[998764543431, 6054854654] |
||
</pre> |
</pre> |
||
=={{header|PARI/GP}}== |
|||
Sorts then joins. Most of the noise comes from converting a vector of integers into a concatenated integer: <code>eval(concat(apply(n->Str(n),v)))</code>. Note that the short form <code>eval(concat(apply(Str,v)))</code> is not valid here because <code>Str</code> is variadic. |
|||
<lang parigp>large(v)=eval(concat(apply(n->Str(n),vecsort(v,(x,y)->eval(Str(y,x,"-",x,y)))))); |
|||
large([1, 34, 3, 98, 9, 76, 45, 4]) |
|||
large([54, 546, 548, 60])</lang> |
|||
{{out}} |
|||
<pre>%1 = 998764543431 |
|||
%2 = 6054854654</pre> |
|||
=={{header|Pascal}}== |
=={{header|Pascal}}== |
||
Line 1,656: | Line 1,663: | ||
6054854654 |
6054854654 |
||
602121212122210></pre> |
602121212122210></pre> |
||
=={{header|PARI/GP}}== |
|||
Sorts then joins. Most of the noise comes from converting a vector of integers into a concatenated integer: <code>eval(concat(apply(n->Str(n),v)))</code>. Note that the short form <code>eval(concat(apply(Str,v)))</code> is not valid here because <code>Str</code> is variadic. |
|||
<lang parigp>large(v)=eval(concat(apply(n->Str(n),vecsort(v,(x,y)->eval(Str(y,x,"-",x,y)))))); |
|||
large([1, 34, 3, 98, 9, 76, 45, 4]) |
|||
large([54, 546, 548, 60])</lang> |
|||
{{out}} |
|||
<pre>%1 = 998764543431 |
|||
%2 = 6054854654</pre> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |
||
Line 1,674: | Line 1,671: | ||
print maxnum(1, 34, 3, 98, 9, 76, 45, 4), "\n"; |
print maxnum(1, 34, 3, 98, 9, 76, 45, 4), "\n"; |
||
print maxnum(54, 546, 548, 60), "\n";</lang> |
print maxnum(54, 546, 548, 60), "\n";</lang> |
||
{{out}} |
|||
<pre>998764543431 |
|||
6054854654</pre> |
|||
=={{header|Perl 6}}== |
|||
<lang perl6>sub maxnum(*@x) { |
|||
[~] @x.sort: -> $a, $b { $b ~ $a leg $a ~ $b } |
|||
} |
|||
say maxnum <1 34 3 98 9 76 45 4>; |
|||
say maxnum <54 546 548 60>;</lang> |
|||
{{out}} |
{{out}} |
||
<pre>998764543431 |
<pre>998764543431 |
||
Line 1,963: | Line 1,949: | ||
;; -> '(998764543431 6054854654) |
;; -> '(998764543431 6054854654) |
||
</lang> |
</lang> |
||
=={{header|Raku}}== |
|||
(formerly Perl 6) |
|||
<lang perl6>sub maxnum(*@x) { |
|||
[~] @x.sort: -> $a, $b { $b ~ $a leg $a ~ $b } |
|||
} |
|||
say maxnum <1 34 3 98 9 76 45 4>; |
|||
say maxnum <54 546 548 60>;</lang> |
|||
{{out}} |
|||
<pre>998764543431 |
|||
6054854654</pre> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |