After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 543 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 262 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,2 @@
|
||||
#Tue Jan 30 13:42:14 CET 2024
|
||||
gradle.version=8.4
|
@ -0,0 +1,7 @@
|
||||
import Answer.*
|
||||
|
||||
enum class Answer { a, b, c }
|
||||
|
||||
val answers = mapOf<Int, Answer?>(
|
||||
1 to null, 2 to null, 3 to null, 4 to null
|
||||
)
|
@ -0,0 +1,24 @@
|
||||
type: edu
|
||||
files:
|
||||
- name: src/Task.kt
|
||||
visible: true
|
||||
placeholders:
|
||||
- offset: 91
|
||||
length: 42
|
||||
placeholder_text: "1 to null, 2 to null, 3 to null, 4 to null"
|
||||
initial_state:
|
||||
length: 42
|
||||
offset: 91
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: HZmpRQ1HH0etnSF1R1HRJ+Tw5PTrTIxMqO286ljYv0Q=
|
||||
encrypted_text: TxBKO+zBdziRVfhRRQ1jkAfTwgK/9uCtrA7WKi44goHSMHWPofMmfafs236Jr+TYs4JzaGFBgKBbiqx7QFMf975/tKwBcv2KVLnuKOmukAIU49bV18m6dEu3nvA1XdR4pmnaS9QD9sEtbjtuHxdrovWFdPfxjSRxTP6ovRLheVWWuDhQQSgLput/9MRQT/96
|
||||
learner_created: false
|
||||
- name: test/tests.kt
|
||||
visible: false
|
||||
encrypted_text: ITs8Nv8EH6QWJG5nufD7nKf4miLa5dzLLS2XlTof0JFjF8PWI0e1iP3W+5IgOMzOuWclJo+6t3lJ1MEJp4Hp0o9SrF3SV/3wvUm0whxd8E+GjsUWtEAyJFv97zBQil/0GhhQp0lAB8j2uxu1wMe0dO8GKKtwLYkRrP0mcgF42g4tTTgk13yVcJ+ITNwdjKo1nlYck53Erv8lD64Zy699oaX2FoUKNnskuqdM4arxH1tEqVJ4/j358qzFxLUptGTfj5bHQXTP5NAr+YSlfBnoCD5edITiaOXk3jhY+gSQOP1S9pFl9TnXPxIk8bPUbTIhV7+WJkpGP2gwsXg6d6KgZuO/fnhCrmeEpLRzUfDrxVnmVIYE+8CNMa94l9JVUA4w83ET0Z3wAq1qaDh7pg8+UaIWcftiDLmy4TKQZnwKAx+rrUkWbCpPfLm2/F75YvwioqQwfIh6eNxVA/xXQc/ilU4yBw+RxxH9DEOgxVkKFyK2nK8pc42XKOVTeDZxEWyFJ/NGFl6eFhMMQjZfmBjTLUW0HNXhn3xa7dkb5Za+PPptJgeWyp9gWhz7bI2N+zBKeVtpKow0lXwFa/PnUzSqK+bZo/dVgMC1wpV7DfLZc+O28OwzfW+jELu+X2FHK5+3hNuaou/nhwHrMhKVI9OSkUHeXTpXw7p5VB4e9/Z5Y8AXCY2MJzXtdtXVReEzzxnKgVdTDgww5HDiCT4sorEbFeJ7j4KwhnQhHzHY7PXL882jOr0xU7azLKtKXTpYfK0I1+XHfzk/VcvWLWfn2v9sHXKzmlsNNzpjB+6nP/5X6SmbBGk3WOgfarAFh2yIkrebhbVPvzXUGHEuuxRtEzOueyu3FWI+kM9DkrYHV43FdqjQLnByT/Np3448FKaw+YZHsLc3ZZoIOlS+HANzPK5xFOTy6MYyEfHoHjZ7hurAcNO0g0tgKmIPkwtB4uEvjDAmZ+Hl7NW0NAvs1gWZuAw99g==
|
||||
learner_created: false
|
||||
feedback_link: https://docs.google.com/forms/d/e/1FAIpQLSeYool5qTz-p77fzn_9UKQVjO3u3Al6WjzEyW5cbjspRwtQig/viewform?usp=pp_url&entry.2103429047=Builders+/+Builders+how+it+works
|
||||
status: Unchecked
|
||||
record: -1
|
@ -0,0 +1 @@
|
||||
id: 234760
|
@ -0,0 +1,96 @@
|
||||
## Builders: how they work
|
||||
|
||||
Answer the questions below
|
||||
|
||||
**1. In the Kotlin code**
|
||||
|
||||
```kotlin
|
||||
tr {
|
||||
td {
|
||||
text("Product")
|
||||
}
|
||||
td {
|
||||
text("Popularity")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**`td` is:**
|
||||
|
||||
a. a special built-in syntactic construct
|
||||
|
||||
b. a function declaration
|
||||
|
||||
c. a function invocation
|
||||
|
||||
***
|
||||
|
||||
**2. In the Kotlin code**
|
||||
|
||||
```kotlin
|
||||
tr (color = "yellow") {
|
||||
td {
|
||||
text("Product")
|
||||
}
|
||||
td {
|
||||
text("Popularity")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**`color` is:**
|
||||
|
||||
a. a new variable declaration
|
||||
|
||||
b. an argument name
|
||||
|
||||
c. an argument value
|
||||
|
||||
***
|
||||
|
||||
**3. The block**
|
||||
|
||||
```kotlin
|
||||
{
|
||||
text("Product")
|
||||
}
|
||||
```
|
||||
|
||||
**from the previous question is:**
|
||||
|
||||
a. a block inside built-in syntax construction `td`
|
||||
|
||||
b. a function literal (or "lambda")
|
||||
|
||||
c. something mysterious
|
||||
|
||||
***
|
||||
|
||||
**4. For the code**
|
||||
|
||||
```kotlin
|
||||
tr (color = "yellow") {
|
||||
this.td {
|
||||
text("Product")
|
||||
}
|
||||
td {
|
||||
text("Popularity")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**which of the following is true:**
|
||||
|
||||
a. this code doesn't compile
|
||||
|
||||
b. `this` refers to an instance of an outer class
|
||||
|
||||
c. `this` refers to a receiver parameter TR of the function literal:
|
||||
|
||||
```kotlin
|
||||
tr (color = "yellow") {
|
||||
this@tr.td {
|
||||
text("Product")
|
||||
}
|
||||
}
|
||||
```
|
@ -0,0 +1,41 @@
|
||||
open class Tag(val name: String) {
|
||||
protected val children = mutableListOf<Tag>()
|
||||
|
||||
override fun toString() =
|
||||
"<$name>${children.joinToString("")}</$name>"
|
||||
}
|
||||
|
||||
fun table(init: TABLE.() -> Unit): TABLE {
|
||||
val table = TABLE()
|
||||
table.init()
|
||||
return table
|
||||
}
|
||||
|
||||
class TABLE : Tag("table") {
|
||||
fun tr(init: TR.() -> Unit) {
|
||||
/* TODO */
|
||||
}
|
||||
}
|
||||
|
||||
class TR : Tag("tr") {
|
||||
fun td(init: TD.() -> Unit) {
|
||||
/* TODO */
|
||||
}
|
||||
}
|
||||
|
||||
class TD : Tag("td")
|
||||
|
||||
fun createTable() =
|
||||
table {
|
||||
tr {
|
||||
repeat(2) {
|
||||
td {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
println(createTable())
|
||||
//<table><tr><td></td><td></td></tr></table>
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
type: edu
|
||||
files:
|
||||
- name: src/Task.kt
|
||||
visible: true
|
||||
placeholders:
|
||||
- offset: 352
|
||||
length: 10
|
||||
placeholder_text: /* TODO */
|
||||
initial_state:
|
||||
length: 10
|
||||
offset: 352
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: ZCdEEtdujCjy5Hfg8866UakTOAVyC+Ze7Qk75FM7sqAI9qAshcahmZsgGJXnwcHLwbhJgIf9PHcy5H1CJ13Llw==
|
||||
- offset: 437
|
||||
length: 10
|
||||
placeholder_text: /* TODO */
|
||||
initial_state:
|
||||
length: 10
|
||||
offset: 437
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: 79MgSUXjf8DSmVrp3xVP2LF7bkZkjqBwalLOLXTFs8o=
|
||||
encrypted_text: /fTMCg0gg7sw0DyksvbNHIMujqZdMAve8ekNb39WqsqrYOjSjzY/KMQbVR5IuJFk+FTZysRz2VXnQZs6twa0Z42BuKvANN5FTdaq/iAMccgV+jOZ5PljdY2YimTJ0M2syv9jsKq7UKRi9w3CCzToiQudUP4moCGy4uSxVOoziqrEbVHZi1XHGc183i9JDrzjrJfGwZ9N9HlmxMzMjJqdV+of0rZMEEx/RKksfADcdljURPdAMrEfn2ihTfdo1Hf8J7jaZmVpYoar2V8bHrMxVaqY8XErxZbw1JOPJQ09IlkcUFzEVl0Y7ebL8uy002WxeFwFgW9+0Eg7+GOWOUnEFaNSJvvAEDl+VWLFRTPxx2LCRh8MB2/JN11in4W5wkVOBJmxndR0pDbSZjtY/gzbgX6cOsFqAfTAmYVjnOhuHJmAW624d3fsoPjtGABA2eczCLbz0oshHAuMTH/SZIOOVf9l/rO4DeYZ3UMvvoNxckCS0x/XuGqW6rhKCm3elbCXPpodzZPibBnk8HvaIR6u/iwVkhWQ0mVNFBg9BFj0XFR8Ex/2Hhjq2e8cPuy6epvmAfwiOkVIjzRuov2KdtIOsNqfDOjhMBl6qLcXqF2Et5Gomkkx9gR7tAf3NX66zMjCHXhZAyXNANtSb4S4IEPyAJYoIaXYS94UTH/1fw8v+egALSG/ZLvv1UhseRO0MXLgM5xwM/+Hrj5dr5hAu+tdkLf+mTvwPMaZI7SshCoOOJYyLV6xHoIIe9IGmWheTA9CcCjL4T7XdOkQpx760s6fg1EPhsWCkXX6r+gx+Mu2bK7Lrs1FkzQjRz1GewU+ZNntDCILm1EwCQmbw2sr2+5mRnwQW2LGePXmnzIMLq5cWFF8dcuUKtwyv77qxr6SHhD3P+7SmxH46L04ohOPN4MwhZoPw1FhquqwmLnnt7UA1+tp5s7kD2KuGlVV5SYfAs5O5LzIXxfjtMU5F7v1nxX1h0tGr7zF5I02ERxcGzfm4y0=
|
||||
learner_created: false
|
||||
- name: test/Tests.kt
|
||||
visible: false
|
||||
encrypted_text: ITs8Nv8EH6QWJG5nufD7nCbrLPoZNTYAX8EbQHppKy+TR7uFhZF7JnSL5/nnFJttsh8xzDunF8MmoSsmTKG2TlhiFTtXg5KC3t4Pnn1TsQGx+XYhh/tFowwgGsiZxkBdZGec0VFrLxeA+qWRY8L1LDBFdYPjLGXiHOB69n6QrS+LuacCZFHRw1S8Aln1XB/8nTXkzBOLcZb0634o0ku/O3476jjF9fl3l0N3MjwJK04GZArwzLAJdFtZ9D/G0o28a2AMSPDQ37i2/i+npxW7MAcULNBB1+tzQ0bSAmp4sDG0obhv5blbtJ93nnrL3yJuqXlGtwNPuuxupaiIdTGmXQi3gt7FoDwsasghqbKndcGiDKedVW0kBX4j6DIpeiC30XsNz+civFSZ0KmqNp2NX+s/74T7qgKaLCEVTnQ1G5o+HXfL0MQHILBxvbeui8pFvi8+tsM1elxBTt9MMFaM5NaHZnEHQAYiyLDe8+ibgYK4RrbzwAlMyqZKqQg+V6l4jQuY55u12KbfvZTq8VFhb5p6YR+gKpDNO3ZJ8WKw5nstbPLCIGSQVTMwT76v/7UisS4exxIy88j8kW5/HlCu9cfiy1tiS3lvbYw3HNkgBAClnPJ9Pfz2K1aaBGyLCtMtfTY+axEwInr8RjMiQiu6EFmfZ5mm4LfGNDRglzCvy7FYYUFOjPf7aA/zMOAtMnbKMAp8SD0FaFQ0aiDbMCSJX67vSw88/pvcmt0NqZ6CSRbA90se92qF+r5Ec0vIfB0sxkjUy+UHiCQKSxJY6yyO646+BB+EaCAWSS/hWgAih3Kzbf+tE8X/tNaLlZ8aQDp98xuUeatfQ1Vh9mVd2169fUSeXhN65t2fU3U9VRR57uIAyiLfOVBMxTaEkcod/OpiIrTzuxkl5hOVsW/oFsFUX/Jf6O0cK9nSRYUh4b6ASFOgPCqEBWntix2PLypQ4qISHO0EM84IW2z26VhjSNrpLT15RAXRXfiklJjuA2vqHmkjRF/IC4JWKH7xrYIIp9c4e6K7FJjWzyR2ETkb1w3jdPpMS52JBNtqx+TEc36UtOFeJ7kgsDDb//z2odFzoAsuDrkC6NvNgP4UiwPt3uTpWSmV5ZZfqXl15gohQQBk2YS56UGBqo4I9tm9lBq/rJZGQw6nXIoz0MMG9kAIXMa7K/5rRSKycQRzZg4rr3XYLONLUDVtwPvxNnHkW8WNv3dVRFQIsRNuNFPOei32fjuW7YApJd7yGmc/LK8ueg/OjXbH7RFao63KVi2i5VPHiZcF
|
||||
learner_created: false
|
||||
feedback_link: https://docs.google.com/forms/d/e/1FAIpQLSeYool5qTz-p77fzn_9UKQVjO3u3Al6WjzEyW5cbjspRwtQig/viewform?usp=pp_url&entry.2103429047=Builders+/+Builders+implementation
|
||||
status: Unchecked
|
||||
record: -1
|
@ -0,0 +1 @@
|
||||
id: 963315
|
@ -0,0 +1,6 @@
|
||||
## Builders implementation
|
||||
|
||||
Complete the implementation of a simplified DSL for HTML.
|
||||
Implement `tr` and `td` functions.
|
||||
|
||||
Learn more about [type-safe builders](https://kotlinlang.org/docs/type-safe-builders.html#type-safe-builders).
|
@ -0,0 +1,6 @@
|
||||
fun task(): List<Boolean> {
|
||||
val isEven: Int.() -> Boolean = { TODO() }
|
||||
val isOdd: Int.() -> Boolean = { TODO() }
|
||||
|
||||
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
type: edu
|
||||
files:
|
||||
- name: src/Task.kt
|
||||
visible: true
|
||||
placeholders:
|
||||
- offset: 66
|
||||
length: 6
|
||||
placeholder_text: TODO()
|
||||
initial_state:
|
||||
length: 6
|
||||
offset: 66
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: lHMCpiaCR4jq30yMpMuesw==
|
||||
- offset: 112
|
||||
length: 6
|
||||
placeholder_text: TODO()
|
||||
initial_state:
|
||||
length: 6
|
||||
offset: 112
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: VKCML8/qxOFVTAVGeCdUyQ==
|
||||
encrypted_text: Ulcr7oA41A7Jclzc6y7irIbgJiuvz5ZuZ/mrTVY9UZ+Nq4Vt1KwWtty1dkya/XOjkL2QgT/TRkykf6vBMzgDg0gx9Nzk/Myz7QKbZfNpblZhgl8o5zXIWKZ4jxKfwzuZqpnPvEJ68uOPd7zPThnvzCxHYyVvknnK8mD1lvudFUM1QdeZTMA1owmODFNAOLrIVKZLF/Y2dph9gDDe7QUaq7qL2ApP1AVZJbnQy/DuNatCECibcIN3lAZui7b4/zaq
|
||||
learner_created: false
|
||||
- name: test/tests.kt
|
||||
visible: false
|
||||
encrypted_text: ITs8Nv8EH6QWJG5nufD7nCbrLPoZNTYAX8EbQHppKy+TR7uFhZF7JnSL5/nnFJtttspPQDDPNTQZe+3TX4/piBKJOs1v3rx8fpgS34b2bU+AFlcIn8GvDfeoAjWs8vF7VumyLfIL0abn4YgMRmHmJClfWkVUgUCqgdYKhH3InOXxi+U5UuDZ0CGmDm6UkK3VMr8LNYhS/44OwRcWSDeEsCxdPK5t471D65khgkTxTvhKgs85ZTlmvyKgeCAfgpanwrnbsfUWxw84IVpUMpvmn0iDY1sW2QkJkB1VJxg5PQPkd+2ySyO447rc40DECSounS1b2OYDNBlPl8rjPIGmi1ASuDlOFhpfq2nlCTffj4udsqctRzfK5HpUBYpDX/fp
|
||||
learner_created: false
|
||||
feedback_link: https://docs.google.com/forms/d/e/1FAIpQLSeYool5qTz-p77fzn_9UKQVjO3u3Al6WjzEyW5cbjspRwtQig/viewform?usp=pp_url&entry.2103429047=Builders+/+Function+Literals+with+Receiver
|
||||
status: Unchecked
|
||||
record: -1
|
@ -0,0 +1 @@
|
||||
id: 234756
|
@ -0,0 +1,6 @@
|
||||
## Function literals with receiver
|
||||
|
||||
Learn about [function literals with receiver](https://kotlinlang.org/docs/lambdas.html#function-literals-with-receiver).
|
||||
|
||||
You can declare `isEven` and `isOdd` as values that can be called as extension functions.
|
||||
Complete the declarations in the code.
|
@ -0,0 +1,22 @@
|
||||
fun renderProductTable(): String {
|
||||
return html {
|
||||
table {
|
||||
tr/* TODO */ {
|
||||
td {
|
||||
text("Product")
|
||||
}
|
||||
td {
|
||||
text("Price")
|
||||
}
|
||||
td {
|
||||
text("Popularity")
|
||||
}
|
||||
}
|
||||
val products = getProducts()
|
||||
TODO()
|
||||
}
|
||||
}.toString()
|
||||
}
|
||||
|
||||
fun getTitleColor() = "#b9c9fe"
|
||||
fun getCellColor(index: Int, column: Int) = if ((index + column) % 2 == 0) "#dce4ff" else "#eff2ff"
|
@ -0,0 +1,21 @@
|
||||
data class Product(val description: String, val price: Double, val popularity: Int)
|
||||
|
||||
val cactus = Product("cactus", 11.2, 13)
|
||||
val cake = Product("cake", 3.2, 111)
|
||||
val camera = Product("camera", 134.5, 2)
|
||||
val car = Product("car", 30000.0, 0)
|
||||
val carrot = Product("carrot", 1.34, 5)
|
||||
val cellPhone = Product("cell phone", 129.9, 99)
|
||||
val chimney = Product("chimney", 190.0, 2)
|
||||
val certificate = Product("certificate", 99.9, 1)
|
||||
val cigar = Product("cigar", 8.0, 51)
|
||||
val coffee = Product("coffee", 8.0, 67)
|
||||
val coffeeMaker = Product("coffee maker", 201.2, 1)
|
||||
val cola = Product("cola", 4.0, 67)
|
||||
val cranberry = Product("cranberry", 4.1, 39)
|
||||
val crocs = Product("crocs", 18.7, 10)
|
||||
val crocodile = Product("crocodile", 20000.2, 1)
|
||||
val cushion = Product("cushion", 131.0, 0)
|
||||
|
||||
fun getProducts() = listOf(cactus, cake, camera, car, carrot, cellPhone, chimney, certificate, cigar, coffee, coffeeMaker,
|
||||
cola, cranberry, crocs, crocodile, cushion)
|
@ -0,0 +1,13 @@
|
||||
import javax.swing.JFrame
|
||||
import javax.swing.JLabel
|
||||
import javax.swing.JScrollPane
|
||||
import javax.swing.SwingConstants.CENTER
|
||||
|
||||
fun main() {
|
||||
with(JFrame("Product popularity")) {
|
||||
setSize(600, 600)
|
||||
defaultCloseOperation = JFrame.EXIT_ON_CLOSE
|
||||
add(JScrollPane(JLabel(renderProductTable(), CENTER)))
|
||||
isVisible = true
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
import kotlin.browser.document
|
||||
|
||||
fun main(args: Array<String>){
|
||||
document.body!!.style.overflowY = ""
|
||||
document.body!!.innerHTML = renderProductTable()
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
open class Tag(val name: String) {
|
||||
val children = mutableListOf<Tag>()
|
||||
val attributes = mutableListOf<Attribute>()
|
||||
|
||||
override fun toString(): String {
|
||||
return "<$name" +
|
||||
(if (attributes.isEmpty()) "" else attributes.joinToString(separator = "", prefix = " ")) + ">" +
|
||||
(if (children.isEmpty()) "" else children.joinToString(separator = "")) +
|
||||
"</$name>"
|
||||
}
|
||||
}
|
||||
|
||||
class Attribute(val name: String, val value: String) {
|
||||
override fun toString() = """$name="$value" """
|
||||
}
|
||||
|
||||
fun <T : Tag> T.set(name: String, value: String?): T {
|
||||
if (value != null) {
|
||||
attributes.add(Attribute(name, value))
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
fun <T : Tag> Tag.doInit(tag: T, init: T.() -> Unit): T {
|
||||
tag.init()
|
||||
children.add(tag)
|
||||
return tag
|
||||
}
|
||||
|
||||
class Html : Tag("html")
|
||||
class Table : Tag("table")
|
||||
class Center : Tag("center")
|
||||
class TR : Tag("tr")
|
||||
class TD : Tag("td")
|
||||
class Text(val text: String) : Tag("b") {
|
||||
override fun toString() = text
|
||||
}
|
||||
|
||||
fun html(init: Html.() -> Unit): Html = Html().apply(init)
|
||||
|
||||
fun Html.table(init: Table.() -> Unit) = doInit(Table(), init)
|
||||
fun Html.center(init: Center.() -> Unit) = doInit(Center(), init)
|
||||
|
||||
fun Table.tr(color: String? = null, init: TR.() -> Unit) = doInit(TR(), init).set("bgcolor", color)
|
||||
|
||||
fun TR.td(color: String? = null, align: String = "left", init: TD.() -> Unit) = doInit(TD(), init).set("align", align).set("bgcolor", color)
|
||||
|
||||
fun Tag.text(s: Any?) = doInit(Text(s.toString()), {})
|
||||
|
@ -0,0 +1,54 @@
|
||||
type: edu
|
||||
files:
|
||||
- name: src/html.kt
|
||||
visible: true
|
||||
encrypted_text: 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
|
||||
learner_created: false
|
||||
- name: src/Task.kt
|
||||
visible: true
|
||||
placeholders:
|
||||
- offset: 83
|
||||
length: 10
|
||||
placeholder_text: /* TODO */
|
||||
initial_state:
|
||||
length: 10
|
||||
offset: 83
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: RsOJqel91ytF+ayPlADPOvhOy4/WSSw7zF5lAvZwFS8=
|
||||
- offset: 389
|
||||
length: 6
|
||||
placeholder_text: TODO()
|
||||
initial_state:
|
||||
length: 6
|
||||
offset: 389
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: ox+RjiDizH76htkWKPOdM1DnImfrfzKeBvje46quDwxkzBk0rdnPFpSOwW/dvZqbDck8j94sXrZ1MeYXOWMl8ANmLla73MNIZM0CWXoSiO1w5tWqgxHkKh0i5VZ5oXCcUbjZqqGHgCOTx+Sa/twHomIUYzotU67US2S6jov2COlFTepHl+YRtbalPqmcHHbK2doSyR4lr0KwaJ3kEQjIEMY7iK4EjVCFpvzr5f+Qz6tRluK7VmtfIShsfjptsxcbxrETkeHTMp9zNy+8RWuWgGrE7pj4EBDJX8fFExUJi7ROk9cQLZyQ6aEq7BxED5QEGoP93cNJWdSdfUVNjeEumhsepTtaLydBUFihbNO0TLbxjR0khcrWArWbIwVFmMtMtikYP4Py4cn0IQs7K7djtwvlBLMpbdQyYJ8TmZVRKwVEHqQtC7M+amstOQmFc5721b/ywyBC02kkft2ABRhyupzwYdU3uQlvrz5XiDU60yNwv0U50o8J33ffDjnILE5s47Z33x5EXub9QKFhlCg9JcQ+MA4dbHn+080Oj0au+Nj1ndJI3lHwOd5JAZfgnizy6ief/RW09hM/2P+7ZBrJc1HtMGLWvZ/bmZJbo1OIf0jh7CqqDR/4SFGP/8EVd/8eWU2pJFsmLwQC7g1rHw9B5A==
|
||||
encrypted_text: mMFwJKTThLYfAaIOF17xLoJC3gsd/R9T+mPZHx49ToQSKj/PqRK491N6C7avkeohjJlhqwLNoRaOL+gjn6ZrXl8tV45xyzchU6PEvOsYZtbnmr2rztBGzNuH5/eOnL+WBYRSJ2ySLhI61HPK3tZRuv4REtm5VKJMZwW6KkeMX5xJO8PyR17Z9ZMLdCXColxlputOU3z/k8jxWoUiD5Lbb0s4nah++ztqc92TWUZS1FmjC7teAwx8/bYDgw71er78XmnPp+zShX5Kw7N0x2/kIa8xPEk1dN4irKIjJv55tiIaCNO8zxnmiYBllHeG5eLdl1iJxCHRVdTmr5T938+g4EFm6Koz+xCzdPXkAhX8rG6dcqEL0TllF0skOYUCxG5DXTwT3MzpotChrp7MwqQniSYgV7R8BOo3Tut531pKEDU+/2ptr/D1plCHfJHGr7OzNmXLhxOB//11p9xuuCjbEN5H3FGNM6HVoTB5KQFvAjjJ3XOtJiX8q0CCkjoxCNIim++CV2NVpfBPbU/88rBUXPM4nJ2mgpmGfItxOK/doyTjRJ0MJU3NRyuTBSmWCXtpib5N8WNTVRNrLjRpUDZqwn1xGrBUNoDJTlrae/RdNShKHqOpwy6jjz273t2WaY7/RMhs+K97OmgxsH8xbU49tMChpvektlxJFwj25pbi1cVbpidF/e1mkVp6SMoyj9DGvSFGCNqEflmYyeAkr1HXAXDu8MxUBNzaIMnuT6Jv4io=
|
||||
learner_created: false
|
||||
- name: src/data.kt
|
||||
visible: true
|
||||
encrypted_text: dE9hHThjwWxk0uqOFlVS5HPcefkGWvyMfNA2gjTSSc6UAN65HwNEyk60yOBaVTHdEkzry9YeTiAw8uwcfeUlYIQjaoROFnvxJfJ1RxXNfwXpypK9H0Cam+j6dS8CbLgEFHaedXGKNSHK1IINqPANOc7xnG9gLalZuBesf8dKU0PWOgqts/WdGnG3D0KgyJnuunp2xXrRrXdduko8zRtpI/ZG8zjJsKEnc+0VgoTQWywoTMFQBYPmXBDSU9zGBHahTRrO8rzEcyc8sdzhA2HwsSs7ODPfL4/xdJllgthjuZ3zUWZtibA1JjGTmnqtrlYsWnl9YFYjX3/qdodtUbO+wog0QjvOs1hi9VUcsDv6D4iV/gFW3t9aypGUh7tuptPV5w2lE2EVqWc2iIauw5FtSU9aI+w7i2Qaq7cvKqngs+6BVrOajDRIVWlucd6jZekYKy774o3CTDJLrTAmBy7/tgNKxcYawVRlrPjQI0xCxI89/Fo1arVyYgxqDMy6s1XAty7PXZWy8g2GBBmR+VG4GVdtR48dul20Dosc+sGZJ78mRUoxvfW7UW97AKohIjfhui/LmMBRkFxeCAkXpqrv4/pDCNKb9xTLCeqial46riADIQiGSCvyloiPf7mXjNQFKHaYkoWGt4xAGl7PRNS9E+vJ9mO4zZ4Yujd75Zu+JYLp8NvnFbYn70sG+W4s0rEPJ8W9GK1uKZyvKhQSdOCBQg3ZFgvnIzJPl8My8dcIujuTKe4Xuvf3AZMTg7862DbOwAyk3NZBryFpJQu3Fmqyh/oVY7ju6rxJQ1CKHLs9Q/QEFq5foL8PhcnXk/YMs164mRcJPDPhbdLA3Qh9BmKaNKZVyx1Ou+CNBgfsg14v7xFOdhH01QB3m8D0fLmgU5sfdpPDNvRRwlejmGPea1L2Zv84d/7HIzeJtaU+PMOLdszz6dpmNy6Noi49MtI5W0csbz3+/Q8co+PjrylShUsLAAScKeoQIfP3S5hzJNFw8jFkmOreuKn1iFej0zZjaIOFvJ19/BXSmXlsqNGh1x9d/lKOwpzu41Ac/wnqw5cb6p4BKVMgHbmzpDMC3XicVa7YWk+CQPt3LI5MVLTWCOIFLORqKdSWa6Jr4/gYU/zFLuBCjCJ9ZICYBk+3KrWeYScRgChvWuMSjt5E/yww+fNo6t8/Sltf0OnK1YkxNcNX4CculpQyI7rZ4VfQUIdLpWqEIhSyzUj9SYpmuxCuwkduIIp91GvU1zasTCNa876Eiec=
|
||||
learner_created: false
|
||||
- name: src/demo.kt
|
||||
visible: true
|
||||
encrypted_text: aJ5G9IYxUX/eKPgGBT0hYTRlRUP85tAO015MGFCDbf//96FT/ffvpSkiaFNZfs+wMy2IKQ+64HdLPm1WGa+xg6Iw3ceH/4pmDDKWE9hh/WdQShOXyrrFFvzIwKH1qM/HZcICr+5xqfO1eDP0jz+AwS5h5yNNH5uwYizvNsEP3iuwih3bNBr1sYUKUXDTcKl95qwer7s4qgOpgJlilNk1HDILV6C5AH+3gUMsg64SnYywR/CV1QnxlYAgsnMpehN9WTpUX4Lj/F1KRCX36bl44iNv3+YajIEXZh5euv4JudtNSs8fUpBudDjxfA0zTPmVgcPobmgXYL1uTFJgLJumpwFy+2ndRS/ZXmKeuk5k/9nAKihpuAljNg91qmFgry9gpXFdYhZ9Dz3aRn9GR4q76TtVT9zhwZJElZxvxihiN+c/QuZRdUMUQjU5cby4uc1PlInrqPNCkX2qY/Eu62G4YBXDT9viPFzUf9U70VWqhLc=
|
||||
learner_created: false
|
||||
- name: test/tests.kt
|
||||
visible: false
|
||||
encrypted_text: ITs8Nv8EH6QWJG5nufD7nCbrLPoZNTYAX8EbQHppKy+TR7uFhZF7JnSL5/nnFJtt/6OTW7l/9aXuaPjkL0/Ub2TRoWKi5UGW92oNXXoeqIPmH1LH+ZITaKV1QDdY2YCkxL1Tfczo9jW8CwKCKFPqx4hSr550+g6MKiWJ1B3cfzJ5at24NGRkIrSa1WI0uXHrb/pHi1komzoSUofOLV72CvNcEFvYIIkvV1lva3Tn96i0ztdQnAnyV3De0BSrKvlsjEwbxmi53KZbVhlDCZM7tcZEdvphDoEOzMXirSjlJ3RqsEOK+lsd5FDO9WS8ZvtXodn2fO/So/E4kioSdIBn4WRrbAHsQYNkKULciT597Nzui+4EJrudJG4/pWpJJv6g+/FBCzbFbpvOlcirLSDyR9Aec6PE+zJ23uV8PvH1GFlMr4TJWREk50xIu6S+9GJA/n3cRXFntrNbFAuBCGZmV9CvT7uFRvnc/nka8PTAXA0gkYaNspXfu7gvykxxy/ZOCRrLBm+9UwTqEuvkjun3+WN4HvkzTjNpTTKKSemw1ozeUqXnQTGrJyqTcTu8XXPf7NLEaiQ6fpiuPZrWvj9oCDJDiOpTTbiLsvWo7Hni4ISnSj1p5TGDx89otkpG+QFXIVasLLk6Fmz3nLxGc7Y3kA==
|
||||
learner_created: false
|
||||
- name: src/demo.kt.wb
|
||||
visible: false
|
||||
encrypted_text: 1B+4bYXp0Fkxt/ek3c4icTod/OQTcxTvX9L2mge6oEynr4CGqLb+2nV7OBb8HUrRAeiymgRwIRpv4cpd20i9CWSaLsIjsdYNzZA78lYZVQTDAxUZ/+GgHcTHrKY7aUS/qcNYEf4MuUHgUrPbjaJppOR7ufux7uKU1lwiHskvMDUn61cAWIKvmNHAybnVoksIEqedQ9ANs8cqodj3uE4gGg==
|
||||
learner_created: false
|
||||
- name: task.md.wb
|
||||
visible: false
|
||||
encrypted_text: x8efRHEn6mtpcBlEA1h0fE7+If60lYp0eoOkDvh1SBb8brLSlVeq+z5mnvRUPPHnwQjlihx0oR6q5ImURN17IXFONQqxOkStM61xbAv41I3YA+fbff/Sz+/U5JYxR/MUAfc4E1AEoWwZ2kWYzI9C4/O4QT2BA38Kww12f0Jp+OpaGzUP1OdGhOh9oeootjDtPFJ0LYBqK1WkSBiTj9PWrsAvv93mfXhhokeHtL5myorevL3CcpdlrTz6ARKCb0BD/taJ/NdfwbOwF1eK8pwqstYZ00WVJLNTrtEuIQY++GvBH7sqbIQsZ9yY2+TS0++sKTowav/854uSlf2LnqK3OqmyiW9Ui4ara1Awjm0ZT55ru/iycCdWQbTHQvv+zJX3f7Ee5Xk+w97CDKoJhGl29PRtKbe31MtlJG0emiHBVVrM5WlfRtsUDQf4avDEkpnVZylr5+7JBT2FKGlv9k/d2fHbzFzekqVrMNLlAiNuqr0=
|
||||
learner_created: false
|
||||
feedback_link: https://docs.google.com/forms/d/e/1FAIpQLSeYool5qTz-p77fzn_9UKQVjO3u3Al6WjzEyW5cbjspRwtQig/viewform?usp=pp_url&entry.2103429047=Builders+/+Html+builders
|
||||
status: Unchecked
|
||||
record: -1
|
@ -0,0 +1 @@
|
||||
id: 234759
|
@ -0,0 +1,10 @@
|
||||
## HTML builder
|
||||
|
||||
1. Fill the table with proper values from the product list.
|
||||
The products are declared in `data.kt`.
|
||||
|
||||
2. Color the table like a chessboard.
|
||||
Use the `getTitleColor()` and `getCellColor()` functions.
|
||||
Pass a color as an argument to the functions `tr`, `td`.
|
||||
|
||||
Run the main function defined in the file `demo.kt` to see the rendered table.
|
@ -0,0 +1,9 @@
|
||||
## Html builder
|
||||
|
||||
_1._ Fill the table with the proper values from the product list.
|
||||
The products are declared in `data.kt`.
|
||||
|
||||
_2._ Color the table like a chess board (using getTitleColor() and getCellColor() functions above).
|
||||
Pass a color as an argument to the functions `tr`, `td`.
|
||||
|
||||
You can run 'JavaScript(Canvas)' configuration to see the rendered table.
|
@ -0,0 +1,12 @@
|
||||
import java.util.HashMap
|
||||
|
||||
/* TODO */
|
||||
|
||||
fun usage(): Map<Int, String> {
|
||||
return buildMutableMap {
|
||||
put(0, "0")
|
||||
for (i in 1..10) {
|
||||
put(i, "$i")
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
type: edu
|
||||
files:
|
||||
- name: src/Task.kt
|
||||
visible: true
|
||||
placeholders:
|
||||
- offset: 26
|
||||
length: 10
|
||||
placeholder_text: /* TODO */
|
||||
initial_state:
|
||||
length: 10
|
||||
offset: 26
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: hqAg774QUxkCIQsPstuMQA55z4XVASNwv50AHZqeBdotz5qZPJkTAPssQpPYCh7+4cv3qvd9bhxgcz3NLO6g3Jd7XP2/Lw4j5k0ylQ4QDJsTTqPVZElCh33dK+CvNyS+Lsvwa3o6NG0qXg60L5C0lFCUak3trY48QvJY3N79ITydceqyFB1xtBgAb9S63+FO
|
||||
encrypted_text: NYgHoNruO3t7vIi6YFhoH54cJSowayhlYalrWHBzPk0O7qoy/qVS5eFW6baQXBeaUXviV8sDOj4HUDNcAliuAY+InQYcR6OU7S+FYc/Kf3WxkkR5Ymsp2K23FFW9X9M6WxyIrHnCchBD0stBCQFVITg8v3r2Ocbdvsvi++vxBVY/rTi5qlXng5UaoEMScbUdmq3PdC6eU+mwM2/4GqIJ0N7EZqUujspi/T297Eb8Bdv6nWeXkMQ3LHSxszta33TT
|
||||
learner_created: false
|
||||
- name: test/tests.kt
|
||||
visible: false
|
||||
encrypted_text: ITs8Nv8EH6QWJG5nufD7nCbrLPoZNTYAX8EbQHppKy+TR7uFhZF7JnSL5/nnFJttkyEltD8hb4JuHqitjqPdzdABkf4C3ixUHsx9rAvyl6fXOuAlxgb/6eD7HuhlLGci4TLWHjvT85N2FLNTq/81xn8poeuc416VYxAaDyi9lIRCCd/N2tCu4e6blmOK8/iuwx3+B8UZq4XB6r9rtO+5GRPTVTpG/bvO+DUl/CA/iFHB99fjBHza+xwZEc5YzjEs4jfqSBMdW0ewnFirLfZhbD6+GN7euIakkWhfMtPpSR06SkEJwRZQXIXAGDezeDsAYZeyJICFRKHJRg9tC6H67GFKFHd/gNmIaWFU76HeUQ9nlXyUsLaQED5qvwxAxaupUf2mx05Drcfo21k0gY+iMvpGUBg64PAOECyb4odoH0j9nPLZdN8pKl8RCbMn3wgtCpRCdn/2uuhWmlN9PvYMMw==
|
||||
learner_created: false
|
||||
feedback_link: https://docs.google.com/forms/d/e/1FAIpQLSeYool5qTz-p77fzn_9UKQVjO3u3Al6WjzEyW5cbjspRwtQig/viewform?usp=pp_url&entry.2103429047=Builders+/+String+and+Map+Builders
|
||||
status: Unchecked
|
||||
record: -1
|
@ -0,0 +1 @@
|
||||
id: 234757
|
@ -0,0 +1,25 @@
|
||||
## String and map builders
|
||||
|
||||
Function literals with receiver are very useful for creating builders, for example:
|
||||
|
||||
```kotlin
|
||||
fun buildString(build: StringBuilder.() -> Unit): String {
|
||||
val stringBuilder = StringBuilder()
|
||||
stringBuilder.build()
|
||||
return stringBuilder.toString()
|
||||
}
|
||||
|
||||
val s = buildString {
|
||||
this.append("Numbers: ")
|
||||
for (i in 1..3) {
|
||||
// 'this' can be omitted
|
||||
append(i)
|
||||
}
|
||||
}
|
||||
|
||||
s == "Numbers: 123"
|
||||
```
|
||||
|
||||
Implement the function `buildMutableMap` that takes a parameter (of extension function type), creates a new `HashMap`,
|
||||
builds it, and returns it as a result. Note that starting from 1.3.70, the standard library has a similiar `buildMap`
|
||||
function.
|
@ -0,0 +1,21 @@
|
||||
fun <T> T.myApply(f: T.() -> Unit): T {
|
||||
TODO()
|
||||
}
|
||||
|
||||
fun createString(): String {
|
||||
return StringBuilder().myApply {
|
||||
append("Numbers: ")
|
||||
for (i in 1..10) {
|
||||
append(i)
|
||||
}
|
||||
}.toString()
|
||||
}
|
||||
|
||||
fun createMap(): Map<Int, String> {
|
||||
return hashMapOf<Int, String>().myApply {
|
||||
put(0, "0")
|
||||
for (i in 1..10) {
|
||||
put(i, "$i")
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
type: edu
|
||||
files:
|
||||
- name: src/Task.kt
|
||||
visible: true
|
||||
placeholders:
|
||||
- offset: 44
|
||||
length: 6
|
||||
placeholder_text: TODO()
|
||||
initial_state:
|
||||
length: 6
|
||||
offset: 44
|
||||
initialized_from_dependency: false
|
||||
selected: false
|
||||
status: Unchecked
|
||||
encrypted_possible_answer: e6q73DJafCDwTJxGT6+LXfajF1ye17rMLiU0XeSqvLI=
|
||||
encrypted_text: fuFmsdrW/z332+GC09waYWNxalPHbCyunZk7BYKO5I4mM1r5aJHbCQ+ESaPnzrFiOQnx4yBwrw07y+CKWCNONgWnsAzb72zxxtZYc9guUGlsu0hqZqv0UNcyWZJilCycX8Mlq8Vt/ZlWNIUDuPmSLhbmnArsnQTlpiH6g/N/VL2v03L8StMoWIeJSMMZbdWBFhpyLzeNCNZkFw4Cg3Ii/pV04yx4wDRYdTff3+iJlJJJD+EOT0QRHfGUzZ0H0/X0JjU93zbrQDCwYlcxtGMs9P59wGHU3dkiikrnfDlP5YlV7lCgAZFURauZAReCUzk8iKbAtIm3IRiLdxc32aQeJPihHLjdsbbPv1uwL9O27JSh+KZQqr1xxL7TK+xgZApEVw98xDA0APYUG23jLJV6d2afBlpaZuaQG15KtGdgEDt1gl1mOzNtIM1uO0ehx+ENFIgWccIDd7CNiguIanadmIOJ6G5O3ypwGXCbm1DE8e0el9MEUZioURHppDkAYw1cDcFPwxgerNaRPe3dlZ4kfA==
|
||||
learner_created: false
|
||||
- name: test/tests.kt
|
||||
visible: false
|
||||
encrypted_text: ITs8Nv8EH6QWJG5nufD7nCbrLPoZNTYAX8EbQHppKy8S+0d6SUuSBLOWeXdkV1kqhwWxUQZYeS3GXBNoMnDbnoYDsY/hvZFXsTMm1IxP/vQX0JnhCXcS4Jn8dN2AVQAxuL2RoGxOYqLIcG5EdS3AKVB/Yrt0KcFd9RrPneXcvGDe0YJSab0auR5E7V9TRYxDkcK5NyjjuOUTzPinjOIk6cnDK8n8VCa7CNhOgKnOzOWjfF9gLUSgPCZsiHm1lEvHvzsgEGKlE1M/wDCH6gGAv7+kp55GO37Bstq3GBcTHOfLiTxuQgx8lup7j1dtzXIm7FKzKyQn5yCO2XcAkTTum8J3XdLT70crIa8GYSEXGMRmKxQyQ7SXyJNc77I52FKxbpJ7RgI4AtjfDSNzyzODychV6xsybhBSyiBSWGGewYHfuwjgUl274HI7qztevcCOV0olKhV1o9kD/zU3TCC6hJkQe+QKbo+gnc1XxLFEHEeTpdpO+uDNR4DAvE8tv5NQDjsydtP8YKCtewCGVyXtFWkuLHV9i/jmLdYcj1NisVnBcZZp7DqhjjpVzpFIWtJd2EMKGyIHEX0LRoKHeTFVWaftvOg0TVldfWBrHV+oym+Qeb66JCov0OypzzVETy81qEEe1wp08sZod/umJcn28egz4Ig2ALD+Jm3Oni1m+X7Gpds29e3oPjf5i6Ro6WVL5RKPw8EUJel0YUPQd2+mV24M1NxmMfKUOxhPGWG6pOqlQ57qwssp1pbL8o95JRhaWQwMD9uO2XESGT1RuSacdZ57hyagmTC84/THJIhZKOXuvu16CpYiW/UuIxM7fcz0V1JvdyM5YkCxy0DhWJXxR+pf6C3jNALWbc3uwv9ui/A+zLTiXsl4DxvwFoGz7IFZKuvmPa+fe3sGs5IN6cjTsQ==
|
||||
learner_created: false
|
||||
feedback_link: https://docs.google.com/forms/d/e/1FAIpQLSeYool5qTz-p77fzn_9UKQVjO3u3Al6WjzEyW5cbjspRwtQig/viewform?usp=pp_url&entry.2103429047=Builders+/+The+function+Apply
|
||||
status: Unchecked
|
||||
record: -1
|
@ -0,0 +1 @@
|
||||
id: 234758
|
@ -0,0 +1,8 @@
|
||||
## The function apply
|
||||
|
||||
The previous examples can be rewritten using the library function
|
||||
[`apply`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html).
|
||||
Write your implementation of this function named `myApply`.
|
||||
|
||||
Learn about the other [scope functions](https://kotlinlang.org/docs/scope-functions.html)
|
||||
and how to use them.
|
@ -0,0 +1,7 @@
|
||||
content:
|
||||
- Function literals with receiver
|
||||
- String and map builders
|
||||
- The function apply
|
||||
- Html builders
|
||||
- Builders how it works
|
||||
- Builders implementation
|
@ -0,0 +1 @@
|
||||
id: 59496
|