Jump to content

Best shuffle: Difference between revisions

Kotlin version
(Kotlin version)
Line 1,696:
 
Produced:
<langpre>abracadabra, raababacdar, (0)
 
<lang>abracadabra, raababacdar, (0)
seesaw, ewaess, (0)
elk, lke, (0)
grrrrrr, rrrrrgr, (5)
up, pu, (0)
a, a, (1)</langpre>
 
=={{header|Kotlin}}==
From Java.
<lang scala>package shuffle
 
import java.util.Random
 
object BestShuffle {
operator fun invoke(s1: String) : String {
val s2 = s1.toCharArray()
shuffle(s2)
for (i in s2.indices)
if (s2[i] == s1[i])
for (j in s2.indices)
if (s2[i] != s2[j] && s2[i] != s1[j] && s2[j] != s1[i]) {
val tmp = s2[i]
s2[i] = s2[j]
s2[j] = tmp
break
}
return s1 + ' ' + String(s2) + " (" + count(s1, s2) + ')'
}
 
private fun shuffle(text: CharArray) {
val rand = Random()
for (i in text.size - 1 downTo 1) {
val r = rand.nextInt(i + 1)
val tmp = text[i]
text[i] = text[r]
text[r] = tmp
}
}
 
private fun count(s1: String, s2: CharArray) : Int {
var count = 0
for (i in s2.indices)
if (s1[i] == s2[i])
count++
return count
}
}
 
fun main(words: Array<String>) = words forEach { println(BestShuffle(it)) }</lang>
 
=={{header|Liberty BASIC}}==
<lang lb>'see Run BASIC solution
'see Run BASIC solution
list$ = "abracadabra seesaw pop grrrrrr up a"
 
Line 1,731 ⟶ 1,772:
next i
bestShuffle$ = s2$
end function</lang>
</lang>
output
<pre>
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.