Update template
This commit is contained in:
parent
aba7285d84
commit
8212fb6d96
3 changed files with 161 additions and 20 deletions
|
@ -8,6 +8,7 @@ import (
|
|||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
@ -49,8 +50,32 @@ func main() {
|
|||
runTests(infoStruct)
|
||||
|
||||
fmt.Println("Answers")
|
||||
fmt.Fprintf(color.Output, "Part %s: %s\n", color.BlueString("1"), color.BlueString(strconv.Itoa(challenge.PartOne(challengeInput))))
|
||||
fmt.Fprintf(color.Output, "Part %s: %s\n", color.BlueString("2"), color.BlueString(strconv.Itoa(challenge.PartTwo(challengeInput))))
|
||||
|
||||
fmt.Printf("Running part %s...\r", color.BlueString("1"))
|
||||
outputString := fmt.Sprintf("Part %s: ", color.BlueString("1"))
|
||||
x, t := runAndTime(func() int { return challenge.PartOne(challengeInput) })
|
||||
outputString += color.BlueString(strconv.Itoa(x))
|
||||
if t > 15 {
|
||||
outputString += fmt.Sprintf(" in %s seconds", color.BlueString(fmt.Sprintf("%.8f", t)))
|
||||
}
|
||||
for i := 0; i < 12; i += 1 {
|
||||
outputString += " "
|
||||
}
|
||||
outputString += "\n"
|
||||
fmt.Fprint(color.Output, outputString)
|
||||
|
||||
fmt.Printf("Running part %s...\r", color.BlueString("2"))
|
||||
outputString = fmt.Sprintf("Part %s: ", color.BlueString("2"))
|
||||
x, t = runAndTime(func() int { return challenge.PartTwo(challengeInput) })
|
||||
outputString += color.BlueString(strconv.Itoa(x))
|
||||
if t > 15 {
|
||||
outputString += fmt.Sprintf(" in %s seconds", color.BlueString(fmt.Sprintf("%.8f", t)))
|
||||
}
|
||||
for i := 0; i < 12; i += 1 {
|
||||
outputString += " "
|
||||
}
|
||||
outputString += "\n"
|
||||
fmt.Fprint(color.Output, outputString)
|
||||
|
||||
}
|
||||
|
||||
|
@ -81,14 +106,29 @@ func runTests(infoStruct info) {
|
|||
|
||||
rt := func(tcs []tc, f func(string) int, n string) {
|
||||
for i, tc := range tcs {
|
||||
fmt.Fprintf(color.Output, "%s ", color.BlueString(n+"."+strconv.Itoa(i+1)))
|
||||
result := f(tc.Input)
|
||||
readable_test_num := color.BlueString(n + "." + strconv.Itoa(i+1))
|
||||
fmt.Fprintf(color.Output, "Running %s...\r", readable_test_num)
|
||||
|
||||
outputString := readable_test_num + " "
|
||||
|
||||
result, t := runAndTime(func() int { return f(tc.Input) })
|
||||
|
||||
if result == tc.Expected {
|
||||
fmt.Fprintf(color.Output, "%s", color.GreenString("pass"))
|
||||
outputString += color.GreenString("pass")
|
||||
} else {
|
||||
fmt.Fprintf(color.Output, "%s (got %s, expected %s)", color.RedString("fail"), color.BlueString(strconv.Itoa(result)), color.BlueString(strconv.Itoa(tc.Expected)))
|
||||
outputString += fmt.Sprintf("%s (got %s, expected %s)", color.RedString("fail"), color.BlueString(strconv.Itoa(result)), color.BlueString(strconv.Itoa(tc.Expected)))
|
||||
}
|
||||
fmt.Println()
|
||||
|
||||
if t > 15 {
|
||||
outputString += fmt.Sprintf(" in %s seconds", color.BlueString(fmt.Sprintf("%.8f", t)))
|
||||
}
|
||||
|
||||
for i := 0; i < 12; i += 1 {
|
||||
outputString += " "
|
||||
}
|
||||
outputString += "\n"
|
||||
|
||||
fmt.Fprint(color.Output, outputString)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,3 +138,10 @@ func runTests(infoStruct info) {
|
|||
fmt.Println()
|
||||
|
||||
}
|
||||
|
||||
func runAndTime(f func() int) (int, float64) {
|
||||
st := time.Now()
|
||||
x := f()
|
||||
et := time.Now()
|
||||
return x, et.Sub(st).Seconds()
|
||||
}
|
||||
|
|
|
@ -8,10 +8,13 @@ import (
|
|||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
||||
var forceTime bool
|
||||
|
||||
func main() {
|
||||
var infoStruct info
|
||||
{
|
||||
|
@ -46,11 +49,41 @@ func main() {
|
|||
challengeInput = string(inb)
|
||||
}
|
||||
|
||||
for _, v := range os.Args[1:] {
|
||||
if v == "ft" {
|
||||
forceTime = true
|
||||
}
|
||||
}
|
||||
|
||||
runTests(infoStruct)
|
||||
|
||||
fmt.Println("Answers")
|
||||
fmt.Fprintf(color.Output, "Part %s: %s\n", color.BlueString("1"), color.BlueString(strconv.Itoa(challenge.PartOne(challengeInput))))
|
||||
fmt.Fprintf(color.Output, "Part %s: %s\n", color.BlueString("2"), color.BlueString(strconv.Itoa(challenge.PartTwo(challengeInput))))
|
||||
|
||||
fmt.Printf("Running part %s...\r", color.BlueString("1"))
|
||||
outputString := fmt.Sprintf("Part %s: ", color.BlueString("1"))
|
||||
x, t := runAndTime(func() int { return challenge.PartOne(challengeInput) })
|
||||
outputString += color.BlueString(strconv.Itoa(x))
|
||||
if t > 15 || forceTime {
|
||||
outputString += fmt.Sprintf(" in %s seconds", color.BlueString(fmt.Sprintf("%.8f", t)))
|
||||
}
|
||||
for i := 0; i < 12; i += 1 {
|
||||
outputString += " "
|
||||
}
|
||||
outputString += "\n"
|
||||
fmt.Fprint(color.Output, outputString)
|
||||
|
||||
fmt.Printf("Running part %s...\r", color.BlueString("2"))
|
||||
outputString = fmt.Sprintf("Part %s: ", color.BlueString("2"))
|
||||
x, t = runAndTime(func() int { return challenge.PartTwo(challengeInput) })
|
||||
outputString += color.BlueString(strconv.Itoa(x))
|
||||
if t > 15 || forceTime {
|
||||
outputString += fmt.Sprintf(" in %s seconds", color.BlueString(fmt.Sprintf("%.8f", t)))
|
||||
}
|
||||
for i := 0; i < 12; i += 1 {
|
||||
outputString += " "
|
||||
}
|
||||
outputString += "\n"
|
||||
fmt.Fprint(color.Output, outputString)
|
||||
|
||||
}
|
||||
|
||||
|
@ -81,14 +114,29 @@ func runTests(infoStruct info) {
|
|||
|
||||
rt := func(tcs []tc, f func(string) int, n string) {
|
||||
for i, tc := range tcs {
|
||||
fmt.Fprintf(color.Output, "%s ", color.BlueString(n+"."+strconv.Itoa(i+1)))
|
||||
result := f(tc.Input)
|
||||
readable_test_num := color.BlueString(n + "." + strconv.Itoa(i+1))
|
||||
fmt.Fprintf(color.Output, "Running %s...\r", readable_test_num)
|
||||
|
||||
outputString := readable_test_num + " "
|
||||
|
||||
result, t := runAndTime(func() int { return f(tc.Input) })
|
||||
|
||||
if result == tc.Expected {
|
||||
fmt.Fprintf(color.Output, "%s", color.GreenString("pass"))
|
||||
outputString += color.GreenString("pass")
|
||||
} else {
|
||||
fmt.Fprintf(color.Output, "%s (got %s, expected %s)", color.RedString("fail"), color.BlueString(strconv.Itoa(result)), color.BlueString(strconv.Itoa(tc.Expected)))
|
||||
outputString += fmt.Sprintf("%s (got %s, expected %s)", color.RedString("fail"), color.BlueString(strconv.Itoa(result)), color.BlueString(strconv.Itoa(tc.Expected)))
|
||||
}
|
||||
fmt.Println()
|
||||
|
||||
if t > 15 || forceTime {
|
||||
outputString += fmt.Sprintf(" in %s seconds", color.BlueString(fmt.Sprintf("%.8f", t)))
|
||||
}
|
||||
|
||||
for i := 0; i < 12; i += 1 {
|
||||
outputString += " "
|
||||
}
|
||||
outputString += "\n"
|
||||
|
||||
fmt.Fprint(color.Output, outputString)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,3 +146,10 @@ func runTests(infoStruct info) {
|
|||
fmt.Println()
|
||||
|
||||
}
|
||||
|
||||
func runAndTime(f func() int) (int, float64) {
|
||||
st := time.Now()
|
||||
x := f()
|
||||
et := time.Now()
|
||||
return x, et.Sub(st).Seconds()
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import json
|
||||
import platform
|
||||
import sys
|
||||
import time
|
||||
|
||||
from rich import print
|
||||
|
||||
|
@ -8,6 +9,16 @@ from partOne import partOne
|
|||
from partTwo import partTwo
|
||||
|
||||
|
||||
force_time = False
|
||||
|
||||
|
||||
def run_and_time(f):
|
||||
st = time.time()
|
||||
x = f()
|
||||
et = time.time()
|
||||
return x, et-st
|
||||
|
||||
|
||||
def run_tests(test_cases):
|
||||
do_tests = True
|
||||
if len(test_cases) == 0:
|
||||
|
@ -23,13 +34,24 @@ def run_tests(test_cases):
|
|||
|
||||
def rt(tcs, f, n):
|
||||
for i, tc in enumerate(tcs):
|
||||
print(f"{n}.{i+1} ", end="")
|
||||
readable_test_num = f"{n}.{i+1}"
|
||||
print(f"Running {readable_test_num}...", end="\r")
|
||||
|
||||
expectedInt = tc["expected"]
|
||||
result = f(str(tc["input"]))
|
||||
|
||||
result, t = run_and_time(lambda: f(str(tc["input"])))
|
||||
|
||||
output_string = f"{readable_test_num} "
|
||||
|
||||
if result == expectedInt:
|
||||
print("[green]pass[/green]")
|
||||
output_string += "[green]pass[/green]"
|
||||
else:
|
||||
print(f"[red]fail[/red] (got {result}, expected {expectedInt})")
|
||||
output_string += f"[red]fail[/red] (got {result}, expected {expectedInt})"
|
||||
|
||||
if t > 15 or force_time:
|
||||
output_string += f" in {t} seconds"
|
||||
|
||||
print(output_string + " "*12)
|
||||
|
||||
rt(test_cases["one"], partOne, 1)
|
||||
rt(test_cases["two"], partTwo, 2)
|
||||
|
@ -67,11 +89,28 @@ if __name__ == "__main__":
|
|||
visualise.visualise(challenge_input)
|
||||
sys.exit()
|
||||
|
||||
if "ft" in sys.argv:
|
||||
force_time = True
|
||||
|
||||
run_tests(info["testCases"])
|
||||
|
||||
if "debug" in sys.argv:
|
||||
sys.exit()
|
||||
|
||||
print("Answers")
|
||||
print("Part 1:", partOne(challenge_input))
|
||||
print("Part 2:", partTwo(challenge_input))
|
||||
|
||||
print("Running part 1...", end="\r")
|
||||
output_string = "Part 1: "
|
||||
x, t = run_and_time(lambda: partOne(challenge_input))
|
||||
output_string += str(x)
|
||||
if t > 15 or force_time:
|
||||
output_string += f" in {t} seconds"
|
||||
print(output_string + " "*12)
|
||||
|
||||
print("Running part 2...", end="\r")
|
||||
output_string = "Part 2: "
|
||||
x, t = run_and_time(lambda: partTwo(challenge_input))
|
||||
output_string += str(x)
|
||||
if t > 15 or force_time:
|
||||
output_string += f" in {t} seconds"
|
||||
print(output_string + " "*12)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue