Skip to content
This repository was archived by the owner on Sep 6, 2018. It is now read-only.

1,2,3 Lessons were done full #152

Closed
wants to merge 54 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
c0ce174
I did
StarKRE Sep 7, 2016
a47304e
I do tests
StarKRE Sep 10, 2016
f2d8ecb
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII…
StarKRE Sep 13, 2016
ce760f0
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII…
StarKRE Sep 21, 2016
5d9fc2f
some changes to merge
StarKRE Sep 21, 2016
c5b7d08
Merge branch 'master' of https://github.com/StarKRE/KotlinAsFirst2016
StarKRE Sep 21, 2016
d1451d3
m
StarKRE Sep 21, 2016
fc72e65
m
StarKRE Sep 21, 2016
3be7553
m
StarKRE Sep 21, 2016
2053908
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
StarKRE Sep 28, 2016
1be987d
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll…
StarKRE Sep 28, 2016
3a6f768
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
StarKRE Sep 29, 2016
a9aa2ac
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
StarKRE Sep 29, 2016
89811c2
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
StarKRE Sep 29, 2016
0e15213
1,2,3 Lessons are Full
StarKRE Sep 30, 2016
1b908b8
4th Lesson: abc, mean center, times were done
StarKRE Sep 30, 2016
d996018
2nd lesson: whichRookThreatens was changed
StarKRE Sep 30, 2016
d50f1c2
Поработал над недочетами в уроках 1, 2, 3, 4
StarKRE Oct 1, 2016
047bdc0
Исправил недочеты в 1, 2, 3 уроках
StarKRE Oct 2, 2016
5f979f9
Проработал 1, 2, 3 Уроки
StarKRE Oct 4, 2016
bbe7115
Проработал 1, 2, 3 Уроки
StarKRE Oct 4, 2016
62d5ea7
Работа над 4-м уроком
StarKRE Oct 5, 2016
88e032a
4 th lesson is progressing)
StarKRE Oct 5, 2016
574f903
Работа над 4-м уроком
StarKRE Oct 12, 2016
7888c47
4 th lesson is progressing)
StarKRE Oct 12, 2016
136af35
Работа с 5-м уроком
StarKRE Oct 19, 2016
8f7f819
Исправлял недочеты в уроках 1 - 5
StarKRE Oct 20, 2016
f2f2040
Исправлял недочеты в уроках 1 - 5
StarKRE Oct 25, 2016
5e44f25
Merge remote-tracking branch 'origin/master'
StarKRE Oct 26, 2016
4ec2fa6
Работа с 5-м уроком, есть недочеты (работал на другом компьютере)
StarKRE Oct 26, 2016
9c35312
Исправлял замечания, немного поработал над 5 - м уроком
StarKRE Oct 27, 2016
32f327c
Подправил задания в 5-м уроке
StarKRE Oct 27, 2016
c7c1d0d
Подправил задания в 5-м уроке
StarKRE Oct 27, 2016
b75e004
Подправил задания 2 - 5 Урок
StarKRE Nov 1, 2016
f9ab94c
Работа с 6-м уроком, есть недочеты (работал на другом компьютере)
StarKRE Nov 2, 2016
376413c
Подправил задания 2 - 6 Урок
StarKRE Nov 8, 2016
b0a799d
Подправил задания 2 - 6 Урок
StarKRE Nov 8, 2016
28685f9
Работа с 6-м уроком, есть недочеты (работал на другом компьютере)
StarKRE Nov 9, 2016
c190db8
Работа с 6-м уроком, есть недочеты (работал на другом компьютере)
StarKRE Nov 16, 2016
a28997e
Работа с 6-м уроком, есть недочеты (работал на другом компьютере)
StarKRE Nov 16, 2016
c7f52b0
Поработал с уроками 2 - 7
StarKRE Nov 23, 2016
8e9aa5e
Подправил задания 2 - 7 Урок
StarKRE Nov 24, 2016
7dedaf5
Исправлял замечания в уроках
StarKRE Nov 30, 2016
f7cd922
Исправлял замечания в уроках
StarKRE Nov 30, 2016
4674250
Переброс файлов, не проверять, working progress
StarKRE Dec 8, 2016
b560fc1
Переброс файлов, не проверять, working progress
StarKRE Dec 14, 2016
6d8bdcf
Переброс файлов, не проверять, working progress
StarKRE Dec 15, 2016
c28421c
Спасибо за понимание, можно проверять.
StarKRE Dec 16, 2016
0337499
Спасибо за понимание, можно проверять.
StarKRE Dec 19, 2016
6305936
1 - 8 lessons
StarKRE Dec 19, 2016
eb5e905
Доработка уроков
StarKRE Dec 21, 2016
104234d
Доработка уроков
StarKRE Dec 21, 2016
6bad796
попытка номер три
StarKRE Dec 21, 2016
4b9b1f5
попытка номер три
StarKRE Dec 21, 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
54 changes: 46 additions & 8 deletions src/lesson1/task1/Simple.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
@file:Suppress("UNUSED_PARAMETER")

