day 13 + 14

This commit is contained in:
Sven Weidauer 2020-12-14 18:49:31 +01:00
parent 1f9aae4f16
commit db394f7e14
4 changed files with 372 additions and 26 deletions

View file

@ -15,18 +15,18 @@
268D9579257B52290030EC4D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268D9578257B52290030EC4D /* main.swift */; }; 268D9579257B52290030EC4D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268D9578257B52290030EC4D /* main.swift */; };
268D9589257CB8DA0030EC4D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268D9588257CB8DA0030EC4D /* main.swift */; }; 268D9589257CB8DA0030EC4D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268D9588257CB8DA0030EC4D /* main.swift */; };
26E2ACD8257ECFFA00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACD7257ECFFA00702405 /* main.swift */; }; 26E2ACD8257ECFFA00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACD7257ECFFA00702405 /* main.swift */; };
26E2ACE6257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACE6257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACE7257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACE7257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACE8257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACE8257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACE9257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACE9257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACEA257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACEA257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACEB257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACEB257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACEC257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACEC257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACED257ED09000702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2ACED257ED09000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ACFD258009FE00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACFC258009FE00702405 /* main.swift */; }; 26E2ACFD258009FE00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACFC258009FE00702405 /* main.swift */; };
26E2AD0A25800A1400702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2AD0A25800A1400702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2AD2125816EE100702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD2025816EE100702405 /* main.swift */; }; 26E2AD2125816EE100702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD2025816EE100702405 /* main.swift */; };
26E2AD2F25816EE700702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2AD2F25816EE700702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2AD3B2581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD3B2581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2AD3C2581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD3C2581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2AD3D2581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD3D2581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
@ -38,11 +38,17 @@
26E2AD432581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD432581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2AD442581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD442581713A00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2AD56258343D800702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD55258343D800702405 /* main.swift */; }; 26E2AD56258343D800702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD55258343D800702405 /* main.swift */; };
26E2AD65258343E300702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2AD65258343E300702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2AD71258343E600702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD71258343E600702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2AD842584A61F00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD832584A61F00702405 /* main.swift */; }; 26E2AD842584A61F00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD832584A61F00702405 /* main.swift */; };
26E2AD942584A63300702405 /* Scanner+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */; }; 26E2AD942584A63300702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2AD952584A63300702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; }; 26E2AD952584A63300702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2ADAC2586024700702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ADAB2586024700702405 /* main.swift */; };
26E2ADBD2586025000702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
26E2ADBE2586025000702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ADE425873BBE00702405 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ADE325873BBE00702405 /* main.swift */; };
26E2ADF625873BCB00702405 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2ACE5257ED09000702405 /* Extensions.swift */; };
26E2ADF725873BCB00702405 /* LoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E2AD3A2581713A00702405 /* LoadData.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@ -154,6 +160,24 @@
); );
runOnlyForDeploymentPostprocessing = 1; runOnlyForDeploymentPostprocessing = 1;
}; };
26E2ADA72586024700702405 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
26E2ADDF25873BBD00702405 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
@ -173,7 +197,7 @@
268D9588257CB8DA0030EC4D /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; }; 268D9588257CB8DA0030EC4D /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
26E2ACD5257ECFFA00702405 /* day8 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day8; sourceTree = BUILT_PRODUCTS_DIR; }; 26E2ACD5257ECFFA00702405 /* day8 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day8; sourceTree = BUILT_PRODUCTS_DIR; };
26E2ACD7257ECFFA00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; }; 26E2ACD7257ECFFA00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Scanner+Extensions.swift"; sourceTree = "<group>"; }; 26E2ACE5257ED09000702405 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
26E2ACFA258009FE00702405 /* day9 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day9; sourceTree = BUILT_PRODUCTS_DIR; }; 26E2ACFA258009FE00702405 /* day9 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day9; sourceTree = BUILT_PRODUCTS_DIR; };
26E2ACFC258009FE00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; }; 26E2ACFC258009FE00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
26E2AD1E25816EE100702405 /* day10 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day10; sourceTree = BUILT_PRODUCTS_DIR; }; 26E2AD1E25816EE100702405 /* day10 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day10; sourceTree = BUILT_PRODUCTS_DIR; };
@ -183,6 +207,10 @@
26E2AD55258343D800702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; }; 26E2AD55258343D800702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
26E2AD812584A61F00702405 /* day12 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day12; sourceTree = BUILT_PRODUCTS_DIR; }; 26E2AD812584A61F00702405 /* day12 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day12; sourceTree = BUILT_PRODUCTS_DIR; };
26E2AD832584A61F00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; }; 26E2AD832584A61F00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
26E2ADA92586024700702405 /* day13 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day13; sourceTree = BUILT_PRODUCTS_DIR; };
26E2ADAB2586024700702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
26E2ADE125873BBD00702405 /* day14 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = day14; sourceTree = BUILT_PRODUCTS_DIR; };
26E2ADE325873BBE00702405 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -270,6 +298,20 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
26E2ADA62586024700702405 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
26E2ADDE25873BBD00702405 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
@ -297,6 +339,8 @@
26E2AD1F25816EE100702405 /* day10 */, 26E2AD1F25816EE100702405 /* day10 */,
26E2AD54258343D800702405 /* day11 */, 26E2AD54258343D800702405 /* day11 */,
26E2AD822584A61F00702405 /* day12 */, 26E2AD822584A61F00702405 /* day12 */,
26E2ADAA2586024700702405 /* day13 */,
26E2ADE225873BBE00702405 /* day14 */,
268D953A25781DD80030EC4D /* Products */, 268D953A25781DD80030EC4D /* Products */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
@ -316,6 +360,8 @@
26E2AD1E25816EE100702405 /* day10 */, 26E2AD1E25816EE100702405 /* day10 */,
26E2AD53258343D800702405 /* day11 */, 26E2AD53258343D800702405 /* day11 */,
26E2AD812584A61F00702405 /* day12 */, 26E2AD812584A61F00702405 /* day12 */,
26E2ADA92586024700702405 /* day13 */,
26E2ADE125873BBD00702405 /* day14 */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -379,7 +425,7 @@
26E2ACE4257ED07600702405 /* common */ = { 26E2ACE4257ED07600702405 /* common */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
26E2ACE5257ED09000702405 /* Scanner+Extensions.swift */, 26E2ACE5257ED09000702405 /* Extensions.swift */,
26E2AD3A2581713A00702405 /* LoadData.swift */, 26E2AD3A2581713A00702405 /* LoadData.swift */,
); );
path = common; path = common;
@ -417,6 +463,22 @@
path = day12; path = day12;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
26E2ADAA2586024700702405 /* day13 */ = {
isa = PBXGroup;
children = (
26E2ADAB2586024700702405 /* main.swift */,
);
path = day13;
sourceTree = "<group>";
};
26E2ADE225873BBE00702405 /* day14 */ = {
isa = PBXGroup;
children = (
26E2ADE325873BBE00702405 /* main.swift */,
);
path = day14;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -624,6 +686,40 @@
productReference = 26E2AD812584A61F00702405 /* day12 */; productReference = 26E2AD812584A61F00702405 /* day12 */;
productType = "com.apple.product-type.tool"; productType = "com.apple.product-type.tool";
}; };
26E2ADA82586024700702405 /* day13 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 26E2ADAF2586024700702405 /* Build configuration list for PBXNativeTarget "day13" */;
buildPhases = (
26E2ADA52586024700702405 /* Sources */,
26E2ADA62586024700702405 /* Frameworks */,
26E2ADA72586024700702405 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = day13;
productName = day13;
productReference = 26E2ADA92586024700702405 /* day13 */;
productType = "com.apple.product-type.tool";
};
26E2ADE025873BBD00702405 /* day14 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 26E2ADE525873BBE00702405 /* Build configuration list for PBXNativeTarget "day14" */;
buildPhases = (
26E2ADDD25873BBD00702405 /* Sources */,
26E2ADDE25873BBD00702405 /* Frameworks */,
26E2ADDF25873BBD00702405 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = day14;
productName = day14;
productReference = 26E2ADE125873BBD00702405 /* day14 */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
/* Begin PBXProject section */ /* Begin PBXProject section */
@ -669,6 +765,12 @@
26E2AD802584A61F00702405 = { 26E2AD802584A61F00702405 = {
CreatedOnToolsVersion = 12.2; CreatedOnToolsVersion = 12.2;
}; };
26E2ADA82586024700702405 = {
CreatedOnToolsVersion = 12.2;
};
26E2ADE025873BBD00702405 = {
CreatedOnToolsVersion = 12.2;
};
}; };
}; };
buildConfigurationList = 268D953425781DD80030EC4D /* Build configuration list for PBXProject "AdventOfCode2020" */; buildConfigurationList = 268D953425781DD80030EC4D /* Build configuration list for PBXProject "AdventOfCode2020" */;
@ -696,6 +798,8 @@
26E2AD1D25816EE100702405 /* day10 */, 26E2AD1D25816EE100702405 /* day10 */,
26E2AD52258343D800702405 /* day11 */, 26E2AD52258343D800702405 /* day11 */,
26E2AD802584A61F00702405 /* day12 */, 26E2AD802584A61F00702405 /* day12 */,
26E2ADA82586024700702405 /* day13 */,
26E2ADE025873BBD00702405 /* day14 */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@ -705,7 +809,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACEC257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACEC257ED09000702405 /* Extensions.swift in Sources */,
26176242257DFD0800D00A66 /* main.swift in Sources */, 26176242257DFD0800D00A66 /* main.swift in Sources */,
26E2AD412581713A00702405 /* LoadData.swift in Sources */, 26E2AD412581713A00702405 /* LoadData.swift in Sources */,
); );
@ -715,7 +819,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACE6257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACE6257ED09000702405 /* Extensions.swift in Sources */,
268D953D25781DD80030EC4D /* main.swift in Sources */, 268D953D25781DD80030EC4D /* main.swift in Sources */,
26E2AD3B2581713A00702405 /* LoadData.swift in Sources */, 26E2AD3B2581713A00702405 /* LoadData.swift in Sources */,
); );
@ -725,7 +829,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACE7257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACE7257ED09000702405 /* Extensions.swift in Sources */,
268D954B25781F740030EC4D /* main.swift in Sources */, 268D954B25781F740030EC4D /* main.swift in Sources */,
26E2AD3C2581713A00702405 /* LoadData.swift in Sources */, 26E2AD3C2581713A00702405 /* LoadData.swift in Sources */,
); );
@ -735,7 +839,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACE8257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACE8257ED09000702405 /* Extensions.swift in Sources */,
268D955C257904250030EC4D /* main.swift in Sources */, 268D955C257904250030EC4D /* main.swift in Sources */,
26E2AD3D2581713A00702405 /* LoadData.swift in Sources */, 26E2AD3D2581713A00702405 /* LoadData.swift in Sources */,
); );
@ -745,7 +849,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACE9257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACE9257ED09000702405 /* Extensions.swift in Sources */,
268D956A257A07B80030EC4D /* main.swift in Sources */, 268D956A257A07B80030EC4D /* main.swift in Sources */,
26E2AD3E2581713A00702405 /* LoadData.swift in Sources */, 26E2AD3E2581713A00702405 /* LoadData.swift in Sources */,
); );
@ -755,7 +859,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACEA257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACEA257ED09000702405 /* Extensions.swift in Sources */,
268D9579257B52290030EC4D /* main.swift in Sources */, 268D9579257B52290030EC4D /* main.swift in Sources */,
26E2AD3F2581713A00702405 /* LoadData.swift in Sources */, 26E2AD3F2581713A00702405 /* LoadData.swift in Sources */,
); );
@ -765,7 +869,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACEB257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACEB257ED09000702405 /* Extensions.swift in Sources */,
268D9589257CB8DA0030EC4D /* main.swift in Sources */, 268D9589257CB8DA0030EC4D /* main.swift in Sources */,
26E2AD402581713A00702405 /* LoadData.swift in Sources */, 26E2AD402581713A00702405 /* LoadData.swift in Sources */,
); );
@ -775,7 +879,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2ACED257ED09000702405 /* Scanner+Extensions.swift in Sources */, 26E2ACED257ED09000702405 /* Extensions.swift in Sources */,
26E2ACD8257ECFFA00702405 /* main.swift in Sources */, 26E2ACD8257ECFFA00702405 /* main.swift in Sources */,
26E2AD422581713A00702405 /* LoadData.swift in Sources */, 26E2AD422581713A00702405 /* LoadData.swift in Sources */,
); );
@ -785,7 +889,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2AD0A25800A1400702405 /* Scanner+Extensions.swift in Sources */, 26E2AD0A25800A1400702405 /* Extensions.swift in Sources */,
26E2ACFD258009FE00702405 /* main.swift in Sources */, 26E2ACFD258009FE00702405 /* main.swift in Sources */,
26E2AD432581713A00702405 /* LoadData.swift in Sources */, 26E2AD432581713A00702405 /* LoadData.swift in Sources */,
); );
@ -795,7 +899,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2AD2F25816EE700702405 /* Scanner+Extensions.swift in Sources */, 26E2AD2F25816EE700702405 /* Extensions.swift in Sources */,
26E2AD2125816EE100702405 /* main.swift in Sources */, 26E2AD2125816EE100702405 /* main.swift in Sources */,
26E2AD442581713A00702405 /* LoadData.swift in Sources */, 26E2AD442581713A00702405 /* LoadData.swift in Sources */,
); );
@ -805,7 +909,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2AD65258343E300702405 /* Scanner+Extensions.swift in Sources */, 26E2AD65258343E300702405 /* Extensions.swift in Sources */,
26E2AD56258343D800702405 /* main.swift in Sources */, 26E2AD56258343D800702405 /* main.swift in Sources */,
26E2AD71258343E600702405 /* LoadData.swift in Sources */, 26E2AD71258343E600702405 /* LoadData.swift in Sources */,
); );
@ -815,12 +919,32 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
26E2AD942584A63300702405 /* Scanner+Extensions.swift in Sources */, 26E2AD942584A63300702405 /* Extensions.swift in Sources */,
26E2AD842584A61F00702405 /* main.swift in Sources */, 26E2AD842584A61F00702405 /* main.swift in Sources */,
26E2AD952584A63300702405 /* LoadData.swift in Sources */, 26E2AD952584A63300702405 /* LoadData.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
26E2ADA52586024700702405 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
26E2ADAC2586024700702405 /* main.swift in Sources */,
26E2ADBD2586025000702405 /* LoadData.swift in Sources */,
26E2ADBE2586025000702405 /* Extensions.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
26E2ADDD25873BBD00702405 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
26E2ADE425873BBE00702405 /* main.swift in Sources */,
26E2ADF625873BCB00702405 /* Extensions.swift in Sources */,
26E2ADF725873BCB00702405 /* LoadData.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
@ -1203,6 +1327,50 @@
}; };
name = Release; name = Release;
}; };
26E2ADAD2586024700702405 /* 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;
};
26E2ADAE2586024700702405 /* 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;
};
26E2ADE625873BBE00702405 /* 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;
};
26E2ADE725873BBE00702405 /* 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 */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@ -1323,6 +1491,24 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
26E2ADAF2586024700702405 /* Build configuration list for PBXNativeTarget "day13" */ = {
isa = XCConfigurationList;
buildConfigurations = (
26E2ADAD2586024700702405 /* Debug */,
26E2ADAE2586024700702405 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
26E2ADE525873BBE00702405 /* Build configuration list for PBXNativeTarget "day14" */ = {
isa = XCConfigurationList;
buildConfigurations = (
26E2ADE625873BBE00702405 /* Debug */,
26E2ADE725873BBE00702405 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 268D953125781DD80030EC4D /* Project object */; rootObject = 268D953125781DD80030EC4D /* Project object */;

View file

@ -24,3 +24,10 @@ extension String {
return result return result
} }
} }
extension Sequence {
func print(_ prefix: String = "") -> Self {
Swift.print(prefix, Array(self))
return self
}
}

61
day13/main.swift Normal file
View file

@ -0,0 +1,61 @@
import Foundation
let input = loadData(day: 13)
let scanner = Scanner(string: input)
let startTime = scanner.scanInt()!
var busLines: [(Int, position: Int)] = []
var position = 0
repeat {
if let line = scanner.scanInt() {
busLines.append((line, position))
} else if scanner.string("x") {
// Ignore
}
position += 1
} while scanner.string(",")
let min = busLines
.map { $0.0 }
.map { ((startTime / $0) * $0 + $0, $0) }
.print()
.min(by: { $0.0 < $1.0 })!
print((min.0 - startTime) * min.1)
let max = busLines.max(by: { $0.0 < $1.0 })!
print(max)
/*
brute force - takes too long
var s = sequence(first: 0, next: { $0 + max.0 })
.lazy
.filter { t in busLines.allSatisfy { (t - max.position + $0.position).isMultiple(of: $0.0 )} }
.makeIterator()
print(s.next())
*/
var step = 0
var time = 0
outer: while true {
time += step
step = 1
for (bus, position) in busLines {
guard (time + position).isMultiple(of: bus) else { continue outer }
step *= bus
}
break
}
print("part2", time)

92
day14/main.swift Normal file
View file

@ -0,0 +1,92 @@
import Foundation
let scanner = Scanner(string: loadData(day: 14))
var maskBits: UInt64 = 0
var maskUsed: UInt64 = 0
var mem: [UInt64:UInt64] = [:]
func readMask(_ mask: String) {
assert(mask.count == 36)
maskBits = 0
maskUsed = 0
for char in mask {
maskBits <<= 1
maskUsed <<= 1
switch char {
case "1": maskBits |= 1
case "0": break
case "X": maskUsed |= 1
default: assertionFailure("Invalid character in mask")
}
}
}
func applyMask(_ value: UInt64) -> UInt64 {
(value & maskUsed) | maskBits
}
let maskSet = CharacterSet(charactersIn: "01X")
/*
while !scanner.isAtEnd {
if scanner.string("mask = "), let mask = scanner.scanCharacters(from: maskSet) {
readMask(mask)
} else if scanner.string("mem["), let addr = scanner.scanInt(), scanner.string("] = "), let value = scanner.scanUInt64() {
mem[addr] = applyMask(value)
} else {
assertionFailure("Invalid input")
}
}
*/
func printPadded(_ val: UInt64) {
let s = String(val, radix: 2)
print(String(repeating: " ", count: 36 - s.count) + s)
}
func possibleValues(_ mask: UInt64) -> [UInt64] {
var values: [UInt64] = []
var mask = mask
for i in 0..<36 {
if mask & 1 != 0 {
let bit: UInt64 = 1 << i
if values.isEmpty {
values.append(0)
values.append(bit)
} else {
values.append(contentsOf: values.map { $0 | bit })
}
}
mask >>= 1
}
return values
}
func writeMem(_ addr: UInt64, _ value: UInt64) {
for i in possibleValues(maskUsed) {
let effective = i | ((addr | maskBits) & ~maskUsed)
mem[effective] = value
}
}
while !scanner.isAtEnd {
if scanner.string("mask = "), let mask = scanner.scanCharacters(from: maskSet) {
readMask(mask)
} else if scanner.string("mem["), let addr = scanner.scanUInt64(), scanner.string("] = "), let value = scanner.scanUInt64() {
writeMem(addr, value)
} else {
assertionFailure("Invalid input")
}
}
print("sum", mem.values.reduce(0, +))