Largest int from concatenated ints: Difference between revisions
Content added Content deleted
Line 2,381: | Line 2,381: | ||
(1 34 3 98 9 76 45 4) |
(1 34 3 98 9 76 45 4) |
||
) do:[:ints | |
) do:[:ints | |
||
|resultString| |
|||
⚫ | |||
concatString := |
|||
⚫ | |||
then collect their strings, then concatenate" |
|||
resultString := |
|||
((ints copy sort:[:a :b | |
((ints copy sort:[:a :b | |
||
|pad| |
|pad| |
||
pad := a integerLog10 max:b integerLog10. |
pad := (a integerLog10) max:(b integerLog10). |
||
(a printString paddedTo:pad with:$0) > (b printString paddedTo:pad with:$0)]) |
(a printString paddedTo:pad with:$0) > (b printString paddedTo:pad with:$0)]) |
||
collect:#printString) asStringWith:''. |
collect:#printString) asStringWith:''. |
||
Stdout printCR: |
Stdout printCR: resultString. |
||
].</lang> |
].</lang> |
||
alternative: sort by concatenated pair's strings: |
alternative: sort by concatenated pair's strings: |
||
Line 2,395: | Line 2,398: | ||
(1 34 3 98 9 76 45 4) |
(1 34 3 98 9 76 45 4) |
||
) do:[:ints | |
) do:[:ints | |
||
|resultString| |
|||
"sort by concatenated pairs (sort a copy - literals are immudatble)" |
|||
concatString := |
|||
resultString := |
|||
((ints copy sort:[:a :b | |
((ints copy sort:[:a :b | |
||
(a printString,b printString) > (b printString,a printString)]) |
(a printString,b printString) > (b printString,a printString)]) |
||
collect:#printString) asStringWith:''. |
collect:#printString) asStringWith:''. |
||
Stdout printCR: |
Stdout printCR: resultString. |
||
].</lang> |
].</lang> |
||
no need to collect the resultString; print the sorted list as well (if printing is all we want): |
|||
<lang smalltalk>#( |
|||
(54 546 548 60) |
|||
(1 34 3 98 9 76 45 4) |
|||
) do:[:ints | |
|||
(ints copy sort:[:a :b | |
|||
(a printString,b printString) > (b printString,a printString)]) |
|||
do:[:eachNr | eachNr printOn:Stdout]. |
|||
Stdout cr. |
|||
]</lang> |
|||
{{out}} |
{{out}} |
||
<pre>6054854654 |
<pre>6054854654 |