Skip to content
This repository was archived by the owner on Sep 6, 2018. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
86c93e1
lessons 1,2,3 solved, lesson 4 in progress
tiger31 Sep 10, 2016
39c75cb
lessons 1-4 are solved, lesson 5 in progress
tiger31 Sep 12, 2016
1cfa6a4
lesson5 except last
tiger31 Sep 12, 2016
d0e15fc
Lot of fixes in lessons 2-5
tiger31 Sep 16, 2016
4a7b80e
fast fixes og lesson 4
tiger31 Sep 16, 2016
a14000c
more fixes in lessons 4,5
tiger31 Sep 16, 2016
eaf437a
some fixes, lesson 5 last task is done
tiger31 Sep 22, 2016
0cd95fb
fix mistakes made by inadvertence
tiger31 Sep 22, 2016
09a2736
almost lesson 6
tiger31 Oct 6, 2016
e74a4b4
fixes in 1..5 lessons, lesson 6 done even "Impossible"
tiger31 Oct 13, 2016
f071550
lesson 2 "triangleKind" fix
tiger31 Oct 13, 2016
1687908
some fixes(not all) and tasks of lesson 7
tiger31 Nov 25, 2016
36387e8
more fixes in lessons 4,5
tiger31 Nov 25, 2016
2d2c7c4
just one space between fun params and ":" have broken compilation -_-
tiger31 Nov 25, 2016
48f936c
still can't understand how does it work
tiger31 Nov 25, 2016
22ac995
try №3
tiger31 Nov 25, 2016
d8804b3
try №4
tiger31 Nov 25, 2016
bddcd7f
try #5
tiger31 Nov 25, 2016
a7feb13
Inherit members to extensions
tiger31 Nov 25, 2016
805de36
fixes of getRow and getColumn getting exception
tiger31 Nov 25, 2016
fa63f1e
lesson 7 except last two fun's
tiger31 Nov 26, 2016
816b452
snake fix
tiger31 Nov 26, 2016
20f2a8d
fifteenGameMoves solved
tiger31 Nov 26, 2016
ed9fee9
Can't solve last of 7'th lesson, so need help. Lesson 8 tasks
tiger31 Dec 1, 2016
f2e0443
Names conflict
tiger31 Dec 1, 2016
66d2fcc
Still can't sole last of 7'th. 8 lesson
tiger31 Dec 1, 2016
f685768
IDA* 7'th last. Still need help, 'cause it's solving 15-20 steps, but…
tiger31 Dec 5, 2016
6703df7
some fixes lesson 7,8. Last task of 7'th has been commented for kotli…
tiger31 Dec 18, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions src/lesson1/task1/Simple.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ fun main(args: Array<String>) {
* Пользователь задает время в часах, минутах и секундах, например, 8:20:35.
* Рассчитать время в секундах, прошедшее с начала суток (30035 в данном случае).
*/
fun seconds(hours: Int, minutes: Int, seconds: Int): Int = TODO()
fun seconds(hours: Int, minutes: Int, seconds: Int): Int = hours * 3600 + minutes * 60 + seconds

/**
* Тривиальная
Expand All @@ -60,31 +60,31 @@ fun seconds(hours: Int, minutes: Int, seconds: Int): Int = TODO()
* Определить длину того же отрезка в метрах (в данном случае 18.98).
* 1 сажень = 3 аршина = 48 вершков, 1 вершок = 4.445 см.
*/
fun lengthInMeters(sagenes: Int, arshins: Int, vershoks: Int): Double = TODO()
fun lengthInMeters(sagenes: Int, arshins: Int, vershoks: Int): Double = (sagenes * 48 + arshins * 16 + vershoks) * 4.445 / 100

/**
* Тривиальная
*
* Пользователь задает угол в градусах, минутах и секундах (например, 36 градусов 14 минут 35 секунд).
* Вывести значение того же угла в радианах (например, 0.63256).
*/
fun angleInRadian(grad: Int, min: Int, sec: Int): Double = TODO()
fun angleInRadian(grad: Int, min: Int, sec: Int): Double = (grad + min / 60.0 + sec / 3600.0) * PI / 180

/**
* Тривиальная
*
* Найти длину отрезка, соединяющего точки на плоскости с координатами (x1, y1) и (x2, y2).
* Например, расстояние между (3, 0) и (0, 4) равно 5
*/
fun trackLength(x1: Double, y1: Double, x2: Double, y2: Double): Double = TODO()
fun trackLength(x1: Double, y1: Double, x2: Double, y2: Double): Double = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))