package lesson1.task1

import java.lang.Math.*
Expand Down Expand Up @@ -51,7 +52,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 +61,36 @@ 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 * 0.04445 + arshins * 16 * 0.04445 + sagenes * 48 * 0.04445

/**
* Тривиальная
*
* Пользователь задает угол в градусах, минутах и секундах (например, 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) / (180.0 / Math.PI)


/**
* Тривиальная
*
* Найти длину отрезка, соединяющего точки на плоскости с координатами (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(sqr(x2 - x1) + sqr(y2 - y1))


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

/**
* Простая
Expand All @@ -93,7 +99,13 @@ 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 {
var min = (hoursArrive - hoursDepart) * 60 + (minutesArrive - minutesDepart)
if (min < 0) {
min += 24 * 60
}
return min
}

/**
* Простая
Expand All @@ -102,12 +114,38 @@ 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 = 1 + percent / 100.0
return k * k * k * initial
}


/**
* Простая
*
* Пользователь задает целое трехзначное число (например, 478).
*Необходимо вывести число, полученное из заданного перестановкой цифр в обратном порядке (например, 874).
*/
fun numberRevert(number: Int): Int = TODO()
fun numberRevert(number: Int): Int = ((number % 10) * 100) + ((number / 100)) +
(number - ((number / 100) * 100) - (number % 10))

/**
* Номер телефона
*/
fun oldPhoneNumber(text: String): String {
val result = mutableListOf<String>()
for (i in 0..text.length - 1){
if (text[i] in 'A'..'C') result.add("2")
if (text[i] in 'D'..'F') result.add("3")
if (text[i] in 'G'..'I') result.add("4")
if (text[i] in 'J'..'L') result.add("5")
if (text[i] in 'M'..'O') result.add("6")
if (text[i] in 'P'..'S') result.add("7")
if (text[i] in 'T'..'V') result.add("8")
if (text[i] in 'W'..'Z') result.add("9")
if (text[i] in '0'..'9') result.add(text[i].toString())
if (text[i] == '-') result.add("-")
}
return result.joinToString(separator = "")
}

97 changes: 91 additions & 6 deletions src/lesson2/task1/IfElse.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
@file:Suppress("UNUSED_PARAMETER")

package lesson2.task1

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

