Daily programming puzzles at Advent of Code, by
Eric Wastl. These are my takes and solutions to the problems. Worth noting that Day01
was fittingly my first day of Swift, so I'm learning as I go!
Swift comes with Xcode, or you can install it on a supported macOS, Linux, or Windows platform.
If you're using Xcode, you can open this project by choosing File / Open and select the parent directory.
If you prefer the command line, you can run the test suite with swift test
,
and run the output with swift run
.
If you're using Visual Studio Code to edit, you might find these Swift extensions useful:
- Swift (provides core language edit / debug / test features)
- apple-swift-format (supports the swift-format package)
The challenges assume three files (replace 00 with the day of the challenge).
Data/Day00.txt
: the input data provided for the challengeSources/Day00.swift
: the code to solve the challengeTests/Day00.swift
: any unit tests that you want to include
To start a new day's challenge, make a copy of these files and update as
necessary. The AdventOfCode.swift
file controls which day's challenge is run
with swift run
. By default that runs the most recent challenge in the package.
To supply command line arguments use swift run AdventOfCode
. For example,
swift run -c release AdventOfCode --benchmark 3
builds the binary with full
optimizations, and benchmarks the challenge for day 3.
Challenge source code can be linted and formatted automatically using the
included dependency on swift-format
.
Lint source code with the following command:
$ swift package lint-source-code
Format source code with the following command:
$ swift package format-source-code
Plugin ‘Format Source Code’ wants permission to write to the package directory.
Stated reason: “This command formats the Swift source files”.
Allow this plugin to write to the package directory? (yes/no)
To avoid the interactive prompt when formatting source code, use the
--allow-writing-to-package-directory
flag.
$ swift package format-source-code --allow-writing-to-package-directory
swift-format will use the built-in default style to lint and format code. A
.swift-format
configuration file can be used to customize the style used, see
Configuration
for more details.