kotlin-polytech / kotlinasfirst2018 Goto Github PK
View Code? Open in Web Editor NEWBase repo for the Kotlin course (2018)
License: Creative Commons Attribution Share Alike 4.0 International
Base repo for the Kotlin course (2018)
License: Creative Commons Attribution Share Alike 4.0 International
Lesson 7 > RandomTests > markdownToHtmlSimple()
// Я приведу лишь начальный кусок вывода
Input:
\n.JNTIq}S6Ih4TE?qZLS)*wX'[~~uxlol6\nZd9Fpm%`h`\\=Zw`WcW,[w{T(1caqH~hj\n@Pih<r&i\tvqCuL*q=IN;KQjjG~~Y\\7;2
Expected:
<html><body><p>\n.JNTIq}S6Ih4TE?qZLS)<i>wX'[<s>uxlol6\nZd9Fpm%`h`\\=Zw`WcW,[w{T(1caqH~hj\n@Pih<r&i\tvqCuL</i>q=IN;KQjjG</s>Y\\7;2
Actual:
<html><body><p>\n.JNTIq}S6Ih4TE?qZLS)<i>wX'[<s>uxlol6\nZd9Fpm%`h`\\=Zw`WcW,[w{T(1caqH~hj\n@Pih<r&i\tvqCuL<i>q=IN;KQjjG<s>Y\\7;2
Смотрим примечательные символы:
*
-> читаем подпоследовательность <i>
. Все сходится
~~
-> входим во вложенную <s>
. Сходится
*
-> Данный символ не является входным для текущей подпоследовательности. Значит это не закрытие *
, которое привело бы к ошибке <i><s></i></s>
, а новая вложенная подпоследовательность: <i><s><i></i></s></i>
. Однако в Expected
ожидается </i>
// Мне не очень хочется деградировать свой код с recursive descent парсера до трех флагов
В последних двух тестах для функции dateDigitToStr в 6 уроке "проверяется" предыдущая функция (dateStrToDigit).
Nevermind
В chapter04_5.adoc 1 килобайт определяется как 2^10 байт.
Разве не было бы корректнее определить 1 килобайт как 1000 байт, а для обозначения 2^10 байт использовать термин "кибибайт"?
Lesson 7 > Tests > printDivisionProcess()
test(199735,
22,
"""
19935 | 22
-198 906
----
13
-0
--
135
-132
----
3
"""
)
В 199735 лишняя семерка
lesson5.task1.RandomTests (bagPacking)
Правильный ответ засчитан за неправильный
Ввод:
"capacity" -> 2260
"treasures" ->
[
{
"key": "0",
"value": {
"first": 148,
"second": 148
}
},
{
"key": "1",
"value": {
"first": 486,
"second": 149
}
},
{
"key": "2",
"value": {
"first": 1,
"second": 208
}
},
{
"key": "3",
"value": {
"first": 495,
"second": 2
}
},
{
"key": "4",
"value": {
"first": 2,
"second": 358
}
},
{
"key": "5",
"value": {
"first": 408,
"second": 148
}
},
{
"key": "6",
"value": {
"first": 419,
"second": 24
}
},
{
"key": "7",
"value": {
"first": 135,
"second": 12
}
},
{
"key": "8",
"value": {
"first": 149,
"second": 371
}
},
{
"key": "9",
"value": {
"first": 149,
"second": 1
}
},
{
"key": "10",
"value": {
"first": 148,
"second": 1
}
},
{
"key": "11",
"value": {
"first": 148,
"second": 338
}
},
{
"key": "12",
"value": {
"first": 295,
"second": 148
}
},
{
"key": "13",
"value": {
"first": 388,
"second": 348
}
},
{
"key": "14",
"value": {
"first": 148,
"second": 148
}
},
{
"key": "15",
"value": {
"first": 148,
"second": 149
}
},
{
"key": "16",
"value": {
"first": 429,
"second": 149
}
},
{
"key": "17",
"value": {
"first": 149,
"second": 148
}
},
{
"key": "18",
"value": {
"first": 149,
"second": 2
}
},
{
"key": "19",
"value": {
"first": 2,
"second": 148
}
}
]
Вывод:
[
"19",
"17",
"16", <---
"15",
"14",
"13",
"12",
"11",
"8",
"7",
"4",
"2",
"0"
]
Ожидалось:
[
"19",
"17",
"15",
"14",
"13",
"12",
"11",
"8",
"7",
"4",
"2",
"1", <---
"0"
]
Дело в том, что вместо элемента "1" был взят элемент "16", у которого такая же стоимость, но меньший вес
Lesson 7 > RandomTests > printMultiplicationProcess()
Expected:
33673
* 98690
-----------
0
+ 303057
+ 202038
+ 269384
+303057
-----------
-971778926
-971778926 - это результат переполнения Int при перемножении. Должно было быть 3323188370
Lesson 9 > Random Tests > canOpenLock()
Key:
[[0, 1, 0],
[0, 0, 1]]
Lock:
[[1, 0, 0, 0, 0, 1, 1, 0, 0],
[1, 1, 0, 0, 1, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 0, 0, 1, 0],
[0, 1, 1, 1, 0, 0, 1, 0, 1],
[0, 0, 0, 1, 1, 0, 0, 0, 1],
[1, 1, 0, 1, 1, 0, 1, 0, 0],
[0, 1, 1, 0, 1, 0, 0, 0, 0],
[0, 1, 1, 0, 0, 1, 1, 0, 1],
[1, 1, 0, 1, 1, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 1, 0, 0, 1],
[1, 1, 0, 1, 0, 1, 0, 1, 1],
[0, 0, 1, 1, 1, 1, 0, 1, 1],
[1, 1, 1, 1, 0, 1, 1, 1, 0]]
Output:
{
"first": true,
"third": 0,
"second": 9
}
В смещении (x, y) = (0, 9)
от верхнего левого угла действительно находится подходящий паттерн
"например, номер 12 -- 34- 5 -- 67 -98 тоже следует считать легальным.
Перевести номер в формат без скобок, пробелов и чёрточек (но с +), например,
"+79211234567" или "123456789" ### для приведённых примеров."
Lesson 7 > markdownToHtmlLists() > Описание задачи
///////////////////////////////начало файла/////////////////////////////////////////////////////////////////////////////
* Утка по-пекински
* Утка
* Соус
* Салат Оливье
1. Мясо
* Или колбаса
2. Майонез
3. Картофель
4. Что-то там ещё
* Помидоры
* Фрукты
1. Бананы
23. Яблоки
1. Красные
2. Зелёные
///////////////////////////////конец файла//////////////////////////////////////////////////////////////////////////////
*
*
* Соответствующий выходной файл:
///////////////////////////////начало файла/////////////////////////////////////////////////////////////////////////////
<html>
<body>
<ul>
<li>
Утка по-пекински
<ul>
<li>Утка</li>
<li>Соус</li>
</ul>
</li>
<li>
Салат Оливье
<ol>
<li>Мясо
<ul>
<li>
Или колбаса
</li>
</ul>
</li>
<li>Майонез</li>
<li>Картофель</li>
<li>Что-то там ещё</li>
</ol>
</li>
<li>Помидоры</li>
<li>
Яблоки
<ol>
<li>Красные</li>
<li>Зелёные</li>
</ol>
</li>
</ul>
</body>
</html>
///////////////////////////////конец файла//////////////////////////////////////////////////////////////////////////////
Кто съел бананы?
lesson5.task1.RandomTests (findSumOfTwo)
Ошибка при проверке вывода.
Ввод:
"list" -> [
1,
45091,
1,
7738,
28424,
1,
28158,
44506,
46285,
26668,
29617,
1,
0,
2815,
40699
]
"number" -> 1
Вывод: (0, 12)
Ожидалось: (11, 12)
Под индексом 12 стоит "0", под 0 и 11 стоят "1", поэтому эти ответы эквивалентны.
Тестирующая система на Котоеде однажды выдала ошибку, когда моя программа в ответ на их случайный тест попыталась перевернуть число, равное Int.MAX_VALUE. Ошибка связана с тем, что функция возвращает Int, а перевернутое от 2147483647 не влезает в Int. Как поступить в этом случае? Не могла бы тестирующая система в Котоеде принимать Long как результат работы функции, вместо Int? Либо не генерировать настолько такие случайные тесты, на которые функция revert не может дать правильный ответ, так как возвращает только Int?
Функция assertThrows
проверяет тип выброшенного исключения с помощью вызова isInstance
, что не всегда корректно.
Пример со студенческим решением lesson6.task1.plusMinus
fun plusMinus(expression: String): Int {
val parts = expression.split(" ")
val result = mutableListOf(parts[0].toInt())
...
return result.sum()
}
Если подать данному решению на вход строку "~JD*_c\\teH:QnPQudT,8z"
, оно выбросит NumberFormatException
. А требуется, чтобы при неправильном формате строки выбрасывалось исключение IllegalArgumentException
. При этом, тест вида:
assertThrows(IllegalArgumentException::class.java) { plusMinus("~JD*_c\\teH:QnPQudT,8z") }
отработает правильно, так как NumberFormatException
является наследником IllegalArgumentException
, и соответственно
IllegalArgumentException::class.java.isInstance(NumberFormatException())
возвращает true
.
При этом, в котоеде выброшенные исключения проверяются через
modelException.javaClass == studentException.javaClass
и на том же самом тесте решение падает.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.