Move to subdirectory
This commit is contained in:
parent
c4ae807a5f
commit
c7deb3c71d
47 changed files with 1208 additions and 0 deletions
39
2020/day2/main.swift
Normal file
39
2020/day2/main.swift
Normal file
|
@ -0,0 +1,39 @@
|
|||
import Foundation
|
||||
|
||||
let input = loadData(day: 2)
|
||||
|
||||
var valids = 0
|
||||
var valid2 = 0
|
||||
|
||||
var scanner = Scanner(string: input)
|
||||
while !scanner.isAtEnd {
|
||||
guard let min = scanner.scanInt(),
|
||||
scanner.scanString("-") != nil,
|
||||
let max = scanner.scanInt(),
|
||||
let character = scanner.scanCharacter(),
|
||||
scanner.scanString(":") != nil,
|
||||
let password = scanner.scanUpToCharacters(from: .newlines)
|
||||
else {
|
||||
fatalError("Invalid input");
|
||||
}
|
||||
|
||||
|
||||
let count = password.lazy.filter { $0 == character }.count
|
||||
|
||||
if min <= count && count <= max {
|
||||
print("valid", min, max, character, password)
|
||||
valids += 1
|
||||
}
|
||||
|
||||
let first = password.index(password.startIndex, offsetBy: min - 1, limitedBy: password.endIndex).map { password[$0] }
|
||||
let second = password.index(password.startIndex, offsetBy: max - 1, limitedBy: password.endIndex).map { password[$0] }
|
||||
|
||||
if (first == character || second == character) && first != second {
|
||||
print("valid 2", password)
|
||||
valid2 += 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
print("Valid old", valids)
|
||||
print("Valid new", valid2)
|
Loading…
Add table
Add a link
Reference in a new issue