From 43a2ee841440434c7ed0ba2f7f9739b298437f4e Mon Sep 17 00:00:00 2001 From: Sven Weidauer Date: Wed, 23 Nov 2022 16:46:40 +0100 Subject: [PATCH] Add 2018 solutions --- 2018/AoC.xcodeproj/project.pbxproj | 305 ++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/AoC.xcscheme | 87 + 2018/AoC/algorithms.swift | 84 + 2018/AoC/day3input.swift | 1411 +++++++++++++++++ 2018/AoC/main.swift | 111 ++ 2018/AoC/scanner.swift | 14 + 8 files changed, 2027 insertions(+) create mode 100644 2018/AoC.xcodeproj/project.pbxproj create mode 100644 2018/AoC.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 2018/AoC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 2018/AoC.xcodeproj/xcshareddata/xcschemes/AoC.xcscheme create mode 100644 2018/AoC/algorithms.swift create mode 100644 2018/AoC/day3input.swift create mode 100644 2018/AoC/main.swift create mode 100644 2018/AoC/scanner.swift diff --git a/2018/AoC.xcodeproj/project.pbxproj b/2018/AoC.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5f69e97 --- /dev/null +++ b/2018/AoC.xcodeproj/project.pbxproj @@ -0,0 +1,305 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 26089D5821DBDFA200D6750F /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26089D5721DBDFA200D6750F /* main.swift */; }; + 26B7AD1C21E000F70025E32E /* algorithms.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26B7AD1B21E000F70025E32E /* algorithms.swift */; }; + 26B7AD1E21E004EE0025E32E /* day3input.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26B7AD1D21E004EE0025E32E /* day3input.swift */; }; + 26B7AD2021E0063F0025E32E /* scanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26B7AD1F21E0063F0025E32E /* scanner.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 26089D5221DBDFA200D6750F /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 26089D5421DBDFA200D6750F /* AoC */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AoC; sourceTree = BUILT_PRODUCTS_DIR; }; + 26089D5721DBDFA200D6750F /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 26B7AD1B21E000F70025E32E /* algorithms.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = algorithms.swift; sourceTree = ""; }; + 26B7AD1D21E004EE0025E32E /* day3input.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = day3input.swift; sourceTree = ""; }; + 26B7AD1F21E0063F0025E32E /* scanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = scanner.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 26089D5121DBDFA200D6750F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 26089D4B21DBDFA200D6750F = { + isa = PBXGroup; + children = ( + 26089D5621DBDFA200D6750F /* AoC */, + 26089D5521DBDFA200D6750F /* Products */, + ); + sourceTree = ""; + }; + 26089D5521DBDFA200D6750F /* Products */ = { + isa = PBXGroup; + children = ( + 26089D5421DBDFA200D6750F /* AoC */, + ); + name = Products; + sourceTree = ""; + }; + 26089D5621DBDFA200D6750F /* AoC */ = { + isa = PBXGroup; + children = ( + 26089D5721DBDFA200D6750F /* main.swift */, + 26B7AD1B21E000F70025E32E /* algorithms.swift */, + 26B7AD1D21E004EE0025E32E /* day3input.swift */, + 26B7AD1F21E0063F0025E32E /* scanner.swift */, + ); + path = AoC; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 26089D5321DBDFA200D6750F /* AoC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 26089D5B21DBDFA200D6750F /* Build configuration list for PBXNativeTarget "AoC" */; + buildPhases = ( + 26089D5021DBDFA200D6750F /* Sources */, + 26089D5121DBDFA200D6750F /* Frameworks */, + 26089D5221DBDFA200D6750F /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AoC; + productName = AoC; + productReference = 26089D5421DBDFA200D6750F /* AoC */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 26089D4C21DBDFA200D6750F /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1010; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Sven Weidauer"; + TargetAttributes = { + 26089D5321DBDFA200D6750F = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1300; + }; + }; + }; + buildConfigurationList = 26089D4F21DBDFA200D6750F /* Build configuration list for PBXProject "AoC" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 26089D4B21DBDFA200D6750F; + productRefGroup = 26089D5521DBDFA200D6750F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 26089D5321DBDFA200D6750F /* AoC */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 26089D5021DBDFA200D6750F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 26089D5821DBDFA200D6750F /* main.swift in Sources */, + 26B7AD1C21E000F70025E32E /* algorithms.swift in Sources */, + 26B7AD2021E0063F0025E32E /* scanner.swift in Sources */, + 26B7AD1E21E004EE0025E32E /* day3input.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 26089D5921DBDFA200D6750F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 26089D5A21DBDFA200D6750F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 26089D5C21DBDFA200D6750F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 722B335UM5; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 26089D5D21DBDFA200D6750F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 722B335UM5; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 26089D4F21DBDFA200D6750F /* Build configuration list for PBXProject "AoC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 26089D5921DBDFA200D6750F /* Debug */, + 26089D5A21DBDFA200D6750F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 26089D5B21DBDFA200D6750F /* Build configuration list for PBXNativeTarget "AoC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 26089D5C21DBDFA200D6750F /* Debug */, + 26089D5D21DBDFA200D6750F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 26089D4C21DBDFA200D6750F /* Project object */; +} diff --git a/2018/AoC.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/2018/AoC.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ca482b6 --- /dev/null +++ b/2018/AoC.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/2018/AoC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/2018/AoC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/2018/AoC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/2018/AoC.xcodeproj/xcshareddata/xcschemes/AoC.xcscheme b/2018/AoC.xcodeproj/xcshareddata/xcschemes/AoC.xcscheme new file mode 100644 index 0000000..b3a6b74 --- /dev/null +++ b/2018/AoC.xcodeproj/xcshareddata/xcschemes/AoC.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2018/AoC/algorithms.swift b/2018/AoC/algorithms.swift new file mode 100644 index 0000000..7eda5aa --- /dev/null +++ b/2018/AoC/algorithms.swift @@ -0,0 +1,84 @@ +import Foundation +func readInput() -> AnySequence { + return AnySequence { + AnyIterator { + readLine() + } + } +} + +extension Sequence { + func fold(initial: Element, operation: @escaping (Element, Element) -> Element) -> AnySequence { + return AnySequence { () -> AnyIterator in + var iterator: Iterator? = nil + var runningSum = initial + + return AnyIterator { + if iterator == nil { + iterator = self.makeIterator() + return runningSum + } + + guard let next = iterator?.next() else { + return nil + } + + runningSum = operation(runningSum, next) + return runningSum + } + } + } + + func repeated() -> AnySequence { + + return AnySequence(sequence(state: nil as Iterator?) { iterator in + if let next = iterator?.next() { + return next + } + + iterator = self.makeIterator() + return iterator?.next() + }) + } +} + +extension Sequence where Element: Hashable { + func firstDuplicate() -> Element? { + var items: Set = [] + return first { !items.insert($0).inserted } + } +} + + +extension Sequence where Element: Hashable { + func frequencies() -> [Element: Int] { + return Dictionary(self.map { ($0, 1) }, uniquingKeysWith: { first, second in + first + second + }) + } +} + +extension Sequence { + func allPairs() -> AnySequence<(Element, Element)> { + return AnySequence { () -> AnyIterator<(Element, Element)> in + var pairIterator: Array<(Element, Element)>.Iterator? = nil + var outerIterator = self.makeIterator() + var drop = 1 + + return AnyIterator { () -> (Element, Element)? in + if let result = pairIterator?.next() { + return result + } + + guard let value = outerIterator.next() else { + return nil + } + + pairIterator = self.dropFirst(drop).lazy.map { (value, $0) }.makeIterator() + drop += 1 + + return pairIterator?.next() + } + } + } +} diff --git a/2018/AoC/day3input.swift b/2018/AoC/day3input.swift new file mode 100644 index 0000000..48c2e7f --- /dev/null +++ b/2018/AoC/day3input.swift @@ -0,0 +1,1411 @@ +let day3Input = """ +#1 @ 151,671: 11x15 +#2 @ 887,913: 28x22 +#3 @ 808,917: 17x11 +#4 @ 727,230: 26x26 +#5 @ 638,853: 21x20 +#6 @ 713,106: 17x18 +#7 @ 745,709: 18x15 +#8 @ 550,92: 29x19 +#9 @ 389,659: 26x24 +#10 @ 501,813: 27x29 +#11 @ 568,365: 26x19 +#12 @ 719,695: 19x10 +#13 @ 678,843: 13x11 +#14 @ 157,147: 22x25 +#15 @ 661,901: 14x28 +#16 @ 84,265: 26x22 +#17 @ 258,382: 10x26 +#18 @ 272,458: 18x21 +#19 @ 737,335: 28x22 +#20 @ 273,698: 24x11 +#21 @ 766,190: 24x13 +#22 @ 165,472: 28x24 +#23 @ 411,285: 14x21 +#24 @ 229,280: 21x25 +#25 @ 334,338: 14x12 +#26 @ 826,803: 18x26 +#27 @ 867,508: 16x15 +#28 @ 437,755: 16x20 +#29 @ 361,507: 14x29 +#30 @ 276,667: 23x25 +#31 @ 649,765: 20x20 +#32 @ 347,635: 15x24 +#33 @ 954,333: 23x25 +#34 @ 93,131: 25x19 +#35 @ 454,388: 14x28 +#36 @ 582,39: 24x25 +#37 @ 211,97: 14x13 +#38 @ 481,346: 10x12 +#39 @ 395,917: 14x18 +#40 @ 404,364: 22x16 +#41 @ 275,49: 11x11 +#42 @ 667,904: 19x26 +#43 @ 519,564: 21x23 +#44 @ 65,674: 29x10 +#45 @ 737,610: 8x7 +#46 @ 410,121: 14x27 +#47 @ 257,691: 19x13 +#48 @ 589,362: 15x11 +#49 @ 15,953: 22x29 +#50 @ 160,738: 29x19 +#51 @ 150,758: 10x17 +#52 @ 337,83: 10x20 +#53 @ 368,622: 18x15 +#54 @ 807,420: 21x28 +#55 @ 98,401: 13x15 +#56 @ 488,41: 24x27 +#57 @ 735,111: 11x22 +#58 @ 556,847: 26x28 +#59 @ 590,13: 13x20 +#60 @ 945,694: 27x28 +#61 @ 20,956: 23x11 +#62 @ 587,647: 11x24 +#63 @ 70,744: 20x24 +#64 @ 340,424: 23x22 +#65 @ 496,949: 13x22 +#66 @ 40,238: 11x12 +#67 @ 376,585: 11x23 +#68 @ 244,541: 21x15 +#69 @ 910,404: 19x24 +#70 @ 536,355: 22x21 +#71 @ 476,606: 11x21 +#72 @ 320,601: 29x29 +#73 @ 682,407: 13x28 +#74 @ 434,923: 24x13 +#75 @ 256,708: 16x23 +#76 @ 901,912: 13x16 +#77 @ 237,43: 13x25 +#78 @ 533,655: 18x22 +#79 @ 338,415: 28x11 +#80 @ 138,285: 28x29 +#81 @ 630,329: 16x19 +#82 @ 883,608: 27x15 +#83 @ 110,227: 25x26 +#84 @ 821,741: 24x15 +#85 @ 753,928: 12x18 +#86 @ 719,906: 10x23 +#87 @ 564,134: 19x27 +#88 @ 966,561: 26x27 +#89 @ 54,229: 13x29 +#90 @ 726,494: 23x27 +#91 @ 502,964: 15x16 +#92 @ 84,2: 24x26 +#93 @ 985,793: 4x11 +#94 @ 650,402: 10x16 +#95 @ 46,968: 22x24 +#96 @ 505,44: 26x19 +#97 @ 972,395: 12x27 +#98 @ 32,348: 24x23 +#99 @ 635,596: 21x13 +#100 @ 129,97: 21x23 +#101 @ 621,134: 11x13 +#102 @ 843,412: 27x19 +#103 @ 801,678: 29x11 +#104 @ 870,178: 11x24 +#105 @ 290,730: 15x15 +#106 @ 572,117: 24x26 +#107 @ 120,716: 16x21 +#108 @ 813,426: 21x13 +#109 @ 307,722: 20x19 +#110 @ 682,79: 13x22 +#111 @ 798,874: 10x23 +#112 @ 350,649: 25x16 +#113 @ 296,395: 24x21 +#114 @ 77,276: 21x14 +#115 @ 229,966: 11x19 +#116 @ 231,853: 14x26 +#117 @ 139,928: 23x10 +#118 @ 674,414: 10x11 +#119 @ 47,206: 12x29 +#120 @ 250,271: 18x19 +#121 @ 435,917: 14x17 +#122 @ 980,804: 17x26 +#123 @ 237,245: 16x25 +#124 @ 828,570: 14x12 +#125 @ 869,3: 29x22 +#126 @ 54,700: 26x11 +#127 @ 935,928: 17x18 +#128 @ 749,947: 17x18 +#129 @ 399,463: 20x20 +#130 @ 912,18: 23x19 +#131 @ 26,104: 12x27 +#132 @ 899,57: 22x14 +#133 @ 413,89: 15x25 +#134 @ 975,301: 23x29 +#135 @ 339,362: 27x23 +#136 @ 556,646: 19x10 +#137 @ 291,422: 21x28 +#138 @ 2,758: 13x21 +#139 @ 654,286: 29x19 +#140 @ 412,480: 16x13 +#141 @ 952,133: 15x15 +#142 @ 445,925: 24x27 +#143 @ 174,335: 12x26 +#144 @ 741,370: 14x22 +#145 @ 219,699: 26x19 +#146 @ 468,838: 24x17 +#147 @ 234,630: 26x10 +#148 @ 189,660: 13x29 +#149 @ 724,682: 13x23 +#150 @ 966,202: 15x23 +#151 @ 864,839: 26x22 +#152 @ 326,574: 17x15 +#153 @ 108,713: 21x13 +#154 @ 449,903: 26x24 +#155 @ 971,67: 16x28 +#156 @ 88,366: 10x17 +#157 @ 244,582: 19x11 +#158 @ 348,358: 25x16 +#159 @ 223,834: 10x20 +#160 @ 813,659: 22x17 +#161 @ 780,128: 22x23 +#162 @ 806,867: 23x15 +#163 @ 896,146: 23x22 +#164 @ 875,717: 25x23 +#165 @ 777,22: 16x26 +#166 @ 756,866: 15x25 +#167 @ 103,348: 14x27 +#168 @ 722,726: 27x10 +#169 @ 772,739: 17x15 +#170 @ 392,976: 26x20 +#171 @ 18,486: 25x21 +#172 @ 632,260: 21x28 +#173 @ 901,137: 15x10 +#174 @ 473,723: 11x13 +#175 @ 973,675: 21x24 +#176 @ 610,890: 17x18 +#177 @ 691,584: 11x18 +#178 @ 734,599: 18x23 +#179 @ 671,378: 16x21 +#180 @ 816,195: 28x24 +#181 @ 811,183: 25x27 +#182 @ 436,670: 22x10 +#183 @ 450,560: 17x18 +#184 @ 325,628: 26x19 +#185 @ 126,249: 10x14 +#186 @ 768,451: 29x26 +#187 @ 933,129: 13x27 +#188 @ 91,847: 26x23 +#189 @ 219,317: 11x27 +#190 @ 53,666: 21x19 +#191 @ 443,487: 29x19 +#192 @ 221,757: 22x15 +#193 @ 393,974: 22x12 +#194 @ 208,678: 19x14 +#195 @ 436,566: 11x11 +#196 @ 576,436: 26x11 +#197 @ 376,645: 28x19 +#198 @ 698,483: 10x10 +#199 @ 884,858: 21x21 +#200 @ 758,326: 23x23 +#201 @ 165,127: 22x25 +#202 @ 211,856: 26x29 +#203 @ 552,93: 11x12 +#204 @ 206,240: 22x13 +#205 @ 171,320: 10x10 +#206 @ 765,971: 26x26 +#207 @ 18,605: 20x16 +#208 @ 217,636: 10x26 +#209 @ 590,358: 7x9 +#210 @ 158,266: 29x24 +#211 @ 394,560: 17x24 +#212 @ 714,530: 13x15 +#213 @ 751,95: 7x7 +#214 @ 503,80: 15x18 +#215 @ 387,661: 17x28 +#216 @ 695,157: 21x25 +#217 @ 324,564: 19x20 +#218 @ 546,574: 25x13 +#219 @ 360,735: 10x15 +#220 @ 765,177: 28x28 +#221 @ 629,594: 17x7 +#222 @ 401,359: 26x12 +#223 @ 76,834: 10x19 +#224 @ 82,370: 16x14 +#225 @ 232,620: 20x14 +#226 @ 573,820: 16x29 +#227 @ 416,201: 27x16 +#228 @ 967,577: 27x11 +#229 @ 321,728: 21x27 +#230 @ 537,211: 15x12 +#231 @ 926,247: 12x20 +#232 @ 345,473: 14x26 +#233 @ 307,971: 27x20 +#234 @ 439,541: 26x19 +#235 @ 822,245: 28x15 +#236 @ 770,397: 28x14 +#237 @ 704,526: 17x12 +#238 @ 477,803: 28x22 +#239 @ 293,285: 10x14 +#240 @ 693,690: 10x21 +#241 @ 38,440: 27x18 +#242 @ 593,349: 25x28 +#243 @ 301,721: 11x21 +#244 @ 292,966: 21x29 +#245 @ 208,116: 13x23 +#246 @ 943,494: 21x13 +#247 @ 283,20: 24x18 +#248 @ 759,962: 22x13 +#249 @ 15,555: 13x14 +#250 @ 650,842: 24x12 +#251 @ 908,402: 28x23 +#252 @ 762,533: 18x20 +#253 @ 570,425: 21x14 +#254 @ 412,175: 12x25 +#255 @ 671,861: 16x25 +#256 @ 828,31: 15x27 +#257 @ 227,57: 24x20 +#258 @ 951,798: 13x28 +#259 @ 943,216: 15x10 +#260 @ 125,749: 21x20 +#261 @ 821,96: 15x15 +#262 @ 264,838: 21x25 +#263 @ 366,809: 29x13 +#264 @ 370,974: 26x14 +#265 @ 210,135: 21x16 +#266 @ 347,856: 20x23 +#267 @ 280,846: 23x24 +#268 @ 755,824: 26x19 +#269 @ 149,949: 16x10 +#270 @ 155,582: 18x29 +#271 @ 761,188: 12x10 +#272 @ 918,153: 17x29 +#273 @ 846,637: 4x3 +#274 @ 25,748: 26x26 +#275 @ 735,232: 28x10 +#276 @ 64,63: 16x14 +#277 @ 311,216: 11x27 +#278 @ 331,165: 16x21 +#279 @ 55,953: 22x20 +#280 @ 890,125: 27x25 +#281 @ 121,177: 16x28 +#282 @ 276,222: 21x11 +#283 @ 602,197: 24x19 +#284 @ 493,73: 22x25 +#285 @ 760,953: 12x27 +#286 @ 923,864: 11x29 +#287 @ 517,10: 27x19 +#288 @ 353,502: 13x8 +#289 @ 679,766: 19x29 +#290 @ 577,121: 14x16 +#291 @ 308,176: 12x22 +#292 @ 691,114: 10x20 +#293 @ 760,360: 21x27 +#294 @ 126,698: 29x23 +#295 @ 921,36: 24x12 +#296 @ 547,138: 22x16 +#297 @ 438,567: 17x16 +#298 @ 549,572: 21x11 +#299 @ 380,900: 26x22 +#300 @ 628,604: 11x12 +#301 @ 44,63: 27x25 +#302 @ 933,911: 25x27 +#303 @ 925,640: 13x19 +#304 @ 870,217: 10x23 +#305 @ 27,668: 27x11 +#306 @ 822,85: 28x12 +#307 @ 465,549: 14x27 +#308 @ 398,781: 27x27 +#309 @ 285,702: 6x5 +#310 @ 802,179: 19x19 +#311 @ 608,863: 23x17 +#312 @ 855,644: 12x22 +#313 @ 238,931: 23x27 +#314 @ 400,613: 14x29 +#315 @ 308,590: 20x20 +#316 @ 630,811: 12x25 +#317 @ 11,552: 10x26 +#318 @ 218,598: 13x25 +#319 @ 480,722: 3x3 +#320 @ 216,754: 21x28 +#321 @ 468,559: 7x13 +#322 @ 761,803: 20x26 +#323 @ 378,457: 18x19 +#324 @ 955,346: 15x26 +#325 @ 715,398: 27x15 +#326 @ 889,720: 13x19 +#327 @ 681,773: 12x6 +#328 @ 897,259: 10x10 +#329 @ 102,600: 15x26 +#330 @ 901,267: 23x27 +#331 @ 103,287: 29x13 +#332 @ 727,827: 21x28 +#333 @ 659,512: 28x19 +#334 @ 99,135: 12x6 +#335 @ 584,731: 26x25 +#336 @ 934,936: 27x16 +#337 @ 304,185: 29x20 +#338 @ 780,278: 27x28 +#339 @ 898,757: 24x28 +#340 @ 342,280: 15x11 +#341 @ 402,622: 10x25 +#342 @ 747,378: 14x25 +#343 @ 258,351: 26x29 +#344 @ 587,883: 14x10 +#345 @ 322,180: 22x17 +#346 @ 393,85: 18x12 +#347 @ 934,891: 12x18 +#348 @ 684,169: 10x21 +#349 @ 107,487: 24x11 +#350 @ 586,651: 15x19 +#351 @ 923,691: 10x26 +#352 @ 406,866: 17x21 +#353 @ 232,800: 17x14 +#354 @ 522,189: 16x11 +#355 @ 488,939: 18x27 +#356 @ 954,147: 27x15 +#357 @ 332,401: 19x20 +#358 @ 54,62: 20x10 +#359 @ 82,398: 22x29 +#360 @ 107,622: 19x13 +#361 @ 927,319: 13x14 +#362 @ 274,12: 29x25 +#363 @ 556,768: 22x22 +#364 @ 863,515: 26x23 +#365 @ 450,964: 15x28 +#366 @ 654,791: 17x14 +#367 @ 18,47: 20x18 +#368 @ 282,547: 12x28 +#369 @ 937,502: 25x28 +#370 @ 379,278: 13x21 +#371 @ 337,749: 11x21 +#372 @ 265,746: 26x14 +#373 @ 552,166: 27x26 +#374 @ 123,722: 20x15 +#375 @ 10,654: 13x5 +#376 @ 522,741: 10x16 +#377 @ 927,253: 29x10 +#378 @ 967,188: 27x22 +#379 @ 38,680: 22x22 +#380 @ 629,957: 19x29 +#381 @ 512,500: 27x14 +#382 @ 811,903: 25x23 +#383 @ 458,734: 18x19 +#384 @ 256,848: 29x26 +#385 @ 444,834: 28x12 +#386 @ 295,399: 23x13 +#387 @ 371,296: 19x23 +#388 @ 71,566: 13x26 +#389 @ 844,868: 20x16 +#390 @ 891,172: 28x16 +#391 @ 787,45: 19x16 +#392 @ 136,452: 18x18 +#393 @ 333,482: 14x29 +#394 @ 136,924: 13x17 +#395 @ 721,476: 22x29 +#396 @ 504,510: 15x25 +#397 @ 923,457: 21x16 +#398 @ 856,207: 16x16 +#399 @ 322,499: 19x10 +#400 @ 191,957: 16x17 +#401 @ 315,35: 12x15 +#402 @ 688,362: 15x14 +#403 @ 437,438: 20x28 +#404 @ 701,250: 12x19 +#405 @ 538,644: 15x25 +#406 @ 475,548: 23x22 +#407 @ 324,296: 21x29 +#408 @ 587,668: 27x28 +#409 @ 839,631: 22x27 +#410 @ 563,678: 15x12 +#411 @ 201,759: 22x10 +#412 @ 581,975: 23x12 +#413 @ 357,801: 11x15 +#414 @ 688,497: 10x25 +#415 @ 754,950: 5x10 +#416 @ 148,157: 29x13 +#417 @ 965,652: 20x18 +#418 @ 848,919: 12x11 +#419 @ 887,765: 25x18 +#420 @ 110,7: 13x25 +#421 @ 750,847: 10x25 +#422 @ 805,859: 18x20 +#423 @ 522,312: 21x27 +#424 @ 305,402: 20x26 +#425 @ 92,746: 28x12 +#426 @ 936,579: 11x11 +#427 @ 709,237: 28x18 +#428 @ 559,186: 23x29 +#429 @ 338,407: 8x7 +#430 @ 352,864: 27x29 +#431 @ 379,312: 27x17 +#432 @ 938,118: 14x17 +#433 @ 657,407: 12x27 +#434 @ 534,414: 11x25 +#435 @ 369,569: 29x18 +#436 @ 745,536: 18x24 +#437 @ 780,799: 28x17 +#438 @ 884,856: 18x19 +#439 @ 611,227: 26x29 +#440 @ 165,687: 27x24 +#441 @ 328,82: 17x21 +#442 @ 982,786: 15x21 +#443 @ 848,719: 20x16 +#444 @ 805,918: 21x11 +#445 @ 103,365: 22x21 +#446 @ 231,952: 21x26 +#447 @ 368,907: 29x16 +#448 @ 671,851: 15x11 +#449 @ 879,773: 19x17 +#450 @ 745,921: 22x11 +#451 @ 471,497: 18x25 +#452 @ 411,125: 26x10 +#453 @ 374,791: 11x22 +#454 @ 764,776: 27x15 +#455 @ 828,912: 26x13 +#456 @ 531,119: 12x21 +#457 @ 483,495: 28x15 +#458 @ 83,394: 23x19 +#459 @ 582,5: 18x29 +#460 @ 409,275: 29x28 +#461 @ 939,909: 20x28 +#462 @ 796,116: 28x19 +#463 @ 620,830: 28x17 +#464 @ 311,616: 29x26 +#465 @ 553,912: 19x27 +#466 @ 581,971: 22x20 +#467 @ 449,289: 12x18 +#468 @ 762,788: 14x16 +#469 @ 958,553: 15x22 +#470 @ 449,303: 11x10 +#471 @ 122,768: 16x15 +#472 @ 8,367: 24x26 +#473 @ 770,490: 27x15 +#474 @ 439,432: 16x11 +#475 @ 634,60: 27x15 +#476 @ 418,787: 25x18 +#477 @ 838,5: 10x13 +#478 @ 332,166: 17x12 +#479 @ 343,27: 12x26 +#480 @ 334,811: 11x24 +#481 @ 650,56: 15x26 +#482 @ 257,42: 10x27 +#483 @ 956,411: 17x12 +#484 @ 945,397: 25x25 +#485 @ 706,633: 25x11 +#486 @ 349,489: 21x28 +#487 @ 57,472: 15x20 +#488 @ 783,358: 24x26 +#489 @ 578,437: 14x15 +#490 @ 623,380: 23x15 +#491 @ 409,191: 22x18 +#492 @ 628,635: 16x18 +#493 @ 956,202: 17x27 +#494 @ 363,714: 26x11 +#495 @ 731,749: 18x29 +#496 @ 420,80: 11x22 +#497 @ 683,338: 24x28 +#498 @ 522,290: 24x29 +#499 @ 576,548: 17x25 +#500 @ 655,653: 11x27 +#501 @ 961,824: 13x11 +#502 @ 399,858: 21x23 +#503 @ 232,786: 19x15 +#504 @ 187,402: 27x28 +#505 @ 569,90: 25x20 +#506 @ 521,864: 14x20 +#507 @ 865,502: 18x13 +#508 @ 233,884: 16x14 +#509 @ 602,136: 13x15 +#510 @ 381,68: 28x29 +#511 @ 740,876: 17x25 +#512 @ 505,261: 19x10 +#513 @ 384,556: 25x29 +#514 @ 300,845: 17x27 +#515 @ 564,15: 13x19 +#516 @ 11,948: 22x17 +#517 @ 825,414: 15x14 +#518 @ 972,803: 16x20 +#519 @ 239,642: 15x15 +#520 @ 123,689: 27x19 +#521 @ 845,861: 11x13 +#522 @ 24,730: 25x17 +#523 @ 31,769: 24x19 +#524 @ 192,429: 12x21 +#525 @ 913,697: 24x26 +#526 @ 342,697: 10x29 +#527 @ 770,80: 27x16 +#528 @ 738,858: 11x26 +#529 @ 698,707: 10x29 +#530 @ 491,61: 11x21 +#531 @ 408,85: 11x19 +#532 @ 912,144: 11x17 +#533 @ 395,809: 24x25 +#534 @ 553,504: 16x24 +#535 @ 600,882: 24x11 +#536 @ 384,655: 29x24 +#537 @ 61,806: 18x24 +#538 @ 430,97: 14x21 +#539 @ 128,249: 18x14 +#540 @ 669,790: 17x24 +#541 @ 649,593: 16x19 +#542 @ 629,233: 13x11 +#543 @ 917,257: 21x14 +#544 @ 818,670: 12x14 +#545 @ 822,94: 22x14 +#546 @ 237,910: 26x16 +#547 @ 60,99: 17x17 +#548 @ 286,419: 21x19 +#549 @ 880,43: 10x17 +#550 @ 881,610: 18x14 +#551 @ 158,142: 16x22 +#552 @ 307,142: 27x23 +#553 @ 371,329: 19x21 +#554 @ 371,292: 11x24 +#555 @ 657,184: 12x27 +#556 @ 917,252: 16x22 +#557 @ 869,746: 11x29 +#558 @ 485,34: 17x21 +#559 @ 572,737: 14x14 +#560 @ 709,903: 22x10 +#561 @ 67,59: 10x24 +#562 @ 150,369: 14x15 +#563 @ 665,638: 22x14 +#564 @ 780,485: 27x16 +#565 @ 740,810: 25x22 +#566 @ 933,505: 17x27 +#567 @ 418,488: 28x15 +#568 @ 801,241: 26x23 +#569 @ 30,960: 19x12 +#570 @ 749,328: 20x17 +#571 @ 153,675: 5x6 +#572 @ 768,785: 22x15 +#573 @ 888,124: 28x20 +#574 @ 301,384: 13x24 +#575 @ 496,395: 23x20 +#576 @ 70,306: 17x22 +#577 @ 453,965: 28x11 +#578 @ 651,274: 22x14 +#579 @ 300,687: 21x27 +#580 @ 539,451: 22x13 +#581 @ 800,789: 19x16 +#582 @ 928,647: 19x13 +#583 @ 57,949: 21x17 +#584 @ 584,264: 10x25 +#585 @ 586,779: 29x20 +#586 @ 297,349: 27x14 +#587 @ 154,379: 15x15 +#588 @ 59,650: 27x28 +#589 @ 120,836: 24x16 +#590 @ 397,188: 27x21 +#591 @ 223,617: 12x10 +#592 @ 378,343: 23x23 +#593 @ 257,390: 14x21 +#594 @ 67,690: 24x24 +#595 @ 907,171: 26x28 +#596 @ 9,734: 28x27 +#597 @ 149,688: 11x25 +#598 @ 456,965: 21x22 +#599 @ 940,219: 26x27 +#600 @ 892,231: 20x13 +#601 @ 121,432: 10x17 +#602 @ 915,800: 25x10 +#603 @ 54,968: 14x18 +#604 @ 404,591: 25x18 +#605 @ 477,583: 25x12 +#606 @ 932,814: 22x28 +#607 @ 281,137: 16x15 +#608 @ 138,421: 23x28 +#609 @ 737,605: 21x21 +#610 @ 349,660: 17x25 +#611 @ 786,823: 13x24 +#612 @ 205,482: 28x18 +#613 @ 662,797: 18x19 +#614 @ 286,211: 29x25 +#615 @ 244,301: 24x21 +#616 @ 521,821: 20x12 +#617 @ 104,13: 27x28 +#618 @ 570,645: 24x29 +#619 @ 43,231: 14x22 +#620 @ 175,874: 15x20 +#621 @ 695,476: 22x22 +#622 @ 317,311: 19x15 +#623 @ 829,114: 11x12 +#624 @ 718,747: 20x28 +#625 @ 407,82: 18x23 +#626 @ 920,299: 22x21 +#627 @ 368,603: 11x12 +#628 @ 123,468: 26x26 +#629 @ 887,929: 24x24 +#630 @ 910,462: 17x10 +#631 @ 498,344: 20x18 +#632 @ 388,815: 12x28 +#633 @ 389,112: 25x21 +#634 @ 812,240: 12x29 +#635 @ 596,774: 12x21 +#636 @ 271,747: 21x17 +#637 @ 358,553: 24x10 +#638 @ 135,423: 27x23 +#639 @ 616,439: 18x29 +#640 @ 682,516: 25x26 +#641 @ 857,47: 19x21 +#642 @ 289,741: 12x27 +#643 @ 736,620: 20x16 +#644 @ 534,822: 29x29 +#645 @ 574,287: 16x14 +#646 @ 541,82: 17x16 +#647 @ 214,665: 20x14 +#648 @ 865,60: 17x24 +#649 @ 187,587: 17x16 +#650 @ 832,797: 14x23 +#651 @ 521,652: 25x15 +#652 @ 917,736: 21x15 +#653 @ 380,259: 13x12 +#654 @ 436,103: 15x27 +#655 @ 283,134: 13x13 +#656 @ 205,115: 26x28 +#657 @ 466,211: 28x13 +#658 @ 11,785: 10x14 +#659 @ 669,359: 21x25 +#660 @ 407,578: 14x29 +#661 @ 337,174: 24x14 +#662 @ 801,869: 17x11 +#663 @ 71,564: 26x26 +#664 @ 2,692: 17x21 +#665 @ 248,247: 27x29 +#666 @ 738,685: 15x20 +#667 @ 213,215: 18x25 +#668 @ 122,425: 25x13 +#669 @ 523,425: 13x25 +#670 @ 197,688: 20x13 +#671 @ 745,952: 13x25 +#672 @ 666,852: 18x18 +#673 @ 961,686: 24x24 +#674 @ 960,800: 20x27 +#675 @ 523,100: 29x22 +#676 @ 196,598: 20x15 +#677 @ 741,807: 16x23 +#678 @ 493,332: 10x12 +#679 @ 63,475: 10x16 +#680 @ 304,713: 21x24 +#681 @ 824,897: 11x21 +#682 @ 479,40: 25x24 +#683 @ 591,792: 25x23 +#684 @ 432,430: 29x16 +#685 @ 353,435: 24x10 +#686 @ 917,916: 24x17 +#687 @ 536,803: 29x21 +#688 @ 527,182: 14x15 +#689 @ 70,89: 23x13 +#690 @ 188,968: 28x23 +#691 @ 415,560: 14x15 +#692 @ 646,487: 27x10 +#693 @ 540,307: 16x24 +#694 @ 610,751: 15x25 +#695 @ 265,56: 13x10 +#696 @ 764,16: 16x20 +#697 @ 838,98: 16x17 +#698 @ 431,575: 23x20 +#699 @ 343,728: 15x14 +#700 @ 365,631: 29x11 +#701 @ 794,479: 23x11 +#702 @ 453,494: 22x28 +#703 @ 330,285: 20x24 +#704 @ 358,377: 19x29 +#705 @ 115,179: 17x13 +#706 @ 71,838: 15x14 +#707 @ 369,287: 26x19 +#708 @ 957,135: 10x15 +#709 @ 333,374: 28x27 +#710 @ 449,976: 28x20 +#711 @ 390,117: 29x29 +#712 @ 354,813: 13x22 +#713 @ 974,680: 20x12 +#714 @ 158,900: 27x16 +#715 @ 721,938: 17x18 +#716 @ 63,474: 20x23 +#717 @ 286,689: 13x28 +#718 @ 847,916: 19x11 +#719 @ 336,318: 10x25 +#720 @ 379,14: 27x28 +#721 @ 946,142: 15x27 +#722 @ 245,673: 28x19 +#723 @ 771,64: 13x24 +#724 @ 399,80: 11x10 +#725 @ 326,557: 17x14 +#726 @ 662,549: 17x17 +#727 @ 527,965: 5x17 +#728 @ 61,453: 18x18 +#729 @ 100,863: 15x20 +#730 @ 452,465: 25x28 +#731 @ 574,515: 13x16 +#732 @ 754,352: 14x21 +#733 @ 693,78: 29x10 +#734 @ 497,34: 21x16 +#735 @ 161,271: 10x11 +#736 @ 862,404: 11x26 +#737 @ 146,102: 27x25 +#738 @ 589,762: 26x17 +#739 @ 839,729: 10x21 +#740 @ 519,40: 17x12 +#741 @ 163,323: 13x18 +#742 @ 513,916: 12x13 +#743 @ 700,921: 25x23 +#744 @ 352,399: 21x16 +#745 @ 71,50: 26x18 +#746 @ 421,416: 11x13 +#747 @ 220,955: 16x15 +#748 @ 103,130: 24x28 +#749 @ 948,558: 11x12 +#750 @ 0,367: 13x12 +#751 @ 251,274: 17x11 +#752 @ 129,716: 20x25 +#753 @ 561,568: 21x11 +#754 @ 639,762: 26x24 +#755 @ 367,353: 14x15 +#756 @ 531,818: 23x19 +#757 @ 825,210: 16x23 +#758 @ 732,770: 10x18 +#759 @ 378,302: 29x27 +#760 @ 544,209: 18x15 +#761 @ 782,309: 21x10 +#762 @ 547,839: 25x23 +#763 @ 363,526: 29x22 +#764 @ 316,97: 13x23 +#765 @ 353,702: 28x24 +#766 @ 798,39: 14x10 +#767 @ 475,728: 15x23 +#768 @ 629,122: 12x23 +#769 @ 866,738: 19x18 +#770 @ 403,47: 28x26 +#771 @ 628,426: 23x27 +#772 @ 594,136: 10x16 +#773 @ 796,396: 25x17 +#774 @ 125,804: 19x21 +#775 @ 966,222: 22x13 +#776 @ 867,186: 17x12 +#777 @ 932,494: 26x19 +#778 @ 529,791: 24x27 +#779 @ 959,717: 12x14 +#780 @ 36,44: 13x27 +#781 @ 589,130: 23x19 +#782 @ 489,339: 16x13 +#783 @ 783,180: 29x13 +#784 @ 912,892: 18x16 +#785 @ 125,344: 19x18 +#786 @ 530,246: 18x21 +#787 @ 352,355: 23x11 +#788 @ 123,469: 27x18 +#789 @ 586,660: 28x10 +#790 @ 632,5: 25x19 +#791 @ 168,195: 27x29 +#792 @ 8,651: 21x19 +#793 @ 124,824: 18x22 +#794 @ 48,240: 14x17 +#795 @ 468,592: 14x23 +#796 @ 579,847: 21x16 +#797 @ 675,898: 15x22 +#798 @ 420,563: 16x12 +#799 @ 246,32: 16x17 +#800 @ 388,584: 19x21 +#801 @ 250,220: 19x25 +#802 @ 778,306: 19x10 +#803 @ 475,720: 13x10 +#804 @ 754,801: 28x12 +#805 @ 540,214: 7x4 +#806 @ 129,257: 19x20 +#807 @ 400,768: 10x17 +#808 @ 891,675: 25x26 +#809 @ 800,597: 11x11 +#810 @ 516,18: 13x16 +#811 @ 570,397: 12x23 +#812 @ 37,352: 25x13 +#813 @ 534,764: 10x15 +#814 @ 51,875: 27x27 +#815 @ 586,780: 27x10 +#816 @ 563,643: 27x29 +#817 @ 584,810: 13x15 +#818 @ 373,518: 12x10 +#819 @ 71,169: 23x17 +#820 @ 384,21: 17x16 +#821 @ 654,92: 13x20 +#822 @ 756,740: 16x16 +#823 @ 653,388: 26x20 +#824 @ 51,805: 20x15 +#825 @ 797,591: 25x12 +#826 @ 737,233: 20x11 +#827 @ 88,15: 14x19 +#828 @ 173,583: 10x21 +#829 @ 223,700: 19x16 +#830 @ 627,586: 23x29 +#831 @ 838,634: 17x13 +#832 @ 912,454: 19x27 +#833 @ 233,706: 17x22 +#834 @ 740,392: 11x23 +#835 @ 789,474: 13x24 +#836 @ 394,759: 18x11 +#837 @ 837,750: 29x14 +#838 @ 635,273: 14x8 +#839 @ 434,739: 28x18 +#840 @ 78,355: 12x24 +#841 @ 273,46: 19x21 +#842 @ 508,951: 10x15 +#843 @ 397,984: 21x12 +#844 @ 207,278: 29x13 +#845 @ 205,244: 10x23 +#846 @ 224,575: 10x27 +#847 @ 196,258: 26x27 +#848 @ 567,149: 17x29 +#849 @ 557,290: 22x11 +#850 @ 658,255: 15x20 +#851 @ 363,642: 16x21 +#852 @ 913,26: 13x16 +#853 @ 325,331: 25x13 +#854 @ 957,948: 25x15 +#855 @ 982,788: 11x24 +#856 @ 886,521: 10x28 +#857 @ 657,205: 17x28 +#858 @ 927,589: 14x23 +#859 @ 612,964: 12x12 +#860 @ 531,660: 20x12 +#861 @ 563,465: 22x14 +#862 @ 247,8: 17x25 +#863 @ 977,305: 17x17 +#864 @ 52,757: 20x20 +#865 @ 607,240: 16x19 +#866 @ 287,212: 26x11 +#867 @ 207,590: 22x10 +#868 @ 299,24: 27x24 +#869 @ 226,468: 18x25 +#870 @ 84,166: 14x16 +#871 @ 241,533: 17x23 +#872 @ 192,205: 13x17 +#873 @ 813,3: 29x17 +#874 @ 36,893: 22x13 +#875 @ 235,797: 23x12 +#876 @ 444,379: 21x11 +#877 @ 757,819: 22x4 +#878 @ 456,283: 20x18 +#879 @ 342,50: 22x22 +#880 @ 522,873: 10x23 +#881 @ 669,294: 15x15 +#882 @ 114,720: 15x26 +#883 @ 281,814: 28x17 +#884 @ 583,764: 14x23 +#885 @ 631,339: 11x12 +#886 @ 604,829: 18x15 +#887 @ 642,497: 7x15 +#888 @ 945,850: 17x28 +#889 @ 378,277: 20x24 +#890 @ 376,236: 29x17 +#891 @ 853,482: 19x12 +#892 @ 179,300: 23x21 +#893 @ 820,398: 21x20 +#894 @ 464,503: 20x21 +#895 @ 656,475: 11x19 +#896 @ 228,127: 17x20 +#897 @ 815,878: 14x22 +#898 @ 982,619: 13x18 +#899 @ 98,221: 3x6 +#900 @ 225,538: 28x28 +#901 @ 888,60: 18x28 +#902 @ 721,626: 26x25 +#903 @ 2,221: 22x24 +#904 @ 443,921: 22x19 +#905 @ 825,87: 21x27 +#906 @ 564,390: 13x13 +#907 @ 96,212: 23x27 +#908 @ 6,597: 20x23 +#909 @ 317,576: 21x13 +#910 @ 54,360: 18x15 +#911 @ 698,723: 21x25 +#912 @ 17,228: 22x29 +#913 @ 756,199: 15x23 +#914 @ 684,63: 23x26 +#915 @ 146,920: 17x23 +#916 @ 375,783: 11x19 +#917 @ 905,799: 18x13 +#918 @ 370,788: 16x12 +#919 @ 173,702: 22x22 +#920 @ 626,89: 18x26 +#921 @ 128,199: 26x24 +#922 @ 852,845: 23x25 +#923 @ 892,592: 14x18 +#924 @ 515,753: 28x17 +#925 @ 950,529: 15x25 +#926 @ 925,166: 18x16 +#927 @ 224,813: 20x20 +#928 @ 57,65: 13x17 +#929 @ 461,616: 21x24 +#930 @ 692,726: 15x20 +#931 @ 566,120: 18x18 +#932 @ 815,250: 10x24 +#933 @ 813,792: 19x10 +#934 @ 949,326: 21x20 +#935 @ 452,784: 15x22 +#936 @ 701,294: 12x23 +#937 @ 553,140: 20x14 +#938 @ 532,270: 19x20 +#939 @ 381,758: 22x26 +#940 @ 364,538: 13x28 +#941 @ 361,638: 29x23 +#942 @ 0,244: 24x14 +#943 @ 984,805: 13x19 +#944 @ 355,223: 14x18 +#945 @ 972,619: 16x16 +#946 @ 953,249: 17x26 +#947 @ 400,899: 22x23 +#948 @ 359,854: 17x20 +#949 @ 187,862: 14x22 +#950 @ 130,227: 23x16 +#951 @ 185,619: 25x14 +#952 @ 547,610: 21x14 +#953 @ 118,297: 25x13 +#954 @ 239,346: 23x15 +#955 @ 737,484: 23x17 +#956 @ 470,543: 27x24 +#957 @ 101,633: 10x14 +#958 @ 421,419: 20x18 +#959 @ 157,460: 25x18 +#960 @ 716,765: 18x14 +#961 @ 636,17: 17x12 +#962 @ 528,290: 25x16 +#963 @ 910,871: 26x27 +#964 @ 634,44: 12x25 +#965 @ 610,382: 18x23 +#966 @ 852,613: 20x28 +#967 @ 836,855: 22x28 +#968 @ 805,670: 19x12 +#969 @ 165,698: 22x16 +#970 @ 83,398: 16x22 +#971 @ 316,575: 22x23 +#972 @ 173,523: 17x14 +#973 @ 791,797: 20x20 +#974 @ 357,412: 12x10 +#975 @ 118,391: 12x26 +#976 @ 749,90: 12x17 +#977 @ 700,779: 17x17 +#978 @ 810,554: 28x20 +#979 @ 490,252: 28x25 +#980 @ 344,864: 20x27 +#981 @ 368,268: 14x10 +#982 @ 886,416: 26x22 +#983 @ 129,819: 10x15 +#984 @ 622,376: 12x25 +#985 @ 425,590: 25x12 +#986 @ 788,510: 17x26 +#987 @ 527,351: 28x11 +#988 @ 929,390: 11x29 +#989 @ 913,892: 11x26 +#990 @ 759,385: 14x19 +#991 @ 245,40: 21x12 +#992 @ 587,808: 20x27 +#993 @ 679,102: 24x28 +#994 @ 949,327: 22x18 +#995 @ 42,932: 29x25 +#996 @ 519,958: 19x29 +#997 @ 671,765: 26x29 +#998 @ 125,189: 23x20 +#999 @ 388,314: 23x27 +#1000 @ 241,51: 16x25 +#1001 @ 6,682: 13x21 +#1002 @ 603,954: 10x19 +#1003 @ 84,358: 19x18 +#1004 @ 26,974: 22x22 +#1005 @ 676,651: 15x20 +#1006 @ 296,76: 28x22 +#1007 @ 350,553: 25x21 +#1008 @ 521,473: 14x19 +#1009 @ 213,675: 15x24 +#1010 @ 244,11: 29x16 +#1011 @ 480,326: 11x21 +#1012 @ 894,766: 28x24 +#1013 @ 630,639: 21x29 +#1014 @ 973,329: 16x21 +#1015 @ 145,266: 28x16 +#1016 @ 555,497: 16x16 +#1017 @ 527,168: 11x4 +#1018 @ 632,388: 28x16 +#1019 @ 283,689: 16x22 +#1020 @ 640,488: 16x28 +#1021 @ 619,818: 21x12 +#1022 @ 935,357: 21x15 +#1023 @ 315,483: 26x21 +#1024 @ 395,225: 21x17 +#1025 @ 739,963: 27x28 +#1026 @ 349,330: 13x14 +#1027 @ 511,466: 14x22 +#1028 @ 801,274: 14x10 +#1029 @ 353,501: 22x28 +#1030 @ 749,723: 19x26 +#1031 @ 216,816: 24x27 +#1032 @ 28,433: 27x19 +#1033 @ 605,246: 25x10 +#1034 @ 590,875: 22x18 +#1035 @ 800,354: 20x16 +#1036 @ 524,161: 18x15 +#1037 @ 538,904: 28x24 +#1038 @ 683,483: 27x16 +#1039 @ 817,933: 8x3 +#1040 @ 147,917: 14x28 +#1041 @ 571,532: 11x24 +#1042 @ 175,527: 8x5 +#1043 @ 22,346: 13x28 +#1044 @ 713,401: 19x19 +#1045 @ 107,384: 15x27 +#1046 @ 63,472: 23x14 +#1047 @ 462,441: 27x15 +#1048 @ 194,703: 14x11 +#1049 @ 335,122: 11x12 +#1050 @ 202,331: 29x27 +#1051 @ 204,408: 10x18 +#1052 @ 588,422: 26x25 +#1053 @ 299,288: 22x10 +#1054 @ 735,558: 11x10 +#1055 @ 10,725: 25x14 +#1056 @ 644,530: 18x28 +#1057 @ 504,903: 13x28 +#1058 @ 596,131: 13x21 +#1059 @ 725,676: 21x12 +#1060 @ 829,633: 27x15 +#1061 @ 522,76: 14x20 +#1062 @ 749,491: 19x13 +#1063 @ 676,793: 19x22 +#1064 @ 722,844: 11x10 +#1065 @ 755,940: 14x17 +#1066 @ 218,648: 21x15 +#1067 @ 973,644: 26x14 +#1068 @ 698,596: 26x16 +#1069 @ 395,798: 14x23 +#1070 @ 713,568: 27x20 +#1071 @ 956,221: 13x24 +#1072 @ 895,258: 18x29 +#1073 @ 46,221: 16x22 +#1074 @ 293,845: 25x25 +#1075 @ 50,248: 12x25 +#1076 @ 173,851: 23x20 +#1077 @ 704,292: 20x11 +#1078 @ 607,743: 27x14 +#1079 @ 381,354: 23x10 +#1080 @ 577,468: 12x25 +#1081 @ 887,570: 17x23 +#1082 @ 233,613: 27x23 +#1083 @ 172,158: 15x22 +#1084 @ 139,719: 22x19 +#1085 @ 941,203: 10x18 +#1086 @ 154,350: 20x27 +#1087 @ 603,794: 14x20 +#1088 @ 666,475: 23x29 +#1089 @ 167,256: 24x16 +#1090 @ 773,263: 16x20 +#1091 @ 218,422: 12x28 +#1092 @ 115,719: 20x13 +#1093 @ 750,722: 29x17 +#1094 @ 774,523: 29x12 +#1095 @ 628,391: 22x11 +#1096 @ 308,726: 15x16 +#1097 @ 382,427: 14x15 +#1098 @ 726,488: 18x17 +#1099 @ 934,890: 10x25 +#1100 @ 561,489: 14x19 +#1101 @ 61,242: 11x16 +#1102 @ 929,172: 22x21 +#1103 @ 531,231: 12x16 +#1104 @ 472,845: 28x16 +#1105 @ 14,362: 21x22 +#1106 @ 219,705: 17x26 +#1107 @ 576,12: 16x29 +#1108 @ 783,279: 19x23 +#1109 @ 217,69: 28x16 +#1110 @ 261,567: 16x28 +#1111 @ 91,864: 12x16 +#1112 @ 98,16: 14x13 +#1113 @ 518,563: 10x20 +#1114 @ 865,653: 22x19 +#1115 @ 231,539: 15x15 +#1116 @ 562,876: 28x22 +#1117 @ 843,15: 12x11 +#1118 @ 584,812: 17x13 +#1119 @ 969,647: 15x20 +#1120 @ 840,201: 22x18 +#1121 @ 438,480: 21x19 +#1122 @ 22,117: 10x20 +#1123 @ 231,882: 25x20 +#1124 @ 27,611: 26x16 +#1125 @ 16,61: 22x29 +#1126 @ 768,460: 14x26 +#1127 @ 267,559: 17x19 +#1128 @ 942,921: 14x14 +#1129 @ 168,270: 25x16 +#1130 @ 808,480: 14x21 +#1131 @ 623,809: 16x11 +#1132 @ 501,369: 29x27 +#1133 @ 59,452: 23x25 +#1134 @ 820,605: 25x27 +#1135 @ 591,798: 17x25 +#1136 @ 600,544: 13x25 +#1137 @ 446,664: 12x18 +#1138 @ 41,961: 17x14 +#1139 @ 66,70: 20x28 +#1140 @ 816,664: 25x27 +#1141 @ 348,716: 21x27 +#1142 @ 742,99: 14x16 +#1143 @ 214,228: 25x22 +#1144 @ 292,336: 29x26 +#1145 @ 483,317: 12x25 +#1146 @ 411,301: 19x23 +#1147 @ 851,206: 17x21 +#1148 @ 403,37: 22x23 +#1149 @ 143,270: 21x28 +#1150 @ 68,471: 10x11 +#1151 @ 471,442: 20x15 +#1152 @ 586,793: 10x25 +#1153 @ 362,737: 5x8 +#1154 @ 73,897: 12x19 +#1155 @ 213,108: 22x26 +#1156 @ 755,816: 29x14 +#1157 @ 182,731: 23x21 +#1158 @ 260,224: 21x17 +#1159 @ 408,780: 26x12 +#1160 @ 742,331: 11x29 +#1161 @ 34,445: 20x20 +#1162 @ 706,114: 11x19 +#1163 @ 112,8: 12x11 +#1164 @ 242,573: 18x25 +#1165 @ 142,260: 26x20 +#1166 @ 449,278: 21x10 +#1167 @ 826,5: 13x23 +#1168 @ 589,775: 29x13 +#1169 @ 309,300: 29x10 +#1170 @ 512,262: 21x28 +#1171 @ 962,217: 24x27 +#1172 @ 533,489: 26x10 +#1173 @ 108,635: 27x20 +#1174 @ 629,522: 17x10 +#1175 @ 356,340: 14x23 +#1176 @ 225,867: 17x29 +#1177 @ 578,951: 27x11 +#1178 @ 324,171: 17x21 +#1179 @ 182,637: 15x20 +#1180 @ 912,156: 25x27 +#1181 @ 241,265: 29x16 +#1182 @ 313,594: 28x18 +#1183 @ 842,472: 15x28 +#1184 @ 94,746: 14x18 +#1185 @ 865,240: 28x16 +#1186 @ 653,58: 4x11 +#1187 @ 556,168: 11x14 +#1188 @ 795,258: 25x10 +#1189 @ 55,893: 22x11 +#1190 @ 669,912: 24x24 +#1191 @ 148,111: 10x11 +#1192 @ 794,451: 3x12 +#1193 @ 24,609: 21x14 +#1194 @ 779,739: 20x23 +#1195 @ 261,466: 25x25 +#1196 @ 702,338: 10x18 +#1197 @ 624,441: 16x15 +#1198 @ 8,939: 14x14 +#1199 @ 307,164: 18x21 +#1200 @ 569,625: 28x26 +#1201 @ 97,723: 27x17 +#1202 @ 584,815: 17x12 +#1203 @ 664,121: 15x29 +#1204 @ 794,246: 13x19 +#1205 @ 680,778: 17x26 +#1206 @ 547,765: 17x21 +#1207 @ 749,230: 17x24 +#1208 @ 599,934: 29x27 +#1209 @ 165,729: 29x17 +#1210 @ 627,76: 19x28 +#1211 @ 937,549: 22x18 +#1212 @ 442,476: 14x21 +#1213 @ 274,454: 13x17 +#1214 @ 146,721: 21x24 +#1215 @ 603,744: 12x27 +#1216 @ 801,113: 26x28 +#1217 @ 529,524: 29x21 +#1218 @ 819,51: 21x18 +#1219 @ 605,214: 19x23 +#1220 @ 544,215: 27x16 +#1221 @ 215,221: 29x16 +#1222 @ 331,216: 25x19 +#1223 @ 212,419: 27x16 +#1224 @ 649,91: 28x14 +#1225 @ 419,445: 24x17 +#1226 @ 450,723: 10x23 +#1227 @ 342,810: 17x16 +#1228 @ 239,696: 28x21 +#1229 @ 332,638: 10x26 +#1230 @ 798,410: 21x21 +#1231 @ 578,115: 17x10 +#1232 @ 683,746: 18x25 +#1233 @ 439,753: 11x15 +#1234 @ 427,560: 21x25 +#1235 @ 206,232: 28x23 +#1236 @ 72,449: 25x19 +#1237 @ 176,893: 22x16 +#1238 @ 399,309: 27x17 +#1239 @ 87,158: 10x20 +#1240 @ 656,108: 18x24 +#1241 @ 610,948: 26x22 +#1242 @ 766,834: 24x28 +#1243 @ 423,187: 23x11 +#1244 @ 957,207: 24x11 +#1245 @ 323,107: 26x17 +#1246 @ 139,349: 26x28 +#1247 @ 964,416: 22x14 +#1248 @ 924,460: 27x16 +#1249 @ 359,848: 15x21 +#1250 @ 418,924: 28x13 +#1251 @ 333,311: 14x18 +#1252 @ 647,250: 19x10 +#1253 @ 248,844: 29x20 +#1254 @ 626,242: 28x21 +#1255 @ 814,434: 16x16 +#1256 @ 228,18: 26x16 +#1257 @ 606,542: 11x23 +#1258 @ 728,234: 29x17 +#1259 @ 683,181: 24x22 +#1260 @ 653,551: 16x24 +#1261 @ 554,621: 24x27 +#1262 @ 188,653: 19x10 +#1263 @ 507,78: 19x26 +#1264 @ 754,238: 16x26 +#1265 @ 467,735: 13x11 +#1266 @ 75,890: 13x13 +#1267 @ 653,601: 21x12 +#1268 @ 165,143: 19x16 +#1269 @ 16,880: 14x22 +#1270 @ 733,499: 21x25 +#1271 @ 825,232: 12x28 +#1272 @ 106,297: 20x10 +#1273 @ 956,674: 24x13 +#1274 @ 686,171: 4x10 +#1275 @ 764,447: 21x19 +#1276 @ 417,878: 23x21 +#1277 @ 645,428: 12x23 +#1278 @ 386,868: 27x21 +#1279 @ 533,203: 16x24 +#1280 @ 726,728: 13x12 +#1281 @ 35,488: 25x15 +#1282 @ 948,830: 15x21 +#1283 @ 25,868: 29x27 +#1284 @ 309,401: 23x25 +#1285 @ 725,559: 11x28 +#1286 @ 352,885: 16x19 +#1287 @ 70,283: 10x29 +#1288 @ 688,790: 21x24 +#1289 @ 733,364: 13x10 +#1290 @ 576,54: 18x23 +#1291 @ 818,113: 26x28 +#1292 @ 77,838: 15x24 +#1293 @ 585,356: 23x19 +#1294 @ 547,575: 17x14 +#1295 @ 687,353: 13x16 +#1296 @ 948,936: 25x24 +#1297 @ 276,567: 10x10 +#1298 @ 230,792: 27x27 +#1299 @ 271,729: 27x23 +#1300 @ 842,333: 16x10 +#1301 @ 149,738: 18x12 +#1302 @ 521,722: 11x21 +#1303 @ 144,770: 13x29 +#1304 @ 430,193: 17x19 +#1305 @ 2,220: 19x24 +#1306 @ 68,884: 21x25 +#1307 @ 639,244: 23x26 +#1308 @ 701,555: 18x21 +#1309 @ 941,465: 21x18 +#1310 @ 323,629: 10x26 +#1311 @ 747,326: 12x24 +#1312 @ 40,231: 15x10 +#1313 @ 452,496: 13x29 +#1314 @ 204,627: 13x18 +#1315 @ 146,448: 22x22 +#1316 @ 980,640: 12x16 +#1317 @ 986,454: 11x17 +#1318 @ 424,73: 23x28 +#1319 @ 184,550: 19x18 +#1320 @ 906,687: 27x19 +#1321 @ 851,414: 26x19 +#1322 @ 395,827: 18x19 +#1323 @ 678,786: 17x17 +#1324 @ 324,173: 26x29 +#1325 @ 19,345: 20x18 +#1326 @ 137,342: 20x28 +#1327 @ 282,756: 11x11 +#1328 @ 461,195: 17x29 +#1329 @ 233,282: 27x13 +#1330 @ 625,403: 10x22 +#1331 @ 149,113: 21x14 +#1332 @ 965,470: 25x15 +#1333 @ 209,417: 27x26 +#1334 @ 249,392: 27x17 +#1335 @ 234,644: 26x22 +#1336 @ 178,872: 12x26 +#1337 @ 629,513: 22x24 +#1338 @ 257,369: 19x16 +#1339 @ 205,150: 17x13 +#1340 @ 940,461: 16x25 +#1341 @ 411,278: 19x29 +#1342 @ 794,411: 17x12 +#1343 @ 439,562: 13x15 +#1344 @ 483,842: 11x12 +#1345 @ 278,826: 14x12 +#1346 @ 494,466: 20x18 +#1347 @ 105,484: 26x19 +#1348 @ 328,178: 11x23 +#1349 @ 221,56: 11x16 +#1350 @ 14,774: 13x27 +#1351 @ 817,870: 18x21 +#1352 @ 961,94: 22x13 +#1353 @ 892,936: 15x3 +#1354 @ 148,958: 26x11 +#1355 @ 383,325: 23x19 +#1356 @ 156,606: 10x28 +#1357 @ 869,860: 25x17 +#1358 @ 802,673: 27x10 +#1359 @ 203,825: 28x11 +#1360 @ 586,245: 11x25 +#1361 @ 456,770: 27x17 +#1362 @ 814,893: 26x11 +#1363 @ 546,679: 26x16 +#1364 @ 606,761: 11x23 +#1365 @ 602,356: 11x20 +#1366 @ 927,32: 26x18 +#1367 @ 299,432: 12x29 +#1368 @ 57,670: 15x25 +#1369 @ 744,336: 14x23 +#1370 @ 790,445: 11x23 +#1371 @ 923,183: 20x16 +#1372 @ 865,426: 27x15 +#1373 @ 620,398: 22x14 +#1374 @ 65,144: 24x26 +#1375 @ 45,232: 24x18 +#1376 @ 538,459: 23x11 +#1377 @ 36,462: 22x12 +#1378 @ 215,896: 23x26 +#1379 @ 651,253: 17x28 +#1380 @ 213,809: 14x20 +#1381 @ 310,589: 15x24 +#1382 @ 680,83: 14x28 +#1383 @ 407,369: 14x17 +#1384 @ 168,584: 17x12 +#1385 @ 612,761: 21x19 +#1386 @ 451,547: 25x15 +#1387 @ 360,454: 28x15 +#1388 @ 836,336: 11x13 +#1389 @ 190,547: 19x16 +#1390 @ 917,749: 21x17 +#1391 @ 515,95: 12x25 +#1392 @ 262,691: 10x21 +#1393 @ 203,82: 12x22 +#1394 @ 325,157: 11x18 +#1395 @ 636,801: 19x24 +#1396 @ 75,763: 20x22 +#1397 @ 24,759: 21x25 +#1398 @ 215,609: 24x11 +#1399 @ 564,530: 21x13 +#1400 @ 873,28: 11x27 +#1401 @ 193,688: 16x13 +#1402 @ 328,680: 23x27 +#1403 @ 100,143: 10x12 +#1404 @ 807,925: 22x17 +#1405 @ 257,697: 27x22 +#1406 @ 886,0: 29x26 +#1407 @ 657,674: 29x12 +#1408 @ 208,741: 14x17 +#1409 @ 285,437: 10x26 +""" diff --git a/2018/AoC/main.swift b/2018/AoC/main.swift new file mode 100644 index 0000000..fae3ebb --- /dev/null +++ b/2018/AoC/main.swift @@ -0,0 +1,111 @@ +import Foundation + + + +struct Claim { + let id: Int + let left: Int + let top: Int + let width: Int + let height: Int + + var right: Int { return left + width } + var bottom: Int { return top + height } +} + +func overlap(_ first: Claim, _ second: Claim) -> (Int, Int, Int, Int)? { + let overlapRight: Int = min(first.right, second.right) + let overlapLeft: Int = max(first.left, second.left) + let widthOverlap = overlapRight - overlapLeft + let overlapBottom: Int = min(first.bottom, second.bottom) + let overlapTop: Int = max(first.top, second.top) + let heightOverlap = overlapBottom - overlapTop + guard widthOverlap > 0 && heightOverlap > 0 else { return nil } + return (overlapLeft, overlapTop, widthOverlap, heightOverlap) +} + +extension Scanner { + + func scan() -> Claim? { + guard + scan(string: "#"), + let id: Int = scan(), + scan(string: "@"), + let left: Int = scan(), + scan(string: ","), + let top: Int = scan(), + scan(string: ":"), + let width: Int = scan(), + scan(string: "x"), + let height: Int = scan() + else { + return nil + } + + return Claim(id: id, left: left, top: top, width: width, height: height) + } + + func readClaims() -> [Claim] { + var result: [Claim] = [] + while !isAtEnd, let claim: Claim = scan() { + result.append(claim) + } + return result + } +} + +let claims = Scanner(string:day3Input) + .readClaims() + .allPairs() + .compactMap(overlap) + //.reduce(0) { $0 + $1.0 * $1.1 } + +print(claims) + +//func removeDifferingCharacter(_ a: String, _ b: String) -> String? { +// var differingIndex: Int? = nil +// for (index, (first, second)) in zip(a,b).enumerated() { +// if first == second { +// continue +// } +// +// if differingIndex != nil { +// return nil +// } +// +// differingIndex = index +// } +// +// guard let offset = differingIndex, let index = a.index(a.startIndex, offsetBy: offset, limitedBy: a.endIndex) else { return nil } +// +// return String(a[a.startIndex.. Bool { + return scanString(string, into: nil) + } + + func scan() -> Int? { + var result: Int = 0 + guard scanInt(&result) else { return nil } + return result + } +} +