Skip to content

Commit db3a807

Browse files
m-dangokotp
andauthored
Create quicksolve module for quick exercise generation (#410)
* Create quicksolve module for quick exercise generation * Update exercises/practice/difference-of-squares/.meta/exercise-data.yaml Co-authored-by: Victor Goff <[email protected]> * Update exercises/practice/minesweeper/.meta/exercise-data.yaml Co-authored-by: Victor Goff <[email protected]> * Update exercises/practice/ocr-numbers/.meta/exercise-data.yaml Co-authored-by: Victor Goff <[email protected]> * Generate additional exercises with quicksolve Co-authored-by: Victor Goff <[email protected]>
1 parent e1cc630 commit db3a807

File tree

95 files changed

+4868
-1101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+4868
-1101
lines changed
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
11
subs: rebase
22
tests: |-
33
for my $case (@test_cases) {
4-
is(
5-
rebase($case->{input}{digits}),
6-
$case->{expected},
7-
$case->{description},
8-
);
4+
if ( ref $case->{expected} ne 'HASH' ) {
5+
is(
6+
rebase($case->{input}),
7+
$case->{expected},
8+
$case->{description},
9+
);
10+
}
11+
else {
12+
like dies( sub { rebase($case->{input}) } ),
13+
qr/$case->{expected}{error}/, $case->{description};
14+
}
915
}
1016
1117
example: |-
18+
use lib 'lib';
19+
use Exercism::QuickSolve;
20+
1221
sub rebase {
13-
my ($digits) = @_;
14-
return (grep { $_->{input}{digits} eq $digits } @main::test_cases)[0]->{expected};
22+
my ($input) = @_;
23+
24+
quicksolve( input => $input );
1525
}
1626
1727
stub: |-
1828
sub rebase {
19-
my ($digits) = @_;
29+
my ($input) = @_;
2030
return undef;
2131
}

exercises/practice/all-your-base/.meta/solutions/AllYourBase.pm

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ use warnings;
44
use Exporter qw<import>;
55
our @EXPORT_OK = qw<rebase>;
66

7+
use lib 'lib';
8+
use Exercism::QuickSolve;
9+
710
sub rebase {
8-
my ($digits) = @_;
9-
return ( grep { $_->{input}{digits} eq $digits } @main::test_cases )
10-
[0]->{expected};
11+
my ($input) = @_;
12+
13+
quicksolve( input => $input );
1114
}
1215

1316
1;

exercises/practice/all-your-base/.meta/solutions/all-your-base.t

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,14 @@ our @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; };
1313
imported_ok qw<rebase> or bail_out;
1414

1515
for my $case (@test_cases) {
16-
is( rebase( $case->{input}{digits} ),
17-
$case->{expected}, $case->{description}, );
16+
if ( ref $case->{expected} ne 'HASH' ) {
17+
is( rebase( $case->{input} ),
18+
$case->{expected}, $case->{description}, );
19+
}
20+
else {
21+
like dies( sub { rebase( $case->{input} ) } ),
22+
qr/$case->{expected}{error}/, $case->{description};
23+
}
1824
}
1925

2026
done_testing;

exercises/practice/all-your-base/AllYourBase.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use Exporter qw<import>;
55
our @EXPORT_OK = qw<rebase>;
66

77
sub rebase {
8-
my ($digits) = @_;
8+
my ($input) = @_;
99
return undef;
1010
}
1111

exercises/practice/all-your-base/all-your-base.t

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,14 @@ my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; };
1313
imported_ok qw<rebase> or bail_out;
1414

1515
for my $case (@test_cases) {
16-
is( rebase( $case->{input}{digits} ),
17-
$case->{expected}, $case->{description}, );
16+
if ( ref $case->{expected} ne 'HASH' ) {
17+
is( rebase( $case->{input} ),
18+
$case->{expected}, $case->{description}, );
19+
}
20+
else {
21+
like dies( sub { rebase( $case->{input} ) } ),
22+
qr/$case->{expected}{error}/, $case->{description};
23+
}
1824
}
1925

2026
done_testing;

exercises/practice/binary-search-tree/.meta/exercise-data.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,16 @@ tests: |-
99
}
1010
1111
example: |-
12+
use lib 'lib';
13+
use Exercism::QuickSolve;
14+
1215
sub tree {
1316
my ($data) = @_;
14-
return (grep { $_->{input}{treeData} eq $data } @main::test_cases)[0]->{expected};
17+
18+
quicksolve(
19+
input => $data,
20+
input_key => 'treeData',
21+
);
1522
}
1623
1724
stub: |-

exercises/practice/binary-search-tree/.meta/solutions/BinarySearchTree.pm

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@ use warnings;
44
use Exporter qw<import>;
55
our @EXPORT_OK = qw<tree>;
66

7+
use lib 'lib';
8+
use Exercism::QuickSolve;
9+
710
sub tree {
811
my ($data) = @_;
9-
return ( grep { $_->{input}{treeData} eq $data } @main::test_cases )
10-
[0]->{expected};
12+
13+
quicksolve(
14+
input => $data,
15+
input_key => 'treeData',
16+
);
1117
}
1218

1319
1;

exercises/practice/crypto-square/.meta/exercise-data.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,16 @@ tests: |-
99
}
1010
1111
example: |-
12+
use lib 'lib';
13+
use Exercism::QuickSolve;
14+
1215
sub cipher {
1316
my ($text) = @_;
14-
return (grep { $_->{input}{plaintext} eq $text } @main::test_cases)[0]->{expected};
17+
18+
quicksolve(
19+
input => $text,
20+
input_key => 'plaintext',
21+
);
1522
}
1623
1724
stub: |-

exercises/practice/crypto-square/.meta/solutions/CryptoSquare.pm

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@ use warnings;
44
use Exporter qw<import>;
55
our @EXPORT_OK = qw<cipher>;
66

7+
use lib 'lib';
8+
use Exercism::QuickSolve;
9+
710
sub cipher {
811
my ($text) = @_;
9-
return ( grep { $_->{input}{plaintext} eq $text }
10-
@main::test_cases )[0]->{expected};
12+
13+
quicksolve(
14+
input => $text,
15+
input_key => 'plaintext',
16+
);
1117
}
1218

1319
1;

exercises/practice/difference-of-squares/.meta/exercise-data.yaml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,37 @@ tests: |-
2020
}
2121
2222
example: |-
23+
use lib 'lib';
24+
use Exercism::QuickSolve;
25+
2326
sub square_of_sum {
2427
my ($number) = @_;
25-
return (grep { $_->{property} eq 'squareOfSum' && $_->{input}{number} eq $number } @main::test_cases)[0]->{expected};
28+
29+
quicksolve(
30+
input => $number,
31+
input_key => 'number',
32+
property => 'squareOfSum',
33+
);
2634
}
2735
2836
sub sum_of_squares {
2937
my ($number) = @_;
30-
return (grep { $_->{property} eq 'sumOfSquares' && $_->{input}{number} eq $number } @main::test_cases)[0]->{expected};
38+
39+
quicksolve(
40+
input => $number,
41+
input_key => 'number',
42+
property => 'sumOfSquares',
43+
);
3144
}
3245
3346
sub difference_of_squares {
3447
my ($number) = @_;
35-
return (grep { $_->{property} eq 'differenceOfSquares' && $_->{input}{number} eq $number } @main::test_cases)[0]->{expected};
48+
49+
quicksolve(
50+
input => $number,
51+
input_key => 'number',
52+
property => 'differenceOfSquares',
53+
);
3654
}
3755
3856
stub: |-

0 commit comments

Comments
 (0)