Pentru problema 1, poţi începe prin a declara variabilele a, b şi c şi apoi poţi calcula x prin a face a*b/c. În Kotlin, poţi face asta astfel:
val a = 6
val b = 10
val c = 0.2
val x = a*b/c
Pentru problema 2, poţi începe prin a converti numărul întreg într-un şir de caractere şi apoi poţi parcurge fiecare caracter, convertindu-l la un număr şi adăugându-l la suma totală. În Kotlin, poţi face asta astfel:
val a = 235230
var sum = 0
val str = a.toString()
for (ch in str) {
sum += ch.toInt() - '0'.toInt()
}
Pentru problema 3, poţi începe prin a calcula suma lungimilor şirurilor a şi b şi apoi poţi compara şirurile lexicografic. Dacă a este mai mare decât b, poţi tipări "a este mai mare decât b", altfel poţi tipări "b este mai mare decât a". După aceea, poţi capitaliza primele litere din şirurile a şi b şi le poţi tipări pe o singură linie, separate de un spaţiu. În Kotlin, poţi face asta astfel:
val a = "abc"
val b = "def"
val sum = a. length + b. length
if (a > b) {
println("a este mai mare decât b")
} else {
println("b este mai mare decât a")
}
val aCapitalized = a.capitalize()
val bCapitalized = b.capitalize()
println("$aCapitalized $bCapitalized")
Pentru problema 4, poţi începe prin a verifica dacă şirul este un palindrom. Poţi face asta prin a compara şirul inversat cu şirul original. Dacă sunt egale, atunci şirul este un palindrom, altfel nu este. În Kotlin, poţi face asta astfel:
val a = "racecar"
if (a == a.reversed()) {
println("Yes")
} else {
println("No")
}
Pentru problema 5, poţi începe prin a obţine un subsir din şirul dat folosind metoda substring. În Kotlin, poţi face asta astfel:
val s = "abcdefghijklmnopqrstuvwxyz"
val start = 3
val end = 7
val sub = s.substring(start.end)
println(sub) // va afişa "defgh"
Pentru problema 6, poţi începe prin a tipări liniile cu caracterele dat. Poţi face asta prin a utiliza câte un ciclu for pentru fiecare linie şi tipărind caracterele necesare în funcţie de poziţia în linie. În Kotlin, poţi face asta astfel:
val n = 5
for (i in 0 until n) {
for (j in 0 until 2*n) {
if (j == n-i-1 || j == n+i) {
print("/")
} else if (j == n+i+1) {
print("\\")
} else {
print("=")
}
}
println()
}
Pentru problema 7, poţi începe prin a scrie o funcţie care primeşte un parametru n şi returnează "Fizz Buzz" dacă n este divizibil cu 3 şi 5, "Fizz" dacă n este divizibil doar cu 3, "Buzz" dacă n este divizibil doar cu 5 şi numărul în sine în caz contrar. Poţi face asta prin a utiliza expresia when. În Kotlin, poţi face asta astfel:
fun fizzBuzz(n: Int): String {
return when {
n % 3 == 0 && n % 5 == 0 -> "Fizz Buzz"
n % 3 == 0 -> "Fizz"
n % 5 == 0 -> "Buzz"
else -> n.toString()
}
}
Pentru problema 8, poţi începe prin a parcurge array-ul şi a verifica dacă elementele consecutive sunt egale. Dacă sunt, atunci poţi incrementa contorul de clump-uri. În Kotlin, poţi face asta astfel:
fun countClumps(array: IntArray): Int {
var count = 0
for (i in 1 until array.size) {
if (array[i] == array[i-1]) {
count++
}
}
return count
}
Pentru problema 9, poţi începe prin a citi şirul şi a păstra o hartă care conţine frecvenţa fiecărui caracter.
fun countFrequencies(s: String) {
val frequencies = mutableMapOf()
for (c in s) {
if (c in frequencies) {
frequencies[c] = frequencies[c]! + 1
} else {
frequencies[c] = 1
}
}
for ((c, count) in frequencies) {
println("$c: $count")
}
}
Pentru problema 10, poţi începe prin a crea clasele Student, Teacher, Course şi Faculty. Clasa Student poate avea câmpurile name, email şi preferredCourses, iar clasa Teacher poate avea câmpurile name şi email. Clasa Course poate avea câmpurile name, teacher şi enrolledStudents, iar clasa Faculty poate avea metoda enrollInCourses care primeşte o listă de studenţi şi le asigură că sunt înscrişi în cursurile lor preferate, dacă acestea sunt disponibile. În Kotlin, poţi face asta astfel:
class Student(val name: String, val email: String, val preferredCourses: List)
class Teacher(val name: String, val email: String)
class Course(val name: String, val teacher: Teacher, val enrolledStudents: MutableList)
class Faculty {
fun enrollInCourses(students: List) {
for (student in students) {
val availableCourses = getAvailableCourses(student.preferredCourses)
for (course in availableCourses) {
course.enrolledStudents.add(student)
}
}
}
private fun getAvailableCourses(preferredCourses: List): List {
// implementare pentru a returna cursurile disponibile din preferredCourses
}
}
Pentru problema 11, poţi începe prin a crea o funcţie care primeşte un array de întregi şi creează un nou array de acelaşi mărime şi copiază elementele din primul array în cel de-al doilea. Apoi poţi returna referinţa către noul array.
fun cloneArray(array: IntArray): IntArray {
val clone = IntArray(array.size)
for (i in array.indices) {
clone[i] = array[i]
}
return clone
}
Pentru problema 12, poţi începe prin a parcurge array-ul şi a verifica dacă elementul curent este egal cu target. Dacă este, poţi returna poziţia curentă. Dacă nu, poţi continua parcurgerea array-ului până când se termină. Dacă nu s-a găsit niciun element egal cu target, poţi returna -1.
fun findTarget(array: IntArray, target: Int): Int {
for (i in array.indices) {
if (array[i] == target) {
return i
}
}
return -1
}
Pentru problema 13, poţi începe prin a scrie o funcţie care calculează factorialul unui număr. Poţi face asta prin a începe cu un contor egal cu numărul dat şi apoi prin a înmulţi contorul cu fiecare număr mai mic decât el până la 1.
fun factorial(n: Int): Int {
var result = n
for (i in 2 until n) {
result *= i
}
return result
}
for (i in 0.30) {
println("$i! = ${factorial(i)}")
}
Pentru problema 14, poţi începe prin a scrie o funcţie care primeşte două şiruri de caractere şi verifică dacă sunt anagrame.
fun isAnagram(s1: String, s2: String): Boolean {
val sorted1 = s1.toLowerCase().sorted()
val sorted2 = s2.toLowerCase().sorted()
return sorted1 == sorted2
}
Cauta lectia si inlocuieste nr din lectie cu cele din "probleme". Cred ca ceea ce nu intelgi e engleza.