/**
* Простая
*
* Пользователь задает целое число, большее 100 (например, 3801).
* Определить третью цифру справа в этом числе (в данном случае 8).
*/
fun thirdDigit(number: Int): Int = TODO()
fun thirdDigit(number: Int): Int = (number % 1000 - number % 100) / 100

/**
* Простая
Expand All @@ -93,7 +93,9 @@ fun thirdDigit(number: Int): Int = TODO()
* прибыл на станцию назначения в h2 часов m2 минут того же дня (например в 13:01).
* Определите время поезда в пути в минутах (в данном случае 216).
*/
fun travelMinutes(hoursDepart: Int, minutesDepart: Int, hoursArrive: Int, minutesArrive: Int): Int = TODO()
fun travelMinutes(hoursDepart: Int, minutesDepart: Int, hoursArrive: Int, minutesArrive: Int): Int =
(hoursArrive * 60 + minutesArrive) - (hoursDepart * 60 + minutesDepart)


/**
* Простая
Expand All @@ -102,12 +104,23 @@ fun travelMinutes(hoursDepart: Int, minutesDepart: Int, hoursArrive: Int, minute
* Сколько денег будет на счету через 3 года (с учётом сложных процентов)?
* Например, 100 рублей под 10% годовых превратятся в 133.1 рубля
*/
fun accountInThreeYears(initial: Int, percent: Int): Double = TODO()
fun accountInThreeYears(initial: Int, percent: Int): Double {
val per = 1 + percent/ 100.0
return initial * per * per * per
}

/**
* Простая
*
* Пользователь задает целое трехзначное число (например, 478).
*Необходимо вывести число, полученное из заданного перестановкой цифр в обратном порядке (например, 874).
*/
fun numberRevert(number: Int): Int = TODO()
fun numberRevert(number: Int): Int {
var n = number
var result = 0
while (n > 0) {
result = result * 10 + n % 10
n /= 10
}
return result
}
68 changes: 62 additions & 6 deletions src/lesson2/task1/IfElse.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
package lesson2.task1

import lesson1.task1.discriminant
import lesson1.task1.sqr
import java.lang.Math.*

/**
* Пример
Expand Down Expand Up @@ -33,7 +35,15 @@ fun minBiRoot(a: Double, b: Double, c: Double): Double {
* Мой возраст. Для заданного 0 < n < 200, рассматриваемого как возраст человека,
* вернуть строку вида: «21 год», «32 года», «12 лет».
*/
fun ageDescription(age: Int): String = TODO()
fun ageDescription(age: Int): String =
when {
age % 100 in 5..20 -> "$age лет"
age % 10 == 0 -> "$age лет"
age % 10 > 4 -> "$age лет"
age % 10 == 1 -> "$age год"
else -> "$age года"
}


/**
* Простая
Expand All @@ -44,7 +54,17 @@ fun ageDescription(age: Int): String = TODO()
*/
fun timeForHalfWay(t1: Double, v1: Double,
t2: Double, v2: Double,
t3: Double, v3: Double): Double = TODO()
t3: Double, v3: Double): Double {
val first = t1 * v1
val sec = t2 * v2
val third = t3 * v3
val path = (first + sec + third) / 2
return when {
first >= path -> path / v1
first + sec >= path -> t1 + (path - first) / v2
else -> t1 + t2 + (path - first - sec) / v3
}
}

/**
* Простая
Expand All @@ -56,7 +76,16 @@ fun timeForHalfWay(t1: Double, v1: Double,
*/
fun whichRookThreatens(kingX: Int, kingY: Int,
rookX1: Int, rookY1: Int,
rookX2: Int, rookY2: Int): Int = TODO()
rookX2: Int, rookY2: Int): Int {
val rook1 = (rookX1==kingX || rookY1==kingY)
val rook2 = (rookX2==kingX || rookY2==kingY)
return when {
(rook1 && rook2) -> 3
rook2 -> 2
rook1 -> 1
else -> 0
}
}

