trackler 2.2.1.46 → 2.2.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/nucleotide-count/canonical-data.json +7 -7
- data/tracks/c/README.md +1 -1
- data/tracks/c/docs/SNIPPET.txt +2 -3
- data/tracks/c/exercises/acronym/test/test_acronym.c +8 -0
- data/tracks/c/exercises/all-your-base/test/test_all_your_base.c +8 -0
- data/tracks/c/exercises/allergies/test/test_allergies.c +8 -0
- data/tracks/c/exercises/anagram/test/test_anagram.c +8 -0
- data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +8 -0
- data/tracks/c/exercises/beer-song/src/example.c +23 -22
- data/tracks/c/exercises/beer-song/src/example.h +3 -3
- data/tracks/c/exercises/beer-song/test/test_beer_song.c +8 -0
- data/tracks/c/exercises/binary-search/test/test_binary_search.c +8 -0
- data/tracks/c/exercises/binary/test/test_binary.c +8 -0
- data/tracks/c/exercises/bob/test/test_bob.c +8 -0
- data/tracks/c/exercises/clock/test/test_clock.c +8 -0
- data/tracks/c/exercises/difference-of-squares/test/test_difference_of_squares.c +8 -0
- data/tracks/c/exercises/gigasecond/test/test_gigasecond.c +8 -0
- data/tracks/c/exercises/grains/test/test_grains.c +8 -0
- data/tracks/c/exercises/hamming/test/test_hamming.c +8 -0
- data/tracks/c/exercises/hello-world/src/example.c +0 -2
- data/tracks/c/exercises/hello-world/test/test_hello_world.c +8 -0
- data/tracks/c/exercises/isogram/test/test_isogram.c +8 -0
- data/tracks/c/exercises/largest-series-product/test/test_largest_series_product.c +8 -0
- data/tracks/c/exercises/leap/test/test_leap.c +8 -0
- data/tracks/c/exercises/meetup/test/test_meetup.c +8 -0
- data/tracks/c/exercises/nth-prime/test/test_nth_prime.c +8 -0
- data/tracks/c/exercises/nucleotide-count/test/test_nucleotide_count.c +8 -0
- data/tracks/c/exercises/palindrome-products/test/test_palindrome_products.c +8 -0
- data/tracks/c/exercises/pangram/test/test_pangram.c +8 -0
- data/tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c +8 -0
- data/tracks/c/exercises/perfect-numbers/src/example.c +4 -4
- data/tracks/c/exercises/perfect-numbers/src/example.h +4 -4
- data/tracks/c/exercises/perfect-numbers/src/perfect_numbers.h +4 -4
- data/tracks/c/exercises/perfect-numbers/test/test_perfect_numbers.c +23 -13
- data/tracks/c/exercises/phone-number/test/test_phone_number.c +8 -0
- data/tracks/c/exercises/raindrops/test/test_raindrops.c +5 -1
- data/tracks/c/exercises/react/src/example.c +8 -8
- data/tracks/c/exercises/react/test/test_react.c +8 -0
- data/tracks/c/exercises/rna-transcription/test/test_rna_transcription.c +8 -0
- data/tracks/c/exercises/robot-simulator/src/example.c +12 -12
- data/tracks/c/exercises/robot-simulator/src/robot_simulator.h +11 -11
- data/tracks/c/exercises/robot-simulator/test/test_robot_simulator.c +33 -25
- data/tracks/c/exercises/roman-numerals/test/test_roman_numerals.c +8 -0
- data/tracks/c/exercises/scrabble-score/test/test_scrabble_score.c +8 -0
- data/tracks/c/exercises/series/test/test_series.c +8 -0
- data/tracks/c/exercises/sieve/test/test_sieve.c +8 -0
- data/tracks/c/exercises/space-age/src/example.h +8 -8
- data/tracks/c/exercises/space-age/test/test_space_age.c +16 -8
- data/tracks/c/exercises/sum-of-multiples/test/test_sum_of_multiples.c +8 -0
- data/tracks/c/exercises/triangle/test/test_triangle.c +8 -0
- data/tracks/c/exercises/word-count/test/test_word_count.c +8 -0
- data/tracks/cfml/config.json +8 -0
- data/tracks/cfml/exercises/anagram/.meta/HINTS.md +0 -0
- data/tracks/cfml/exercises/anagram/Anagram.cfc +13 -0
- data/tracks/cfml/exercises/anagram/AnagramTest.cfc +79 -0
- data/tracks/cfml/exercises/anagram/README.md +29 -0
- data/tracks/cfml/exercises/anagram/Solution.cfc +42 -0
- data/tracks/cfml/exercises/anagram/SolutionTest.cfc +7 -0
- data/tracks/cfml/exercises/anagram/TestRunner.cfc +103 -0
- data/tracks/cfml/exercises/anagram/box.json +8 -0
- data/tracks/cfml/exercises/anagram/index.cfm +37 -0
- data/tracks/common-lisp/config.json +5 -5
- data/tracks/csharp/exercises/two-bucket/Example.cs +53 -79
- data/tracks/csharp/exercises/two-bucket/TwoBucketTest.cs +2 -2
- data/tracks/csharp/generators/Exercises/QueenAttack.cs +3 -3
- data/tracks/dart/exercises/leap/test/leap_test.dart +1 -1
- data/tracks/delphi/exercises/hamming/uHammingTests.pas +2 -2
- data/tracks/delphi/exercises/leap/uLeapTests.pas +11 -38
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountExample.pas +1 -1
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +31 -55
- data/tracks/ecmascript/config.json +31 -0
- data/tracks/ecmascript/config/maintainers.json +5 -5
- data/tracks/ecmascript/exercises/accumulate/package.json +1 -1
- data/tracks/ecmascript/exercises/acronym/package.json +1 -1
- data/tracks/ecmascript/exercises/all-your-base/package.json +1 -1
- data/tracks/ecmascript/exercises/allergies/package.json +1 -1
- data/tracks/ecmascript/exercises/alphametics/package.json +1 -1
- data/tracks/ecmascript/exercises/anagram/package.json +1 -1
- data/tracks/ecmascript/exercises/atbash-cipher/package.json +1 -1
- data/tracks/ecmascript/exercises/beer-song/package.json +1 -1
- data/tracks/ecmascript/exercises/binary-search-tree/package.json +1 -1
- data/tracks/ecmascript/exercises/binary-search/package.json +1 -1
- data/tracks/ecmascript/exercises/binary/package.json +1 -1
- data/tracks/ecmascript/exercises/bob/package.json +1 -1
- data/tracks/ecmascript/exercises/bracket-push/package.json +1 -1
- data/tracks/ecmascript/exercises/circular-buffer/package.json +1 -1
- data/tracks/ecmascript/exercises/clock/package.json +1 -1
- data/tracks/ecmascript/exercises/collatz-conjecture/README.md +59 -0
- data/tracks/ecmascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +31 -0
- data/tracks/ecmascript/exercises/collatz-conjecture/example.js +14 -0
- data/tracks/ecmascript/exercises/collatz-conjecture/package.json +69 -0
- data/tracks/ecmascript/exercises/connect/package.json +1 -1
- data/tracks/ecmascript/exercises/crypto-square/package.json +1 -1
- data/tracks/ecmascript/exercises/custom-set/package.json +1 -1
- data/tracks/ecmascript/exercises/diamond/package.json +1 -1
- data/tracks/ecmascript/exercises/difference-of-squares/package.json +1 -1
- data/tracks/ecmascript/exercises/diffie-hellman/package.json +1 -1
- data/tracks/ecmascript/exercises/etl/package.json +1 -1
- data/tracks/ecmascript/exercises/flatten-array/package.json +1 -1
- data/tracks/ecmascript/exercises/food-chain/package.json +1 -1
- data/tracks/ecmascript/exercises/gigasecond/package.json +1 -1
- data/tracks/ecmascript/exercises/grade-school/package.json +1 -1
- data/tracks/ecmascript/exercises/grains/package.json +1 -1
- data/tracks/ecmascript/exercises/hamming/package.json +1 -1
- data/tracks/ecmascript/exercises/hello-world/package.json +1 -1
- data/tracks/ecmascript/exercises/hexadecimal/package.json +1 -1
- data/tracks/ecmascript/exercises/isogram/package.json +1 -1
- data/tracks/ecmascript/exercises/kindergarten-garden/package.json +1 -1
- data/tracks/ecmascript/exercises/largest-series-product/package.json +1 -1
- data/tracks/ecmascript/exercises/leap/package.json +1 -1
- data/tracks/ecmascript/exercises/linked-list/package.json +1 -1
- data/tracks/ecmascript/exercises/list-ops/package.json +1 -1
- data/tracks/ecmascript/exercises/luhn/package.json +1 -1
- data/tracks/ecmascript/exercises/matrix/package.json +1 -1
- data/tracks/ecmascript/exercises/meetup/package.json +1 -1
- data/tracks/ecmascript/exercises/minesweeper/package.json +1 -1
- data/tracks/ecmascript/exercises/nth-prime/package.json +1 -1
- data/tracks/ecmascript/exercises/ocr-numbers/package.json +1 -1
- data/tracks/ecmascript/exercises/octal/package.json +1 -1
- data/tracks/ecmascript/exercises/palindrome-products/package.json +1 -1
- data/tracks/ecmascript/exercises/pangram/package.json +1 -1
- data/tracks/ecmascript/exercises/pascals-triangle/package.json +1 -1
- data/tracks/ecmascript/exercises/perfect-numbers/package.json +1 -1
- data/tracks/ecmascript/exercises/phone-number/package.json +1 -1
- data/tracks/ecmascript/exercises/pig-latin/package.json +1 -1
- data/tracks/ecmascript/exercises/prime-factors/package.json +1 -1
- data/tracks/ecmascript/exercises/proverb/package.json +1 -1
- data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +1 -1
- data/tracks/ecmascript/exercises/queen-attack/package.json +1 -1
- data/tracks/ecmascript/exercises/raindrops/package.json +1 -1
- data/tracks/ecmascript/exercises/rna-transcription/package.json +1 -1
- data/tracks/ecmascript/exercises/robot-name/package.json +1 -1
- data/tracks/ecmascript/exercises/robot-simulator/package.json +1 -1
- data/tracks/ecmascript/exercises/roman-numerals/package.json +1 -1
- data/tracks/ecmascript/exercises/run-length-encoding/package.json +1 -1
- data/tracks/ecmascript/exercises/saddle-points/package.json +1 -1
- data/tracks/ecmascript/exercises/say/package.json +1 -1
- data/tracks/ecmascript/exercises/scrabble-score/package.json +1 -1
- data/tracks/ecmascript/exercises/secret-handshake/package.json +1 -1
- data/tracks/ecmascript/exercises/series/package.json +1 -1
- data/tracks/ecmascript/exercises/sieve/package.json +1 -1
- data/tracks/ecmascript/exercises/simple-cipher/package.json +1 -1
- data/tracks/ecmascript/exercises/simple-linked-list/package.json +1 -1
- data/tracks/ecmascript/exercises/space-age/package.json +1 -1
- data/tracks/ecmascript/exercises/strain/package.json +1 -1
- data/tracks/ecmascript/exercises/sublist/package.json +1 -1
- data/tracks/ecmascript/exercises/sum-of-multiples/package.json +1 -1
- data/tracks/ecmascript/exercises/triangle/package.json +1 -1
- data/tracks/ecmascript/exercises/trinary/package.json +1 -1
- data/tracks/ecmascript/exercises/twelve-days/package.json +1 -1
- data/tracks/ecmascript/exercises/two-bucket/package.json +1 -1
- data/tracks/ecmascript/exercises/word-count/package.json +1 -1
- data/tracks/ecmascript/exercises/word-search/README.md +58 -0
- data/tracks/ecmascript/exercises/word-search/example.js +146 -0
- data/tracks/ecmascript/exercises/word-search/package.json +69 -0
- data/tracks/ecmascript/exercises/word-search/word-search.spec.js +626 -0
- data/tracks/ecmascript/exercises/wordy/package.json +1 -1
- data/tracks/ecmascript/package.json +1 -1
- data/tracks/elixir/config.json +11 -0
- data/tracks/elixir/exercises/luhn/example.exs +26 -46
- data/tracks/elixir/exercises/luhn/luhn.exs +0 -13
- data/tracks/elixir/exercises/luhn/luhn_test.exs +44 -14
- data/tracks/elixir/exercises/transpose/README.md +101 -0
- data/tracks/elixir/exercises/transpose/example.exs +46 -0
- data/tracks/elixir/exercises/transpose/transpose.exs +22 -0
- data/tracks/elixir/exercises/transpose/transpose_test.exs +248 -0
- data/tracks/fsharp/exercises/grains/Example.fs +10 -2
- data/tracks/fsharp/exercises/grains/Grains.fs +2 -4
- data/tracks/fsharp/exercises/grains/GrainsTest.fs +52 -25
- data/tracks/fsharp/exercises/phone-number/Example.fs +11 -3
- data/tracks/fsharp/exercises/phone-number/PhoneNumber.fs +1 -1
- data/tracks/fsharp/exercises/phone-number/PhoneNumberTest.fs +32 -21
- data/tracks/fsharp/exercises/prime-factors/Example.fs +6 -13
- data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fs +1 -1
- data/tracks/fsharp/exercises/prime-factors/PrimeFactorsTest.fs +23 -32
- data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipherTest.fs +22 -13
- data/tracks/fsharp/generators/Exercise.fs +3 -4
- data/tracks/fsharp/generators/Generators.fs +31 -0
- data/tracks/gnu-apl/bin/run-all-tests +5 -2
- data/tracks/java/CONTRIBUTING.md +8 -0
- data/tracks/java/POLICIES.md +2 -2
- data/tracks/java/config.json +26 -4
- data/tracks/java/exercises/triangle/.meta/.version +1 -0
- data/tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java +1 -1
- data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +59 -40
- data/tracks/javascript/config.json +30 -0
- data/tracks/javascript/config/maintainers.json +8 -8
- data/tracks/javascript/exercises/change/example.js +6 -22
- data/tracks/javascript/exercises/collatz-conjecture/README.md +57 -0
- data/tracks/javascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +37 -0
- data/tracks/javascript/exercises/collatz-conjecture/example.js +20 -0
- data/tracks/javascript/exercises/protein-translation/example.js +30 -31
- data/tracks/javascript/exercises/protein-translation/protein-translation.spec.js +60 -60
- data/tracks/javascript/exercises/transpose/README.md +89 -0
- data/tracks/javascript/exercises/transpose/example.js +17 -0
- data/tracks/javascript/exercises/transpose/transpose.spec.js +67 -0
- data/tracks/objective-c/config.json +283 -263
- data/tracks/objective-c/exercises/grains/GrainsExample.h +6 -0
- data/tracks/objective-c/exercises/grains/GrainsExample.m +19 -0
- data/tracks/objective-c/exercises/grains/GrainsTest.m +85 -0
- data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.h +6 -0
- data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.m +39 -0
- data/tracks/objective-c/exercises/nth-prime/NthPrimeTest.m +53 -0
- data/tracks/python/config.json +42 -11
- data/tracks/python/exercises/change/README.md +34 -0
- data/tracks/python/exercises/two-bucket/README.md +47 -0
- data/tracks/ruby/README.md +4 -1
- data/tracks/ruby/lib/generator/command_line.rb +3 -3
- data/tracks/ruby/lib/generator/command_line/generator_optparser.rb +3 -3
- data/tracks/ruby/test/generator/command_line/generator_optparser_test.rb +4 -4
- data/tracks/ruby/test/generator/command_line_test.rb +5 -5
- data/tracks/typescript/config.json +15 -0
- data/tracks/typescript/exercises/strain/README.md +60 -0
- data/tracks/typescript/exercises/strain/package.json +36 -0
- data/tracks/typescript/exercises/strain/strain.example.ts +23 -0
- data/tracks/typescript/exercises/strain/strain.test.ts +76 -0
- data/tracks/typescript/exercises/strain/strain.ts +0 -0
- data/tracks/typescript/exercises/strain/tsconfig.json +22 -0
- data/tracks/typescript/exercises/strain/tslint.json +127 -0
- data/tracks/typescript/exercises/strain/yarn.lock +2305 -0
- metadata +46 -3
- data/tracks/ecmascript/package-lock.json +0 -2835
@@ -17,15 +17,15 @@ static int aliquot_sum(int n)
|
|
17
17
|
|
18
18
|
kind classify_number(int n)
|
19
19
|
{
|
20
|
-
kind class =
|
20
|
+
kind class = ERROR;
|
21
21
|
if (n > 0) {
|
22
22
|
int sum = aliquot_sum(n);
|
23
23
|
if (sum > n) {
|
24
|
-
class =
|
24
|
+
class = ABUNDANT_NUMBER;
|
25
25
|
} else if (sum < n) {
|
26
|
-
class =
|
26
|
+
class = DEFICIENT_NUMBER;
|
27
27
|
} else {
|
28
|
-
class =
|
28
|
+
class = PERFECT_NUMBER;
|
29
29
|
}
|
30
30
|
}
|
31
31
|
return class;
|
@@ -2,10 +2,10 @@
|
|
2
2
|
#define PERFECT_NUMBERS_H
|
3
3
|
|
4
4
|
typedef enum {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
PERFECT_NUMBER = 1,
|
6
|
+
ABUNDANT_NUMBER = 2,
|
7
|
+
DEFICIENT_NUMBER = 3,
|
8
|
+
ERROR = -1
|
9
9
|
} kind;
|
10
10
|
|
11
11
|
kind classify_number(int);
|
@@ -1,86 +1,95 @@
|
|
1
1
|
#include "vendor/unity.h"
|
2
2
|
#include "../src/perfect_numbers.h"
|
3
3
|
|
4
|
+
void setUp(void)
|
5
|
+
{
|
6
|
+
}
|
7
|
+
|
8
|
+
void tearDown(void)
|
9
|
+
{
|
10
|
+
}
|
11
|
+
|
4
12
|
void test_smallest_perfect_number_is_classified_correctly(void)
|
5
13
|
{
|
6
|
-
TEST_ASSERT_EQUAL(
|
14
|
+
TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(6));
|
7
15
|
}
|
8
16
|
|
9
17
|
void test_medium_perfect_number_is_classified_correctly(void)
|
10
18
|
{
|
11
19
|
TEST_IGNORE(); // delete this line to run test
|
12
|
-
TEST_ASSERT_EQUAL(
|
20
|
+
TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(28));
|
13
21
|
}
|
14
22
|
|
15
23
|
void test_large_perfect_number_is_classified_correctly(void)
|
16
24
|
{
|
17
25
|
TEST_IGNORE();
|
18
|
-
TEST_ASSERT_EQUAL(
|
26
|
+
TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(33550336));
|
19
27
|
}
|
20
28
|
|
21
29
|
void test_smallest_abundant_number_is_classified_correctly(void)
|
22
30
|
{
|
23
31
|
TEST_IGNORE();
|
24
|
-
TEST_ASSERT_EQUAL(
|
32
|
+
TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(12));
|
25
33
|
}
|
26
34
|
|
27
35
|
void test_medium_abundant_number_is_classified_correctly(void)
|
28
36
|
{
|
29
37
|
TEST_IGNORE();
|
30
|
-
TEST_ASSERT_EQUAL(
|
38
|
+
TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(30));
|
31
39
|
}
|
32
40
|
|
33
41
|
void test_large_abundant_number_is_classified_correctly(void)
|
34
42
|
{
|
35
43
|
TEST_IGNORE();
|
36
|
-
TEST_ASSERT_EQUAL(
|
44
|
+
TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(33550335));
|
37
45
|
}
|
38
46
|
|
39
47
|
void test_smallest_prime_deficient_number_is_classified_correctly(void)
|
40
48
|
{
|
41
49
|
TEST_IGNORE();
|
42
|
-
TEST_ASSERT_EQUAL(
|
50
|
+
TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(2));
|
43
51
|
}
|
44
52
|
|
45
53
|
void test_smallest_non_prime_deficient_number_is_classified_correctly(void)
|
46
54
|
{
|
47
55
|
TEST_IGNORE();
|
48
|
-
TEST_ASSERT_EQUAL(
|
56
|
+
TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(4));
|
49
57
|
}
|
50
58
|
|
51
59
|
void test_medium_deficient_number_is_classified_correctly(void)
|
52
60
|
{
|
53
61
|
TEST_IGNORE();
|
54
|
-
TEST_ASSERT_EQUAL(
|
62
|
+
TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(32));
|
55
63
|
}
|
56
64
|
|
57
65
|
void test_large_deficient_number_is_classified_correctly(void)
|
58
66
|
{
|
59
67
|
TEST_IGNORE();
|
60
|
-
TEST_ASSERT_EQUAL(
|
68
|
+
TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(33550337));
|
61
69
|
}
|
62
70
|
|
63
71
|
void test_edge_case_is_classified_correctly(void)
|
64
72
|
{
|
65
73
|
TEST_IGNORE();
|
66
|
-
TEST_ASSERT_EQUAL(
|
74
|
+
TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(1));
|
67
75
|
}
|
68
76
|
|
69
77
|
void test_zero_is_rejected(void)
|
70
78
|
{
|
71
79
|
TEST_IGNORE();
|
72
|
-
TEST_ASSERT_EQUAL(
|
80
|
+
TEST_ASSERT_EQUAL(ERROR, classify_number(0));
|
73
81
|
}
|
74
82
|
|
75
83
|
void test_negative_integer_is_rejected(void)
|
76
84
|
{
|
77
85
|
TEST_IGNORE();
|
78
|
-
TEST_ASSERT_EQUAL(
|
86
|
+
TEST_ASSERT_EQUAL(ERROR, classify_number(-1));
|
79
87
|
}
|
80
88
|
|
81
89
|
int main(void)
|
82
90
|
{
|
83
91
|
UnityBegin("test/test_perfect_numbers.c");
|
92
|
+
|
84
93
|
RUN_TEST(test_smallest_perfect_number_is_classified_correctly);
|
85
94
|
RUN_TEST(test_medium_perfect_number_is_classified_correctly);
|
86
95
|
RUN_TEST(test_large_perfect_number_is_classified_correctly);
|
@@ -94,6 +103,7 @@ int main(void)
|
|
94
103
|
RUN_TEST(test_edge_case_is_classified_correctly);
|
95
104
|
RUN_TEST(test_zero_is_rejected);
|
96
105
|
RUN_TEST(test_negative_integer_is_rejected);
|
106
|
+
|
97
107
|
UnityEnd();
|
98
108
|
return 0;
|
99
109
|
}
|
@@ -2,9 +2,9 @@
|
|
2
2
|
#include "react.h"
|
3
3
|
|
4
4
|
enum cell_kind {
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
KIND_INPUT,
|
6
|
+
KIND_COMPUTE_1,
|
7
|
+
KIND_COMPUTE_2,
|
8
8
|
};
|
9
9
|
|
10
10
|
struct child {
|
@@ -111,7 +111,7 @@ struct cell *create_input_cell(struct reactor *r, int initial_value)
|
|
111
111
|
free(c);
|
112
112
|
return NULL;
|
113
113
|
}
|
114
|
-
c->kind =
|
114
|
+
c->kind = KIND_INPUT;
|
115
115
|
c->value = initial_value;
|
116
116
|
return c;
|
117
117
|
}
|
@@ -128,7 +128,7 @@ struct cell *create_compute1_cell(struct reactor *r, struct cell *input,
|
|
128
128
|
free(c);
|
129
129
|
return NULL;
|
130
130
|
}
|
131
|
-
c->kind =
|
131
|
+
c->kind = KIND_COMPUTE_1;
|
132
132
|
c->input1 = input;
|
133
133
|
c->compute1 = compute;
|
134
134
|
c->value = compute(get_cell_value(input));
|
@@ -153,7 +153,7 @@ struct cell *create_compute2_cell(struct reactor *r, struct cell *input1,
|
|
153
153
|
free(c);
|
154
154
|
return NULL;
|
155
155
|
}
|
156
|
-
c->kind =
|
156
|
+
c->kind = KIND_COMPUTE_2;
|
157
157
|
c->input1 = input1;
|
158
158
|
c->input2 = input2;
|
159
159
|
c->compute2 = compute;
|
@@ -173,10 +173,10 @@ static void propagate(struct cell *c)
|
|
173
173
|
{
|
174
174
|
int new_value;
|
175
175
|
switch (c->kind) {
|
176
|
-
case
|
176
|
+
case KIND_COMPUTE_1:
|
177
177
|
new_value = c->compute1(get_cell_value(c->input1));
|
178
178
|
break;
|
179
|
-
case
|
179
|
+
case KIND_COMPUTE_2:
|
180
180
|
new_value =
|
181
181
|
c->compute2(get_cell_value(c->input1), get_cell_value(c->input2));
|
182
182
|
break;
|
@@ -4,45 +4,45 @@
|
|
4
4
|
robot_grid_status_t robot_init(void)
|
5
5
|
{
|
6
6
|
return (robot_init_with_position
|
7
|
-
(
|
7
|
+
(DEFAULT_BEARING, DEFAULT_X_COORDINATE, DEFAULT_Y_COORDINATE));
|
8
8
|
}
|
9
9
|
|
10
10
|
robot_grid_status_t robot_init_with_position(int bearing, int x, int y)
|
11
11
|
{
|
12
12
|
robot_grid_status_t robot = { bearing, {x, y} };
|
13
13
|
|
14
|
-
if ((bearing <
|
15
|
-
robot.bearing =
|
14
|
+
if ((bearing < HEADING_NORTH) || (bearing >= HEADING_MAX)) {
|
15
|
+
robot.bearing = DEFAULT_BEARING;
|
16
16
|
}
|
17
17
|
return robot;
|
18
18
|
}
|
19
19
|
|
20
20
|
void robot_turn_right(robot_grid_status_t * robot)
|
21
21
|
{
|
22
|
-
robot->bearing = (robot->bearing + 1) %
|
22
|
+
robot->bearing = (robot->bearing + 1) % HEADING_MAX;
|
23
23
|
}
|
24
24
|
|
25
25
|
void robot_turn_left(robot_grid_status_t * robot)
|
26
26
|
{
|
27
|
-
robot->bearing = ((robot->bearing - 1) +
|
27
|
+
robot->bearing = ((robot->bearing - 1) + HEADING_MAX) % HEADING_MAX;
|
28
28
|
}
|
29
29
|
|
30
30
|
void robot_advance(robot_grid_status_t * robot)
|
31
31
|
{
|
32
32
|
switch (robot->bearing) {
|
33
|
-
case
|
33
|
+
case HEADING_NORTH:
|
34
34
|
robot->grid.y_position++;
|
35
35
|
break;
|
36
36
|
|
37
|
-
case
|
37
|
+
case HEADING_EAST:
|
38
38
|
robot->grid.x_position++;
|
39
39
|
break;
|
40
40
|
|
41
|
-
case
|
41
|
+
case HEADING_SOUTH:
|
42
42
|
robot->grid.y_position--;
|
43
43
|
break;
|
44
44
|
|
45
|
-
case
|
45
|
+
case HEADING_WEST:
|
46
46
|
robot->grid.x_position--;
|
47
47
|
break;
|
48
48
|
|
@@ -55,15 +55,15 @@ void robot_simulator(robot_grid_status_t * robot, const char *commands)
|
|
55
55
|
{
|
56
56
|
for (unsigned long index = 0; index < strlen(commands); index++) {
|
57
57
|
switch (commands[index]) {
|
58
|
-
case
|
58
|
+
case COMMAND_LEFT:
|
59
59
|
robot_turn_left(robot);
|
60
60
|
break;
|
61
61
|
|
62
|
-
case
|
62
|
+
case COMMAND_RIGHT:
|
63
63
|
robot_turn_right(robot);
|
64
64
|
break;
|
65
65
|
|
66
|
-
case
|
66
|
+
case COMMAND_ADVANCE:
|
67
67
|
robot_advance(robot);
|
68
68
|
break;
|
69
69
|
|