diff --git a/exercises/hackerrank/interview_preparation_kit/arrays/2d_array.go b/exercises/hackerrank/interview_preparation_kit/arrays/2d_array.go index cd6598b..0a81c83 100644 --- a/exercises/hackerrank/interview_preparation_kit/arrays/2d_array.go +++ b/exercises/hackerrank/interview_preparation_kit/arrays/2d_array.go @@ -36,7 +36,7 @@ func hourglassSum(arr [][]int32) int32 { for j := int32(matrixStartIndex); j <= int32(matrixEndIndex); j++ { var currentHourglassSum int32 = 0 currentHourglass := getHourGlass(arr, i, j) - for k := 0; k < len(currentHourglass); k++ { + for k := range currentHourglass { currentHourglassSum += currentHourglass[k] } diff --git a/exercises/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.go b/exercises/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.go index 1cb915e..8f36984 100644 --- a/exercises/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.go +++ b/exercises/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.go @@ -16,9 +16,8 @@ func rotLeftOne(a []int32) []int32 { func rotLeft(a []int32, d int32) []int32 { x := a[:] - var i int32 - for i = 0; i < d; i++ { + for range d { x = rotLeftOne(x) } return x diff --git a/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count-triplets-1.go b/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count-triplets-1.go index 91382d2..2ae48c2 100644 --- a/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count-triplets-1.go +++ b/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count-triplets-1.go @@ -7,7 +7,7 @@ package hackerrank func countTripletsBruteForce(arr []int64, r int64) int64 { size := len(arr) counter := int64(0) - for i := 0; i < size-2; i++ { + for i := range size - 2 { for j := i + 1; j < size-1; j++ { for k := j + 1; k < size; k++ { if r*arr[i] == arr[j] && r*arr[j] == arr[k] { diff --git a/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock-and-anagrams.go b/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock-and-anagrams.go index bd3b891..7b48920 100644 --- a/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock-and-anagrams.go +++ b/exercises/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock-and-anagrams.go @@ -27,8 +27,8 @@ func sherlockAndAnagrams(s string) int32 { candidates := make(map[string][]string) size := len(s) - for i := 0; i < size; i++ { - for j := 0; j < size-i; j++ { + for i := range size { + for j := range size - i { substr := s[i : size-j] log.Debug("i: %d, size: %d, size - j: %d | substr: %s", diff --git a/exercises/hackerrank/warmup/aVeryBigSum.go b/exercises/hackerrank/warmup/aVeryBigSum.go index affa786..4978402 100644 --- a/exercises/hackerrank/warmup/aVeryBigSum.go +++ b/exercises/hackerrank/warmup/aVeryBigSum.go @@ -9,7 +9,7 @@ import "gon.cl/algorithms/utils/log" func AVeryBigSum(ar []uint64) uint64 { var result uint64 = 0 - for i := 0; i < len(ar); i++ { + for i := range ar { result += ar[i] } diff --git a/exercises/hackerrank/warmup/compareTriplets.go b/exercises/hackerrank/warmup/compareTriplets.go index 7d0ebb4..1cd4bba 100644 --- a/exercises/hackerrank/warmup/compareTriplets.go +++ b/exercises/hackerrank/warmup/compareTriplets.go @@ -18,7 +18,7 @@ func CompareTriplets(a []int, b []int) ([]int, error) { var awards = []int{0, 0} - for i := 0; i < len(a); i++ { + for i := range a { if a[i] > b[i] { awards[0] = awards[0] + 1 } diff --git a/exercises/hackerrank/warmup/diagonalDifference.go b/exercises/hackerrank/warmup/diagonalDifference.go index 7ca4c30..4d6bd88 100644 --- a/exercises/hackerrank/warmup/diagonalDifference.go +++ b/exercises/hackerrank/warmup/diagonalDifference.go @@ -15,8 +15,8 @@ func DiagonalDifference(arr [][]int) int { diag2 := 0 last := len(arr) - 1 - for i := 0; i < len(arr); i++ { - for j := 0; j < len(arr); j++ { + for i := range arr { + for j := range arr { if i == j { diag1 += arr[i][j] diag2 += arr[last-i][j] diff --git a/exercises/hackerrank/warmup/miniMaxSum.go b/exercises/hackerrank/warmup/miniMaxSum.go index 1fcc4c7..2fc0baf 100644 --- a/exercises/hackerrank/warmup/miniMaxSum.go +++ b/exercises/hackerrank/warmup/miniMaxSum.go @@ -1,5 +1,5 @@ /** - * @link Problem definition [[docs/hackerrank/warmup/miniMaxSum.md]] + * @link Problem definition [[docs/hackerrank/warmup/minimumiMaxSum.md]] */ package hackerrank @@ -15,21 +15,21 @@ func MiniMaxSum(arr []int) (string, error) { } sum := 0 - min := arr[0] - max := arr[1] + minimum := arr[0] + maximum := arr[1] - for i := 0; i < len(arr); i++ { + for i := range arr { num := arr[i] sum += num - if num < min { - min = num + if num < minimum { + minimum = num } - if num > max { - max = num + if num > maximum { + maximum = num } } - return fmt.Sprintf("%d %d", sum-max, sum-min), nil + return fmt.Sprintf("%d %d", sum-maximum, sum-minimum), nil } diff --git a/exercises/hackerrank/warmup/simpleArraySum.go b/exercises/hackerrank/warmup/simpleArraySum.go index fefd25b..357ce22 100644 --- a/exercises/hackerrank/warmup/simpleArraySum.go +++ b/exercises/hackerrank/warmup/simpleArraySum.go @@ -9,7 +9,7 @@ import "gon.cl/algorithms/utils/log" func SimpleArraySum(arr []int) int { acum := 0 - for i := 0; i < len(arr); i++ { + for i := range arr { acum += arr[i] } diff --git a/exercises/projecteuler/helpers/divisors.go b/exercises/projecteuler/helpers/divisors.go index 1ccee91..b3b6d1d 100644 --- a/exercises/projecteuler/helpers/divisors.go +++ b/exercises/projecteuler/helpers/divisors.go @@ -2,7 +2,7 @@ package helpers import ( "math" - "sort" + "slices" "gon.cl/algorithms/utils/log" ) @@ -53,7 +53,7 @@ func Divisors(target int) []int { log.Debug("collected divisors %x", divs) // sort divisors - sort.Slice(divs, func(i, j int) bool { return divs[i] < divs[j] }) + slices.Sort(divs) log.Debug("sorted divisors %x", divs) return divs diff --git a/exercises/projecteuler/helpers/matrix.go b/exercises/projecteuler/helpers/matrix.go index 995cead..01ee43e 100644 --- a/exercises/projecteuler/helpers/matrix.go +++ b/exercises/projecteuler/helpers/matrix.go @@ -3,9 +3,9 @@ package helpers func Matrix(m int, n int, init int) [][]int { var matrix [][]int - for i := 0; i < m; i++ { + for range m { row := []int{} - for j := 0; j < n; j++ { + for range n { row = append(row, init) } matrix = append(matrix, row) diff --git a/exercises/projecteuler/helpers/sum.go b/exercises/projecteuler/helpers/sum.go index e0d40f0..96edcb1 100644 --- a/exercises/projecteuler/helpers/sum.go +++ b/exercises/projecteuler/helpers/sum.go @@ -4,7 +4,7 @@ func Sum(listOfNums []int) int { var sum int - for i := 0; i < len(listOfNums); i++ { + for i := range listOfNums { sum += listOfNums[i] } diff --git a/exercises/projecteuler/problem0001.go b/exercises/projecteuler/problem0001.go index 8b7d476..58c2d2c 100644 --- a/exercises/projecteuler/problem0001.go +++ b/exercises/projecteuler/problem0001.go @@ -11,7 +11,7 @@ import ( func Problem0001(top int) int { total := 0 - for i := 0; i < top; i++ { + for i := range top { if i%3 == 0 || i%5 == 0 { total += i diff --git a/exercises/projecteuler/problem0008.go b/exercises/projecteuler/problem0008.go index 1efc68d..e15e85c 100644 --- a/exercises/projecteuler/problem0008.go +++ b/exercises/projecteuler/problem0008.go @@ -34,7 +34,7 @@ func Problem0008(numberInput string) int { for i := bottom; i <= top-interval; i += 1 { var digitsSet []int - for j := 0; j < interval; j++ { + for j := range interval { digitsSet = append(digitsSet, int(digitsSlice[i+j])) } diff --git a/exercises/projecteuler/problem0022.go b/exercises/projecteuler/problem0022.go index 696cb79..06b244b 100644 --- a/exercises/projecteuler/problem0022.go +++ b/exercises/projecteuler/problem0022.go @@ -19,7 +19,7 @@ func Problem0022(listOfNames []string) int { sort.Strings(listOfNames) - for i := 0; i < len(listOfNames); i++ { + for i := range listOfNames { answer += (i + 1) * helpers.WordScore(listOfNames[i]) } diff --git a/exercises/projecteuler/problem0023.go b/exercises/projecteuler/problem0023.go index 97573df..6f619bd 100644 --- a/exercises/projecteuler/problem0023.go +++ b/exercises/projecteuler/problem0023.go @@ -5,20 +5,12 @@ package projecteuler import ( - "golang.org/x/exp/slices" + slices "slices" + "gon.cl/algorithms/exercises/projecteuler/helpers" "gon.cl/algorithms/utils/log" ) -func Contains[T comparable](s []T, e T) bool { - for _, v := range s { - if v == e { - return true - } - } - return false -} - func Problem0023(underLimit int, superLimit int) int { var abundantNumberList = []int{} @@ -38,7 +30,7 @@ func Problem0023(underLimit int, superLimit int) int { var sumsAbundantNums = []int{} // Produce a list of sums of pair of abundant numbers below limit - for i := 0; i < len(abundantNumberList); i++ { + for i := range abundantNumberList { for j := 0; abundantNumberList[i]+abundantNumberList[j] <= superLimit && j < len(abundantNumberList); j++ { @@ -62,7 +54,7 @@ func Problem0023(underLimit int, superLimit int) int { var found = []int{} for i := 1; i < superLimit; i++ { - if !Contains(sumsAbundantNums, i) { + if !slices.Contains(sumsAbundantNums, i) { found = append(found, i) } } diff --git a/go.mod b/go.mod index 6223f7a..435506f 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.22.0 require ( github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac ) require ( diff --git a/utils/log/logger.go b/utils/log/logger.go index 9c6dd56..c32654c 100644 --- a/utils/log/logger.go +++ b/utils/log/logger.go @@ -102,8 +102,8 @@ func (logger *Log) WithError(err error) *Log { return logCustom } -func WithField(key string, value interface{}) *Log { return instance.WithField(key, value) } -func (logger *Log) WithField(key string, value interface{}) *Log { +func WithField(key string, value any) *Log { return instance.WithField(key, value) } +func (logger *Log) WithField(key string, value any) *Log { logCustom := &Log{ log: initLoggerZap(), } @@ -111,34 +111,34 @@ func (logger *Log) WithField(key string, value interface{}) *Log { return logCustom } -func Info(message string, args ...interface{}) { instance.Info(message, args...) } -func (logger *Log) Info(message string, args ...interface{}) { +func Info(message string, args ...any) { instance.Info(message, args...) } +func (logger *Log) Info(message string, args ...any) { logger.log.Info(fmt.Sprintf(message, args...)) } -func Error(message string, args ...interface{}) { instance.Error(message, args...) } -func (logger *Log) Error(message string, args ...interface{}) { +func Error(message string, args ...any) { instance.Error(message, args...) } +func (logger *Log) Error(message string, args ...any) { logger.log.Error(fmt.Sprintf(message, args...)) } -func Debug(message string, args ...interface{}) { instance.Debug(message, args...) } -func (logger *Log) Debug(message string, args ...interface{}) { +func Debug(message string, args ...any) { instance.Debug(message, args...) } +func (logger *Log) Debug(message string, args ...any) { logger.log.Debug(fmt.Sprintf(message, args...)) } -func Warn(message string, args ...interface{}) { instance.Warn(message, args...) } -func (logger *Log) Warn(message string, args ...interface{}) { +func Warn(message string, args ...any) { instance.Warn(message, args...) } +func (logger *Log) Warn(message string, args ...any) { logger.log.Warn(fmt.Sprintf(message, args...)) } -func Fatal(message string, args ...interface{}) { instance.Fatal(message, args...) } -func (logger *Log) Fatal(message string, args ...interface{}) { +func Fatal(message string, args ...any) { instance.Fatal(message, args...) } +func (logger *Log) Fatal(message string, args ...any) { logger.log.Fatal(fmt.Sprintf(message, args...)) } -func Printf(message string, args ...interface{}) { +func Printf(message string, args ...any) { instance.Printf(message, args...) } -func (logger *Log) Printf(message string, args ...interface{}) { +func (logger *Log) Printf(message string, args ...any) { logger.log.Info(fmt.Sprintf(message, args...)) }