add new day script for 2023

This commit is contained in:
Gabriel Augendre 2023-12-02 12:25:29 +01:00
parent 2a13616ae5
commit c67b57c949
8 changed files with 97 additions and 19 deletions

View file

@ -7,7 +7,7 @@ import (
"strconv" "strconv"
) )
func Part1(input io.Reader) (int, error) { func D01Part1(input io.Reader) (int, error) {
scanner := bufio.NewScanner(input) scanner := bufio.NewScanner(input)
sum := 0 sum := 0
@ -38,7 +38,7 @@ func Part1(input io.Reader) (int, error) {
return sum, nil return sum, nil
} }
func Part2(input io.Reader) (int, error) { func D01Part2(input io.Reader) (int, error) {
reg, err := regexp.Compile(`[0-9]|one|two|three|four|five|six|seven|eight|nine`) reg, err := regexp.Compile(`[0-9]|one|two|three|four|five|six|seven|eight|nine`)
if err != nil { if err != nil {
return 0, err return 0, err

View file

@ -1,39 +1,26 @@
package _023 package _023
import ( import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"os"
"testing" "testing"
) )
func TestPart1(t *testing.T) { func TestD01Part1(t *testing.T) {
tests := []testCase{ tests := []testCase{
{"inputs/day01_test1", 142}, {"inputs/day01_test1", 142},
{"inputs/day01", 53974}, {"inputs/day01", 53974},
} }
for _, test := range tests { for _, test := range tests {
t.Run(test.filename, check(test, Part1)) t.Run(test.filename, check(test, D01Part1))
} }
} }
func TestPart2(t *testing.T) { func TestD01Part2(t *testing.T) {
tests := []testCase{ tests := []testCase{
{"inputs/day01_test2", 281}, {"inputs/day01_test2", 281},
{"inputs/day01_test3", 277}, {"inputs/day01_test3", 277},
{"inputs/day01", 52840}, {"inputs/day01", 52840},
} }
for _, test := range tests { for _, test := range tests {
t.Run(test.filename, check(test, Part2)) t.Run(test.filename, check(test, D01Part2))
}
}
func check(test testCase, fn solveFunc) func(t *testing.T) {
return func(t *testing.T) {
file, err := os.Open(test.filename)
require.NoError(t, err)
got, err := fn(file)
require.NoError(t, err)
assert.Equal(t, test.want, got)
} }
} }

0
2023/inputs/dayxx Normal file
View file

0
2023/inputs/dayxx_test1 Normal file
View file

0
2023/inputs/dayxx_test2 Normal file
View file

25
2023/new_day Executable file
View file

@ -0,0 +1,25 @@
#!/bin/bash
set -euxo pipefail
if [[ $# -ne 2 ]]; then
>&2 echo "Usage: $0 <number> <name>"
exit 2
fi
filename=day$1_$2
cp template.go $filename.go
cp template_test.go $filename_test.go
if [ "$(uname -s)" == "Linux" ]; then
sed -e "s/Dxx/day$1/g" -i ./$filename.go
sed -e "s/Dxx/day$1/g" -i ./$filename_test.go
sed -e "s/dayxx/day$1/g" -i ./$filename_test.go
else
sed -e "s/Dxx/day$1/g" -i "" ./$filename.go
sed -e "s/Dxx/day$1/g" -i "" ./$filename_test.go
sed -e "s/dayxx/day$1/g" -i "" ./$filename_test.go
fi
mkdir -p inputs
touch inputs/day$1
touch inputs/day$1_test1
touch inputs/day$1_test2
git add "inputs/day$1*" $filename

28
2023/template.go Normal file
View file

@ -0,0 +1,28 @@
package _023
import (
"bufio"
"io"
)
func DxxPart1(input io.Reader) (int, error) {
scanner := bufio.NewScanner(input)
for scanner.Scan() {
line := scanner.Text()
_ = line
}
return 0, nil
}
func DxxPart2(input io.Reader) (int, error) {
scanner := bufio.NewScanner(input)
for scanner.Scan() {
line := scanner.Text()
_ = line
}
return 0, nil
}

38
2023/template_test.go Normal file
View file

@ -0,0 +1,38 @@
package _023
import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"os"
"testing"
)
func TestDxxPart1(t *testing.T) {
tests := []testCase{
{"inputs/dayxx_test1", 0},
{"inputs/dayxx", 0},
}
for _, test := range tests {
t.Run(test.filename, check(test, DxxPart1))
}
}
func TestDxxPart2(t *testing.T) {
tests := []testCase{
{"inputs/dayxx_test2", 0},
{"inputs/dayxx", 0},
}
for _, test := range tests {
t.Run(test.filename, check(test, DxxPart2))
}
}
func check(test testCase, fn solveFunc) func(t *testing.T) {
return func(t *testing.T) {
file, err := os.Open(test.filename)
require.NoError(t, err)
got, err := fn(file)
require.NoError(t, err)
assert.Equal(t, test.want, got)
}
}