aboutsummaryrefslogtreecommitdiff
path: root/codingquest2024/src/day7/solution.gleam
diff options
context:
space:
mode:
authorH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
committerH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
commit8777ff071f7bb37631baa7b6717ad29961e50911 (patch)
tree6d59c4ed58e454b960339c3d1151f0a879e8d7cb /codingquest2024/src/day7/solution.gleam
parent6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff)
downloadgleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz
gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip
sorting by language
Diffstat (limited to 'codingquest2024/src/day7/solution.gleam')
-rw-r--r--codingquest2024/src/day7/solution.gleam73
1 files changed, 0 insertions, 73 deletions
diff --git a/codingquest2024/src/day7/solution.gleam b/codingquest2024/src/day7/solution.gleam
deleted file mode 100644
index 2ca7cbf..0000000
--- a/codingquest2024/src/day7/solution.gleam
+++ /dev/null
@@ -1,73 +0,0 @@
-import gleam/io
-import gleam/string
-import gleam/set.{type Set}
-import gleam/int
-import gleam/regex.{Match}
-import gleam/option.{Some}
-import simplifile
-
-pub opaque type Item {
- File(name: String, size: Int)
- Directory(name: String)
-}
-
-pub fn main() {
- let assert Ok(data) = simplifile.read(from: "./src/day7/data.txt")
- let lines = string.split(data, "\n")
-
- mark_for_deletion(lines, 0, "", set.new())
- |> io.debug()
-}
-
-fn mark_for_deletion(
- lines: List(String),
- deleted: Int,
- current_folder: String,
- deleted_folders: Set(String),
-) {
- case lines {
- [] -> deleted
- ["Folder: " <> folder, ..rest] ->
- mark_for_deletion(rest, deleted, folder, deleted_folders)
- [file, ..rest] -> {
- case
- string.contains(file, "temporary")
- || string.contains(file, "delete")
- || set.contains(deleted_folders, current_folder)
- {
- True ->
- case string.contains(file, "[FOLDER") {
- True -> {
- file
- |> get_folder_number()
- |> set.insert(deleted_folders, _)
- |> mark_for_deletion(rest, deleted, current_folder, _)
- }
- False -> {
- file
- |> get_file_size()
- |> int.add(deleted, _)
- |> mark_for_deletion(rest, _, current_folder, deleted_folders)
- }
- }
- False ->
- mark_for_deletion(rest, deleted, current_folder, deleted_folders)
- }
- }
- }
-}
-
-fn get_folder_number(file) {
- let assert Ok(re) = regex.from_string("\\[FOLDER ([0-9]+)\\]")
-
- let assert [Match(submatches: [Some(n)], ..)] = regex.scan(re, file)
- n
-}
-
-fn get_file_size(file) {
- let assert Ok(re) = regex.from_string("- .+ ([0-9]+)$")
-
- let assert [Match(submatches: [Some(n)], ..)] = regex.scan(re, file)
- let assert Ok(n) = int.parse(n)
- n
-}