Day 5 - 10
This commit is contained in:
parent
8a50c9ab9d
commit
31d96b280a
11 changed files with 2506 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
xcuserdata/
|
675
AoC21.xcodeproj/project.pbxproj
Normal file
675
AoC21.xcodeproj/project.pbxproj
Normal file
|
@ -0,0 +1,675 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 55;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
261F317F2763DACC0018D49C /* day10.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261F317E2763DACC0018D49C /* day10.swift */; };
|
||||
261F31802763DACE0018D49C /* common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5CB2762A08800871C85 /* common.swift */; };
|
||||
263BA5B3275E97AA00839C92 /* day5part2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 263BA5B2275E97AA00839C92 /* day5part2.swift */; };
|
||||
263BA5C0275EA5BD00839C92 /* day6.swift in Sources */ = {isa = PBXBuildFile; fileRef = 263BA5BF275EA5BD00839C92 /* day6.swift */; };
|
||||
269BE5BC2762959C00871C85 /* day8part2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5BB2762959B00871C85 /* day8part2.swift */; };
|
||||
269BE5CA2762A05300871C85 /* day9.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5C82762A04F00871C85 /* day9.swift */; };
|
||||
269BE5CC2762A08800871C85 /* common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5CB2762A08800871C85 /* common.swift */; };
|
||||
269BE5CD2762A08800871C85 /* common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5CB2762A08800871C85 /* common.swift */; };
|
||||
269BE5CE2762A08800871C85 /* common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5CB2762A08800871C85 /* common.swift */; };
|
||||
269BE5CF2762A08800871C85 /* common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BE5CB2762A08800871C85 /* common.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
261F31752763DAB60018D49C /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
263BA5A9275E978400839C92 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
263BA5B6275EA5A600839C92 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
269BE5B22762958800871C85 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
269BE5BF2762A03F00871C85 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
261F31772763DAB60018D49C /* Day10 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Day10; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
261F317E2763DACC0018D49C /* day10.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = day10.swift; sourceTree = "<group>"; };
|
||||
263BA5AB275E978400839C92 /* Day5Part2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Day5Part2; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
263BA5B2275E97AA00839C92 /* day5part2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = day5part2.swift; sourceTree = "<group>"; };
|
||||
263BA5B8275EA5A600839C92 /* Day6 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Day6; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
263BA5BF275EA5BD00839C92 /* day6.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = day6.swift; sourceTree = "<group>"; };
|
||||
269BE5B42762958800871C85 /* Day8Part2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Day8Part2; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
269BE5BB2762959B00871C85 /* day8part2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = day8part2.swift; sourceTree = "<group>"; };
|
||||
269BE5C12762A03F00871C85 /* Day9 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Day9; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
269BE5C82762A04F00871C85 /* day9.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = day9.swift; sourceTree = "<group>"; };
|
||||
269BE5CB2762A08800871C85 /* common.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = common.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
261F31742763DAB60018D49C /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
263BA5A8275E978400839C92 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
263BA5B5275EA5A600839C92 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
269BE5B12762958800871C85 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
269BE5BE2762A03F00871C85 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
263BA594275E974800839C92 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
261F317E2763DACC0018D49C /* day10.swift */,
|
||||
269BE5CB2762A08800871C85 /* common.swift */,
|
||||
269BE5C82762A04F00871C85 /* day9.swift */,
|
||||
269BE5BB2762959B00871C85 /* day8part2.swift */,
|
||||
263BA5BF275EA5BD00839C92 /* day6.swift */,
|
||||
263BA5B2275E97AA00839C92 /* day5part2.swift */,
|
||||
263BA59E275E974800839C92 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
263BA59E275E974800839C92 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
263BA5AB275E978400839C92 /* Day5Part2 */,
|
||||
263BA5B8275EA5A600839C92 /* Day6 */,
|
||||
269BE5B42762958800871C85 /* Day8Part2 */,
|
||||
269BE5C12762A03F00871C85 /* Day9 */,
|
||||
261F31772763DAB60018D49C /* Day10 */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
261F31762763DAB60018D49C /* Day10 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 261F317D2763DAB60018D49C /* Build configuration list for PBXNativeTarget "Day10" */;
|
||||
buildPhases = (
|
||||
261F31732763DAB60018D49C /* Sources */,
|
||||
261F31742763DAB60018D49C /* Frameworks */,
|
||||
261F31752763DAB60018D49C /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Day10;
|
||||
productName = Day10;
|
||||
productReference = 261F31772763DAB60018D49C /* Day10 */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
263BA5AA275E978400839C92 /* Day5Part2 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 263BA5AF275E978400839C92 /* Build configuration list for PBXNativeTarget "Day5Part2" */;
|
||||
buildPhases = (
|
||||
263BA5A7275E978400839C92 /* Sources */,
|
||||
263BA5A8275E978400839C92 /* Frameworks */,
|
||||
263BA5A9275E978400839C92 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Day5Part2;
|
||||
productName = Day5Part2;
|
||||
productReference = 263BA5AB275E978400839C92 /* Day5Part2 */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
263BA5B7275EA5A600839C92 /* Day6 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 263BA5BC275EA5A600839C92 /* Build configuration list for PBXNativeTarget "Day6" */;
|
||||
buildPhases = (
|
||||
263BA5B4275EA5A600839C92 /* Sources */,
|
||||
263BA5B5275EA5A600839C92 /* Frameworks */,
|
||||
263BA5B6275EA5A600839C92 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Day6;
|
||||
productName = Day6;
|
||||
productReference = 263BA5B8275EA5A600839C92 /* Day6 */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
269BE5B32762958800871C85 /* Day8Part2 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 269BE5BA2762958800871C85 /* Build configuration list for PBXNativeTarget "Day8Part2" */;
|
||||
buildPhases = (
|
||||
269BE5B02762958800871C85 /* Sources */,
|
||||
269BE5B12762958800871C85 /* Frameworks */,
|
||||
269BE5B22762958800871C85 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Day8Part2;
|
||||
productName = Day8Part2;
|
||||
productReference = 269BE5B42762958800871C85 /* Day8Part2 */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
269BE5C02762A03F00871C85 /* Day9 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 269BE5C52762A03F00871C85 /* Build configuration list for PBXNativeTarget "Day9" */;
|
||||
buildPhases = (
|
||||
269BE5BD2762A03F00871C85 /* Sources */,
|
||||
269BE5BE2762A03F00871C85 /* Frameworks */,
|
||||
269BE5BF2762A03F00871C85 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Day9;
|
||||
productName = Day9;
|
||||
productReference = 269BE5C12762A03F00871C85 /* Day9 */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
263BA595275E974800839C92 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = 1;
|
||||
LastSwiftUpdateCheck = 1310;
|
||||
LastUpgradeCheck = 1310;
|
||||
TargetAttributes = {
|
||||
261F31762763DAB60018D49C = {
|
||||
CreatedOnToolsVersion = 13.1;
|
||||
LastSwiftMigration = 1310;
|
||||
};
|
||||
263BA5AA275E978400839C92 = {
|
||||
CreatedOnToolsVersion = 13.1;
|
||||
LastSwiftMigration = 1310;
|
||||
};
|
||||
263BA5B7275EA5A600839C92 = {
|
||||
CreatedOnToolsVersion = 13.1;
|
||||
LastSwiftMigration = 1310;
|
||||
};
|
||||
269BE5B32762958800871C85 = {
|
||||
CreatedOnToolsVersion = 13.1;
|
||||
LastSwiftMigration = 1310;
|
||||
};
|
||||
269BE5C02762A03F00871C85 = {
|
||||
CreatedOnToolsVersion = 13.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 263BA598275E974800839C92 /* Build configuration list for PBXProject "AoC21" */;
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 263BA594275E974800839C92;
|
||||
productRefGroup = 263BA59E275E974800839C92 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
263BA5AA275E978400839C92 /* Day5Part2 */,
|
||||
263BA5B7275EA5A600839C92 /* Day6 */,
|
||||
269BE5B32762958800871C85 /* Day8Part2 */,
|
||||
269BE5C02762A03F00871C85 /* Day9 */,
|
||||
261F31762763DAB60018D49C /* Day10 */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
261F31732763DAB60018D49C /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
261F31802763DACE0018D49C /* common.swift in Sources */,
|
||||
261F317F2763DACC0018D49C /* day10.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
263BA5A7275E978400839C92 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
269BE5CC2762A08800871C85 /* common.swift in Sources */,
|
||||
263BA5B3275E97AA00839C92 /* day5part2.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
263BA5B4275EA5A600839C92 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
269BE5CD2762A08800871C85 /* common.swift in Sources */,
|
||||
263BA5C0275EA5BD00839C92 /* day6.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
269BE5B02762958800871C85 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
269BE5CE2762A08800871C85 /* common.swift in Sources */,
|
||||
269BE5BC2762959C00871C85 /* day8part2.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
269BE5BD2762A03F00871C85 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
269BE5CF2762A08800871C85 /* common.swift in Sources */,
|
||||
269BE5CA2762A05300871C85 /* day9.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
261F317B2763DAB60018D49C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
261F317C2763DAB60018D49C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
263BA5A2275E974800839C92 /* 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++17";
|
||||
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;
|
||||
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 = 12.0;
|
||||
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;
|
||||
};
|
||||
263BA5A3275E974800839C92 /* 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++17";
|
||||
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;
|
||||
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 = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = macosx;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
263BA5B0275E978400839C92 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
263BA5B1275E978400839C92 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
263BA5BD275EA5A600839C92 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
263BA5BE275EA5A600839C92 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
269BE5B82762958800871C85 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
269BE5B92762958800871C85 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
269BE5C62762A03F00871C85 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
269BE5C72762A03F00871C85 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 722B335UM5;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
261F317D2763DAB60018D49C /* Build configuration list for PBXNativeTarget "Day10" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
261F317B2763DAB60018D49C /* Debug */,
|
||||
261F317C2763DAB60018D49C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
263BA598275E974800839C92 /* Build configuration list for PBXProject "AoC21" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
263BA5A2275E974800839C92 /* Debug */,
|
||||
263BA5A3275E974800839C92 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
263BA5AF275E978400839C92 /* Build configuration list for PBXNativeTarget "Day5Part2" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
263BA5B0275E978400839C92 /* Debug */,
|
||||
263BA5B1275E978400839C92 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
263BA5BC275EA5A600839C92 /* Build configuration list for PBXNativeTarget "Day6" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
263BA5BD275EA5A600839C92 /* Debug */,
|
||||
263BA5BE275EA5A600839C92 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
269BE5BA2762958800871C85 /* Build configuration list for PBXNativeTarget "Day8Part2" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
269BE5B82762958800871C85 /* Debug */,
|
||||
269BE5B92762958800871C85 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
269BE5C52762A03F00871C85 /* Build configuration list for PBXNativeTarget "Day9" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
269BE5C62762A03F00871C85 /* Debug */,
|
||||
269BE5C72762A03F00871C85 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 263BA595275E974800839C92 /* Project object */;
|
||||
}
|
7
AoC21.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
AoC21.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
18
common.swift
Normal file
18
common.swift
Normal file
|
@ -0,0 +1,18 @@
|
|||
protocol Puzzle {
|
||||
mutating func run()
|
||||
init()
|
||||
}
|
||||
|
||||
extension Puzzle {
|
||||
static func main() {
|
||||
var instance = Self()
|
||||
instance.run()
|
||||
}
|
||||
}
|
||||
|
||||
extension RangeReplaceableCollection {
|
||||
mutating func removeFirst(where predicate: (Element) -> Bool) -> Element? {
|
||||
guard let index = firstIndex(where: predicate) else { return nil }
|
||||
return remove(at: index)
|
||||
}
|
||||
}
|
170
day10.swift
Normal file
170
day10.swift
Normal file
|
@ -0,0 +1,170 @@
|
|||
@main
|
||||
struct Day10: Puzzle {
|
||||
func run() {
|
||||
var rest = input[...]
|
||||
var score = 0
|
||||
var completeionScores: [Int] = []
|
||||
loop: while true {
|
||||
if let complete = parse(&rest) {
|
||||
completeionScores.append(complete)
|
||||
}
|
||||
|
||||
switch rest.first {
|
||||
case "\n": break
|
||||
case ")": score += 3
|
||||
case "]": score += 57
|
||||
case "}": score += 1197
|
||||
case ">": score += 25137
|
||||
case let ch?: print("Unknown char", ch)
|
||||
case nil: break loop
|
||||
}
|
||||
|
||||
rest = rest.drop { !$0.isNewline }.dropFirst()
|
||||
}
|
||||
|
||||
print(score)
|
||||
|
||||
completeionScores.sort()
|
||||
let completeScore = completeionScores[completeionScores.count / 2]
|
||||
print("Part 2:", completeScore)
|
||||
}
|
||||
|
||||
func end(for start: Character) -> Character? {
|
||||
switch start {
|
||||
case "(": return ")"
|
||||
case "[": return "]"
|
||||
case "{": return "}"
|
||||
case "<": return ">"
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
func parse(_ string: inout Substring) -> Int? {
|
||||
var stack: [Character] = []
|
||||
while true {
|
||||
guard let current = string.first else { return nil }
|
||||
|
||||
if current == stack.last {
|
||||
stack.removeLast()
|
||||
} else if let closing = end(for: current) {
|
||||
stack.append(closing)
|
||||
} else if current == "\n" {
|
||||
|
||||
return stack.reversed().reduce(0) { partialResult, ch -> Int in
|
||||
let characterScore: Int
|
||||
switch (ch) {
|
||||
case ")": characterScore = 1
|
||||
case "]": characterScore = 2
|
||||
case "}": characterScore = 3
|
||||
case ">": characterScore = 4
|
||||
default: fatalError()
|
||||
}
|
||||
|
||||
return partialResult * 5 + characterScore
|
||||
}
|
||||
} else { return nil }
|
||||
|
||||
string = string.dropFirst()
|
||||
}
|
||||
}
|
||||
|
||||
let input = """
|
||||
{<[[<<<[[{[[<<()()>>[([]<>){{}{}}]]]<(<{{}<>}{{}{}}><{<>[]}[{}{}]>)({(())}<[(){}][(){}]>)>}]<<<(<<{}
|
||||
{[({({([({(((<[]()>[()<>]){[<>[]](<>[])})<<<[]()}>(<()()>)>)}[{((<{}[]>{<>()}){[<>{}]<<><>>})(({[]()}<<>()>)<
|
||||
(((([{{{<{<[[<()<>><<>{}>]]{<(<>())>}>{<[([]<>)<{}{}>][[<><>][<>[]]]>[{(<>{})[<>()]}<<()[]>[[]<
|
||||
<<[<([[{{{[({<<>()>}<<<>[]>([]())>){{{{}[]}<(){}>)}]{{[(()())[(){}]]<<[]{}>({}[])>}({<<><>>}<([]<>){()[]}>)}
|
||||
<[(({[({<<[[[{<>{}}(<><>))<(<>[])[{}[]]>]<[([][])[(){}]]>]([<[()()](<>[])>]<(<{}()>[{}<>])({<>[
|
||||
(<[[{[[[(<((<<{}{}><[]<>>><[{}<>][<>[]]>)<(<{}<>><{}{}>)[{()[]}<<>()>]>)>[(<{({}{})}[{()[]}{[]<>}]>){<(([]
|
||||
(([[({{{(<([({[]{}}){{[][]]}])>)[<([[[{}]{(){}}][([]())]]([{[][]}{<>()}](({}()){<>{}})))[{({
|
||||
{(<<([([(<<[{((){})([]<>)}]<{{{}{}}{{}[]}}<{(){}}{()[]})>><([<[]{}>([]<>)](<()<>>)){<([]<>
|
||||
{[<<[<{{((({<[[]{}]{{}}>{<{}<>>[<>[]]}})<{[(<><>><{}<>>][{[]{}}]}[[[[][]]<<>{}>]{[[]()][[]<>]}]>)[(
|
||||
({<(<([{<{<[(((){}){(){}})]>}[{{{{()()}<[]()>}{{<>()}<{}{}>}}[[{{}{}}[<><>]]{({}[]>[[]{}]}]}({{{()()
|
||||
{[[{([{<<{<(<<{}()>[()]>)<{{()()}}[<[][]>(<>{})]>>{[<{<>()){()<>}>{{()()}[<>()]}][[[{}[]]]<{{}[]}<()(
|
||||
{{<<<<<[[([{<[{}[]]{()<>}>{<<>()>{{}<>}}}<<{{}()}{()()}>{[()<>]({}[])]>]{[(<{}{}>)<({}[])>]<{({}<>)}{({}())
|
||||
({(<<{[<<{<(<[<>()][[][]]><[{}<>]({}[])>)[[[<>[]][[]()]]<{[]{}}[{}{}]>]>{[(<[]()>{<>{}})][<{{}}<{
|
||||
(<<<[[({<[[(<<[]{}>>[(()<>)[<>{}]])<{(<>[])}(<<>()>[[]{}])>]<[({[]()}{{}{}})<{{}()}<{}<>>>]>][[({<<>()>{[]()}
|
||||
{{{[<[([<(<{[([][])[{}[]]]{[()()]{{}()}}}><[<([][])(<>())><{()[]}({}<>)>]<<<(){}><<><>>>((()()){
|
||||
[(((([{({<(<(<[]<>>{()[]})><{(<><>){{}[]}}{(()<>)([][])}>)>})}][({{[[{<(<><>){{}()}>((<>()){<>[]
|
||||
([{<{<({(<[(<({}<>)><{[]}[{}[]]>)(<[[][]]{[]{}}>{{[]}((){})})]{(((()){{}()})(([][])({}{})))[(<()[]><(
|
||||
[([{{<{(<[{{((()())<[]{}>){{{}<>}<<><>>}}[<([]())>[(()[])<{}{}>]]}{[({(){}}{(){}])<<[]()>{{}()}>
|
||||
(<[<{{[<<({<<{<><>}><<()[]>[<><>]>>}{[(((){}){()<>}}<<[]()>{(){}}>]{{{{}[]}[{}<>]}[{{}{}}<(){}>]}}){{({
|
||||
<([([[<[({<<{{[][]}<{}[]>}<<()[]>[()<>]>>>})((<(<[[]]((){})>{([]()){<><>}})>)(<<<<[]<>>[[]()])>>([[
|
||||
[<<{<(<<{{[({<<>()><{}[]>})<{[<>()](<><>)}[{{}()}{[]()}]>]}}({<[{<()<>>}[<<>>]]((<[][]>{[][
|
||||
{{(<({[((<([({()<>})[{{}[]}(()<>))]{[{[]<>}][{()<>}]})([({<><>}{{}()})])>)({<(((()<>)(<><>)))>((
|
||||
[(<{({[<{<[<([{}()](<>{}))>]([([[]<>]<()<>>){<()>}]{{[[]()]{{}{}}}[{[]}{{}<>}]})>}<([<[<<>[]>]{<(){}>{
|
||||
[[[[<(<({<[[<{()}{{}[]}><[<><>]<()[]>>](<([]{})[{}]>)]>}<[{[[{(){}}]{(<><>)}][<<[][]>{(){}
|
||||
{(({({[{{((<[([]())((){})]>){[{(<>[])}<([]{})[[]<>]>]({<()<>>[[]<>]}[<()>{<>[]}])})({<([[][]]((){}))([<>{}])
|
||||
<(<(<<{[<<{<<[()[]][[]()]><([][])<{}()>>}}>[<<<<{}<>>>{[{}][{}{}]}>[<[()()]{{}[]}>[{[][]}([])]]>[[<<[][]>(
|
||||
<<{{({<<(([{{([][])(()<>)}}(<<[]{}>>)])([{[(()[])]}<{{<><>}<[]<>>}[<{}<>><[]<>)]>]{{<[{}[]]
|
||||
({[[[[(([[[{<({})([]())>{{<>{}}}}][[<<[]>[<>()]>]{[[[]<>][<>{}]]{[<>[]]}})][[<(<(){}>{()[]})><[[()[
|
||||
(((((([{{{(<<(<>{}){<>}><(()[])<()[]>>>{[<{}<>>(<>())}<{{}()}>})((([(){}]{<>})[{[]{}}{{}[]
|
||||
(([([(((<[(({[<>()]{[][]}})[{{[]()>[[]{}]}(<<>{}><{}<>>)]){[({[]}(<>[]))([()()][<>{}])]({({}
|
||||
[(<({{([[<(((<<>()>[[]<>])({{}()}<()<>>))[[{[]()}<()<>>][{()()}<{}[]>]])>({(<({}{})<()[]}>[{()
|
||||
{{{[([<{{{([<<<>{}>{()<>}>{<{}()><<><>>}]([{()}]))<{[<()()>{()[]}]{({}[])[<>()]}}>}}}({<(({({
|
||||
[([([<[<(<[{{{<>()}{()[]}}({()[]}[{}<>])}{[{<>}]([[][]]<(){}>)}]>[[{<[<>()][{}()]>(((){}>[<>[]])}{{{<>(
|
||||
{{[{{[[<{(<([[[][]]([]<>)])>)<{<<{<>()}[<>()]><((){})<<><>>>>([<<><>>(()<>)]([(){}}{[]<>}))}>}(({{{{[]}{
|
||||
[[[[({[<({{[[(<><>)]{<<>[]>([]{})}]<[{[]}{()()}]([<>()]([]<>>)>}})>{{<([{<{}{}>{()}}])({<[<>()](<><>)>
|
||||
{[({<[({[{[({[{}()][[]<>]}((()<>)<{}<>>))<[{{}}({}{})]>]{[<<<>[]>[[][]]>(({}[])(()[]))>{(([]{})({}[]))([
|
||||
[<<([{{(<<[<[[{}[]]](<[]{}>[<>{}])>[[<{}[]>(<>[])]{([][])[()[]]}]][[{{()[]}[<>{}]}(<<>{}>[[]
|
||||
<[(([{([([<{[[(){}]<<>{}>]}[[[()()]{{}<>}]]>[[{({}{})[()()]}([()()][<>[]])]{<[[]<>][[][]]>}]]{{<{[<>
|
||||
[<[[[[([[{[[<[{}{}]([]<>)>[({}[])<[]<>>]][<{()()}[<>[]]>([[]]<<><>>)]]}([<{{{}[]}}{(()<>>({}[
|
||||
<[<{[(<{({[<[[[][]]([][])]<([]){{}<>}>>[({<>{}}<[]>)]]([[([]{})[[]()]][[[]{}]({}{})]](<[{}<>
|
||||
({[<([(<[[<([[(){}]<<>{}>])({[[]{}]<()[]>}<<[]<>>{[][]}>)>{<[<[]()><{}[]>]([<>()]({}[]))><(
|
||||
({<<<{<({[[{[{<>{}}[<><>]]}{(({})[()()])<<()<>>([]{})>}]]]{<{{([[]<>](<>[]))[[{}()]({}())]}}>((<([{}<>])>{{<[
|
||||
[{([{[[{{<{<[{[]()}<[]{}>]>({<{}[]>{<>[]}})}[(({{}<>}<{}<>]){[[]{}]({}[])})]>}}]({([[([<()()>{[]
|
||||
<[{([([{[{<(([<>[]]{<>()})<{{}<>}>){([<><>])<(()[])<<>{}>>}><{{[{}<>]{<>}}[(())[()<>]]}<{[{}{}]{{}{}}}<{{}<>
|
||||
[{<<([{{(((<{<<>()>[{}()]}>{<<<>[]><[]()>>}){[(([][])([]()))<{{}[]}[[]()]>][[{{}<>}({}{})]{({}{})(<
|
||||
{({[((<([[[{{([])[()()]}({{}{}}))<(<[]<>>[()[]])>]<<([[]<>])<[<>()][[]<>]>>({[<><>]{{}[]}}({()[]
|
||||
{[(<(<{[({[(<<[]>{<>{}}>[{<><>}([]())])(<[[][]]<()<>>>[(()[])])]<{[{()[]}[<>{}]]}[{<(){}>(<>{})}<<<>()>>]
|
||||
(<{<[<({{{{([({}{})[[]{}]]({{}<>}<()[]}))}(<<{<>()}{()<>}>{[<>{}][()[]]}>{<<[][]>{<>()}><(<>{})<{}[]>>})}
|
||||
{(<<{[({<<[(<{{}{}}<[]<>>>((<>())([]<>)))]>><<({<{[]<>}([]<>)>{[()()]}}<<{{}<>}<()()>>(<()()
|
||||
<([([<(<[({[[({}()){()<>}](({}{})(<><>))][{({}<>)<{}{}>}{([]){(){}}}]})]>)<[[{<{{(()){<>[]}}({{}()}
|
||||
<<<([{[({{{((<{}()>{()()})[[<>()]])[[[{}()]<{}()>]{{[]<>}{{}())}]}<<{<<>><<><>>}[{{}[]}(<><>)
|
||||
<([<[<{[[[{[{[<><>][{}<>]}(<[]{}>)]}([{{<>()}<{}[]>}{([]<>)[(){}]}]<{((){})<[]()>}[<[]()><()[]>]>
|
||||
[([[[[[({{[(<[{}<>]<{}()>><[<><>]{<>()}>)]}<{(<(()<>)<{}{}>>{{()<>}(()()}})}>})(<[<([<<>[]>((){})]([[]<>]<()
|
||||
{(<[[{(((([[([{}()]<{}()))[({}{}){[]}]](<<<>[]>>([<>{}]))][(<({}{})<()[]>><<[]{}><{}[]>>)])(<([([][])[
|
||||
({(([{{<{{{<[<<>[]>{()<>}][([][]){()<>}]>([<()>(<><>)]<{<><>}<[]>>)}<{[[<>[]][<>{}]]<{<>()}{[][]
|
||||
{[([[[(([<{<{[[]<>]<<>()>}<<()()>([]{})>>[<<()[]>(<>())>[(()<>)]]}>]{{({{{{}[]}({})}<{{}<>}[[]()]>}((
|
||||
[<([[<[{{{[[[<<>{}>]{<()[]>{[]<>}}]{([[]{}]({}()))}]}}}(<{<[[({}{})<()()>]]({({}<>)[[]]}{[<><>]{<>{}}})>(<[
|
||||
<<(<<{{(({<[<<[]{}>{()()}}[[()[]]]]{[(<>{}){<>}]{[{}](<>)}}><{<(()())<[]<>>>[<(){}>(<>[])]
|
||||
{<(<[<[(((<{((()[])([]<>))([[]<>]({}[]))}><<([<>())<[]<>>)(<{}[]>({}<>))>[[([]())]({()()}{{}<>})
|
||||
[[((<[[[{{<{<{{}()}[{}()]>{{[]{}}[<><>]}}>}<{[<[(){}]<<><>>]([{}<>]<<><>>)]}(<<[{}<>]<<>{}>
|
||||
<[{{[[{<[{(({[(){}]({}{})})[([{}<>][()()])[<[][]><{}<>>]])}](<({(([]<>){()[]})[([]())((){})]}{{{<>{}}<[]()>}<
|
||||
<{((<([[{<<[(<{}()><{}[]>)]>[([{<>()}<()()>]<{()[]><()[]>>){<[{}[]]>[{[][]}(<><>)]}]>{{[{{{}<>}{<>}}[[(){}]<(
|
||||
{<[({(<{{[([{{[]{}}((){})}[[{}[]]<{}()>]]((<[]<>>)<([]()){{}[]}>))(<<{()[]}{[]})>[[(()())]{[()<>][<>(
|
||||
<<{[[[[{<({<[[{}()]]{{[]<>}{[]}}><{{{}()}({}{})}>}{([({}[])({}())](({}[])))[<{[]<>}[<>()]><<[]<>>(<>[])>]}
|
||||
[(([<<[{[{<({{()[]}<<><>>})[[([]())[[]{}])(<<>{}>)]>(<{{[][]}[{}()]}([{}{}][(){}])>((<<>[]>(()
|
||||
[({<<[[<{[<<({[]()}<()<>>)>]]{{<[[[]][{}<>]]>}{([[<>{}][{}{}]]<((){})(()[])>)}}}([{((<{}[]>)[<{}[]><{}()>])}
|
||||
{[[((<[{<<([{<<><>>([]{})}<(<><>)<<>()>>][{[[]{}]{()()}}<({}{})([][])>])><<{({<>{}}[<>()])((
|
||||
[[[<{{(<((([{<[]{}>({}<>)}[<<>()>]]<<(()[]){{}[]}>{(()<>){{}<>}}>){{{(()())[<><>]}[[[]<>]{<>[]}]}}))[
|
||||
(<({[({[[({{<{<>{}}<()[]>>[{(){}}<<>[]>]}[[<[][]><()<>>]({<>{}}{[]()})]}{(([[]<>][{}[]])(<[]<>>([
|
||||
{([<{[<({{{({[[][]][()()])[<<>()><[][]>])}<{{{[]()}[{}()]}{{<>()}{<>}}}((({}())<{}{}>){(<>{})[<>{}]})>}})(((
|
||||
([[[[[[{(((((<<>()>[[]<>])<{()()}[()<>]>){<[()[]]<<>[]>>(<<>{}}{{}[]})}))<<[([()()][[]()])[{()[]}([]())]][<([
|
||||
({{((((<{<[{[(<>{})][<()()>[[]()]]}]{({(<>())[[]()]}{<[][]><[][]>})}>}>{<<{{(({}())[<>])((()[])<[]<>>)}}[
|
||||
<(<[[[<<{([<<[[]<>]{<>[]}><{()()}([]<>)>>]{<{(<>())((){})}{[{}{}]<<>{}>}>})({([[{}{}]])[(<<>()>[
|
||||
{[(<{<[[{<{{(<()[]><<>{}>){[()<>]<{}<>>}}[[[<>{}][[]<>]]]}<[[({})<<>[]>]]{{<()<>><<>[]>}<{()[]}((){}
|
||||
({[{(<<{[<{({[()()]{{}}}<({}{}){()()}>)}<{(({}{})[<>[]]){([]())[[][]]}}{(<[]<>)[()])[[<>()]]}>>
|
||||
(({<<[<[<<<({<{}[]>({}{})}{<{}[]><{}[]>})>>(<<(<()()>{[]{}})({()<>}[()()])>[{[{}()][[]]}({<>()}}]>(
|
||||
<<(<(<[{([{<[[<>{}]<{}<>>]>{<(()[])(()())><{<>[]}{()()}>}}([{({}<>){<>{}}}{{<>[]}[{}{}]}]([<[]()>((){})
|
||||
{[{([({[[<<<{{[]{}}<[]{}>}[<()[]><[]<>>]>([{{}[]][[][]]]{{(){}}({}[])})>(<{[<>{}](()<>)}>{[<[]()>
|
||||
([[[<(<{[({<({()()}{<>()})((<>[])<[]<>>)>}<{<<{}()><<>>>}({{{}[]}}[(()[])[()<>]])>)<[<((()())[<>{}])(
|
||||
{<(((<[((((({<[]>[[]{}]}))[(<[[][]][{}{}]>){{[<>()][[]<>]}([()()](<><>))}])){(<[{[<>()][{}()]
|
||||
({([{<(((<{[<[{}[]]<<>>>({{}[]}[[]()])]([<(){}>])}{<[{<>[]}{[]<>}][<<><>){<>{}}]>[<((){})([]{})>[[{}{}][()
|
||||
<[{[<[{[({{<(({}<>}[[]()])>({{[][]}}<[(){}](()[])>)}})([[{{<<>()>([]{})}[<<>{}>[<><>]]}]])]
|
||||
{(<{([{[[({[(<[]{}>)({{}[]}{()()}))<{(()[])}[[()()]{{}[]}]>}<{<(()<>)>{{[]{}}({}())}}({{{}[]}{<
|
||||
[<<{<{<<(<([<(<>()){[]()}>[({}<>)({}<>)]][(([]{}){()[]})[{{}()}(()())]])>{([{{()[]}<<>[]>}<{<>[
|
||||
{{[[(([([({([([]<>)(()())][{<>()}{(){}}])})])]([{{[<{{{}<>}(<>())>{[()()]<<>[]>}>[{(()){{}[
|
||||
[({({({(({{(<[()()][{}<>]>[[{}()]{(){}}])<[<<>[]>][<{}>(<>{})]>}(((({}())({}{}))){{(()[])<[][
|
||||
<(<(<[([<[{[<(()<>)<()[]>><(<>())([][])>]{<[{}<>]{{}()}>{[[]{}](<>{})}}}<[<([]{})><{{}<>}([]())>]>]>
|
||||
<<<(<<[({{{<{({}<>)<()[]>}<[()<>]{(){}}>><{[[]()]<[]{}>}[({}{})<(){}>]>}(<[<<>[]>{()[]}]>)}[<{[<{}>[{}{
|
||||
{(<((<[{{[[[[<{}{}]<{}()>]][{({}{})<<>{}>}[<()[]>(()())]]]{([<[]()><[]{}>](<{}()>))({<<><>>(<>())}{
|
||||
{({{[[<[{<{{(<<>>)(<[]()>[()])}([({}<>)])}[[{[()<>][()[]]}]({<[]<>>{<>()}})]><<(<<{}()>{<>[]
|
||||
{{{[{[<<{[[{[{{}<>}<[][]>]{(()[])<<>()>}}[<{()()}[(){}]><<()[]>>]]{<((<>{})({}()))[<(){}>([][])]>{({{}[]}<
|
||||
<{{[<{({{{[<{{<>()}{{}()}}>]<{<[()[]](<><>)><[<>[]]{(){}}>}<([(){}]<{}{}>){(())}>>}[([{[[]<>][{}<>]}[{()}(
|
||||
[<<[{{(({({<{{{}{}}{<>[]}}({[][]}{<>[]})>[{[{}<>][<>[]]}[({}[])[[]<>]]]})}))<(<[[<(({}()))[<<>()>{(
|
||||
{<<([<{({[{{[({}[])<<>{}>]([()<>]<(){}>)}<([{}[]]({}{}))>}[<<<<>{}>[[][]]>{<<>[]><()>}>[<<<>><[][]>
|
||||
[({(<({[<[{{[<<>[]>[()[]]]<<<>[]>>}}<{([{}[]](<>{}))[{<>}{{}<>}]}(<<[][]>>[{[]<>}])>]>[(<(({<>[]}{<><>}))(<
|
||||
{<[[{{<<{(<(<([]<>)[[][]]>[([]{})[<>{}]])<[{<>()}{[]<>}]>>>[{(({()()}[<>[]]){({}())<[]<>>})}[(<{<>
|
||||
{[[{{{<[<[{<(({}{})[{}()])[(<><>)({}())]>}{[<{[]{}}[()[]]>]<{[()()]<[]()>}<[[][]]>>}]>{{({{{()[]}{{}(
|
||||
<{[<([{{[[<(<{<><>}[{}{}]><((){})>){[[()()][()[]]]{[[]<>]}}>]<<(<({}[])<{}[]>>{(<><>)<[]()>}){(<
|
||||
"""
|
||||
}
|
554
day5.hs
Normal file
554
day5.hs
Normal file
|
@ -0,0 +1,554 @@
|
|||
example :: [((Int, Int), (Int, Int))]
|
||||
example = [
|
||||
((0,9), (5,9)),
|
||||
((8,0), (0,8)),
|
||||
((9,4), (3,4)),
|
||||
((2,2), (2,1)),
|
||||
((7,0), (7,4)),
|
||||
((6,4), (2,0)),
|
||||
((0,9), (2,9)),
|
||||
((3,4), (1,4)),
|
||||
((0,0), (8,8)),
|
||||
((5,5), (8,2))
|
||||
]
|
||||
|
||||
isHorizontalOrVertical :: ((Int, Int), (Int, Int)) -> Bool
|
||||
isHorizontalOrVertical ((x1, y1), (x2, y2)) = x1 == x2 || y1 == y2
|
||||
|
||||
atPoint (x,y) p = minX p <= x && x <= maxX p && minY p <= y && y <= maxY p
|
||||
|
||||
minX ((x1, _), (x2, _)) = min x1 x2
|
||||
minY ((_, y1), (_, y2)) = min y1 y2
|
||||
|
||||
|
||||
maxX ((x1, _), (x2, _)) = max x1 x2
|
||||
maxY ((_, y1), (_, y2)) = max y1 y2
|
||||
|
||||
|
||||
bounds :: (Ord b, Ord a) => [((a, b), (a, b))] -> ((a, b), (a, b))
|
||||
bounds input = ((x0, y0), (x1, y1))
|
||||
where
|
||||
x0 = minimum $ map minX input
|
||||
y0 = minimum $ map minY input
|
||||
x1 = maximum $ map maxX input
|
||||
y1 = maximum $ map maxY input
|
||||
|
||||
grid ((x0, y0), (x1, y1)) = [ (x, y) | x <- [x0..x1], y <- [y0..y1] ]
|
||||
|
||||
counts input = length $ filter (>= 2) intersectionCounts
|
||||
where
|
||||
intersectionCounts = map (\pos -> length $ filter (atPoint pos) input) gridIndexes
|
||||
gridIndexes = grid $ bounds input
|
||||
|
||||
|
||||
inputs :: [((Int, Int), (Int, Int))]
|
||||
inputs = [
|
||||
((911, 808), (324, 221)),
|
||||
((161, 890), (808, 243)),
|
||||
((174, 59), (174, 760)),
|
||||
((983, 983), (10, 10)),
|
||||
((321, 12), (870, 12)),
|
||||
((66, 936), (941, 61)),
|
||||
((670, 141), (670, 550)),
|
||||
((783, 935), (496, 648)),
|
||||
((973, 651), (635, 989)),
|
||||
((535, 47), (535, 154)),
|
||||
((355, 183), (754, 582)),
|
||||
((172, 111), (892, 111)),
|
||||
((353, 66), (907, 620)),
|
||||
((741, 960), (741, 805)),
|
||||
((113, 895), (946, 895)),
|
||||
((777, 280), (563, 280)),
|
||||
((679, 815), (626, 815)),
|
||||
((651, 848), (651, 673)),
|
||||
((205, 834), (205, 599)),
|
||||
((895, 118), (82, 931)),
|
||||
((685, 303), (93, 895)),
|
||||
((973, 38), (62, 949)),
|
||||
((867, 23), (867, 300)),
|
||||
((784, 947), (784, 47)),
|
||||
((96, 168), (755, 827)),
|
||||
((909, 321), (909, 716)),
|
||||
((59, 881), (692, 881)),
|
||||
((964, 19), (69, 914)),
|
||||
((752, 869), (67, 184)),
|
||||
((974, 877), (138, 41)),
|
||||
((432, 389), (137, 684)),
|
||||
((458, 822), (458, 402)),
|
||||
((818, 852), (308, 342)),
|
||||
((882, 484), (441, 925)),
|
||||
((82, 959), (976, 65)),
|
||||
((117, 487), (117, 429)),
|
||||
((214, 673), (429, 673)),
|
||||
((72, 955), (72, 829)),
|
||||
((587, 109), (587, 368)),
|
||||
((576, 17), (576, 872)),
|
||||
((685, 102), (685, 905)),
|
||||
((563, 394), (716, 394)),
|
||||
((966, 145), (150, 961)),
|
||||
((555, 582), (555, 385)),
|
||||
((453, 31), (453, 207)),
|
||||
((639, 815), (547, 723)),
|
||||
((431, 869), (431, 811)),
|
||||
((646, 938), (599, 938)),
|
||||
((215, 513), (900, 513)),
|
||||
((809, 82), (798, 82)),
|
||||
((768, 344), (244, 868)),
|
||||
((39, 962), (39, 601)),
|
||||
((675, 186), (61, 186)),
|
||||
((861, 967), (28, 967)),
|
||||
((860, 550), (538, 550)),
|
||||
((283, 740), (571, 740)),
|
||||
((72, 297), (72, 645)),
|
||||
((727, 801), (727, 526)),
|
||||
((799, 519), (799, 497)),
|
||||
((915, 24), (174, 765)),
|
||||
((795, 943), (136, 943)),
|
||||
((518, 971), (599, 971)),
|
||||
((594, 676), (594, 461)),
|
||||
((850, 799), (363, 799)),
|
||||
((958, 575), (958, 231)),
|
||||
((752, 576), (398, 576)),
|
||||
((891, 433), (398, 433)),
|
||||
((524, 126), (397, 126)),
|
||||
((10, 890), (796, 104)),
|
||||
((57, 228), (168, 228)),
|
||||
((168, 521), (338, 691)),
|
||||
((230, 83), (777, 83)),
|
||||
((865, 677), (640, 452)),
|
||||
((866, 821), (825, 821)),
|
||||
((17, 143), (17, 596)),
|
||||
((113, 916), (113, 601)),
|
||||
((268, 187), (551, 470)),
|
||||
((794, 167), (220, 167)),
|
||||
((459, 17), (459, 931)),
|
||||
((211, 31), (526, 31)),
|
||||
((680, 57), (756, 57)),
|
||||
((926, 190), (926, 800)),
|
||||
((85, 284), (63, 284)),
|
||||
((44, 988), (44, 701)),
|
||||
((110, 941), (176, 941)),
|
||||
((480, 163), (480, 112)),
|
||||
((574, 538), (574, 371)),
|
||||
((584, 473), (69, 473)),
|
||||
((303, 621), (303, 380)),
|
||||
((762, 652), (762, 89)),
|
||||
((286, 195), (276, 185)),
|
||||
((957, 87), (217, 827)),
|
||||
((561, 858), (561, 437)),
|
||||
((384, 55), (81, 55)),
|
||||
((19, 977), (981, 15)),
|
||||
((454, 747), (938, 263)),
|
||||
((425, 836), (425, 617)),
|
||||
((860, 135), (775, 50)),
|
||||
((633, 131), (633, 651)),
|
||||
((904, 912), (242, 250)),
|
||||
((880, 177), (480, 577)),
|
||||
((470, 162), (964, 656)),
|
||||
((585, 376), (585, 470)),
|
||||
((696, 760), (594, 862)),
|
||||
((534, 225), (534, 717)),
|
||||
((258, 816), (258, 847)),
|
||||
((990, 244), (990, 93)),
|
||||
((463, 462), (463, 533)),
|
||||
((434, 928), (537, 825)),
|
||||
((813, 734), (533, 734)),
|
||||
((498, 673), (395, 673)),
|
||||
((564, 312), (55, 312)),
|
||||
((280, 550), (939, 550)),
|
||||
((591, 247), (396, 52)),
|
||||
((127, 516), (127, 235)),
|
||||
((850, 425), (552, 127)),
|
||||
((894, 428), (894, 598)),
|
||||
((366, 960), (592, 960)),
|
||||
((579, 488), (170, 488)),
|
||||
((775, 92), (775, 586)),
|
||||
((49, 909), (930, 28)),
|
||||
((856, 113), (284, 685)),
|
||||
((263, 175), (120, 175)),
|
||||
((332, 592), (276, 592)),
|
||||
((920, 157), (141, 157)),
|
||||
((349, 776), (316, 776)),
|
||||
((187, 863), (279, 863)),
|
||||
((218, 872), (83, 872)),
|
||||
((465, 430), (410, 430)),
|
||||
((710, 218), (857, 218)),
|
||||
((797, 314), (184, 314)),
|
||||
((387, 327), (49, 665)),
|
||||
((950, 812), (205, 67)),
|
||||
((803, 133), (803, 682)),
|
||||
((125, 972), (545, 552)),
|
||||
((353, 901), (840, 414)),
|
||||
((936, 843), (202, 109)),
|
||||
((11, 904), (856, 59)),
|
||||
((725, 757), (954, 986)),
|
||||
((227, 697), (345, 697)),
|
||||
((187, 520), (187, 441)),
|
||||
((860, 262), (135, 987)),
|
||||
((700, 95), (976, 371)),
|
||||
((86, 946), (869, 163)),
|
||||
((898, 806), (461, 806)),
|
||||
((717, 796), (717, 195)),
|
||||
((882, 127), (835, 127)),
|
||||
((133, 48), (133, 191)),
|
||||
((521, 51), (521, 927)),
|
||||
((384, 806), (957, 233)),
|
||||
((570, 139), (570, 842)),
|
||||
((949, 819), (949, 350)),
|
||||
((592, 230), (283, 230)),
|
||||
((315, 856), (741, 856)),
|
||||
((870, 674), (549, 353)),
|
||||
((857, 306), (857, 889)),
|
||||
((428, 217), (267, 217)),
|
||||
((47, 93), (898, 944)),
|
||||
((636, 238), (665, 238)),
|
||||
((202, 910), (202, 737)),
|
||||
((246, 432), (617, 803)),
|
||||
((985, 24), (48, 961)),
|
||||
((965, 876), (956, 867)),
|
||||
((618, 650), (810, 458)),
|
||||
((292, 356), (575, 356)),
|
||||
((394, 585), (910, 585)),
|
||||
((137, 453), (137, 178)),
|
||||
((509, 737), (509, 665)),
|
||||
((193, 350), (531, 688)),
|
||||
((805, 219), (107, 219)),
|
||||
((975, 506), (907, 506)),
|
||||
((435, 303), (435, 380)),
|
||||
((344, 83), (344, 224)),
|
||||
((47, 66), (47, 115)),
|
||||
((570, 516), (857, 516)),
|
||||
((162, 91), (926, 91)),
|
||||
((759, 417), (759, 460)),
|
||||
((445, 942), (445, 699)),
|
||||
((421, 340), (421, 743)),
|
||||
((590, 590), (434, 434)),
|
||||
((453, 38), (453, 327)),
|
||||
((865, 134), (865, 773)),
|
||||
((842, 609), (18, 609)),
|
||||
((662, 282), (62, 882)),
|
||||
((489, 32), (344, 32)),
|
||||
((135, 496), (93, 454)),
|
||||
((552, 211), (421, 211)),
|
||||
((620, 678), (642, 678)),
|
||||
((782, 158), (585, 355)),
|
||||
((733, 509), (733, 574)),
|
||||
((932, 383), (369, 946)),
|
||||
((843, 705), (843, 725)),
|
||||
((747, 414), (676, 343)),
|
||||
((294, 218), (962, 886)),
|
||||
((844, 175), (844, 420)),
|
||||
((255, 489), (531, 213)),
|
||||
((555, 532), (821, 532)),
|
||||
((533, 15), (533, 161)),
|
||||
((631, 778), (631, 401)),
|
||||
((75, 282), (468, 282)),
|
||||
((903, 838), (903, 957)),
|
||||
((46, 293), (543, 790)),
|
||||
((30, 834), (30, 948)),
|
||||
((591, 720), (591, 965)),
|
||||
((624, 36), (339, 36)),
|
||||
((425, 323), (425, 442)),
|
||||
((234, 939), (234, 963)),
|
||||
((482, 912), (968, 912)),
|
||||
((228, 614), (189, 614)),
|
||||
((969, 472), (969, 692)),
|
||||
((871, 494), (871, 172)),
|
||||
((101, 624), (848, 624)),
|
||||
((424, 918), (69, 563)),
|
||||
((929, 671), (93, 671)),
|
||||
((81, 187), (707, 813)),
|
||||
((348, 923), (348, 924)),
|
||||
((921, 524), (921, 828)),
|
||||
((678, 454), (678, 364)),
|
||||
((904, 227), (904, 596)),
|
||||
((163, 344), (609, 790)),
|
||||
((206, 180), (206, 59)),
|
||||
((145, 519), (145, 717)),
|
||||
((317, 679), (317, 417)),
|
||||
((503, 724), (221, 724)),
|
||||
((353, 448), (413, 448)),
|
||||
((363, 643), (837, 643)),
|
||||
((594, 54), (359, 54)),
|
||||
((866, 117), (45, 938)),
|
||||
((939, 210), (284, 865)),
|
||||
((410, 556), (410, 801)),
|
||||
((905, 111), (673, 111)),
|
||||
((983, 167), (574, 167)),
|
||||
((595, 758), (97, 758)),
|
||||
((785, 10), (437, 10)),
|
||||
((517, 414), (517, 734)),
|
||||
((691, 567), (186, 62)),
|
||||
((842, 51), (31, 862)),
|
||||
((36, 199), (282, 199)),
|
||||
((864, 758), (864, 610)),
|
||||
((639, 918), (951, 918)),
|
||||
((245, 516), (245, 474)),
|
||||
((951, 203), (557, 203)),
|
||||
((176, 728), (176, 171)),
|
||||
((322, 217), (387, 217)),
|
||||
((149, 208), (836, 895)),
|
||||
((661, 298), (609, 298)),
|
||||
((46, 47), (981, 982)),
|
||||
((769, 45), (769, 610)),
|
||||
((988, 932), (988, 459)),
|
||||
((901, 97), (901, 908)),
|
||||
((195, 395), (121, 395)),
|
||||
((197, 403), (327, 533)),
|
||||
((159, 456), (857, 456)),
|
||||
((480, 981), (881, 580)),
|
||||
((86, 958), (962, 82)),
|
||||
((375, 198), (763, 198)),
|
||||
((950, 381), (341, 381)),
|
||||
((504, 679), (504, 598)),
|
||||
((756, 659), (680, 583)),
|
||||
((146, 328), (886, 328)),
|
||||
((930, 412), (492, 850)),
|
||||
((954, 54), (954, 940)),
|
||||
((790, 498), (790, 305)),
|
||||
((83, 270), (83, 242)),
|
||||
((939, 268), (939, 563)),
|
||||
((423, 756), (916, 263)),
|
||||
((583, 756), (583, 34)),
|
||||
((957, 639), (614, 639)),
|
||||
((484, 523), (521, 560)),
|
||||
((497, 809), (497, 419)),
|
||||
((76, 17), (979, 920)),
|
||||
((49, 39), (943, 933)),
|
||||
((110, 289), (110, 247)),
|
||||
((874, 868), (874, 172)),
|
||||
((576, 127), (53, 650)),
|
||||
((871, 879), (12, 20)),
|
||||
((436, 711), (592, 711)),
|
||||
((132, 285), (225, 285)),
|
||||
((245, 147), (514, 147)),
|
||||
((158, 882), (956, 84)),
|
||||
((21, 984), (937, 68)),
|
||||
((42, 275), (219, 275)),
|
||||
((877, 143), (889, 143)),
|
||||
((593, 841), (508, 756)),
|
||||
((414, 289), (132, 289)),
|
||||
((687, 655), (767, 655)),
|
||||
((453, 981), (459, 987)),
|
||||
((635, 433), (635, 324)),
|
||||
((671, 347), (170, 848)),
|
||||
((412, 579), (915, 579)),
|
||||
((269, 677), (269, 596)),
|
||||
((587, 121), (367, 341)),
|
||||
((153, 883), (153, 709)),
|
||||
((524, 580), (508, 580)),
|
||||
((541, 232), (651, 232)),
|
||||
((93, 948), (284, 757)),
|
||||
((168, 745), (872, 41)),
|
||||
((831, 657), (925, 563)),
|
||||
((908, 389), (442, 389)),
|
||||
((462, 445), (234, 445)),
|
||||
((735, 493), (895, 493)),
|
||||
((274, 624), (296, 646)),
|
||||
((153, 130), (153, 160)),
|
||||
((466, 214), (466, 769)),
|
||||
((474, 499), (686, 711)),
|
||||
((540, 428), (788, 676)),
|
||||
((858, 215), (959, 215)),
|
||||
((788, 91), (788, 410)),
|
||||
((552, 505), (988, 505)),
|
||||
((978, 312), (978, 202)),
|
||||
((108, 321), (616, 829)),
|
||||
((903, 359), (903, 770)),
|
||||
((480, 331), (480, 769)),
|
||||
((503, 842), (34, 842)),
|
||||
((613, 732), (323, 442)),
|
||||
((767, 949), (654, 949)),
|
||||
((514, 589), (386, 589)),
|
||||
((38, 554), (284, 308)),
|
||||
((689, 268), (689, 711)),
|
||||
((860, 66), (190, 736)),
|
||||
((253, 865), (622, 865)),
|
||||
((87, 658), (698, 47)),
|
||||
((506, 892), (829, 569)),
|
||||
((680, 910), (594, 824)),
|
||||
((824, 603), (958, 603)),
|
||||
((576, 802), (562, 802)),
|
||||
((67, 27), (67, 489)),
|
||||
((969, 461), (517, 913)),
|
||||
((674, 763), (674, 226)),
|
||||
((223, 955), (218, 955)),
|
||||
((147, 540), (569, 962)),
|
||||
((455, 703), (596, 703)),
|
||||
((746, 899), (746, 403)),
|
||||
((516, 476), (756, 476)),
|
||||
((897, 674), (373, 150)),
|
||||
((120, 395), (120, 49)),
|
||||
((722, 443), (722, 244)),
|
||||
((724, 924), (724, 39)),
|
||||
((809, 930), (109, 930)),
|
||||
((822, 816), (874, 816)),
|
||||
((796, 539), (895, 539)),
|
||||
((340, 88), (560, 88)),
|
||||
((223, 158), (593, 158)),
|
||||
((779, 977), (856, 900)),
|
||||
((617, 461), (973, 817)),
|
||||
((515, 62), (515, 140)),
|
||||
((12, 586), (724, 586)),
|
||||
((870, 50), (391, 50)),
|
||||
((308, 123), (308, 696)),
|
||||
((119, 164), (863, 908)),
|
||||
((755, 599), (448, 599)),
|
||||
((129, 526), (633, 526)),
|
||||
((478, 668), (102, 668)),
|
||||
((237, 637), (237, 743)),
|
||||
((270, 102), (72, 300)),
|
||||
((115, 470), (115, 427)),
|
||||
((948, 233), (948, 731)),
|
||||
((983, 135), (468, 650)),
|
||||
((748, 439), (748, 642)),
|
||||
((62, 862), (352, 572)),
|
||||
((765, 901), (660, 901)),
|
||||
((917, 807), (917, 587)),
|
||||
((55, 81), (116, 81)),
|
||||
((954, 972), (102, 120)),
|
||||
((340, 503), (294, 549)),
|
||||
((970, 661), (522, 213)),
|
||||
((618, 92), (618, 247)),
|
||||
((688, 965), (965, 965)),
|
||||
((94, 241), (94, 292)),
|
||||
((15, 132), (15, 492)),
|
||||
((979, 927), (488, 927)),
|
||||
((509, 26), (984, 26)),
|
||||
((840, 530), (840, 95)),
|
||||
((55, 956), (849, 162)),
|
||||
((297, 297), (297, 472)),
|
||||
((338, 780), (369, 780)),
|
||||
((487, 292), (37, 292)),
|
||||
((122, 117), (206, 201)),
|
||||
((66, 807), (564, 309)),
|
||||
((643, 242), (906, 242)),
|
||||
((909, 833), (909, 441)),
|
||||
((129, 128), (818, 817)),
|
||||
((406, 42), (406, 297)),
|
||||
((53, 20), (967, 934)),
|
||||
((235, 285), (601, 285)),
|
||||
((275, 625), (275, 539)),
|
||||
((199, 732), (430, 963)),
|
||||
((639, 187), (639, 265)),
|
||||
((549, 740), (549, 824)),
|
||||
((603, 140), (603, 748)),
|
||||
((35, 455), (176, 455)),
|
||||
((888, 611), (888, 271)),
|
||||
((134, 154), (484, 154)),
|
||||
((694, 820), (694, 814)),
|
||||
((535, 584), (187, 932)),
|
||||
((642, 510), (642, 249)),
|
||||
((191, 886), (268, 886)),
|
||||
((918, 353), (881, 390)),
|
||||
((977, 13), (343, 13)),
|
||||
((380, 243), (271, 134)),
|
||||
((410, 758), (410, 670)),
|
||||
((613, 551), (519, 645)),
|
||||
((963, 84), (124, 923)),
|
||||
((702, 252), (821, 252)),
|
||||
((405, 237), (405, 22)),
|
||||
((21, 139), (21, 510)),
|
||||
((548, 499), (132, 499)),
|
||||
((196, 104), (196, 680)),
|
||||
((739, 145), (476, 145)),
|
||||
((751, 746), (91, 746)),
|
||||
((975, 628), (975, 847)),
|
||||
((935, 520), (935, 450)),
|
||||
((803, 372), (803, 393)),
|
||||
((872, 77), (872, 373)),
|
||||
((339, 130), (339, 103)),
|
||||
((226, 886), (226, 45)),
|
||||
((794, 647), (794, 257)),
|
||||
((90, 922), (889, 123)),
|
||||
((615, 971), (615, 574)),
|
||||
((26, 278), (26, 719)),
|
||||
((838, 88), (806, 88)),
|
||||
((263, 691), (804, 150)),
|
||||
((309, 721), (910, 721)),
|
||||
((510, 496), (960, 946)),
|
||||
((195, 236), (46, 236)),
|
||||
((610, 143), (610, 610)),
|
||||
((891, 412), (891, 268)),
|
||||
((714, 21), (156, 579)),
|
||||
((320, 935), (320, 96)),
|
||||
((240, 782), (449, 782)),
|
||||
((754, 472), (48, 472)),
|
||||
((105, 481), (529, 57)),
|
||||
((451, 301), (451, 965)),
|
||||
((796, 638), (796, 185)),
|
||||
((908, 553), (771, 553)),
|
||||
((98, 543), (490, 935)),
|
||||
((481, 159), (762, 159)),
|
||||
((593, 527), (419, 353)),
|
||||
((86, 391), (216, 521)),
|
||||
((260, 716), (42, 716)),
|
||||
((734, 538), (375, 179)),
|
||||
((24, 974), (975, 23)),
|
||||
((402, 466), (787, 851)),
|
||||
((344, 409), (262, 327)),
|
||||
((803, 443), (685, 443)),
|
||||
((986, 152), (249, 152)),
|
||||
((125, 738), (90, 773)),
|
||||
((184, 772), (184, 746)),
|
||||
((729, 829), (729, 340)),
|
||||
((226, 527), (226, 375)),
|
||||
((936, 231), (222, 945)),
|
||||
((254, 333), (254, 167)),
|
||||
((451, 234), (451, 273)),
|
||||
((915, 790), (568, 443)),
|
||||
((869, 794), (504, 429)),
|
||||
((11, 878), (836, 53)),
|
||||
((821, 231), (522, 530)),
|
||||
((285, 419), (732, 866)),
|
||||
((191, 272), (191, 679)),
|
||||
((41, 651), (225, 651)),
|
||||
((30, 13), (879, 862)),
|
||||
((980, 488), (20, 488)),
|
||||
((27, 187), (27, 348)),
|
||||
((53, 238), (53, 514)),
|
||||
((778, 306), (379, 705)),
|
||||
((425, 399), (425, 60)),
|
||||
((162, 859), (57, 859)),
|
||||
((652, 926), (652, 589)),
|
||||
((962, 489), (555, 896)),
|
||||
((197, 378), (436, 617)),
|
||||
((310, 190), (310, 760)),
|
||||
((678, 20), (678, 713)),
|
||||
((390, 653), (985, 58)),
|
||||
((938, 351), (656, 69)),
|
||||
((881, 39), (18, 902)),
|
||||
((313, 681), (323, 681)),
|
||||
((910, 907), (288, 907)),
|
||||
((739, 977), (739, 132)),
|
||||
((856, 479), (154, 479)),
|
||||
((893, 785), (761, 785)),
|
||||
((405, 247), (405, 901)),
|
||||
((58, 933), (808, 183)),
|
||||
((643, 156), (676, 189)),
|
||||
((149, 773), (357, 773)),
|
||||
((479, 518), (434, 518)),
|
||||
((389, 518), (556, 685)),
|
||||
((858, 449), (533, 774)),
|
||||
((503, 133), (409, 133)),
|
||||
((340, 315), (219, 194)),
|
||||
((183, 701), (183, 242)),
|
||||
((810, 151), (195, 151)),
|
||||
((446, 686), (446, 912)),
|
||||
((968, 482), (49, 482)),
|
||||
((203, 20), (203, 667)),
|
||||
((493, 516), (647, 516)),
|
||||
((900, 91), (634, 91)),
|
||||
((660, 554), (119, 13)),
|
||||
((964, 864), (964, 919)),
|
||||
((871, 293), (344, 293)),
|
||||
((895, 258), (972, 258))
|
||||
]
|
||||
|
||||
{-
|
||||
5167
|
||||
|
||||
|
||||
-}
|
||||
|
||||
|
584
day5part2.swift
Normal file
584
day5part2.swift
Normal file
|
@ -0,0 +1,584 @@
|
|||
import CoreGraphics
|
||||
import ImageIO
|
||||
import Foundation
|
||||
import UniformTypeIdentifiers
|
||||
|
||||
@main
|
||||
struct Day5Part2 {
|
||||
let input: [(Point, Point)] = [
|
||||
((911, 808), (324, 221)),
|
||||
((161, 890), (808, 243)),
|
||||
((174, 59), (174, 760)),
|
||||
((983, 983), (10, 10)),
|
||||
((321, 12), (870, 12)),
|
||||
((66, 936), (941, 61)),
|
||||
((670, 141), (670, 550)),
|
||||
((783, 935), (496, 648)),
|
||||
((973, 651), (635, 989)),
|
||||
((535, 47), (535, 154)),
|
||||
((355, 183), (754, 582)),
|
||||
((172, 111), (892, 111)),
|
||||
((353, 66), (907, 620)),
|
||||
((741, 960), (741, 805)),
|
||||
((113, 895), (946, 895)),
|
||||
((777, 280), (563, 280)),
|
||||
((679, 815), (626, 815)),
|
||||
((651, 848), (651, 673)),
|
||||
((205, 834), (205, 599)),
|
||||
((895, 118), (82, 931)),
|
||||
((685, 303), (93, 895)),
|
||||
((973, 38), (62, 949)),
|
||||
((867, 23), (867, 300)),
|
||||
((784, 947), (784, 47)),
|
||||
((96, 168), (755, 827)),
|
||||
((909, 321), (909, 716)),
|
||||
((59, 881), (692, 881)),
|
||||
((964, 19), (69, 914)),
|
||||
((752, 869), (67, 184)),
|
||||
((974, 877), (138, 41)),
|
||||
((432, 389), (137, 684)),
|
||||
((458, 822), (458, 402)),
|
||||
((818, 852), (308, 342)),
|
||||
((882, 484), (441, 925)),
|
||||
((82, 959), (976, 65)),
|
||||
((117, 487), (117, 429)),
|
||||
((214, 673), (429, 673)),
|
||||
((72, 955), (72, 829)),
|
||||
((587, 109), (587, 368)),
|
||||
((576, 17), (576, 872)),
|
||||
((685, 102), (685, 905)),
|
||||
((563, 394), (716, 394)),
|
||||
((966, 145), (150, 961)),
|
||||
((555, 582), (555, 385)),
|
||||
((453, 31), (453, 207)),
|
||||
((639, 815), (547, 723)),
|
||||
((431, 869), (431, 811)),
|
||||
((646, 938), (599, 938)),
|
||||
((215, 513), (900, 513)),
|
||||
((809, 82), (798, 82)),
|
||||
((768, 344), (244, 868)),
|
||||
((39, 962), (39, 601)),
|
||||
((675, 186), (61, 186)),
|
||||
((861, 967), (28, 967)),
|
||||
((860, 550), (538, 550)),
|
||||
((283, 740), (571, 740)),
|
||||
((72, 297), (72, 645)),
|
||||
((727, 801), (727, 526)),
|
||||
((799, 519), (799, 497)),
|
||||
((915, 24), (174, 765)),
|
||||
((795, 943), (136, 943)),
|
||||
((518, 971), (599, 971)),
|
||||
((594, 676), (594, 461)),
|
||||
((850, 799), (363, 799)),
|
||||
((958, 575), (958, 231)),
|
||||
((752, 576), (398, 576)),
|
||||
((891, 433), (398, 433)),
|
||||
((524, 126), (397, 126)),
|
||||
((10, 890), (796, 104)),
|
||||
((57, 228), (168, 228)),
|
||||
((168, 521), (338, 691)),
|
||||
((230, 83), (777, 83)),
|
||||
((865, 677), (640, 452)),
|
||||
((866, 821), (825, 821)),
|
||||
((17, 143), (17, 596)),
|
||||
((113, 916), (113, 601)),
|
||||
((268, 187), (551, 470)),
|
||||
((794, 167), (220, 167)),
|
||||
((459, 17), (459, 931)),
|
||||
((211, 31), (526, 31)),
|
||||
((680, 57), (756, 57)),
|
||||
((926, 190), (926, 800)),
|
||||
((85, 284), (63, 284)),
|
||||
((44, 988), (44, 701)),
|
||||
((110, 941), (176, 941)),
|
||||
((480, 163), (480, 112)),
|
||||
((574, 538), (574, 371)),
|
||||
((584, 473), (69, 473)),
|
||||
((303, 621), (303, 380)),
|
||||
((762, 652), (762, 89)),
|
||||
((286, 195), (276, 185)),
|
||||
((957, 87), (217, 827)),
|
||||
((561, 858), (561, 437)),
|
||||
((384, 55), (81, 55)),
|
||||
((19, 977), (981, 15)),
|
||||
((454, 747), (938, 263)),
|
||||
((425, 836), (425, 617)),
|
||||
((860, 135), (775, 50)),
|
||||
((633, 131), (633, 651)),
|
||||
((904, 912), (242, 250)),
|
||||
((880, 177), (480, 577)),
|
||||
((470, 162), (964, 656)),
|
||||
((585, 376), (585, 470)),
|
||||
((696, 760), (594, 862)),
|
||||
((534, 225), (534, 717)),
|
||||
((258, 816), (258, 847)),
|
||||
((990, 244), (990, 93)),
|
||||
((463, 462), (463, 533)),
|
||||
((434, 928), (537, 825)),
|
||||
((813, 734), (533, 734)),
|
||||
((498, 673), (395, 673)),
|
||||
((564, 312), (55, 312)),
|
||||
((280, 550), (939, 550)),
|
||||
((591, 247), (396, 52)),
|
||||
((127, 516), (127, 235)),
|
||||
((850, 425), (552, 127)),
|
||||
((894, 428), (894, 598)),
|
||||
((366, 960), (592, 960)),
|
||||
((579, 488), (170, 488)),
|
||||
((775, 92), (775, 586)),
|
||||
((49, 909), (930, 28)),
|
||||
((856, 113), (284, 685)),
|
||||
((263, 175), (120, 175)),
|
||||
((332, 592), (276, 592)),
|
||||
((920, 157), (141, 157)),
|
||||
((349, 776), (316, 776)),
|
||||
((187, 863), (279, 863)),
|
||||
((218, 872), (83, 872)),
|
||||
((465, 430), (410, 430)),
|
||||
((710, 218), (857, 218)),
|
||||
((797, 314), (184, 314)),
|
||||
((387, 327), (49, 665)),
|
||||
((950, 812), (205, 67)),
|
||||
((803, 133), (803, 682)),
|
||||
((125, 972), (545, 552)),
|
||||
((353, 901), (840, 414)),
|
||||
((936, 843), (202, 109)),
|
||||
((11, 904), (856, 59)),
|
||||
((725, 757), (954, 986)),
|
||||
((227, 697), (345, 697)),
|
||||
((187, 520), (187, 441)),
|
||||
((860, 262), (135, 987)),
|
||||
((700, 95), (976, 371)),
|
||||
((86, 946), (869, 163)),
|
||||
((898, 806), (461, 806)),
|
||||
((717, 796), (717, 195)),
|
||||
((882, 127), (835, 127)),
|
||||
((133, 48), (133, 191)),
|
||||
((521, 51), (521, 927)),
|
||||
((384, 806), (957, 233)),
|
||||
((570, 139), (570, 842)),
|
||||
((949, 819), (949, 350)),
|
||||
((592, 230), (283, 230)),
|
||||
((315, 856), (741, 856)),
|
||||
((870, 674), (549, 353)),
|
||||
((857, 306), (857, 889)),
|
||||
((428, 217), (267, 217)),
|
||||
((47, 93), (898, 944)),
|
||||
((636, 238), (665, 238)),
|
||||
((202, 910), (202, 737)),
|
||||
((246, 432), (617, 803)),
|
||||
((985, 24), (48, 961)),
|
||||
((965, 876), (956, 867)),
|
||||
((618, 650), (810, 458)),
|
||||
((292, 356), (575, 356)),
|
||||
((394, 585), (910, 585)),
|
||||
((137, 453), (137, 178)),
|
||||
((509, 737), (509, 665)),
|
||||
((193, 350), (531, 688)),
|
||||
((805, 219), (107, 219)),
|
||||
((975, 506), (907, 506)),
|
||||
((435, 303), (435, 380)),
|
||||
((344, 83), (344, 224)),
|
||||
((47, 66), (47, 115)),
|
||||
((570, 516), (857, 516)),
|
||||
((162, 91), (926, 91)),
|
||||
((759, 417), (759, 460)),
|
||||
((445, 942), (445, 699)),
|
||||
((421, 340), (421, 743)),
|
||||
((590, 590), (434, 434)),
|
||||
((453, 38), (453, 327)),
|
||||
((865, 134), (865, 773)),
|
||||
((842, 609), (18, 609)),
|
||||
((662, 282), (62, 882)),
|
||||
((489, 32), (344, 32)),
|
||||
((135, 496), (93, 454)),
|
||||
((552, 211), (421, 211)),
|
||||
((620, 678), (642, 678)),
|
||||
((782, 158), (585, 355)),
|
||||
((733, 509), (733, 574)),
|
||||
((932, 383), (369, 946)),
|
||||
((843, 705), (843, 725)),
|
||||
((747, 414), (676, 343)),
|
||||
((294, 218), (962, 886)),
|
||||
((844, 175), (844, 420)),
|
||||
((255, 489), (531, 213)),
|
||||
((555, 532), (821, 532)),
|
||||
((533, 15), (533, 161)),
|
||||
((631, 778), (631, 401)),
|
||||
((75, 282), (468, 282)),
|
||||
((903, 838), (903, 957)),
|
||||
((46, 293), (543, 790)),
|
||||
((30, 834), (30, 948)),
|
||||
((591, 720), (591, 965)),
|
||||
((624, 36), (339, 36)),
|
||||
((425, 323), (425, 442)),
|
||||
((234, 939), (234, 963)),
|
||||
((482, 912), (968, 912)),
|
||||
((228, 614), (189, 614)),
|
||||
((969, 472), (969, 692)),
|
||||
((871, 494), (871, 172)),
|
||||
((101, 624), (848, 624)),
|
||||
((424, 918), (69, 563)),
|
||||
((929, 671), (93, 671)),
|
||||
((81, 187), (707, 813)),
|
||||
((348, 923), (348, 924)),
|
||||
((921, 524), (921, 828)),
|
||||
((678, 454), (678, 364)),
|
||||
((904, 227), (904, 596)),
|
||||
((163, 344), (609, 790)),
|
||||
((206, 180), (206, 59)),
|
||||
((145, 519), (145, 717)),
|
||||
((317, 679), (317, 417)),
|
||||
((503, 724), (221, 724)),
|
||||
((353, 448), (413, 448)),
|
||||
((363, 643), (837, 643)),
|
||||
((594, 54), (359, 54)),
|
||||
((866, 117), (45, 938)),
|
||||
((939, 210), (284, 865)),
|
||||
((410, 556), (410, 801)),
|
||||
((905, 111), (673, 111)),
|
||||
((983, 167), (574, 167)),
|
||||
((595, 758), (97, 758)),
|
||||
((785, 10), (437, 10)),
|
||||
((517, 414), (517, 734)),
|
||||
((691, 567), (186, 62)),
|
||||
((842, 51), (31, 862)),
|
||||
((36, 199), (282, 199)),
|
||||
((864, 758), (864, 610)),
|
||||
((639, 918), (951, 918)),
|
||||
((245, 516), (245, 474)),
|
||||
((951, 203), (557, 203)),
|
||||
((176, 728), (176, 171)),
|
||||
((322, 217), (387, 217)),
|
||||
((149, 208), (836, 895)),
|
||||
((661, 298), (609, 298)),
|
||||
((46, 47), (981, 982)),
|
||||
((769, 45), (769, 610)),
|
||||
((988, 932), (988, 459)),
|
||||
((901, 97), (901, 908)),
|
||||
((195, 395), (121, 395)),
|
||||
((197, 403), (327, 533)),
|
||||
((159, 456), (857, 456)),
|
||||
((480, 981), (881, 580)),
|
||||
((86, 958), (962, 82)),
|
||||
((375, 198), (763, 198)),
|
||||
((950, 381), (341, 381)),
|
||||
((504, 679), (504, 598)),
|
||||
((756, 659), (680, 583)),
|
||||
((146, 328), (886, 328)),
|
||||
((930, 412), (492, 850)),
|
||||
((954, 54), (954, 940)),
|
||||
((790, 498), (790, 305)),
|
||||
((83, 270), (83, 242)),
|
||||
((939, 268), (939, 563)),
|
||||
((423, 756), (916, 263)),
|
||||
((583, 756), (583, 34)),
|
||||
((957, 639), (614, 639)),
|
||||
((484, 523), (521, 560)),
|
||||
((497, 809), (497, 419)),
|
||||
((76, 17), (979, 920)),
|
||||
((49, 39), (943, 933)),
|
||||
((110, 289), (110, 247)),
|
||||
((874, 868), (874, 172)),
|
||||
((576, 127), (53, 650)),
|
||||
((871, 879), (12, 20)),
|
||||
((436, 711), (592, 711)),
|
||||
((132, 285), (225, 285)),
|
||||
((245, 147), (514, 147)),
|
||||
((158, 882), (956, 84)),
|
||||
((21, 984), (937, 68)),
|
||||
((42, 275), (219, 275)),
|
||||
((877, 143), (889, 143)),
|
||||
((593, 841), (508, 756)),
|
||||
((414, 289), (132, 289)),
|
||||
((687, 655), (767, 655)),
|
||||
((453, 981), (459, 987)),
|
||||
((635, 433), (635, 324)),
|
||||
((671, 347), (170, 848)),
|
||||
((412, 579), (915, 579)),
|
||||
((269, 677), (269, 596)),
|
||||
((587, 121), (367, 341)),
|
||||
((153, 883), (153, 709)),
|
||||
((524, 580), (508, 580)),
|
||||
((541, 232), (651, 232)),
|
||||
((93, 948), (284, 757)),
|
||||
((168, 745), (872, 41)),
|
||||
((831, 657), (925, 563)),
|
||||
((908, 389), (442, 389)),
|
||||
((462, 445), (234, 445)),
|
||||
((735, 493), (895, 493)),
|
||||
((274, 624), (296, 646)),
|
||||
((153, 130), (153, 160)),
|
||||
((466, 214), (466, 769)),
|
||||
((474, 499), (686, 711)),
|
||||
((540, 428), (788, 676)),
|
||||
((858, 215), (959, 215)),
|
||||
((788, 91), (788, 410)),
|
||||
((552, 505), (988, 505)),
|
||||
((978, 312), (978, 202)),
|
||||
((108, 321), (616, 829)),
|
||||
((903, 359), (903, 770)),
|
||||
((480, 331), (480, 769)),
|
||||
((503, 842), (34, 842)),
|
||||
((613, 732), (323, 442)),
|
||||
((767, 949), (654, 949)),
|
||||
((514, 589), (386, 589)),
|
||||
((38, 554), (284, 308)),
|
||||
((689, 268), (689, 711)),
|
||||
((860, 66), (190, 736)),
|
||||
((253, 865), (622, 865)),
|
||||
((87, 658), (698, 47)),
|
||||
((506, 892), (829, 569)),
|
||||
((680, 910), (594, 824)),
|
||||
((824, 603), (958, 603)),
|
||||
((576, 802), (562, 802)),
|
||||
((67, 27), (67, 489)),
|
||||
((969, 461), (517, 913)),
|
||||
((674, 763), (674, 226)),
|
||||
((223, 955), (218, 955)),
|
||||
((147, 540), (569, 962)),
|
||||
((455, 703), (596, 703)),
|
||||
((746, 899), (746, 403)),
|
||||
((516, 476), (756, 476)),
|
||||
((897, 674), (373, 150)),
|
||||
((120, 395), (120, 49)),
|
||||
((722, 443), (722, 244)),
|
||||
((724, 924), (724, 39)),
|
||||
((809, 930), (109, 930)),
|
||||
((822, 816), (874, 816)),
|
||||
((796, 539), (895, 539)),
|
||||
((340, 88), (560, 88)),
|
||||
((223, 158), (593, 158)),
|
||||
((779, 977), (856, 900)),
|
||||
((617, 461), (973, 817)),
|
||||
((515, 62), (515, 140)),
|
||||
((12, 586), (724, 586)),
|
||||
((870, 50), (391, 50)),
|
||||
((308, 123), (308, 696)),
|
||||
((119, 164), (863, 908)),
|
||||
((755, 599), (448, 599)),
|
||||
((129, 526), (633, 526)),
|
||||
((478, 668), (102, 668)),
|
||||
((237, 637), (237, 743)),
|
||||
((270, 102), (72, 300)),
|
||||
((115, 470), (115, 427)),
|
||||
((948, 233), (948, 731)),
|
||||
((983, 135), (468, 650)),
|
||||
((748, 439), (748, 642)),
|
||||
((62, 862), (352, 572)),
|
||||
((765, 901), (660, 901)),
|
||||
((917, 807), (917, 587)),
|
||||
((55, 81), (116, 81)),
|
||||
((954, 972), (102, 120)),
|
||||
((340, 503), (294, 549)),
|
||||
((970, 661), (522, 213)),
|
||||
((618, 92), (618, 247)),
|
||||
((688, 965), (965, 965)),
|
||||
((94, 241), (94, 292)),
|
||||
((15, 132), (15, 492)),
|
||||
((979, 927), (488, 927)),
|
||||
((509, 26), (984, 26)),
|
||||
((840, 530), (840, 95)),
|
||||
((55, 956), (849, 162)),
|
||||
((297, 297), (297, 472)),
|
||||
((338, 780), (369, 780)),
|
||||
((487, 292), (37, 292)),
|
||||
((122, 117), (206, 201)),
|
||||
((66, 807), (564, 309)),
|
||||
((643, 242), (906, 242)),
|
||||
((909, 833), (909, 441)),
|
||||
((129, 128), (818, 817)),
|
||||
((406, 42), (406, 297)),
|
||||
((53, 20), (967, 934)),
|
||||
((235, 285), (601, 285)),
|
||||
((275, 625), (275, 539)),
|
||||
((199, 732), (430, 963)),
|
||||
((639, 187), (639, 265)),
|
||||
((549, 740), (549, 824)),
|
||||
((603, 140), (603, 748)),
|
||||
((35, 455), (176, 455)),
|
||||
((888, 611), (888, 271)),
|
||||
((134, 154), (484, 154)),
|
||||
((694, 820), (694, 814)),
|
||||
((535, 584), (187, 932)),
|
||||
((642, 510), (642, 249)),
|
||||
((191, 886), (268, 886)),
|
||||
((918, 353), (881, 390)),
|
||||
((977, 13), (343, 13)),
|
||||
((380, 243), (271, 134)),
|
||||
((410, 758), (410, 670)),
|
||||
((613, 551), (519, 645)),
|
||||
((963, 84), (124, 923)),
|
||||
((702, 252), (821, 252)),
|
||||
((405, 237), (405, 22)),
|
||||
((21, 139), (21, 510)),
|
||||
((548, 499), (132, 499)),
|
||||
((196, 104), (196, 680)),
|
||||
((739, 145), (476, 145)),
|
||||
((751, 746), (91, 746)),
|
||||
((975, 628), (975, 847)),
|
||||
((935, 520), (935, 450)),
|
||||
((803, 372), (803, 393)),
|
||||
((872, 77), (872, 373)),
|
||||
((339, 130), (339, 103)),
|
||||
((226, 886), (226, 45)),
|
||||
((794, 647), (794, 257)),
|
||||
((90, 922), (889, 123)),
|
||||
((615, 971), (615, 574)),
|
||||
((26, 278), (26, 719)),
|
||||
((838, 88), (806, 88)),
|
||||
((263, 691), (804, 150)),
|
||||
((309, 721), (910, 721)),
|
||||
((510, 496), (960, 946)),
|
||||
((195, 236), (46, 236)),
|
||||
((610, 143), (610, 610)),
|
||||
((891, 412), (891, 268)),
|
||||
((714, 21), (156, 579)),
|
||||
((320, 935), (320, 96)),
|
||||
((240, 782), (449, 782)),
|
||||
((754, 472), (48, 472)),
|
||||
((105, 481), (529, 57)),
|
||||
((451, 301), (451, 965)),
|
||||
((796, 638), (796, 185)),
|
||||
((908, 553), (771, 553)),
|
||||
((98, 543), (490, 935)),
|
||||
((481, 159), (762, 159)),
|
||||
((593, 527), (419, 353)),
|
||||
((86, 391), (216, 521)),
|
||||
((260, 716), (42, 716)),
|
||||
((734, 538), (375, 179)),
|
||||
((24, 974), (975, 23)),
|
||||
((402, 466), (787, 851)),
|
||||
((344, 409), (262, 327)),
|
||||
((803, 443), (685, 443)),
|
||||
((986, 152), (249, 152)),
|
||||
((125, 738), (90, 773)),
|
||||
((184, 772), (184, 746)),
|
||||
((729, 829), (729, 340)),
|
||||
((226, 527), (226, 375)),
|
||||
((936, 231), (222, 945)),
|
||||
((254, 333), (254, 167)),
|
||||
((451, 234), (451, 273)),
|
||||
((915, 790), (568, 443)),
|
||||
((869, 794), (504, 429)),
|
||||
((11, 878), (836, 53)),
|
||||
((821, 231), (522, 530)),
|
||||
((285, 419), (732, 866)),
|
||||
((191, 272), (191, 679)),
|
||||
((41, 651), (225, 651)),
|
||||
((30, 13), (879, 862)),
|
||||
((980, 488), (20, 488)),
|
||||
((27, 187), (27, 348)),
|
||||
((53, 238), (53, 514)),
|
||||
((778, 306), (379, 705)),
|
||||
((425, 399), (425, 60)),
|
||||
((162, 859), (57, 859)),
|
||||
((652, 926), (652, 589)),
|
||||
((962, 489), (555, 896)),
|
||||
((197, 378), (436, 617)),
|
||||
((310, 190), (310, 760)),
|
||||
((678, 20), (678, 713)),
|
||||
((390, 653), (985, 58)),
|
||||
((938, 351), (656, 69)),
|
||||
((881, 39), (18, 902)),
|
||||
((313, 681), (323, 681)),
|
||||
((910, 907), (288, 907)),
|
||||
((739, 977), (739, 132)),
|
||||
((856, 479), (154, 479)),
|
||||
((893, 785), (761, 785)),
|
||||
((405, 247), (405, 901)),
|
||||
((58, 933), (808, 183)),
|
||||
((643, 156), (676, 189)),
|
||||
((149, 773), (357, 773)),
|
||||
((479, 518), (434, 518)),
|
||||
((389, 518), (556, 685)),
|
||||
((858, 449), (533, 774)),
|
||||
((503, 133), (409, 133)),
|
||||
((340, 315), (219, 194)),
|
||||
((183, 701), (183, 242)),
|
||||
((810, 151), (195, 151)),
|
||||
((446, 686), (446, 912)),
|
||||
((968, 482), (49, 482)),
|
||||
((203, 20), (203, 667)),
|
||||
((493, 516), (647, 516)),
|
||||
((900, 91), (634, 91)),
|
||||
((660, 554), (119, 13)),
|
||||
((964, 864), (964, 919)),
|
||||
((871, 293), (344, 293)),
|
||||
((895, 258), (972, 258)),
|
||||
]
|
||||
|
||||
func run() {
|
||||
var minX = 0
|
||||
var maxX = 0
|
||||
var minY = 0
|
||||
var maxY = 0
|
||||
for line in input {
|
||||
minX = min(minX, line.0.x, line.1.x)
|
||||
maxX = max(maxX, line.0.x, line.1.x)
|
||||
minY = min(minY, line.0.y, line.1.y)
|
||||
maxY = max(maxY, line.0.y, line.1.y)
|
||||
}
|
||||
|
||||
var grid = Grid(minX: minX, minY: minY, maxX: maxX, maxY: maxY)
|
||||
for line in input { grid.line(line) }
|
||||
|
||||
|
||||
print(grid.grid.lazy.filter { $0 >= 2 }.count)
|
||||
|
||||
let data = CGDataProvider(dataInfo: nil, data: &grid.grid, size: grid.grid.count, releaseData: {_,_,_ in })
|
||||
let image = CGImage(width: maxX - minX, height: maxY - minY, bitsPerComponent: 8, bitsPerPixel: 8, bytesPerRow: maxX - minX, space: .init(name: CGColorSpace.linearGray)!, bitmapInfo: [], provider: data!, decode: nil, shouldInterpolate: false, intent: .defaultIntent)
|
||||
|
||||
let url = URL(fileURLWithPath: "/Users/sven/test.png")
|
||||
let dest = CGImageDestinationCreateWithURL(url as CFURL, UTType.png.identifier as CFString, 1, nil)
|
||||
CGImageDestinationAddImage(dest!, image!, nil)
|
||||
CGImageDestinationFinalize(dest!)
|
||||
}
|
||||
|
||||
struct Grid {
|
||||
let minX: Int
|
||||
let minY: Int
|
||||
let width: Int
|
||||
var grid: [UInt8]
|
||||
|
||||
init(minX: Int, minY: Int, maxX: Int, maxY: Int) {
|
||||
self.minX = minX
|
||||
self.minY = minY
|
||||
width = maxX - minX + 1
|
||||
let height = maxY - minY + 1
|
||||
|
||||
grid = Array(repeating: 0, count: width * height)
|
||||
}
|
||||
|
||||
subscript(x: Int, y:Int) -> UInt8 {
|
||||
get { grid[(y - minY) * width + x - minX] }
|
||||
set { grid[(y - minY) * width + x - minX] = newValue }
|
||||
}
|
||||
|
||||
mutating func line(_ line: (Point, Point)) {
|
||||
let ((minX, minY), (maxX, maxY)) = line
|
||||
|
||||
var x = minX
|
||||
var y = minY
|
||||
|
||||
let xStep = minX == maxX ? 0 : minX < maxX ? 1 : -1
|
||||
let yStep = minY == maxY ? 0 : minY < maxY ? 1 : -1
|
||||
|
||||
while true {
|
||||
self[x, y] += 1
|
||||
if x == maxX && y == maxY {
|
||||
break
|
||||
}
|
||||
x += xStep
|
||||
y += yStep
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
typealias Point = (x: Int, y: Int)
|
||||
|
||||
static func main() {
|
||||
Self().run()
|
||||
}
|
||||
}
|
36
day6.swift
Normal file
36
day6.swift
Normal file
|
@ -0,0 +1,36 @@
|
|||
@main
|
||||
struct Day6 {
|
||||
let input = [3,3,2,1,4,1,1,2,3,1,1,2,1,2,1,1,1,1,1,1,4,1,1,5,2,1,1,2,1,1,1,3,5,1,5,5,1,1,1,1,3,1,1,3,2,1,1,1,1,1,1,4,1,1,1,1,1,1,1,4,1,3,3,1,1,3,1,3,1,2,1,3,1,1,4,1,2,4,4,5,1,1,1,1,1,1,4,1,5,1,1,5,1,1,3,3,1,3,2,5,2,4,1,4,1,2,4,5,1,1,5,1,1,1,4,1,1,5,2,1,1,5,1,1,1,5,1,1,1,1,1,3,1,5,3,2,1,1,2,2,1,2,1,1,5,1,1,4,5,1,4,3,1,1,1,1,1,1,5,1,1,1,5,2,1,1,1,5,1,1,1,4,4,2,1,1,1,1,1,1,1,3,1,1,4,4,1,4,1,1,5,3,1,1,1,5,2,2,4,2,1,1,3,1,5,5,1,1,1,4,1,5,1,1,1,4,3,3,3,1,3,1,5,1,4,2,1,1,5,1,1,1,5,5,1,1,2,1,1,1,3,1,1,1,2,3,1,2,2,3,1,3,1,1,4,1,1,2,1,1,1,1,3,5,1,1,2,1,1,1,4,1,1,1,1,1,2,4,1,1,5,3,1,1,1,2,2,2,1,5,1,3,5,3,1,1,4,1,1,4]
|
||||
|
||||
var population: [Int] = .init(repeating: 0, count: 9)
|
||||
|
||||
func step() -> [Int] {
|
||||
var result = Array(repeating: 0, count: 9)
|
||||
for (age, count) in population.enumerated() {
|
||||
if age == 0 {
|
||||
result[6] += count
|
||||
result[8] += count
|
||||
} else {
|
||||
result[age - 1] += count
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
mutating func run() {
|
||||
for age in input {
|
||||
population[age] += 1
|
||||
}
|
||||
|
||||
for day in 0..<256 {
|
||||
population = step()
|
||||
}
|
||||
|
||||
print(population.reduce(0) { $0 + $1 })
|
||||
}
|
||||
|
||||
static func main() {
|
||||
var x = Self()
|
||||
x.run()
|
||||
}
|
||||
}
|
267
day8part2.swift
Normal file
267
day8part2.swift
Normal file
|
@ -0,0 +1,267 @@
|
|||
|
||||
@main
|
||||
struct Day8Part2 {
|
||||
|
||||
mutating func run() {
|
||||
var sum = 0
|
||||
|
||||
for line in input.split(separator: "\n") {
|
||||
let parts = line.split(separator: " ")
|
||||
.filter { $0 != "|" }
|
||||
.map { Set($0) }
|
||||
|
||||
let mapping = self.findMapping(parts[0..<10])
|
||||
sum += self.decode(parts[10...], with: mapping)
|
||||
}
|
||||
|
||||
print(sum)
|
||||
}
|
||||
|
||||
func findMapping(_ input: ArraySlice<Set<Character>>) -> [String: Int] {
|
||||
var result: [String: Int] = [:]
|
||||
var input = input
|
||||
|
||||
let one = input.removeFirst { $0.count == 2 }!
|
||||
let seven = input.removeFirst { $0.count == 3 }!
|
||||
let four = input.removeFirst { $0.count == 4 }!
|
||||
|
||||
let three = input.removeFirst { $0.count == 5 && $0.isSuperset(of: one) }!
|
||||
let nine = input.removeFirst { $0.count == 6 && $0.isSuperset(of: three) }!
|
||||
|
||||
let five = input.removeFirst { $0.count == 5 && $0.subtracting(nine).isEmpty }!
|
||||
let two = input.removeFirst { $0.count == 5 }!
|
||||
|
||||
let zero = input.removeFirst { $0.count == 6 && $0.subtracting(one).count == 4 }!
|
||||
let six = input.removeFirst { $0.count == 6 }!
|
||||
|
||||
result[String(zero.sorted())] = 0
|
||||
result[String(one.sorted())] = 1
|
||||
result[String(two.sorted())] = 2
|
||||
result[String(three.sorted())] = 3
|
||||
result[String(four.sorted())] = 4
|
||||
result[String(five.sorted())] = 5
|
||||
result[String(six.sorted())] = 6
|
||||
result[String(seven.sorted())] = 7
|
||||
result["abcdefg"] = 8
|
||||
result[String(nine.sorted())] = 9
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
func decode(_ input: ArraySlice<Set<Character>>, with mapping: [String: Int]) -> Int {
|
||||
var result = 0
|
||||
for digit in input {
|
||||
result = result * 10 + mapping[String(digit.sorted())]!
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
static func main() {
|
||||
var result = Self()
|
||||
result.run()
|
||||
}
|
||||
|
||||
let input = """
|
||||
fgcae ebafc cabdef eg abecfg abgfed feg gafdc bceg ebgcadf | defagbc faecg cfdag gecb
|
||||
eagd cad fgadbc aefdcg dcebfg fcegd cbeaf ad dbgfeca defca | cfdeg gdcabf fcgde afgced
|
||||
gfdeca aeb eb fbdag eafdc adfbe cefdab bdaegcf efbc ecadgb | eb dbafe eab faecd
|
||||
facbdge efdg gcafd daegc caegb aecfdb ade ed gafbdc dgfeac | de abcdef faedcg dfgca
|
||||
dcaegbf bc dcgeab cbgad cebg cdfaeb fbadg acdge cefdga cdb | gdcfae gbec gdace cgadfe
|
||||
ceagfbd fbaeg fadge fbegad abgecf dafcg ed edab ged dfcbeg | gebfa de gbafec ed
|
||||
acedbf adfbg cgafedb geac cgb befcgd bcgaf bfgace cg bfeac | bcdfeg fecba cafgeb bgdfa
|
||||
egadc cea ac agbcedf cgab bgcade fbcaed eadfbg fegdc ebdag | fdecabg fcged cdbage efgdab
|
||||
cbfge gdc cdea efdag dc cdfeg gfbcad gcdeaf cdeagbf egfadb | dfcge egcfd fcdbag dc
|
||||
gaedb fbced gcdbef cge gc decgb dcbgfea cgfb cgdfea fbcade | fdegbac fecbd ecg degba
|
||||
geaf bcfedg agbcd bfeagd dgfbe cbdaef beacdfg abe agebd ea | fbecdg geaf gebfad adgbc
|
||||
bed afgebd adecf bafgedc dbca cfegb becdf fabdce bd gcfdea | gfdaeb ebfgad dbefc cbda
|
||||
gacfebd ag bedfca agbfde egfcab dfga degab fbade bag bdecg | dgaf abcfed agb bfecag
|
||||
afebg afdeg gcbe acebdf cfbage cafeb gab decgabf bg gcfdba | gb caebf abgef acfebd
|
||||
efdab fabdgce gcbfa eg gacbfe beg ecag beafg dfabcg bgecfd | bge fgdcbe gcfdba ebdaf
|
||||
aecbd bdagef gd bfega aefgcbd gfde gfdcab dbg edgba febagc | dg dagfbc dgfe eabdgf
|
||||
gdfba egfacbd gdcefa baf gcba fdagcb dgfac ab dcfeba ebgdf | dcfag bfa gafcd cbag
|
||||
afbe bdagc cedfb defcab ebfdgac gfedbc cbfad af adgcfe adf | dafbc dfbac fdcegb gadcb
|
||||
fcgedb ca fdcage cagdbef ceab acedfb fdbce cafdb cda afgbd | ac dcafb efgdac ebcfda
|
||||
fbad gbcda dcefgb cfeadg dgbcaf bcafdeg ad gcabe adc dfbcg | gbcdef bcfdg cgbfd bfadgc
|
||||
afcgeb bedag bdecafg agb bedfga fdagce bg bgfd dfgea cdabe | badge cagdfe efdag afegbd
|
||||
gfed dcaef ge bafdce daceg acebfg cefadg egc ecdabfg gacdb | bcgad bcegaf agecd degcafb
|
||||
deacb adcge ab acb fbdce faedbgc fgadec gabd deabgc ecbfag | dfbec ab cbagfe bcfgae
|
||||
gcabfde ecf cbdeg bacgf fedg ecfgb gfedcb fcaedb cebdag fe | dbcegf bcgdfe gfde defg
|
||||
daefb bfg gedafb fabge dbafec cfega bdga cgbdfe gb gbacedf | aecfg bcedaf begdcf dgba
|
||||
bagce bf bdacfeg efbg fcb cefab gbfadc cafebg ecdfa bacdge | fegb cegba bagce efbg
|
||||
becag cfeg cefgbad fbace gfeacb acdegb bef ef adbcf fdabge | ef bdfac cbegad gbeac
|
||||
egb afcbe fbaeg eabgfdc gcab gb gfdea fgbecd bcdafe gafbec | fcdgeb edcgbfa gbe fgeba
|
||||
dga caebd ecdag cegfd abdfce dafbge ecbgda bcdgefa ga agbc | afdbec ecfdab gdaec gad
|
||||
fc gbdefc cfe ebdaf fcbeda gbafde edacg bfcdgae dacef cabf | decgfba cdbefg cf ecdabf
|
||||
febgd dafgbc caed cgd ceadgf fbecga dcgfe aegfc gbedfca cd | dgfeb fgced dcafebg agdfce
|
||||
ecdafgb bgade bgd fabd gbaef bd egadbf ceadg cfbgea dgbfec | edagc bdage bfda dbgae
|
||||
cgeba aefgcd dfceagb dc ced facbed cdfb dbaec adfeb fgedba | fbdea bgcae efbda fcdeag
|
||||
caegbf dcfga afcedgb afgdcb fcedag ab edbcg dbfa gdcab abg | bag cbdag agb ab
|
||||
gadfecb befc fgdbea cf fedagc fac bcgfa agbfe adgcb feagcb | gbcda cgbad bcgfa cf
|
||||
dae aefcb dgabec dacfg afebdc ebfd afecgb aedcf fbcagde ed | ecabfgd bedf bcadef egdacfb
|
||||
abcf fcega fdgce fegbda eafdcgb ac gabecd gbfae beagfc eca | edbgca edbfga cae gface
|
||||
bgedcf afcdbg ag gcbaef fcedgab afgdb cfgbd befda acdg agf | fdbga ceadbfg egfbac fag
|
||||
bad edafc bdeg abcgde ecafgbd gfadcb bgaec db edcba geafcb | cdafe fdcabg cdfageb dbge
|
||||
geb bgcf agfcde gb befag gfbcae defab gabdec eacfg gabecfd | afbedgc gceabf abgef egacf
|
||||
fdeac acg cfegda cbeadf fegdbca ag acefg adge bfdgca gbcfe | gecdaf efgca cgbafd cfgeb
|
||||
begdf bdfgc ebcf adfcg cdegbf dgeafb cbg cb bfeagdc gbdcea | acgedb fagdbe bgfde dfgac
|
||||
afcgdb aedc bedgf egafcd afdge gecaf fcgebda gda da ceabfg | gedbf gacfe adg agdef
|
||||
bdeafg acgebdf dgcfa fa cafe dgfbc gaf edagfc cgabde agedc | fadbge bdgfcea dgcefa cgeda
|
||||
gacfbde defag cbgef gbca efadcb afcbeg cgbdfe ba eba gefab | fegab abe ebfcgd fbgae
|
||||
gfbdec fbcade cabdegf ebdg bfd dcfgb cadgf gebcf db fcabge | eacdgfb bdge ebdg ecafdb
|
||||
egcfba fdcae fcdaeb gcfdae fabd ba cdeab fcdbaeg eba decbg | cabed facbed cbade dfcea
|
||||
agdfe acfdeg fcdbeg dgf gdaec df cadf ceagbfd abgfe gbdaec | bgcdef abfge gbefcd df
|
||||
dgebf afgdb bfa fcbade af dcafgb agcf gcbda dabgecf gadecb | dbcga abcdge fadgbce eagcbd
|
||||
dbcga bea egacdf dageb be efbd abgfce gadfe fcbegad aebfdg | eba be bdage bedga
|
||||
gcbd egbdafc fgc fbgedc gc aedbfg cefgb fedbg cfaegd efabc | bface egfbc bgdacfe gc
|
||||
fdgae dc ced gbcd gbcefd decfba becfg ecfabg cgfde gbcadfe | edbcfg cd cafgbe cdegbf
|
||||
geadcf efg gadef fg fecad acbgfe dagecbf dcgf gadbe afbdce | edafcg bgcfade gfdc abedg
|
||||
edcba ecgdb aedbcf aebf dabfc fdacge badgfc ae ead gfcbade | gcebdaf degbc ebfadc efdcba
|
||||
caedbg dbgec dcbf ecgdbf cgdef dgf bgaedcf egacf afebgd fd | cdfbeg ecfbgda gcbfed cbgedf
|
||||
bdag acdeb ecgdb egbcfa fcdbega gb dbecag cbdafe ebg gdcef | bedgc abdfcge efagcb cdgef
|
||||
bfade bfdga dfbgec cagbfd dfgacbe gba gacf ag gdcbf abgedc | cfag abdcge ebafd abefd
|
||||
agcdef bcfda bdgca aebdfcg eagdc gb dbg gbea cedagb bfgdec | dfabgec eafdgc acdge gdecab
|
||||
ebacdfg cgbfad egdbc bdgfa daef bae gabed febadg ae gacbef | fagdb daebgf fgdab bea
|
||||
dcgbf cbedf degc bgc fcgdbea fbadg cfdgbe gc efacgb fdbace | edfcb cfeabg cg edbacf
|
||||
bcdagfe dfacb cbfdge bgcdf fdgeac acd agbd acbef da dcgfba | cbgdf dgab ad gbdcaf
|
||||
edgfbca gbe be ceba bdaecg gefcd dbagc egbadf dcegb dfgabc | gcfde gfceabd gfbcad eagfdb
|
||||
dfcbg fcdga efgb gecbfd gecbda dfbgaec bedfc dgb bfadce bg | dbcgf bfge dacgf dfgcbe
|
||||
cga ebdgaf bfdag cbgfe bfadgc gbfeadc ac cagfb cdba cgadef | bfdag agedcf aegcbfd gcfab
|
||||
gcead gfdbec cbdge gabfce eb dfgcba ecfdgab befd dgcbf ebg | cdgae fbdegc bcdge gcdfb
|
||||
da ebgfda fcdeagb acgbfe gedba dbegc agdecf dae bafeg bfda | gdafec fegba edfbga aed
|
||||
fbagec gdfba bcg gebcfd cbafg bcdfgea ebac cefag faedcg bc | gfbac baegcfd fabegc dgeacbf
|
||||
dfbeag fabdg fdbe abdeg eb dcega gcefba cfdbag dgcfbae geb | cgbafd bdef dcage eb
|
||||
abdcfe gba dagf cagbefd fdbea bfega ag dafbge dcbeag gfceb | afbcde ecgfb dfbega bdgeca
|
||||
dg dge gdbc cfdae bcgae cbdage abgfde cfedagb cdgae eacgbf | eabgc bgeac bcdg cagbe
|
||||
bfd dgaeb gcabde fd bfgce dgfa dbefg gadbfce dbafge fabcde | edfcba efbcg df bdf
|
||||
gcbfd agbecd fedc edcbfg fdb eadfbg bcfag fd gedcb gbacdef | fgbac bdagfec gfbdaec aegbdc
|
||||
cgbdfe ce acedg adcfeg bcfegad fcea ceg abdeg afbdcg fcgda | ecg aefdcg dacge ec
|
||||
egbdfca efacb agcdbe cbaed bdafgc dfaecg debg bd bda agced | geadbc efbca gabfdc bd
|
||||
edcfb bfgecd ecabfd eca abcd fgeab fedcag abfedgc ac bfeca | bgfae eca cdgfeb bfaec
|
||||
cadef cebdga ebd bacdfe dagfec dbfa fcebg ecbgfad db fdecb | befcd acgdeb abdf dbfa
|
||||
gbfecda bfd cdagb fbdacg fgdbec gbaf cbadf aefdc eadcgb bf | adcgb dfbca agbf dafcb
|
||||
abedg acbgf fd gaefcb cagbdef cdaf dcbfeg bdagf dgcbfa bfd | gbadcef df fadgb gabcdf
|
||||
fbgadc dbcfg dcega cgdfe cfedbg caefgb ef gef gfaebcd fedb | fcedg febd gbcdfa cdgfab
|
||||
bg adgb fcaedbg cgfda fcbae bcg dfacge fgcdba decgfb bcagf | cgafb dbfcage bdgcfe dbga
|
||||
ed afbdg acefb aecbfg cfdabeg gedfcb fcdabe ecda def ebdfa | gbafd gedfcb dfegcb dfgba
|
||||
gcdfae efgdb abdfcg fde gdabf dbcegfa fedgab efab ef ebdcg | eafb gbfda gacedf cbdge
|
||||
edagfc gfaecbd bgced cbegfd cb gefdc badgfc bdc efbc adegb | dgbec cegafd dcbgef dgecb
|
||||
gedcab beg eg cafgb fbegc gdfe bdgfec gabcedf bdafce bcdfe | gcefb afcbed ge gdfe
|
||||
fdbagc cdgefab edacf ceba ea cfbaed ecfdg abfegd adfbc eda | ea beadfc abcgdef ecdgf
|
||||
fbc gfbacd fecda cbdfa dbgf dceabg gbcdfea efbgac cdabg bf | gbdf agbced gaedbc gfdb
|
||||
aegcb bfgecd fbegad fcagdbe dfgce fcbd gdeacf fb bgf bgfce | bgafedc gcdaef dgfcbe eadgcf
|
||||
def dbce agdfeb ed fdgbcea dgcfb aegfc dfgbac gecfd cdfgbe | cdfegb ed cdgfaeb ebdc
|
||||
ecbfad afdb eagbfc caebgdf edfcb dgfec cgdbae bd bcafe bdc | bfacegd fbdcae dbc bgfdcea
|
||||
dfgba eg cfbead gde bfedgc dceab cabfdge gdbae aecg aedgcb | egd adebg gde debcfa
|
||||
cadfb egfb afgbc adbegc ecgadf ecagb fga ecfgab bgacfde fg | afcbg cgfba gf dacbge
|
||||
cegbf dec efcdg facdge dfae dcbafge ed adgfc fdbagc cgaebd | dce gbcfe afcdgbe dcgabf
|
||||
cfabe fa eabgfc cgaf fba gfbce dcfbge edbgcfa efbadg acebd | cfebga bfa fedcagb abfce
|
||||
acdfb dbagf afcebgd beag afgedb gfdea gbd fgdcbe gb cdeagf | dafge gafed gfacde gb
|
||||
gdfeac dfgce ebfadcg edagc dacf baegdc fd gdf egcfb dabgef | degfbac cfdeg daebgf cdeagb
|
||||
fcgabe ebcd ecfdg dabcgf gfecabd cfd ebcfg dc bcfegd adefg | agedf cd bcefg dc
|
||||
cbaeg bcfea fb feb gfaceb gdfbec dagbec gfab deacf bgcaedf | acbfge bf afgb efb
|
||||
egdba cadgfbe efadbg cg begc bfgdca caegd abcegd dcg acdfe | fbegcad bceg gcd cdgebaf
|
||||
agbcd dafcgb cfdg ceadb fdgeba eafbcg gfdab gbc bgdcafe cg | gfadcbe fbagd decba gc
|
||||
gfbec adgc dge egdcfa abgfde abgdfce dg eacfdb fdaec gdfce | fecgd gd fgcbe acdef
|
||||
fdbceg bfedc af fegcad cbdag daf efab dabcef fbeadgc cbfad | fcabd cbfad gcfdbe gadbc
|
||||
ebgac fabdeg bedca cg aegdcfb geacbf ceg efgba facg fbedcg | gecdfb aebfg fagc ceg
|
||||
eagb dcgeb ba abd cbeagd cdgafb fecbdga fgedcb dacfe dacbe | bdfeacg cadgbf bgedfc fcdae
|
||||
dbac cfgae cbfgde ba bga gcfbad dcfebga gcdbf feagbd cgbaf | cgafb fagbdc dcfbg afgebd
|
||||
adbgfe fgb egdafc cbafd dfegbc edgafbc egfcd cegb gfcdb gb | bg fdacge efcadg egdfba
|
||||
agfbe cgaefdb gbdf edagb afg cdgafe gfedab fg egcdba fabec | fcbdega fag agf agf
|
||||
cae edabfc cdfega ca cfba gadeb fdecb ecagfbd cbgdef acdeb | facdeb fgecad bfadce efcgbad
|
||||
facb dbfec dceabf efgcd cb aecfbgd dgfbae eafdb ebdagc bcd | bfedc cdegab cbdfe adefb
|
||||
fecbga badgc dga bfgadec dg geacb cgedba dfebag gcde fcabd | decg gda baceg gd
|
||||
gecbd gcbdfea cbfg bg bge egbcdf dcbef beafdc cdeag bfgeda | agcde dceag gfabde beg
|
||||
gefba gacfbe facdeg cg cgab gfc efbdcag cfgeb cefbd afegbd | gfc afbge dafegb aebcgf
|
||||
egd aebfgd gefc ge gedbfca bdcfe dfcegb gecdb edbacf cdbag | dacbg edcfbg bcdfe ge
|
||||
df ebdga gcdefa cfbd bgdfa afgcb dfeagbc bfacgd fgd facebg | gaebd gecbaf fdcb dfbag
|
||||
fag cegfdab cadebg dabcgf abefg eafc ecafgb ebacg fbdge fa | ebfag dbcgfae gbecad fdbgac
|
||||
gecbd gefa gfc fabdcg bfaecd ecgafbd fg befgc efabc gecbfa | gfae gcf egbdafc edgbc
|
||||
bfgae fcebag fdbe fd fedag adgfbc fdbgea ecagd agcbfed fad | fgabe dfeb ebfd gefba
|
||||
ecdgfb afge bdage ebcda eg abdgef fgadb gabcfd dge bcdagef | gdebfa eg agfbdec afeg
|
||||
dbc acefd cegadbf fbcde afcb fdcaeg bc acdbge febdac debfg | ceafd caefd gfbaced dcb
|
||||
fecgb fgacd gdcefba de gbafce febd gecfd edc fecdbg ecbgda | becdfg ed becgad gcdeba
|
||||
agfdbe fbac bcd edacfb bgecfd cb cdeba cfgdeab acged edfab | cb dbc adbce bdfae
|
||||
dgacef bdfa ecgbf ab fegba dgafe efdbgca abg acebdg afbdge | gefda ecgafd ecfbg begcad
|
||||
gbfcea bgfa afdebc aegdcb af bgcdfea bgeac gecdf afc fgace | bfgecad fca afc abfg
|
||||
cfe dgcfe fdagcb gebdc egfa gbcdefa dcebfa fe agdfc fgaedc | dfgac fe fce fcdbega
|
||||
fecgab gcbdef cbaefgd dfgbe dgcfe eb bfe dbfga edbc acfegd | fbdeg fdgeca agefbc egcfd
|
||||
aecd bac dfacbe cafdb ac gefcab gfcdbe fcbde gbdaf cbdegaf | gcdbefa fbgcae ecad fagecb
|
||||
eagbf cagedf geafdbc fdgbce adefb aecfd adcb deb faecbd bd | ebd deabf fadcge cdagfe
|
||||
gadefcb bfcga eadcgb egdbfc deag ecg edabc acedbf eg abgce | gdea bagce gce gce
|
||||
agcfe bec gecab gbeda facb dbfgec fcegab gfacde gfdaceb cb | cb cefdgb cadefgb bc
|
||||
fdgb df egabcf fegda cedga fegab efdbac def cgdefba gafedb | facdbe bafceg agedf fdebga
|
||||
fdaecg dbcafg abfgec dc caefg cedg aecfd abdgfce eadbf fcd | cgefab gbfacd fbegac fabecg
|
||||
dfecabg bcfeag gdafce dagbfc cdefb dca gafbc dbag da bcadf | dca bagfce cbfda cdagbf
|
||||
dabfgec febadg gbcdae gfbe adebf ef cabdf edfgca ebgda eaf | gfacbed abgced egdfca egfb
|
||||
cfdea dc fdagebc fegcbd agdc gcfade fcabe cfd efdgba gfead | bdfcge agdc dgefa cfd
|
||||
gbfca febadcg bc bdegcf beca begaf gabedf cgfbae cgfad cbg | bcg dcaefgb dfgceb afebdg
|
||||
cg cgbf bedcg fcagde adefbcg efdgcb ebacd cgd edbfg egdafb | cfgedb bgcf acegdf cfgb
|
||||
bfad adcgbe faceg fagbdc df afdgc efcbdag dfbegc gfd badcg | gfd abgcd fgd abfd
|
||||
bcadgf cgdfb adgcb gf gafc dcfeabg bdagce dgf dfbega cebdf | adcbfg gfca fdcbe gfac
|
||||
daebf fcabgde bgdcef gab ga edbcga afcg ebfga aefbgc egbcf | ebcfg ebcgfa fcgebd agcf
|
||||
gedab fg afgecb cfgd feg cfabed befdc fgdcbe gdceafb befgd | ecafbg ecfbd febdc gf
|
||||
gcbadf ce gfcdb fec feabd gbecdf dbcfage febdc agcdfe egbc | bafed gcbe gefcbd egcb
|
||||
cbdfg gbcafd feb gaecf gcbfe gfbdae be fcgabde bdgcef becd | abgedf gdfebc aedgfb fbe
|
||||
edacgbf fbdae edgac bg gab bagdec dagfce fadbgc cebg bgdea | aedgb bg cebg adcge
|
||||
bda gbfea gedcab gfbceda bgdfa bfcdg febcdg bagcfd cfad da | dbecag bgfdc gdbfa facd
|
||||
ceabd dabfe acgde bc fbca cgbfde febgda dfecagb ebafdc bdc | cbdae dbfea fgdceb gbfedc
|
||||
acg fadbgce cfgdeb dbgce efdca ag dbga cagbef egacd cdgbea | gdecabf gcbfea ecbdg gac
|
||||
dfgacb ged egfdab efcgbda gcefbd debga ebadc ge aegf gfdab | cdfgab cdafgb bfcgda ge
|
||||
gdbeca bcfde eafg cefbgad dgafcb ge degfb adefbg dgfba bge | bdfeg begdf ebfadg eabdfgc
|
||||
cfbdgae gbaec bagfcd gfcba dcaeg bacfeg dbeacf bec efgb eb | ceb egcab cagfb dgcae
|
||||
fdcagb gdaecb fcadg bcdgaef gd dfcea gbcaf aecgfb cgd dgbf | gfadc gfdb badgfc gbfca
|
||||
bcafed defgcab fgcb cfbae cagde agebfc gbcae gbe gadefb gb | bg gfcaeb bg aedgc
|
||||
bcfadeg gbfd eacfbd gdafe afebg bafegd geafcd gebca fb bfa | agdefc eafbdg fgead gedaf
|
||||
fcgeabd dgeaf ebgfad gceafb geadc ac aec ebcdg cafd adgefc | gbfadec egcbd acfd dgabef
|
||||
eac fbdgec ea eadb cbaeg agfdecb eafdgc dcgbe bcfga adcbeg | aec abde eac ea
|
||||
cedb gcadbe ed edgfbac fbega abdge gacdb fdacgb dcefag aed | cdagb gbcafd gdefac gedafc
|
||||
cae agfbec ae begcd feab fadgbc ecfadg ecabg cdgbefa cabfg | ecgba afcgb efba dgeafc
|
||||
fecgabd badf efadg abedfg fea fdgceb fedgb aebfgc af gdcae | ebfgca fae fea af
|
||||
bgedac gbfae dcbefg acbf fb gaedf cagedbf aebgc gebfca fgb | aedgf fdgea bgfae bfdgeac
|
||||
bagcfe eadcb gb facegdb bgc fdcag efbcad beadgc bgadc ebgd | gbc fbcage becad gbfcae
|
||||
cagde gbca dcgbea gc efcad dbgfea dfgecb caedbfg adgbe cdg | gc egdfbc bcga cg
|
||||
efgcbd aebgcd dfe eadfb abged abdcefg bacfd ef bdfaeg faeg | fgae cgdaeb adefb afcbd
|
||||
cgbfea gcbda gefdcb eadf febag bdf fd febgad fadbegc bgadf | gebcfd fgdbea dfb dbf
|
||||
dg cdgfe gecfad dfbce bgefda fgd eafcg efcbag dgac bcdagfe | afdebg gfd aecgf gfcea
|
||||
edfga cgefda gcdbe fbae ab egdabf cfgbda deabg bad adefcgb | ebadg agdeb fbae gbdae
|
||||
gbdcfa gbade ebgac ecbfa adfgbec badecf bgc gcef fbgace gc | gc fcge gacefdb ebgca
|
||||
acefgd ebgaf egfda egcd bgfaecd dgcfa ed abcefd efd abdgcf | def ebgaf fed befcda
|
||||
fecag cag cfagbd agfcbde fabec eabg fdcge cgbfea fadebc ag | cfgbda dfgbeca efdcg dfgcaeb
|
||||
bgecfda ecdag dgfcbe bdgac adbgf afgdbe bfac gdcabf cbd bc | bc acbgefd fagcdb fcba
|
||||
ba efacg cfbgde cfdbg bacgf bgfdea abf bcad cfbeadg bgcfad | bcdgef fdgaeb ab cagfe
|
||||
cbdaf bafdgc eacbd fd dcf fcabg bcdfeg bedgcfa dgfa agbecf | dfga bgfac df agdf
|
||||
edcabf cadbf bgfdcea bgcfad bgcde dfg fg bdfgc cgadfe abfg | adfecg gfbcd acgdfeb cbgdaf
|
||||
badgfc dg bagcde bceda dbcfea beafg debag adg fcbadeg edgc | gebda dcagbf dceba egfab
|
||||
edcf dacfbg dbcefag fbd df bdegfc ebdagc bgfea begcd bfedg | dgebc cbgde dgfbac bdf
|
||||
bdcfg acegfb acebfd fdcag egadcf da daf cgeaf edag bafcegd | gdcaf fgaec bafdec fdaecb
|
||||
cagefd fde gdfba fcgaedb abefd ef dafbeg ebfg afcbgd ebdca | egdbfa bceda dfabg bdace
|
||||
fcgb gcdae bg gfadeb cbfegd fcabed bdg gcdbe fdcbe adbefcg | dgb gfbdec befdc gfbc
|
||||
fabde bgfde bgecda cedgb gf cabfdeg ebfdgc fgbeac fcdg gfb | fgbde efdgb edgbc afedb
|
||||
ebacf cedfab fde eabfd fd baecgf bagde agdebfc dfcb egfadc | ebfdgac acdegf abdefc ebfad
|
||||
gdcb cd cfgae cgbedf fbegd efgdc fadcbe gfeacdb dce dfagbe | gbcd cde gacfe gefdbc
|
||||
geb afedgb bfegca bgade eg dgef gadbc eafdb afebdcg fcbead | cagbd defcba dbafec geafcb
|
||||
fgbdc gbfade gba gefa dbafg cbadge bfgecda ga edbafc dfabe | afbdeg dgfba bgdfa dcfgb
|
||||
agef badce ef febad cabfdg gdfab cbgeafd egfbdc defgba fbe | abefd geaf gafdbe ebcad
|
||||
gd gad bfdg gecba fedabcg fcgeda aedfbc adebf agbdfe dgeab | ebcdaf agd gcfbdae egacb
|
||||
cedbfa ba cgbfa abf dfegac cafeg gabe befgca ebdfcag cbfdg | fab aegcf faecbd fdcebga
|
||||
daefg febdga aegfdbc efgdca eafb bge eb agbdec febgd gbdfc | gbcfd edbfg egb bacegd
|
||||
fbdecg bdafec cfaeb gedac def dceaf abfd fd gfecba gfdaecb | ebfac bdfa gbcdef fd
|
||||
fcbga cbdfeag bafgce fdacg dc fcd fcgbad fadge efcdgb cdab | gaefcb bafegcd acdb abcgf
|
||||
ecgabd acgdf abge ae bcfead fgdaceb ead daegc bcdefg gcbed | egba gaecd cgadbe gdbce
|
||||
aegfbc gf afebdc agebdfc ebcdf feg dcefg bdfg dcgea bgedcf | edbfcg fdgb bdgafce febgcd
|
||||
dcg bcdefa dbfceg fdeacg acbeg bfeagcd cfdae dg dfag agdec | dfcgea dg egdca edagc
|
||||
agcfeb fagbed fdbceg bag gebfd afgd agbfcde acbed ag badeg | cbdea fcedgb gfebac abcegf
|
||||
adbegfc fgdace cadge afcg ebdfca ebgad eac bfgdce cgefd ca | acged fcedg ebagd dgacefb
|
||||
gfeadb gfeab bcfa agebcfd aebgfc fecgbd efc fc gadec egcfa | fgbace fc debgcf afgceb
|
||||
bacg ab cfgbd bfadge acfed fgdecb agedcbf fcabgd bfa dbafc | gfdcb cbga abcg afecbdg
|
||||
ge beagc cfgabd bgaced bgcda fbadgec age ecdagf egbd fcbae | aeg gedbac cadfeg fbgcda
|
||||
dgbafe abfdgec gdf fd agebcf gadec dfcgba befd edfga aebfg | abcgefd dagec dfg df
|
||||
edfcga bcegd baeg cbgdae agdbc gce acgdebf eg gfadbc cefbd | dcbeg bgedc cedbg edcbg
|
||||
adfbe dg cagef dfgb gdbeca aefdg gda edcbaf fdgeba gdecbfa | cdabef eafbd bafcegd dg
|
||||
cd edcbfg dbage fcaebdg facd bgcfea afbedc afbec dbc adecb | adegb bcefag abegd cbgedf
|
||||
gdcbf da ecgbfda adc adgb bagcfd dfbcea egfac dfbceg gdacf | gdba cfdbg adbfec fcaeg
|
||||
bcg bc gdcbae dbca abfgde gdeba ebfacdg egcba faceg dgfbce | geadb badecg ecbfgd baecg
|
||||
"""
|
||||
}
|
186
day9.swift
Normal file
186
day9.swift
Normal file
|
@ -0,0 +1,186 @@
|
|||
@main
|
||||
struct Day9: Puzzle {
|
||||
|
||||
let matrix = Self.input.compactMap { $0.wholeNumberValue }
|
||||
let width = 100
|
||||
let height = 100
|
||||
|
||||
subscript(x: Int, y: Int) -> Int {
|
||||
get {
|
||||
return matrix[x + width * y]
|
||||
}
|
||||
}
|
||||
|
||||
func isMinimum(x: Int, y: Int) -> Bool {
|
||||
let value = self[x, y]
|
||||
let smallerLeft = x == 0 || self[x - 1, y] > value
|
||||
let smallerRight = x == width - 1 || self[x + 1, y] > value
|
||||
let smallerTop = y == 0 || self[x, y - 1] > value
|
||||
let smallerBottom = y == height - 1 || self[x, y + 1] > value
|
||||
|
||||
return smallerLeft && smallerRight && smallerTop && smallerBottom
|
||||
}
|
||||
|
||||
func run() {
|
||||
var lowPoints: [(Int, Int)] = []
|
||||
var riskSum = 0
|
||||
for y in 0..<height {
|
||||
for x in 0..<width {
|
||||
if isMinimum(x: x, y: y) {
|
||||
riskSum += self[x,y] + 1
|
||||
lowPoints.append((x,y))
|
||||
}
|
||||
}
|
||||
}
|
||||
print("Part 1:", riskSum)
|
||||
|
||||
let basins = lowPoints.map { basinSize(x: $0.0, y: $0.1) }
|
||||
.sorted(by: { $0 > $1 })
|
||||
.prefix(3)
|
||||
.reduce(1, *)
|
||||
|
||||
print("Part 2:", basins)
|
||||
}
|
||||
|
||||
func basinSize(x: Int, y: Int) -> Int {
|
||||
basinAt(Point(x: x, y: y)).count
|
||||
}
|
||||
|
||||
subscript(point: Point) -> Int {
|
||||
self[point.x, point.y]
|
||||
}
|
||||
|
||||
func basinAt(_ p: Point) -> Set<Point> {
|
||||
var set: Set<Point> = []
|
||||
findBasin(at: p, value: self[p] - 1, visited: &set)
|
||||
return set
|
||||
}
|
||||
|
||||
func findBasin(at point: Point, value: Int, visited: inout Set<Point>) {
|
||||
guard !visited.contains(point) else { return }
|
||||
guard point.x >= 0 && point.y >= 0 && point.x < width && point.y < height else { return }
|
||||
let currentValue = self[point]
|
||||
guard currentValue != 9 && currentValue > value else { return }
|
||||
|
||||
visited.insert(point)
|
||||
findBasin(at: point.left, value: currentValue, visited: &visited)
|
||||
findBasin(at: point.up, value: currentValue, visited: &visited)
|
||||
findBasin(at: point.right, value: currentValue, visited: &visited)
|
||||
findBasin(at: point.down, value: currentValue, visited: &visited)
|
||||
}
|
||||
|
||||
struct Point: Hashable {
|
||||
var x: Int
|
||||
var y: Int
|
||||
|
||||
var left: Point { .init(x: x - 1, y: y) }
|
||||
var right: Point { .init(x: x + 1, y: y) }
|
||||
var up: Point { .init(x: x, y: y - 1) }
|
||||
var down: Point { .init(x: x, y: y + 1) }
|
||||
}
|
||||
|
||||
|
||||
static let input = """
|
||||
5796798621237995498765434567987542999765679987545679109878999877899789876532123456998999876887899921
|
||||
4645976434456789349654321298997679898654698987635678998767897656789698765432012347897899865676798799
|
||||
3234987545978993298795410989998989789543256897646789498756789546896579877842123456976789954345985678
|
||||
4356798679989999019987329878999798679765345689856991296545890134789467998956899967895698643239874579
|
||||
6467999789999898934976598967987676568996457999967999987636789345691346789769987898934987651098763456
|
||||
7598997999987796899989987959876543456789569898998998765125678956910298899898776799123998862987652345
|
||||
8789876789865685578999876645987665567998689656789876554034899999891989998987564679099789879876543456
|
||||
9898765498974324456799865534598786788998798645889985432126954987789878987654323567988698989987664678
|
||||
9989997987543212367987654323459897899549895434569876556437899876599967996543212459876587898998798789
|
||||
9877989997662101456798765434567998967932987624778989787548999989679459987687301349875456967899899893
|
||||
8765678998983232367899896765788939346891295434999999899659879699894349899796532656954344756910923964
|
||||
9874789019894343456789949878999321235799987545678945998778964578942139769898543769843212345891949765
|
||||
7965678998765764567893433989876542346987898656789236799889653989943298652999678989754523456789898976
|
||||
6598789109976975698921012398999763457896559867997647989998799899874569541098799798765676579896687897
|
||||
5439898929989989789962123457899894568989435998998799878999989798765798432149898649987787899965456989
|
||||
5212987898999999899854336568999989879979326569109989567898879689878987544234995434599898999874345679
|
||||
4309875987999876998765687679989878998765412458929875467987854599989698955679989323459979899993214589
|
||||
5996954676799984329877788989878969899874324567899765359876743489996549877789878912398767789984323456
|
||||
9875432545789743212989899998967659789985595678998868249965312679865435998898767899598954698765467567
|
||||
2994321036897654101996936987654543679999989789997854198764301569979423459999954678997643789978578978
|
||||
0987432128998763219875424698763212478998978999876543298773212458998901267898767889598732345988789989
|
||||
9876544346789979329876512349998401569897569234987994987654343457897892478999878993349891234899998695
|
||||
9989875679899898939984701459886212398786456946799889998795464567896789989896999321234989345678987544
|
||||
9997987889998797998743212598765323987654397899989778999989978679945698999765678930349878956999898433
|
||||
8986798999987676789655329679876439876541289998878656899867898791239956799954345959499867897899765321
|
||||
7845679219878565678976598999987556998732378997667545798656789892398745999765237898987656789998654310
|
||||
6434798998765454567897987898798677899543467896553234987545878989499636878992156987975345899219964324
|
||||
0123987999874343456789876799549789987654598998421056989434767879976521767989249876543234998909878434
|
||||
4339876798955102367898985678939891099967899876542159875323854568965410156978956997684456797899989545
|
||||
5498765986543234488987894799012999129878999987653249986210123467894321249769767898795867956789199656
|
||||
6599754397654545589996789899993998949999998799767998975351237998995432398758998989986788946999098789
|
||||
7988732198765657678975698999879876898946999544979877989876456789987643459647899876097899534878999899
|
||||
9876546019878767889984567899968765667939896532989966592987887893298754598756789965198997323456799989
|
||||
0998757898989899992099789988754543457898789540199854301298998984129866789998999954249986412345899878
|
||||
1299898987699954954299999876543212348987698921598763212349999873234977995679439765356897601234988767
|
||||
2989999876569999895989986987654103467896567892349854334568989964345698934678921976897996532349875756
|
||||
9879899988698988789878995498976215989995456789498999965689879899456789323567890197998987656756994345
|
||||
8765677899987677697667896329865423499989997995987878897798768778968895438678991298969398967899873201
|
||||
8654546789766563459548994219876534578977789104986567789949654567899976657899789349543219988932965412
|
||||
8643437899854312998435689101987645689665679323975345678959868778957987798934679959654301299549876723
|
||||
6532126778969409876424578912498756796553568939863203456899979989646799899012567898976432358956987894
|
||||
8544434567998912998535689843569867989432459949954212568999989594535798989123467987976563567969799985
|
||||
9655566789897893479697897654567979879421267898767343467898795443123497679935679876899674789997659876
|
||||
9776789998656799567989998765678998967992349929876556578987654321012989567896798765678985999876642989
|
||||
9988899875434678979878999879889987657889458919997967689798865452199867456987987654567896798765431096
|
||||
8799943989545789999868799989999876545678967898789898797659979874987654347899999753459987979876532145
|
||||
7679969998656789987657678994323965432789979987679789896535989995998321234568939894567899764987687236
|
||||
7567898959767893976543467995909876645678989996545678965423599989899754359679421986789968973199875345
|
||||
3467987644978912987784989879899987856789999987434569653213679876789866468789439898993459792012989466
|
||||
6569999533989999798896797867789898987897999876424678962102398765898977578996598769322375679933496578
|
||||
8678998921296789679987896545698769399986789764312398993923499654567897689398999954201234567894987689
|
||||
9799867890145679542998987896789954234995698765101256789894987543458999791249899895312347899995798789
|
||||
2988656891237789869879998998996895999876789864212345996789987652377899910299756789436556799989999890
|
||||
3977545789347899998767899989434999879989898987423467895678993210466789321987645679987867989767899921
|
||||
9865437896556789999946799876545998767999987976534789954589997621245679459876437898798979876545978943
|
||||
9976545789697899987834689989699767656899876989675678932679876432556789598943218997659989765434567894
|
||||
9989867899989999986545678995987654545998965498797889321996997543457898797654323789943596986546789965
|
||||
8896978999879878997668789213986543234987894349898996549875698665678909998965534567892345697656798987
|
||||
7645989898765655689779898901987662129876789234989998698954539987899919879877645689931257898767967899
|
||||
9869998789964334578995937892397654398945689345678979987643012398967898767998776798890234999898957898
|
||||
6998789679892123457894325943498765987834568956889467898952134579656899656549887897789656799999546457
|
||||
5987654597651012349975434799579989865423567897992378999763245678947999743435998996549767987989432347
|
||||
4398753299843123457896545678992099654512455789209989398754356789439879842124999987638989876678954456
|
||||
1239854987653238768998956999989298743101234678998994298765768899598765431029892196547898965466795567
|
||||
0123995799768545678969869878979349543213455789997899109976779998789987532139789987656987654345789979
|
||||
3235986999879656789756999867668956975434696899986987912987899999894697643298678999987898543234567898
|
||||
9945799876998798897645987654456899876595989989765976899998999886989987659987567998998999864365788977
|
||||
8799895995439899986534598732367968988989878979954695678919998785468998798766456997899898765479899766
|
||||
5678923994323999876545987543478957999976556767893254589101987674378789899854349876799649876678987645
|
||||
4567919876214899987689998954989546898765432356789123678919986543245679998765467965678999987789298756
|
||||
3467898765436789998998999879995434999896521237895019789998997532135998899977569876789988798992109867
|
||||
2369929876545699999987899999876545689943210235994298999997989949239876789989778989899976569993298989
|
||||
3458910997676789899876989212987676899656432346789987889886979898949965679999899998998665478989987897
|
||||
4567899998787895798765678923598789998789545497899996779765765787898764567878921987999543289567976546
|
||||
6878978999898934989894569654589890249899876569999884568954654656989843458967899876998992123458997997
|
||||
7989569899919129878989678979678931239964998978998763477943212349879932123458998765876789012567919989
|
||||
8991356779909019767678989989899842498643239989987542356799302345965431014568919954345692139898929879
|
||||
9410124567898998654567891294998753679654134699876521245678913459876432323589109765457789256799598767
|
||||
4321267898987549876899910123987654598763245698776410234569865567997943434578999988767899767895349654
|
||||
6532356789876434987898943235698765679854659987654321345678976778999894565689989999878949878943298765
|
||||
7656467893987545998967896545699887998767998998765432456889988999998789689789878989999432989752129976
|
||||
8767589954899756899459987756989998919879897899876548668994599989987678999898769878997643496543234988
|
||||
9879678975798967987598999899878959102998766999988767899123678978986567894987653967898765789759449999
|
||||
2989789996987898998987899954969643213459945789799878943239989865454478923986542656949896899898998931
|
||||
1299899989776999129976899769878965425678996999656989965398798754342349435965421248956997899987687899
|
||||
0467999876545789098865689879989876566789987898768997897987659983210456949878543367899898999876546797
|
||||
2378988965434678987674778998999998987893598999879876798965434975672569898987665456789789998695435896
|
||||
4499877994323569876523467897988999999912459999989965689896323497883479767999787578995679876564326345
|
||||
9987656789212489986313568966767897899106598989999984878789212598965998956799898989664868975432101234
|
||||
8798878994323478965423459954456986798919987678999873165678943679879876545689939996543459876875212345
|
||||
9659989765434568976796567893299765987898765569898762054567894578998765434696549987654667998994323476
|
||||
8934599879876899997898879954987654496987654346789943123489965679539854323589998998767898989889456567
|
||||
7895678998987899998999998769876543345798765767898894344567896789329875434567897689998999878778967678
|
||||
6796989987698969799998789878998632134899878998946799465679987898919987645679976578999098767669898799
|
||||
5789995799549347689987678999986721023999999769434878987989998967898998767989787459989298653456789910
|
||||
4567894698432134567988566789875432335698798653212967999997859456987679878998643212578987832345679891
|
||||
3779992976553235679977455698998765487987689864343458999876543237897569989797652101459876543456789789
|
||||
9889689987664346798765323456789887569876598765454569986987652145789698795698768892368987956567895678
|
||||
4994567899865457999974313345699998798765439879875678955698767234999987654229878765456799767878934589
|
||||
2123456999876567899875101256789109999984321989989899543249878945678996542101989877667899878989123699
|
||||
"""
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue