Mian-Chowla sequence: Difference between revisions

Line 1,236:
 
<syntaxhighlight lang="kotlin">
fun sumsRemainDistinct(candidate: Int, sequenceseq: Iterable<Int>, mcSumssums: HashSet<Int>): Boolean {
val candidateSums = mutableListOf<Int>()
 
for (s in sequenceseq) {
when ((candidate + s) !in mcSumssums) {
true -> candidateSums.add(candidate + s)
false -> return false
}
}
with(mcSumssums) {
addAll(candidateSums)
add(candidate + candidate)
Line 1,253:
 
fun mianChowla(n: Int): List<Int> {
val mcSequencebufferSeq = linkedSetOf<Int>(1)
val mcSumsbufferSums = linkedSetOf<Int>(2)
 
val sequence = generateSequence(1) { it + 1 } // [1,2,3,..]
var candidate = 2
if.filter { (sumsRemainDistinct(candidateit, mcSequencebufferSeq, mcSums)bufferSums) {}
while (mcSequence.size < n) {
.onEach { bufferSeq.add(it) }
if (sumsRemainDistinct(candidate, mcSequence, mcSums)) {
 
mcSequence.add(candidate)
return mcSequencesequence.take(n).toList()
}
candidate++
}
return mcSequence.toList()
}
 
19

edits