/**
* Простая
Expand All @@ -69,7 +98,15 @@ fun whichRookThreatens(kingX: Int, kingY: Int,
*/
fun rookOrBishopThreatens(kingX: Int, kingY: Int,
rookX: Int, rookY: Int,
bishopX: Int, bishopY: Int): Int = TODO()
bishopX: Int, bishopY: Int): Int {
val rook = (kingX == rookX || kingY == rookY)
val bish = (abs(kingX - bishopX) == abs(kingY - bishopY))
return when {
rook && bish -> 3
bish -> 2
rook -> 1
else -> 0 }
}

/**
* Простая
Expand All @@ -79,7 +116,18 @@ fun rookOrBishopThreatens(kingX: Int, kingY: Int,
* прямоугольным (вернуть 1) или тупоугольным (вернуть 2).
* Если такой треугольник не существует, вернуть -1.
*/
fun triangleKind(a: Double, b: Double, c: Double): Int = TODO()

fun triangleKind(a: Double, b: Double, c: Double): Int {
val arr = doubleArrayOf(a,b,c).sorted()
if (arr[2] <= arr[1] + arr[0]) {
val d = sqr(arr[2]) - (sqr(arr[1]) + sqr(arr[0]))
when {
d < 0 -> return 0
d > 0 -> return 2
else -> return 1
}
} else return -1
}

/**
* Средняя
Expand All @@ -89,4 +137,12 @@ fun triangleKind(a: Double, b: Double, c: Double): Int = TODO()
* Найти длину пересечения отрезков AB и CD.
* Если пересечения нет, вернуть -1.
*/
fun segmentLength(a: Int, b: Int, c: Int, d: Int): Int = TODO()
fun segmentLength(a: Int, b: Int, c: Int, d: Int): Int =
when {
c <= a && d >= a && d <= b -> d - a
c <= a && d >= b -> b - a
c >= a && d <= b -> d - c
c <= b && c >= a && d >= b -> b - c
else -> -1

}
16 changes: 12 additions & 4 deletions src/lesson2/task2/Logical.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package lesson2.task2

import lesson1.task1.sqr
import java.lang.Math.*

/**
* Пример
Expand All @@ -17,15 +18,18 @@ fun pointInsideCircle(x: Double, y: Double, x0: Double, y0: Double, r: Double) =
* Четырехзначное число назовем счастливым, если сумма первых двух ее цифр равна сумме двух последних.
* Определить, счастливое ли заданное число, вернуть true, если это так.
*/
fun isNumberHappy(number: Int): Boolean = TODO()
fun isNumberHappy(number: Int): Boolean {
val str = number.toString()
return str[0].toInt() + str[1].toInt() == str[2].toInt() + str[3].toInt()
}

/**
* Простая
*
* На шахматной доске стоят два ферзя (ферзь бьет по вертикали, горизонтали и диагоналям).
* Определить, угрожают ли они друг другу. Вернуть true, если угрожают.
*/
fun queenThreatens(x1: Int, y1: Int, x2: Int, y2: Int): Boolean = TODO()
fun queenThreatens(x1: Int, y1: Int, x2: Int, y2: Int): Boolean = (x1 == x2) || (y1 == y2) || (abs(y2 - y1) == abs((x2 - x1)))

/**
* Средняя
Expand All @@ -35,7 +39,8 @@ fun queenThreatens(x1: Int, y1: Int, x2: Int, y2: Int): Boolean = TODO()
* Вернуть true, если утверждение верно
*/
fun circleInside(x1: Double, y1: Double, r1: Double,
x2: Double, y2: Double, r2: Double): Boolean = TODO()
x2: Double, y2: Double, r2: Double): Boolean = sqrt(sqr(x2-x1) + sqr(y2-y1)) + r1 <= r2


/**
* Средняя
Expand All @@ -46,4 +51,7 @@ fun circleInside(x1: Double, y1: Double, r1: Double,
* кирпич 4 х 4 х 4 пройдёт через отверстие 4 х 4.
* Вернуть true, если кирпич пройдёт
*/
fun brickPasses(a: Int, b: Int, c: Int, r: Int, s: Int): Boolean = TODO()
fun brickPasses(a: Int, b: Int, c: Int, r: Int, s: Int): Boolean {
val values = intArrayOf(a,b,c).sorted()
return (values[0] <= min(r,s) && values[1] <= max(r,s))
}
Loading