Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SetWorkingDir %A_ScriptDir%
- FileRead, tiStr, % A_ScriptDir "\d16.txt"
- tiA := StrSplit(tiStr, "`r`n`r`n")
- ruA := {}
- for i, j in StrSplit(tiA[1], "`r`n") {
- rA := StrSplit(j, [": "])
- rA[2] := StrSplit(rA[2], " or ")
- for k, l in rA[2] {
- rA[2][k] := StrSplit(l, "-")
- }
- ruA[i] := rA
- }
- ticA := {}
- ticA[1] := StrSplit(StrSplit(tiA[2], ":`r`n")[2], ",")
- for i, j in StrSplit(tiA[3], "`r`n") {
- if (i = 1)
- Continue
- ticA[i] := StrSplit(j, ",")
- }
- tickA := {}
- tickA[1] := ticA[1]
- for i, ticket in ticA {
- if (i = 1)
- Continue
- invalid := 0
- for j, value in ticket {
- valid := 0
- for k, rule in ruA {
- for l, values in rule[2] {
- if (value >= values[1]) and (value <= values[2]) {
- valid := 1
- }
- }
- }
- if !valid
- invalid := 1
- }
- if !invalid
- tickA[i] := ticA[i]
- }
- RulePos := {}
- for i, ticket in tickA {
- for j, value in ticket {
- for k, rule in ruA {
- if !RulePos[rule[1]]
- RulePos[rule[1]] := {}
- if !RulePos[rule[1]][j]
- RulePos[rule[1]][j] := 0
- for l, values in rule[2] {
- if (value >= values[1]) and (value <= values[2]) {
- RulePos[rule[1]][j] += 1
- }
- }
- }
- }
- }
- Loop
- {
- noObj := 0
- for i, rule in RulePos {
- maxVal := 0
- maxValCount := 1
- maxValPos := 0
- if IsObject(rule) {
- for pos, val in rule {
- if (val > maxVal) {
- maxVal := val
- maxValCount := 1
- maxValPos := pos
- }
- else if (val = maxVal)
- maxValCount += 1
- }
- if (maxValCount > 1) {
- Continue
- }
- else {
- RulePos[i] := maxValPos
- for k, l in RulePos {
- if IsObject(l) {
- RulePos[k][maxValPos] := 0
- }
- }
- }
- }
- else {
- noObj += 1
- }
- }
- if (noObj >= RulePos.Count())
- Break
- }
- result := 1
- for i, j in RulePos {
- if (SubStr(i, 1, 9) = "departure") {
- result *= tickA[1][j]
- }
- }
- Clipboard := result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement