Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 3 additions & 9 deletions .github/workflows/go-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
fail-fast: false
matrix:
os: ["windows-2022", "ubuntu-24.04", "macos-14"]
go: ["1.24.x", "1.25.x"]
go: ["1.23.x", "1.24.x", "1.25.x"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
Expand All @@ -32,14 +32,8 @@ jobs:

- run: go version

- name: Test Styling (gofmt)
run: gofmt -l . && echo '✔ Your code looks good.'

# yamllint disable rule:line-length
- name: Test Styling (analysis/modernize) Analyzer modernize
if: ${{ ! startsWith(matrix.go, '1.22') }}
run: go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -test ./...
# yamllint enable rule:line-length
- name: Test Styling (gofmt & modernize)
run: make test/styling

- name: Lint (go vet)
run: go vet -v ./...
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/go-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
fail-fast: false
matrix:
os: ["windows-2022", "ubuntu-24.04", "macos-14"]
go: ["1.24.x", "1.25.x"]
go: ["1.23.x", "1.24.x", "1.25.x"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ WORKDIR ${WORKDIR}

RUN apk add --update --no-cache make nodejs npm wget \
&& apk add --update --no-cache yamllint \
&& npm install -g --ignore-scripts markdownlint-cli
&& npm install -g --ignore-scripts markdownlint-cli@0.47.0

ADD https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh ${WORKDIR}/
RUN sh install.sh -b $(go env GOPATH)/bin v2.0.0 \
Expand Down
20 changes: 18 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,22 @@ PKG_LIST=$(go list ./... | grep -v /vendor/ | tr '\n' ' '| xargs echo -n)
BUILDKIT_PROGRESS=plain
CGO_ENABLED=0

# Modernize tool versioning
# Go 1.25 requires gopls v0.21.0+
# Go 1.24 and below should use gopls v0.20.0
GO_VERSION := $(shell go version | cut -d' ' -f3 | sed 's/go//')
MODERNIZE_VER := v0.20.0

# Check if Go version is 1.25 or higher
IS_GO_125 := $(shell echo "$(GO_VERSION)" | awk -F. '{if ($$1 > 1 || ($$1 == 1 && $$2 >= 25)) print 1; else print 0}')

ifeq ($(IS_GO_125),1)
MODERNIZE_VER := latest
endif

# Use GOTOOLCHAIN=auto to ensure the required toolchain is available if needed
MODERNIZE_CMD := GOTOOLCHAIN=auto $(GO) run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@$(MODERNIZE_VER)

.MAIN: test/coverage
.PHONY: all clean coverage dependencies help list test
.EXPORT_ALL_VARIABLES: # (2)
Expand Down Expand Up @@ -82,10 +98,10 @@ test/static: dependencies

test/styling: dependencies
gofmt -l . && echo '✔ Your code looks good.'
$(GO) run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -test ./...
$(MODERNIZE_CMD) -test ./...

format:
$(GO) run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix ./...
$(MODERNIZE_CMD) -fix ./...

coverage.out: env dependencies
$(GOTEST) -v -covermode=atomic -coverprofile="coverage.out" ./exercises/...
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ You can run tests in the following ways:
installed in your SO.
- [Install and run with make](#install-and-run-using-make) require runtime tools
and "make" installed in your SO.
- [Install and run in Docker](#install-and-running-with-docker-) require Docker and
docker-compose installed.
- [Install and run in Docker](#install-and-running-with-docker-) require Docker
and docker-compose installed.
- (⭐️)
[Install and in Docker with make](#install-and-running-with-docker--using-make)
require docker-compose and make installed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ The third line contains `n` space-separated strings, each `node[i]`.

- $ 1 \leq m, n \leq 30000 $
- $ 1 \leq $ length of `magazine[i]` and `note[i]` $ \leq 5 $
- Each word consists of English alphabetic letters (i.e., `a` to `z` and `A` to `Z`).
- Each word consists of English alphabetic letters (i.e., `a` to `z` and `A` to
`Z`).

## Sample Input 0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,4 +140,5 @@ max(1,2,3,4) - min(1,2,3,4) = 4 - 1 = 3

## Explanation 2

Here `k = 2`. `arr' = [2, 2]` or `arr' = [1, 1]` give the minimum unfairness of `0`.
Here `k = 2`. `arr' = [2, 2]` or `arr' = [1, 1]` give the minimum unfairness
of `0`.
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ the original price of each flower.

## Explanation 0

There are `n = 3` flowers with costs `c = [2, 5, ,6]` and `k = 3` people in the group.
There are `n = 3` flowers with costs `c = [2, 5, ,6]` and `k = 3` people
in the group.
If each person buys one flower,
the total cost of prices paid is `2 + 5 + 6 = 13` dollars.
Thus, we print `13` as our answer.
Expand Down
3 changes: 2 additions & 1 deletion docs/projecteuler/problem0002.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# [Even Fibonacci numbers](https://projecteuler.net/problem=2)

Each new term in the Fibonacci sequence is generated by adding the previous two terms.
Each new term in the Fibonacci sequence is generated by adding the previous
two terms.
By starting with 1 and 2, the first 10 terms will be:

$ 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... $
Expand Down
3 changes: 2 additions & 1 deletion docs/projecteuler/problem0020.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
$ n! $ means $ n × (n − 1) × ... × 3 × 2 × 1 $

For example, $ 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 $,
and the sum of the digits in the number $ 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 $.
and the sum of the digits in the number $ 10! $ is
$ 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 $.

Find the sum of the digits in the number $ 100! $
1 change: 0 additions & 1 deletion exercises/projecteuler/problem0007_brute_force_test.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build bruteforce
// +build bruteforce

package projecteuler

Expand Down
1 change: 0 additions & 1 deletion exercises/projecteuler/problem0010_bruteforce_test.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build bruteforce
// +build bruteforce

package projecteuler

Expand Down
1 change: 0 additions & 1 deletion exercises/projecteuler/problem0012_bruteforce_test.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build bruteforce
// +build bruteforce

package projecteuler

Expand Down
1 change: 0 additions & 1 deletion exercises/projecteuler/problem0014_bruteforce_test.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build bruteforce
// +build bruteforce

package projecteuler

Expand Down
1 change: 0 additions & 1 deletion exercises/projecteuler/problem0018_bruteforce_test.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build bruteforce
// +build bruteforce

package projecteuler

Expand Down
6 changes: 3 additions & 3 deletions exercises/projecteuler/problem0024.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func factorial(n int) int {

func permute(symbols string, target int) string {
choices := strings.Split(symbols, "")
answer := ""
var answer strings.Builder
minimum := 0

for len(choices) > 0 {
Expand All @@ -33,14 +33,14 @@ func permute(symbols string, target int) string {
index += 1
minimum += combos
}
answer += choices[index]
answer.WriteString(choices[index])
copy(choices[index:], choices[index+1:])
choices[len(choices)-1] = ""
choices = choices[:len(choices)-1]
minimum -= combos
}

return answer
return answer.String()
}

func Problem0024(inputElements string, inputPermutationToFind int) string {
Expand Down