Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ВПД Git Шахов О.; 3530901/10001 #6

Open
wants to merge 78 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
60dd3e5
Map: typo fix
mglukhikh Oct 27, 2020
ceafca7
Fix test for lesson11.Complex.unaryMinus
ice-phoenix Mar 1, 2021
2325fe0
Fix test for lesson11.DimensionalValue (1 kg = 1000 g)
mglukhikh Mar 9, 2021
78ac63a
Lesson 11: fix various complex tests
mglukhikh Mar 9, 2021
aa28e9a
Switch to proxy forwarders
ice-phoenix May 26, 2021
d3bf8ea
Update to 21.0.0
ice-phoenix Jul 27, 2021
66ff86d
Refresh chapter 00 for year 2021
mglukhikh Aug 18, 2021
da29d1d
Fix local tests of pathBetweenHexes (see #103)
mglukhikh Aug 18, 2021
d2430d9
Complex: change String-based constructor to factory method
mglukhikh Aug 18, 2021
9274cbc
Rename test (lineByPoints) according to base function name
mglukhikh Aug 18, 2021
e255ef7
Add test (circle on 3 non-diameter points) for minContainingCircle (#…
mglukhikh Aug 18, 2021
d2a000f
Drop task squareBetweenExists, see #100
mglukhikh Aug 18, 2021
e7f7868
Chapter 7: minor fixes + explanation about try/finally and use (#104)
mglukhikh Aug 18, 2021
7a836ed
Chapters 1-5: typo/style fixes
mglukhikh Aug 18, 2021
fdae774
Split chapter 10 into two chapters
mglukhikh Aug 18, 2021
dbf8b74
Add some task for lesson 10.2 (#80)
mglukhikh Sep 1, 2021
3bd1386
Add draft of chapter 10.2 (#92)
mglukhikh Sep 1, 2021
f0ffab6
Tutorial fixes around minOrNull(), maxOrNull()
mglukhikh Sep 3, 2021
6e38f50
Chapter 0: update links and minor details
mglukhikh Sep 3, 2021
c4c55e7
Chapter 0: some other FAQs
mglukhikh Sep 3, 2021
58ea7b6
Chapter 0: fix typo
mglukhikh Sep 3, 2021
06ead37
README: Update configuration manual link
mglukhikh Sep 3, 2021
35925df
README: Update chapter 10 info
mglukhikh Sep 3, 2021
1137b42
Suppress unused parameters for some files
mglukhikh Sep 6, 2021
8f0b73b
Добрый вечер! Сделала 1 урок, проверьте пожалуйста
elisananeva Sep 29, 2021
d72b8aa
Добрый вечер! Сделала 2, 3 и 4 уроки и исправила первый. Проверьте по…
elisananeva Oct 10, 2021
e67a9b8
Сделала 1-4 уроки
elisananeva Oct 15, 2021
8ed164c
Исправила замечания
elisananeva Nov 9, 2021
f457897
Исправила замечания
elisananeva Dec 8, 2021
381ed00
5 lesson done
elisananeva Dec 11, 2021
b4d8b54
доделала 6 и 7, исправила замечания
elisananeva Dec 13, 2021
287edcb
/
elisananeva Dec 13, 2021
d3ca33c
/
elisananeva Dec 13, 2021
bafd154
/
elisananeva Dec 21, 2021
9b06305
решены seconds и thirdDigit
old-uphoros Sep 13, 2021
5993b1f
2.1: ageDescription
old-uphoros Oct 3, 2021
16855bd
переделал brickPasses
old-uphoros Oct 3, 2021
caaaadd
снова переделал brickPasses
old-uphoros Oct 3, 2021
f743612
опять переделал brickPasses
old-uphoros Oct 3, 2021
e2ed6eb
еще раз переделал brickPasses теперь точно заработает
old-uphoros Oct 3, 2021
d510531
учел замечания и решил segmentLength
old-uphoros Nov 13, 2021
d5f08ac
решил russian
old-uphoros Nov 14, 2021
474019a
исправил russian
old-uphoros Nov 14, 2021
2becae6
исправил russian (2)
old-uphoros Nov 14, 2021
1c6a831
исправил russian (3)
old-uphoros Nov 14, 2021
cd3a846
исправил russian (4)
old-uphoros Nov 14, 2021
8b9afb0
исправил russian (5)
old-uphoros Nov 14, 2021
cc30656
решил roman
old-uphoros Nov 14, 2021
8aa28d7
исправил russian (6)
old-uphoros Nov 14, 2021
046216f
решил findSumOfTwo
old-uphoros Nov 14, 2021
0ca8052
исправил findSumOfTwo
old-uphoros Nov 14, 2021
54d06d6
исправил russian (7)
old-uphoros Nov 14, 2021
e074309
исправил russian (8)
old-uphoros Nov 14, 2021
4ef57d0
решил extractRepeats
old-uphoros Nov 14, 2021
883f64f
решил digitNumber и squareSequenceDigit
old-uphoros Nov 14, 2021
de2a2df
отформатировал код
old-uphoros Nov 14, 2021
6b0e9c5
сделал sibilants и centerFile
old-uphoros Jan 25, 2022
4011ff4
исправил centerFile
old-uphoros Jan 25, 2022
53cabef
исправил sibilants
old-uphoros Jan 25, 2022
98b6d09
исправил sibilants из Files
old-uphoros Jan 28, 2022
66691da
исправил plusMinus из Parse
old-uphoros Jan 28, 2022
83c9956
снова исправил plusMinus из Parse
old-uphoros Jan 28, 2022
6132506
исправил extractRepeats и roman
old-uphoros Jan 28, 2022
4049a00
подправил plusMinus
old-uphoros Jan 28, 2022
e3f901c
подправил plusMinus
old-uphoros Jan 28, 2022
1fb31df
внёс правки
old-uphoros Feb 6, 2022
e164fdc
задачи
old-uphoros Mar 4, 2022
cc51912
задачи
old-uphoros Mar 4, 2022
34918f4
Merge remote-tracking branch 'upstream-theirs/master' into master
old-uphoros May 24, 2022
0ee1fa8
file howto.md
old-uphoros May 24, 2022
e547381
file howto.md
old-uphoros May 24, 2022
a644695
Update remotes.md
old-uphoros May 24, 2022
87df136
Update remotes.md
old-uphoros May 24, 2022
9ac6c4f
Update remotes.md
old-uphoros May 24, 2022
58316d3
Update howto.md
old-uphoros May 24, 2022
fe83164
Update remotes.md
old-uphoros May 24, 2022
0a55364
Update remotes.md
old-uphoros May 24, 2022
863fe9a
Update howto.md
old-uphoros May 24, 2022
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
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Котлин как первый язык программирования
щ# Котлин как первый язык программирования

Решите приведённые в проекте задачи, чтобы научиться программировать на Котлине. Сейчас доступны двенадцать групп задач (уроков).

Expand All @@ -11,7 +11,7 @@
7. Работа с файлами.
8. Простые классы.
9. Сложные классы на примере матриц.
10. Cинтаксический разбор.
10. Доп. главы (синтаксический разбор, Kotlin DSL).
11. Классы с арифметическими операциями.
12. Классы-контейнеры.

Expand Down Expand Up @@ -41,7 +41,7 @@

Руководство по настройке среды программирования:

* http://kspt.icc.spbstu.ru/media/files/2018/kaf/IdeaConfig.pdf
* http://kspt.icc.spbstu.ru/media/files/2021/kaf/KotlinAsFirstConfig.pdf

Задачи по алгоритмам (Java/Kotlin):

Expand Down
15 changes: 15 additions & 0 deletions howto.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
1 ПОРЯДОК ДЕЙСТВИЙ
2 git remote add upstream-my https://[email protected]/uphoros/KotlinAsFirst2021.git
3 git checkout -b backport
4 затем я в идее черрипикнул все свои коммиты в бранч backport и запушил изменения
5 git remote add upstream-theirs https://[email protected]/elisananeva/KotlinAsFirst2021.git (своим партнером я выбрал Степанову Елизавету)
6 git checkout master
7 git merge upstream-theirs/master
8 git merge origin/backport --strategy-option ours (мои коммиты в приоритете)
9 touch "howto.md"
10 git add "howto.md"
11 git commit -m "file howto.md"
12 touch "remotes.md"
13 git add "remotes.md"
14 git commit -m "file remote.md"
15 git push с токеном
4 changes: 4 additions & 0 deletions input/football.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0 W W D - 1
L 0 W D - 2
L L 0 W - 3
D D L 0 - 4
4 changes: 4 additions & 0 deletions input/football2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0 W W D - 1
W 0 W D - 2
L L 0 W - 3
D D L 0 - 4
4 changes: 4 additions & 0 deletions input/govno.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
задание1 -- важность 2, 45 мин
задание2 -- важность 2, 75 мин
задание3 -- важность 3, 30 мин
задание4 -- важность 1, 45 мин
4 changes: 4 additions & 0 deletions input/govno2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
задание1 -- важность 2, 75 мин
задание2 -- важность 2, 75 мин
задание3 -- важность 3, 30 мин
задание4 -- важность 1, 75 мин
3 changes: 3 additions & 0 deletions input/html1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
= Header1
=== Header3
== Header2
3 changes: 3 additions & 0 deletions input/intersec.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
A = -1, 5, 43, 938, 202
B = 50, 49, 5, -1, -90, 202
C = 239, 928, 23, 445
3 changes: 3 additions & 0 deletions input/intersec2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
A = -1, 5, 43, 938, 202
B = 50, 49, 5, -1, -90, 202
C = 239, dsuf, 928, 23.1
5 changes: 5 additions & 0 deletions input/racing.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
21fsf dgfv
one, team1, 10
one, teamMM, 18
two, team1, 6
three, team2, 4
15 changes: 10 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,35 @@

<groupId>ru.spbstu</groupId>
<artifactId>kfirst</artifactId>
<version>20.0.0</version>
<version>21.0.0</version>

<name>kfirst</name>

<repositories>
<repository>
<id>bintray-vorpal-research-kotlin-maven</id>
<id>github-kotlin-polytech-kotlin-maven</id>
<name>kotlin-polytech-kotlin-maven</name>
<url>https://maven.polytech.vorpal-research.science</url>
</repository>
<repository>
<id>github-vorpal-research-kotlin-maven</id>
<name>vorpal-research-kotlin-maven</name>
<url>http://dl.bintray.com/vorpal-research/kotlin-maven</url>
<url>https://maven.vorpal-research.science</url>
</repository>
</repositories>

<parent>
<groupId>ru.spbstu</groupId>
<artifactId>kfirst-bom</artifactId>
<version>20.0.0</version>
<version>21.0.0</version>
</parent>

<build>
<plugins>
<plugin>
<artifactId>kfirst-runner-plugin</artifactId>
<groupId>org.jetbrains.research</groupId>
<version>20.0.0</version>
<version>21.0.0</version>
<configuration>
<packages>
<package>lesson1.task1</package>
Expand Down
6 changes: 6 additions & 0 deletions remotes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
origin https://github.com/uphoros/KotlinAsFirst2020.git (fetch)
origin https://github.com/uphoros/KotlinAsFirst2020.git (push)
upstream-my https://[email protected]/uphoros/KotlinAsFirst2021.git (fetch)
upstream-my https://[email protected]/uphoros/KotlinAsFirst2021.git (push)
upstream-theirs https://[email protected]/elisananeva/KotlinAsFirst2021.git (fetch)
upstream-theirs https://[email protected]/elisananeva/KotlinAsFirst2021.git (push)
5 changes: 3 additions & 2 deletions src/lesson1/task1/Simple.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

package lesson1.task1


import kotlin.math.*

// Урок 1: простые функции
Expand Down Expand Up @@ -65,7 +66,7 @@ fun main() {
* Пользователь задает время в часах, минутах и секундах, например, 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

/**
* Тривиальная (1 балл)
Expand Down Expand Up @@ -98,7 +99,7 @@ fun trackLength(x1: Double, y1: Double, x2: Double, y2: Double): Double = TODO()
* Пользователь задает целое число, большее 100 (например, 3801).
* Определить третью цифру справа в этом числе (в данном случае 8).
*/
fun thirdDigit(number: Int): Int = TODO()
fun thirdDigit(number: Int): Int = ((number % 1000) - ((number % 1000) % 100)) / 100

/**
* Простая (2 балла)
Expand Down
47 changes: 47 additions & 0 deletions src/lesson10/task2/Html.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("UNUSED_PARAMETER")

package lesson10.task2

import kotlinx.html.*
Expand Down Expand Up @@ -62,6 +64,36 @@ fun generateSimpleHtml(s: String): String {
return sb.toString()
}

/**
* Средняя (5 баллов)
*
* Преобразовать заданный список строк в нумерованный список HTML.
* К примеру, из ["Alpha", "Beta", "Omega"] мы должны получить следующее
* <html><body>
* <ol>
* <li>Alpha</li>
* <li>Beta</li>
* <li>Omega</li>
* </ol>
* </body></html>
*
* В этом задании вы должны заменить на реальный код содержимое функций myList, myItem, unaryPlus
* и использовать их в функции generateSimpleHtml
*
* Пробелы и переводы строк между тегами в этом задании значения не имеют.
*/
fun generateListHtml(list: List<String>): String {
val sb = StringBuilder()
sb.myHtml {
myBody {
myList {
TODO()
}
}
}
return sb.toString()
}

private class HTML(val sb: StringBuilder) {
fun myBody(init: HTMLBody.() -> Unit): HTMLBody {
val body = HTMLBody(sb)
Expand All @@ -76,6 +108,21 @@ private class HTMLBody(val sb: StringBuilder) {
operator fun String.unaryPlus() {
sb.append(this)
}

fun myList(init: HTMLList.() -> Unit): HTMLList {
TODO()
}
}

private class HTMLList(val sb: StringBuilder) {
fun myItem(init: HTMLItem.() -> Unit): HTMLItem {
TODO()
}
}

private class HTMLItem(val sb: StringBuilder) {
operator fun String.unaryPlus() {
}
}

private fun StringBuilder.myHtml(init: HTML.() -> Unit): HTML {
Expand Down
10 changes: 5 additions & 5 deletions src/lesson11/task1/Complex.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

package lesson11.task1

/**
* Фабричный метод для создания комплексного числа из строки вида x+yi
*/
fun Complex(s: String): Complex = TODO()

/**
* Класс "комплексное число".
*
Expand All @@ -18,11 +23,6 @@ class Complex(val re: Double, val im: Double) {
*/
constructor(x: Double) : this(TODO(), TODO())

/**
* Конструктор из строки вида x+yi
*/
constructor(s: String) : this(TODO(), TODO())

/**
* Сложение.
*/
Expand Down
2 changes: 2 additions & 0 deletions src/lesson11/task1/UnsignedBigInteger.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("UNUSED_PARAMETER")

package lesson11.task1

/**
Expand Down
14 changes: 12 additions & 2 deletions src/lesson2/task1/IfElse.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package lesson2.task1

import lesson1.task1.discriminant
import kotlin.math.max
import kotlin.math.abs
import kotlin.math.min
import kotlin.math.sqrt

// Урок 2: ветвления (здесь), логический тип (см. 2.2).
Expand Down Expand Up @@ -68,7 +70,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 % 100 !in 10..20)) -> "$age год"
((age % 10 in 2..4) && (age % 100 !in 10..20)) -> "$age года"
else -> "$age лет"

}

/**
* Простая (2 балла)
Expand Down Expand Up @@ -132,4 +139,7 @@ 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 {
if ((b < c) || (d < a)) return -1
return (min(d, b) - max(a, c))
}
12 changes: 11 additions & 1 deletion src/lesson2/task2/Logical.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

package lesson2.task2


import lesson1.task1.sqr
import kotlin.math.min

/**
* Пример
Expand Down Expand Up @@ -59,4 +61,12 @@ fun circleInside(
* кирпич 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 minBrick = minOf(a, b, c)
val maxBrick = maxOf(a, b, c)
if (minOf(a, b, c) > minOf(r, s)) return false
return ((a + b + c - maxBrick - minBrick) <= maxOf(r, s))
}



50 changes: 46 additions & 4 deletions src/lesson3/task1/Loop.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

package lesson3.task1

import kotlin.math.PI
import kotlin.math.abs
import kotlin.math.sqrt

// Урок 3: циклы
Expand Down Expand Up @@ -72,7 +74,16 @@ fun digitCountInNumber(n: Int, m: Int): Int =
*
* Использовать операции со строками в этой задаче запрещается.
*/
fun digitNumber(n: Int): Int = TODO()
fun digitNumber(n: Int): Int {
if (n == 0) return 1
var a = n
var answer = 0
while (a != 0) {
answer += 1
a /= 10
}
return answer
}

/**
* Простая (2 балла)
Expand All @@ -94,7 +105,12 @@ fun minDivisor(n: Int): Int = TODO()
*
* Для заданного числа n > 1 найти максимальный делитель, меньший n
*/
fun maxDivisor(n: Int): Int = TODO()
fun maxDivisor(n: Int): Int {
for (i in (n / 2) downTo sqrt((n * 1.0)).toInt() - 1) {
if ((n % i) == 0) return i
}
return 1
}

/**
* Простая (2 балла)
Expand Down Expand Up @@ -147,7 +163,17 @@ fun squareBetweenExists(m: Int, n: Int): Boolean = TODO()
*
* Использовать операции со строками в этой задаче запрещается.
*/
fun revert(n: Int): Int = TODO()
fun revert(n: Int): Int {
var a = 0
var n2 = n
while ((n2 / 10) >= 1) {
a += n2 % 10
a *= 10
n2 -= n2 % 10
n2 = n2 / 10
}
return a + n2
}

/**
* Средняя (3 балла)
Expand Down Expand Up @@ -201,7 +227,23 @@ fun cos(x: Double, eps: Double): Double = TODO()
*
* Использовать операции со строками в этой задаче запрещается.
*/
fun squareSequenceDigit(n: Int): Int = TODO()
fun squareSequenceDigit(n: Int): Int {
var a = 0
var l = 0
while (l < n) {
a += 1
l += digitNumber(a * a)
}
a *= a
if (l == n) return a % 10
else {
for (i in 1..l - n) {
a -= a % 10
a /= 10
}
return a % 10
}
}

/**
* Сложная (5 баллов)
Expand Down
Loading