Android

Помогите с kotlin с первой задачей

Задача 1:
Входные данные(number:Int) - любое число
выходные данные(count:Int) - кол-во попыток

Требуется 2 действиями( делением и вычитанием) привести число к нулю.

Алгоритм:
Если текущее число четное, делим на 2
Если нет, то вычитаем 1

Данные по которым можно будет сверить:
если number = 14, то count будет равен 6
если number = 8, то count будет равен 4

Задача 2:
Есть игра одна у американцев, ее кстати в некоторых компаниях, во время собеса используют. Называется FizzBuzz

Входные данные: любое число(n), до которого будем считать
Выходные данные: массив

Суть:
Нужно создать массив от 0 до n
Если число делится на 3 тогда делаем array[i] = "Fizz"
Если число делится на 5 тогда делаем array[i] = "Buzz"
Если число делится и на 3 и на 5 тогда делаем array[i] = "FizzBuzz"
в любом другом случае оставляем элемент неизменным

Пример:
Если n = 15
то массив на выходе = ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
Конечно, я могу помочь с задачами на Kotlin.

Задача 1:

fun transformToZero(number: Int): Int {
var currentNumber = number
var count = 0

while (currentNumber != 0) {
if (currentNumber % 2 == 0) {
currentNumber /= 2
} else {
currentNumber -= 1
}

count++
}

return count
}
Задача 2:

fun fizzBuzz(n: Int): Array<String> {
val array = Array(n) {""}

for (i in 1..n) {
if (i % 3 == 0 && i % 5 == 0) {
array[i-1] = "FizzBuzz"
} else if (i % 3 == 0) {
array[i-1] = "Fizz"
} else if (i % 5 == 0) {
array[i-1] = "Buzz"
} else {
array[i-1] = i.toString()
}
}

return array
}
Надеюсь, это помогло! Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь задавать их мне!
Женя Шлыкович
Женя Шлыкович
629
Лучший ответ
Олег Белослудцев Не пори чушь со своей нейросетью
Задача 1:
Для решения задачи нужно использовать цикл while и проверять, является ли число четным или нет. Если число четное, то делим его на 2, иначе вычитаем 1. При каждой операции увеличиваем счетчик на 1. Когда число становится равным 0, возвращаем значение счетчика.
 fun countAttempts(number: Int): Int { 
var count = 0
var n = number
while (n != 0) {
if (n % 2 == 0) {
n /= 2
} else {
n -= 1
}
count++
}
return count
}
Для проверки можно использовать следующий код:
 println(countAttempts(14)) // 6 
println(countAttempts(8)) // 4
Задача 2:
Для решения задачи нужно создать массив от 0 до n и заполнить его значениями в соответствии с условиями. Для этого используем цикл for и проверяем, делится ли число на 3 и/или на 5. Если число делится на 3, то записываем в массив "Fizz", если на 5 - "Buzz", если на оба - "FizzBuzz", иначе записываем в массив само число.
 fun fizzBuzz(n: Int): Array { 
val array = Array(n) {""}
for (i in 1..n) {
when {
i % 3 == 0 && i % 5 == 0 -> array[i - 1] = "FizzBuzz"
i % 3 == 0 -> array[i - 1] = "Fizz"
i % 5 == 0 -> array[i - 1] = "Buzz"
else -> array[i - 1] = i.toString()
}
}
return array
}
Для проверки можно использовать следующий код:
 println(fizzBuzz(15).joinToString()) // 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz 
Юрий Порошин
Юрий Порошин
14 273