Use substring iterator directly
This commit is contained in:
parent
e1f0159403
commit
6f7fc2d1a8
1 changed files with 10 additions and 12 deletions
|
@ -13,11 +13,9 @@ class Grid(val rows: List<String>) {
|
|||
fun chars(x: Int, y: Int, dx: Int, dy: Int) = Line(x, y, dx, dy)
|
||||
|
||||
inner class Line(val x: Int, val y: Int, val dx: Int, val dy: Int) : Sequence<Char> {
|
||||
override fun iterator(): Iterator<Char> = iterator {
|
||||
if (dx == 1 && dy == 0) {
|
||||
yieldAll(rows[y].substring(startIndex = x).asSequence())
|
||||
} else {
|
||||
|
||||
override fun iterator(): Iterator<Char> = if (dx == 1 && dy == 0) {
|
||||
rows[y].substring(startIndex = x).iterator()
|
||||
} else iterator {
|
||||
var x = x
|
||||
var y = y
|
||||
|
||||
|
@ -28,7 +26,7 @@ class Grid(val rows: List<String>) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun rows(): Sequence<Line> = sequence {
|
||||
for (y in 0..<height) {
|
||||
|
|
Loading…
Add table
Reference in a new issue