aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl
diff options
context:
space:
mode:
authorHJ <thechairman@thechairman.info>2024-02-03 15:10:00 -0500
committerHJ <thechairman@thechairman.info>2024-02-03 15:10:00 -0500
commit0c869b2782aeecb92dff232b46a499a3821f9f2c (patch)
tree8010032bf495ad120a4d586a7a96ebc9139e3f32 /aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl
parent96a3c5c179d8d3fff24eb2953e45f8dd15e2714c (diff)
downloadgleam_aoc-0c869b2782aeecb92dff232b46a499a3821f9f2c.tar.gz
gleam_aoc-0c869b2782aeecb92dff232b46a499a3821f9f2c.zip
cleanup
Diffstat (limited to 'aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl')
-rw-r--r--aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl53
1 files changed, 0 insertions, 53 deletions
diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl
deleted file mode 100644
index 8792f14..0000000
--- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl
+++ /dev/null
@@ -1,53 +0,0 @@
--module(gleam@otp@intensity_tracker).
--compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
-
--export([new/2, trim_window/3, add_event/1]).
--export_type([intensity_tracker/0, too_intense/0]).
-
--opaque intensity_tracker() :: {intensity_tracker,
- integer(),
- integer(),
- list(integer())}.
-
--type too_intense() :: too_intense.
-
--spec new(integer(), integer()) -> intensity_tracker().
-new(Limit, Period) ->
- {intensity_tracker, Limit, Period, []}.
-
--spec now_seconds() -> integer().
-now_seconds() ->
- erlang:monotonic_time(1).
-
--spec trim_window(list(integer()), integer(), integer()) -> list(integer()).
-trim_window(Events, Now, Period) ->
- case Events of
- [] ->
- [];
-
- [Event | Events@1] ->
- case Now >= (Event + Period) of
- true ->
- [Event | trim_window(Events@1, Now, Period)];
-
- false ->
- []
- end
- end.
-
--spec add_event(intensity_tracker()) -> {ok, intensity_tracker()} |
- {error, too_intense()}.
-add_event(Tracker) ->
- Now = now_seconds(),
- Events = trim_window(
- [Now | erlang:element(4, Tracker)],
- Now,
- erlang:element(3, Tracker)
- ),
- case gleam@list:length(Events) >= erlang:element(2, Tracker) of
- true ->
- {error, too_intense};
-
- false ->
- {ok, erlang:setelement(4, Tracker, Events)}
- end.