Largest int from concatenated ints: Difference between revisions

Content added Content deleted
m (→‎Haskell Try all permutations method: (<$> -> fmap; needs fewer brackets))
(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}}==