/**
* Пример
Expand Down Expand Up @@ -33,7 +35,12 @@ 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 % 10 == 1 && age / 10 != 1 && age / 10 != 11 -> "$age год"
age % 10 in 2..4 && age / 10 != 1 && age / 10 != 11 -> "$age года"
else -> "$age лет"
}


/**
* Простая
Expand All @@ -44,7 +51,18 @@ 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 ss1 = v1 * t1
val ss2 = v2 * t2
val ss3 = v3 * t3
val s2 = (ss1 + ss2 + ss3) / 2
return when {
s2 <= ss1 -> s2 / v1
s2 <= ss1 + ss2 -> (s2 - ss1) / v2 + t1
else -> (s2 - ss1 - ss2) / v3 + t1 + t2
}
}


/**
* Простая
Expand All @@ -56,7 +74,17 @@ 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 firstRook = (kingX == rookX1 || kingY == rookY1)
val secondRook = (kingX == rookX2 || kingY == rookY2)
return when {
!firstRook && !secondRook -> 0
firstRook && !secondRook -> 1
!firstRook && secondRook -> 2
else -> 3
}
}


/**
* Простая
Expand All @@ -69,7 +97,17 @@ 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 bishopThreaten = (abs(kingX - bishopX) == abs(kingY - bishopY))
val rookThreaten = (kingX == rookX) || (kingY == rookY)
return when {
rookThreaten && !bishopThreaten -> 1
!rookThreaten && bishopThreaten -> 2
rookThreaten && bishopThreaten -> 3
else -> 0

}
}

/**
* Простая
Expand All @@ -78,8 +116,50 @@ fun rookOrBishopThreatens(kingX: Int, kingY: Int,
* Проверить, является ли данный треугольник остроугольным (вернуть 0),
* прямоугольным (вернуть 1) или тупоугольным (вернуть 2).
* Если такой треугольник не существует, вернуть -1.
*
*/
fun triangleKind(a: Double, b: Double, c: Double): Int = TODO()
fun maxOfThree(a: Double, b: Double, c: Double): Double {
var max = 0.0
if (a > b) {
max = a
} else {
max = b
}
if (c > max) {
max = c
}
return max
}

fun minOfThree(a: Double, b: Double, c: Double): Double {
var min = 0.0
if (a < b) {
min = a
} else {
min = b
}
if (c < min) {
min = c
}
return min
}

fun mediumOfThree(a: Double, b: Double, c: Double): Double =
a + b + c - minOfThree(a, b, c) - maxOfThree(a, b, c)

fun sqr(x: Double) = x * x

fun triangleKind(a: Double, b: Double, c: Double): Int {
val min = minOfThree(a, b, c)
val medium = mediumOfThree(a, b, c)
val max = maxOfThree(a, b, c)
return when {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Оператор when пишется немного не так (вы уже использовали правильную форму выше по коду). Посмотрите на примеры в главе 2 и разберитесь, как можно упростить данную "лестницу".

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласен, Перемудрил немного...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Отформатировать его еще бы нормально, и совсем хорошо станет!

max >= min + medium -> -1
sqr(min) + sqr(medium) == sqr(max) -> 1
sqr(min) + sqr(medium) < sqr(max) -> 2
else -> 0
}
}

/**
* Средняя
Expand All @@ -89,4 +169,9 @@ 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 {
Math.min(b, d) - Math.max(a, c) >= 0 -> Math.min(b, d) - Math.max(a, c)
else -> -1
}


28 changes: 23 additions & 5 deletions src/lesson2/task2/Logical.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
package lesson2.task2

import lesson1.task1.sqr
import lesson2.task1.mediumOfThree
import lesson2.task1.minOfThree

/**
* Пример
Expand All @@ -17,15 +19,25 @@ 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 a = number / 1000
val b = (number / 100) % 10
val c = (number / 10) % 10
val d = number % 10

return a + b == c + d
}


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


/**
* Средняя
Expand All @@ -35,8 +47,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 =
Math.sqrt(sqr(x1 - x2) + sqr(y1 - y2)) <= r2 - r1
/**
* Средняя
*
Expand All @@ -46,4 +58,10 @@ 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 min = minOfThree(a.toDouble(), b.toDouble(), c.toDouble())
val nor = mediumOfThree(a.toDouble(), b.toDouble(), c.toDouble())
return (r >= nor && s >= min) || (r >= min && s >= nor)
}

Loading