day05.lib package

Submodules

day05.lib.classes module

classes for day05.

class day05.lib.classes.Mapping(src_start: int, dest_start: int, size: int, injected: bool = False)[source]

Bases: object

Simple range based mapping.

dest_end: int
dest_start: int
get_mapping(src_value: int) int[source]

Converts from src_value to destination.

get_mappings(start: int, end: int) tuple[MappingRange, int][source]

Returns the chunk from start to end, followed by the remainder.

injected: bool = False
size: int
src_end: int
src_start: int
class day05.lib.classes.MappingRange(start: int, end: int)[source]

Bases: object

Simple class for start/end range.

end: int
start: int
class day05.lib.classes.NamedMap(name: str)[source]

Bases: object

a named map with a list of mappings.

add_mapping(mapping: Mapping) None[source]

Adds a mapping to our list.

extend_mapping_range(mappings: list[Mapping]) list[Mapping][source]

Ensure that mappings go from 0 -> INT_MAX.

finalize_mappings() None[source]

Post processes the mappings.

  • Sorts the mappings

  • Fills in any missing ranges

  • Homogenizes so min_mapping is 0, and max_mapping is INT_MAX

get_mapping(value: int) int[source]

Uses binary search to grab the correct mapping, then apply it to one value.

get_mapping_range(src_mapping_range: MappingRange) list[MappingRange][source]

Remaps a source range to a list of destination ranges.

get_mapping_ranges(src_mapping_ranges: list[MappingRange]) list[MappingRange][source]

Given a list of mapping ranges, returns a new list of mapping ranges.

mappings: list[Mapping]
name: str

day05.lib.parsers module

Parsing from source file to well defined classes.

day05.lib.parsers.grab_inputs(path: str) tuple[list[int], list[NamedMap]][source]

Parses the source file.

Module contents

libraries for day05.