-
Notifications
You must be signed in to change notification settings - Fork 102
Lesson 4 (+1cm fix) #181
Lesson 4 (+1cm fix) #181
Changes from 10 commits
aaef63b
5df633c
2b345c3
2089f93
4e87474
e07bbf8
86deb7e
54489b4
0723736
eea6e06
f52459b
da7fe92
d53148d
9551b2d
cf5013f
2b7153a
fd6576c
d2f8933
b14546b
ffcb823
a3296aa
efdf1f2
8401f8d
34bcdc0
5ffb88c
9bcf582
48bf8bd
573e3e9
a7361f8
a9a2bb9
633ff7a
ddace56
09d43f4
9880866
96fd842
d4239b7
c77f014
b9388ef
556a71a
9106d90
8d3e526
0e0caf8
5f211aa
530aa30
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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) = hours * 3600 + minutes * 60 + seconds | ||
|
||
/** | ||
* Тривиальная | ||
|
@@ -60,31 +60,33 @@ 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 = | ||
((vershoks * 4.445 + arshins * 16* 4.445 + sagenes * 48* 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 + sec / 60.0) /60.0)) * Math.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) = sqrt(sqr(x2 - x1) + sqr(y2 - y1)) | ||
|
||
/** | ||
* Простая | ||
* | ||
* Пользователь задает целое число, большее 100 (например, 3801). | ||
* Определить третью цифру справа в этом числе (в данном случае 8). | ||
*/ | ||
fun thirdDigit(number: Int): Int = TODO() | ||
fun thirdDigit(number: Int) = (number/100)%10 | ||
|
||
|
||
/** | ||
* Простая | ||
|
@@ -93,7 +95,8 @@ 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) = | ||
((hoursArrive * 60 + minutesArrive) - (hoursDepart * 60 + minutesDepart)) | ||
|
||
/** | ||
* Простая | ||
|
@@ -102,12 +105,20 @@ 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 k = initial + initial*0.01*percent | ||
return (k + k*0.01*percent) + (k + k*0.01*percent)*0.01*percent | ||
|
||
} | ||
|
||
/** | ||
* Простая | ||
* | ||
* Пользователь задает целое трехзначное число (например, 478). | ||
*Необходимо вывести число, полученное из заданного перестановкой цифр в обратном порядке (например, 874). | ||
*/ | ||
fun numberRevert(number: Int): Int = TODO() | ||
fun numberRevert(number: Int): Int { | ||
val x1 = number / 100 | ||
val x2 = (number / 10) % 10 | ||
val x3 = number % 10 | ||
return x3*100+x2*10+x1 | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,8 +33,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 { | ||
if ((age / 10) % 10 == 1) | ||
|
||
return "$age лет" | ||
return when (age % 10) { | ||
1 -> "$age год" | ||
in 2..4 -> "$age года" | ||
else -> "$age лет" | ||
} | ||
} | ||
/** | ||
* Простая | ||
* | ||
|
@@ -44,8 +51,14 @@ 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 s1 = v1 * t1 | ||
val s2 = v2 * t2 | ||
val s = s1 + s2 + v3 * t3 | ||
if (s / 2 <= s1) return (s / 2) / v1 | ||
|
||
else if ((s / 2 > s1) && (s / 2 <= s1 + s2)) return t1 + ((s / 2 - s1) / v2) | ||
else return t1 + t2 + (s / 2 - s1 - s2) / v3 | ||
} | ||
/** | ||
* Простая | ||
* | ||
|
@@ -56,8 +69,15 @@ 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 { | ||
return when { | ||
(kingX != rookX1) && (kingX != rookX2) && (kingY != rookY1) && (kingY != rookY2) -> 0 | ||
|
||
((kingX == rookX1) || (kingY == rookY1)) && (kingX != rookX2) && (kingY != rookY2) -> 1 | ||
((kingX == rookX2) || (kingY == rookY2)) && (kingX != rookX1) && (kingY != rookY1) -> 2 | ||
((kingX == rookX1) || (kingY == rookY1)) && ((kingX == rookX2) || (kingY == rookY2)) -> 3 | ||
else -> -1 | ||
} | ||
} | ||
/** | ||
* Простая | ||
* | ||
|
@@ -69,8 +89,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 { | ||
return if ((kingX != rookX) && (kingY != rookY) | ||
|
||
&& ((Math.abs(kingX - bishopX)) != (Math.abs(kingY - bishopY)))) 0 | ||
else if (((kingX == rookX) || (kingY == rookY)) && | ||
((Math.abs(kingX - bishopX)) != (Math.abs(kingY - bishopY)))) 1 | ||
else if ((kingX != rookX) && (kingY != rookY) && | ||
((Math.abs(kingX - bishopX)) == (Math.abs(kingY - bishopY)))) 2 | ||
else 3 | ||
} | ||
/** | ||
* Простая | ||
* | ||
|
@@ -79,8 +106,17 @@ 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 cosA = (b * b + c * c - a * a) / (2 * b * c) | ||
|
||
val cosB = (a * a + c * c - b * b) / (2 * a * c) | ||
val cosC = (a * a + b * b - c * c) / (2 * a * b) | ||
return when { | ||
((a + b) <= c) || ((a + c) <= b) || ((b + c) <= a) -> -1 | ||
(Math.abs(cosA) < 0.00001) || (Math.abs(cosB) < 0.00001) || (Math.abs(cosC) < 0.00001) -> 1 | ||
(cosA < 0) || (cosB < 0) || (cosC < 0) -> 2 | ||
else -> 0 | ||
} | ||
} | ||
/** | ||
* Средняя | ||
* | ||
|
@@ -89,4 +125,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 { | ||
return when { | ||
|
||
(d < a) || (c > b) -> -1 | ||
(c >= a) && (b >= d) -> d - c | ||
(a >= c) && (b >= d) -> d - a | ||
(a >= c) && (d >= b) -> b - a | ||
else -> b - c | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
@file:Suppress("UNUSED_PARAMETER") | ||
|
||
package lesson2.task2 | ||
|
||
import lesson1.task1.sqr | ||
|
@@ -17,15 +18,23 @@ 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 f = (number / 1000) % 10 | ||
|
||
val th = (number / 100) % 10 | ||
val t = (number / 10) % 10 | ||
val o = number % 10 | ||
return f + th == t + o | ||
} | ||
|
||
/** | ||
* Простая | ||
* | ||
* На шахматной доске стоят два ферзя (ферзь бьет по вертикали, горизонтали и диагоналям). | ||
* Определить, угрожают ли они друг другу. Вернуть true, если угрожают. | ||
*/ | ||
fun queenThreatens(x1: Int, y1: Int, x2: Int, y2: Int): Boolean = TODO() | ||
fun queenThreatens(x1: Int, y1: Int, x2: Int, y2: Int): Boolean { | ||
return (x1 == x2) || (y1 == y2) || (x1 + y1 == x2 + y2) || (x1 - y1 == x2 - y2) | ||
|
||
} | ||
|
||
/** | ||
* Средняя | ||
|
@@ -35,7 +44,9 @@ 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 { | ||
return (Math.sqrt(sqr(x1 - x2) + sqr(y1 - y2)) + r1) <= r2 | ||
|
||
} | ||
|
||
/** | ||
* Средняя | ||
|
@@ -46,4 +57,8 @@ 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 { | ||
return (a <= r) && (b <= s) || (a <= r) && (c <= s) || | ||
|
||
(b <= r) && (c <= s) || (b <= r) && (a <= s) || | ||
(c <= r) && (a <= s) || (c <= r) && (b <= s) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Лишние скобки вокруг законченного выражения