import Foundation

extension Scanner {
    @discardableResult
    func string(_ string: String) -> Bool {
        return scanString(string) != nil
    }

    func integers() -> [Int] {
        var numbers: [Int] = []
        while let num = scanInt() {
            numbers.append(num)
        }
        return numbers
    }
}


extension String {
    func lines() -> [String] {
        var result: [String] = []
        enumerateLines { line, _ in result.append(line) }
        return result
    }
}

extension Sequence {
    func print(_ prefix: String = "") -> Self {
        Swift.print(prefix, Array(self))
        return self
    }
}

extension Collection where Element: Collection {
    func flatten() -> [Element.Element] {
        flatMap { $0 }
    }
}