Skip to content

Commit 445086d

Browse files
Add LargestSeriesProduct Matrix Generator
1 parent 660e455 commit 445086d

File tree

4 files changed

+83
-1
lines changed

4 files changed

+83
-1
lines changed

exercises/practice/largest-series-product/LargestSeriesProductTest.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import LargestSeriesProduct
44
open LeanTest
55

66
def largestSeriesProductTests : TestSuite :=
7-
(TestSuite.empty "largestSeriesProduct")
7+
(TestSuite.empty "LargestSeriesProduct")
88
|>.addTest "finds the largest product if span equals length" (do
99
return assertEqual (some 18) (LargestSeriesProduct.largestProduct 2 "29"))
1010
|>.addTest "can find the largest product of 2 with numbers in order" (do

generators/Generator/Generator.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ import Generator.RnaTranscriptionGenerator
3535
import Generator.RunLengthEncodingGenerator
3636
import Generator.TransposeGenerator
3737
import Generator.GameOfLifeGenerator
38+
import Generator.LargestSeriesProductGenerator
39+
import Generator.MatrixGenerator
3840
import Generator.WordyGenerator
3941
import Generator.ParallelLetterFrequencyGenerator
4042
import Generator.ComplexNumbersGenerator
@@ -120,6 +122,8 @@ def dispatch : Std.HashMap String (introGenerator × testCaseGenerator × endBod
120122
("RunLengthEncoding", (RunLengthEncodingGenerator.genIntro, RunLengthEncodingGenerator.genTestCase, RunLengthEncodingGenerator.genEnd)),
121123
("Transpose", (TransposeGenerator.genIntro, TransposeGenerator.genTestCase, TransposeGenerator.genEnd)),
122124
("GameOfLife", (GameOfLifeGenerator.genIntro, GameOfLifeGenerator.genTestCase, GameOfLifeGenerator.genEnd)),
125+
("LargestSeriesProduct", (LargestSeriesProductGenerator.genIntro, LargestSeriesProductGenerator.genTestCase, LargestSeriesProductGenerator.genEnd)),
126+
("Matrix", (MatrixGenerator.genIntro, MatrixGenerator.genTestCase, MatrixGenerator.genEnd)),
123127
("Wordy", (WordyGenerator.genIntro, WordyGenerator.genTestCase, WordyGenerator.genEnd)),
124128
("ParallelLetterFrequency", (ParallelLetterFrequencyGenerator.genIntro, ParallelLetterFrequencyGenerator.genTestCase, ParallelLetterFrequencyGenerator.genEnd)),
125129
("ComplexNumbers", (ComplexNumbersGenerator.genIntro, ComplexNumbersGenerator.genTestCase, ComplexNumbersGenerator.genEnd)),
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Lean.Data.Json
2+
import Std
3+
import Helper
4+
5+
open Lean
6+
open Std
7+
open Helper
8+
9+
namespace LargestSeriesProductGenerator
10+
11+
def genIntro (exercise : String) : String := s!"import LeanTest
12+
import {exercise}
13+
14+
open LeanTest
15+
16+
def {exercise.decapitalize}Tests : TestSuite :=
17+
(TestSuite.empty \"{exercise}\")"
18+
19+
def genTestCase (exercise : String) (case : TreeMap.Raw String Json) : String :=
20+
let input := case.get! "input"
21+
let digits := input.getObjValD "digits"
22+
let span := input.getObjValD "span"
23+
let expected := case.get! "expected"
24+
let description := case.get! "description"
25+
|> (·.compress)
26+
let funName := getFunName (case.get! "property")
27+
let call := s!"({exercise}.{funName} {span} {digits})"
28+
s!"
29+
|>.addTest {description} (do
30+
return assertEqual {errorToOption expected} {call})"
31+
32+
def genEnd (exercise : String) : String :=
33+
s!"
34+
35+
def main : IO UInt32 := do
36+
runTestSuitesWithExitCode [{exercise.decapitalize}Tests]
37+
"
38+
39+
end LargestSeriesProductGenerator
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Lean.Data.Json
2+
import Std
3+
import Helper
4+
5+
open Lean
6+
open Std
7+
open Helper
8+
9+
namespace MatrixGenerator
10+
11+
def genIntro (exercise : String) : String := s!"import LeanTest
12+
import {exercise}
13+
14+
open LeanTest
15+
16+
def {exercise.decapitalize}Tests : TestSuite :=
17+
(TestSuite.empty \"{exercise}\")"
18+
19+
def genTestCase (exercise : String) (case : TreeMap.Raw String Json) : String :=
20+
let input := case.get! "input"
21+
let string := input.getObjValD "string"
22+
let index := input.getObjValD "index"
23+
let expected := case.get! "expected"
24+
let description := case.get! "description"
25+
|> (·.compress)
26+
let funName := getFunName (case.get! "property")
27+
let call := s!"({exercise}.{funName} {string} {index})"
28+
s!"
29+
|>.addTest {description} (do
30+
return assertEqual {expected} {call})"
31+
32+
def genEnd (exercise : String) : String :=
33+
s!"
34+
35+
def main : IO UInt32 := do
36+
runTestSuitesWithExitCode [{exercise.decapitalize}Tests]
37+
"
38+
39+
end MatrixGenerator

0 commit comments

Comments
 (0)