Не могу понять, как решить следующую задачу: есть число n. Вывести числа в консоль по порядку через пробел, но так, чтобы следующая цифра в итерации выводилась столько раз, сколько она является цифрой, и при этом так, чтобы в выводе было не более n цифр . Может кто подскажет правильный алгоритм?
пример: иметь n = 7, нужно напечатать (1 2 2 3 3 3 4) в котлине
что я пытаюсь:
var n = 7
var count = 1
var i = 1
for (count in 1..n) {
for (i in 1..count) {
print(count)
}
}
}
var count = 1
var n = 7
for(count in 1..n) {
print(count.toString().repeat(count))
}
count.toString()
преобразует целое число в строку, .repeat()
функция повторяет строку count
раз.
Если вам нужно добавить пробел между каждым числом, вы можете добавить следующее:
print(" ")
Ваш пример правильный, вы должны поставить пробел между печатью
вы можете следовать коду по этой ссылке Фрагмент кода языка Kotlin
или следующий фрагмент кода
fun main() {
var n = 7
var count = 1
var i = 1
for (count in 1..n) {
for (i in 1..count) {
print(count)
print(' ')
}
}
}
var n = 11
var count = 1
var i = 1
var size = 0
// loop@ for naming a loop in kotlin and inside another loop we can break or continue from outer loop
loop@ for (count in 1..n) {
for (i in 1..count) {
print(count)
size++
if (size == n){
break@loop
}
}
}
Вы можете использовать «@» для именования циклов, и если вы хотите выйти из этого цикла, вы можете использовать этот синтаксис в kotlin. Это сработало для меня. Для kotlin с пометкой break вы можете посмотреть эту ссылку: ссылка
Добро пожаловать, это было ничего :)
Использование функций generateSequence и Collections:
val n = 7
println(generateSequence(1) {it + 1}
.flatMap{e -> List(e){e}}
.take(n)
.joinToString(" "))
Для полноты вот еще один подход, при котором вы пишете свою собственную функцию последовательности, которая создает отдельные значения по запросу (вместо создания промежуточных списков).
sequence {
var digit = 1
while (true) {
for (i in 1..digit) yield(digit)
digit++
}
}.take(7)
.joinToString(" ")
.run(::print)
Ничего страшного в этой ситуации, но полезно знать!
но по задаче вывод в консоль должен заканчиваться ровно после 7-й цифры, то есть вывод не должен быть 1 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7, но 1 2 2 3 3 3 4