Algorithm Group 5
Algorithm Group 5 contains five larger engineering-oriented exercises focused on validation, authentication, authorization, data segmentation, generic numeric processing, and pipeline stability analysis.
Compared with earlier algorithm groups, these tasks require more than a single isolated calculation.
They combine:
- input validation
- structured models
- configurable rules
- state changes
- authorization
- grouping
- numeric analysis
- reporting
- testing
Tasks
Task 1 — Configurable String Validation
Create a reusable validation system supporting seven different validation types.
Each validation request must also support configurable length limits, whitespace rules, descriptions, and multiple validation errors.
Task 2 — User Login and Access Control
Model users, validate their data, store multiple users, and implement login processing with authentication, authorization, password expiration, IP restrictions, login modes, and suspension rules.
Task 3 — Sector Range Analysis
Divide an integer collection into a configurable number of equal sectors.
Each sector has its own accepted numeric range.
Report which values inside every sector satisfy its range and which do not.
Task 4 — Generic Pipeline Stability Analysis
Analyze multiple numeric pipelines using either integer or floating-point values.
Each pipeline has its own stability threshold.
Report every value below that threshold together with its deficit and source pipeline.
Task 5 — Multi-Sector Pipeline Stability Report
Extend pipeline analysis by dividing each source pipeline into multiple sectors.
Each sector has its own stability threshold.
The report must identify unstable values, fully stable sectors, sectors with multiple failures, and critically unstable values.
Objectives
The exercises in this group provide practice with:
- reusable validation
- configurable validation rules
- multiple-error reporting
- structured application models
- authentication
- authorization
- account state
- time-based validation
- IP address validation
- collection segmentation
- range parsing
- generic numeric processing
- stability thresholds
- nested collection processing
- report generation
- input relationship validation
- test design
Structured Results
Several tasks in this group require multiple pieces of related output.
Prefer explicit result structures rather than loosely typed values or formatted strings when the result is intended for further processing.
For example:
type ValidationError struct {
Field string
Rule string
Message string
}
is generally more useful than returning only:
[]string
because presentation can be added afterward without losing structured information.
Validation
Input relationships are particularly important in this group.
Examples include:
number of sector ranges == number of sectors
number of stability values == number of pipelines
number of sector stability values == number of sectors in that pipeline
These relationships should be validated before processing begins.
Testing
The original tasks explicitly require multiple tests in several places.
Tests should cover both:
- valid behavior
- invalid or boundary behavior
Examples include:
- valid and invalid strings
- successful and failed logins
- expired passwords
- invalid sector counts
- malformed ranges
- mismatched stability configuration
- fully stable pipelines
- partially unstable pipelines
- critical instability
Implementation
The examples provide concrete scenarios, but the implementation should solve the general problem.
Avoid hard-coding behavior specifically for the supplied values.
Where the original task contains an ambiguous type, inconsistent argument count, or underspecified result format, the individual task page provides a more explicit model while preserving the original objective.