Largest int from concatenated ints: Difference between revisions

Content added Content deleted
(Add Quackery)
(→‎{{header|Kotlin}}: Simpler comparator, reverse the comparator (not the list), map in the join, format output.)
Line 1,176: Line 1,176:
=={{header|Kotlin}}==
=={{header|Kotlin}}==
{{trans|C#}}
{{trans|C#}}
<lang kotlin>import kotlin.Comparator
{{works with|Kotlin|1.0b4}}
<lang scala>import java.util.Comparator


fun main(args: Array<String>) {
fun main(args: Array<String>) {
val comparator = Comparator<Int> { x, y ->
val comparator = Comparator<Int> { x, y -> "$x$y".compareTo("$y$x") }
val xy = (x.toString() + y).toInt()
val yx = (y.toString() + x).toInt()
xy.compareTo(yx)
}


fun findLargestSequence(array: IntArray): String {
fun findLargestSequence(array: IntArray): String {
return array.sortedWith(comparator).reversed().map { it.toString() }.joinToString("")
return array.sortedWith(comparator.reversed()).joinToString("") { it.toString() }
}
}


for (array in listOf(
val source1 = intArrayOf(1, 34, 3, 98, 9, 76, 45, 4)
intArrayOf(1, 34, 3, 98, 9, 76, 45, 4),
println(findLargestSequence(source1))
intArrayOf(54, 546, 548, 60),

)) {
val source2 = intArrayOf(54, 546, 548, 60)
println(findLargestSequence(source2))
println("%s -> %s".format(array.contentToString(), findLargestSequence(array)))
}
}</lang>
}</lang>
{{Out}}
{{Out}}
<pre>
998764543431
[1, 34, 3, 98, 9, 76, 45, 4] -> 998764543431
6054854654
[54, 546, 548, 60] -> 6054854654
</pre>


=={{header|Lua}}==
=={{header|Lua}}==