trackler 2.0.0.5 → 2.0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/bash/docs/TESTS.md +1 -1
- data/tracks/bash/exercises/bob/bob_test.sh +2 -0
- data/tracks/bash/exercises/gigasecond/gigasecond_test.sh +2 -0
- data/tracks/bash/exercises/hamming/hamming_test.sh +2 -0
- data/tracks/bash/exercises/hello-world/hello_world_test.sh +2 -0
- data/tracks/bash/exercises/leap/leap_test.sh +2 -0
- data/tracks/bash/exercises/raindrops/raindrops_test.sh +2 -0
- data/tracks/bash/exercises/rna-transcription/rna_transcription_test.sh +2 -0
- data/tracks/c/bin/verify-indent +5 -1
- data/tracks/c/config.json +10 -1
- data/tracks/c/exercises/clock/src/clock.h +1 -1
- data/tracks/c/exercises/largest-series-product/test/test_largest_series_product.c +1 -1
- data/tracks/c/exercises/phone-number/src/example.c +4 -2
- data/tracks/c/exercises/roman-numerals/src/example.c +20 -21
- data/tracks/c/exercises/roman-numerals/src/example.h +1 -1
- data/tracks/c/exercises/roman-numerals/test/test_roman_numerals.c +1 -0
- data/tracks/c/exercises/sum-of-multiples/src/example.c +3 -1
- data/tracks/c/exercises/sum-of-multiples/src/example.h +3 -1
- data/tracks/c/exercises/sum-of-multiples/test/test_sum_of_multiples.c +44 -22
- data/tracks/c/exercises/word-count/makefile +16 -0
- data/tracks/c/exercises/word-count/src/example.c +65 -0
- data/tracks/c/exercises/word-count/src/word_count.h +22 -0
- data/tracks/c/exercises/word-count/test/test_word_count.c +372 -0
- data/tracks/c/exercises/word-count/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/word-count/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/word-count/test/vendor/unity_internals.h +701 -0
- data/tracks/crystal/.gitignore +1 -0
- data/tracks/crystal/Makefile +6 -0
- data/tracks/crystal/README.md +25 -0
- data/tracks/crystal/config.json +10 -2
- data/tracks/crystal/exercises/acronym/spec/acronym_spec.cr +32 -0
- data/tracks/crystal/exercises/acronym/src/example.cr +7 -0
- data/tracks/crystal/exercises/hello-world/spec/hello_world_spec.cr +8 -10
- data/tracks/crystal/exercises/hello-world/src/example.cr +1 -1
- data/tracks/crystal/src/generator/exercises/acronym.cr +34 -0
- data/tracks/crystal/src/generator/exercises/exercise_generator.cr +39 -0
- data/tracks/crystal/src/generator/exercises/exercise_test_case.cr +8 -0
- data/tracks/crystal/src/generator/exercises/hello_world.cr +38 -0
- data/tracks/crystal/src/generator/exercises/templates/example.tt +10 -0
- data/tracks/crystal/src/generator/generate.cr +15 -0
- data/tracks/crystal/src/generator/spec/exercise_generator_spec.cr +27 -0
- data/tracks/crystal/src/generator/spec/exercise_test_case_spec.cr +23 -0
- data/tracks/elixir/exercises/space-age/space_age.exs +1 -1
- data/tracks/elm/config.json +5 -31
- data/tracks/elm/elm-package.json +1 -0
- data/tracks/elm/exercises/bob/BobTests.elm +1 -1
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.elm +5 -0
- data/tracks/elm/exercises/scrabble-score/ScrabbleScore.elm +1 -0
- data/tracks/elm/exercises/scrabble-score/ScrabbleScore.example +32 -0
- data/tracks/elm/exercises/scrabble-score/ScrabbleScoreTests.elm +43 -0
- data/tracks/elm/exercises/scrabble-score/elm-package.json +16 -0
- data/tracks/elm/exercises/scrabble-score/runtests.bat +1 -0
- data/tracks/elm/exercises/scrabble-score/runtests.sh +2 -0
- data/tracks/elm/exercises/sublist/Sublist.elm +5 -0
- data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiplesTest.fs +6 -1
- data/tracks/haskell/docs/LEARNING.md +11 -2
- data/tracks/haskell/exercises/list-ops/test/Tests.hs +2 -0
- data/tracks/java/config.json +13 -1
- data/tracks/java/exercises/etl/src/test/java/EtlTest.java +101 -55
- data/tracks/java/exercises/hello-world/TUTORIAL.md +1 -1
- data/tracks/java/exercises/largest-series-product/build.gradle +17 -0
- data/tracks/java/exercises/largest-series-product/src/example/java/LargestSeriesProductCalculator.java +56 -0
- data/tracks/java/exercises/largest-series-product/src/main/java/LargestSeriesProductCalculator.java +5 -0
- data/tracks/java/exercises/largest-series-product/src/test/java/LargestSeriesProductCalculatorTest.java +218 -0
- data/tracks/java/exercises/queen-attack/build.gradle +17 -0
- data/tracks/java/exercises/queen-attack/src/example/java/BoardCoordinate.java +39 -0
- data/tracks/java/exercises/queen-attack/src/example/java/QueenAttackCalculator.java +54 -0
- data/tracks/java/exercises/queen-attack/src/main/java/BoardCoordinate.java +5 -0
- data/tracks/java/exercises/queen-attack/src/main/java/QueenAttackCalculator.java +5 -0
- data/tracks/java/exercises/queen-attack/src/test/java/QueenAttackCalculatorTest.java +135 -0
- data/tracks/java/exercises/settings.gradle +2 -0
- data/tracks/ocaml/exercises/leap/test.ml +17 -6
- data/tracks/rust/_test/check-exercises.sh +5 -0
- data/tracks/swift/docs/TESTS.md +23 -3
- metadata +35 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd26f913270ca0a9e000f69e94f05f446e3dbcf0
|
4
|
+
data.tar.gz: be8dca46c9162bd55189ae5840d5f9cce840cfa6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40227845c9e6200c10cd5f4eb6f1d7b78bfba7160b9adaafc804293f92b7b0fef3eae27f56c3c810b4ed2daf6761b29e32a6d5dfbf9e77f788d0355d2cc95b28
|
7
|
+
data.tar.gz: 944ef6f86d085ea5b0d20e1c048ac31bc95f54a38f99ce7f0f9cf6358de4c6cd8a2bb096fb4b00f64455441115432bf45819cea2b1d9f23dc8b76f98788929b4
|
data/lib/trackler/version.rb
CHANGED
data/tracks/bash/docs/TESTS.md
CHANGED
data/tracks/c/bin/verify-indent
CHANGED
data/tracks/c/config.json
CHANGED
@@ -137,8 +137,17 @@
|
|
137
137
|
"strings"
|
138
138
|
]
|
139
139
|
}, {
|
140
|
-
"
|
140
|
+
"difficulty": 3,
|
141
|
+
"slug": "word-count",
|
142
|
+
"topics": [
|
143
|
+
"strings",
|
144
|
+
"filtering",
|
145
|
+
"structs",
|
146
|
+
"memory management"
|
147
|
+
]
|
148
|
+
}, {
|
141
149
|
"difficulty": 4,
|
150
|
+
"slug": "allergies",
|
142
151
|
"topics": [
|
143
152
|
"control-flow (if-statements)",
|
144
153
|
"control-flow (loops)",
|
@@ -50,7 +50,7 @@ void test_can_get_the_largest_product_of_a_big_number_project_euler(void)
|
|
50
50
|
TEST_ASSERT_EQUAL_INT64(23514624000,
|
51
51
|
largest_series_product
|
52
52
|
("7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450",
|
53
|
-
|
53
|
+
13));
|
54
54
|
}
|
55
55
|
|
56
56
|
void test_reports_zero_if_the_only_digits_are_zero(void)
|
@@ -15,7 +15,8 @@
|
|
15
15
|
|
16
16
|
#define INVALID_NUMBER_RESULT "0000000000"
|
17
17
|
|
18
|
-
static void remove_leading_digit(char *phone_number)
|
18
|
+
static void remove_leading_digit(char *phone_number)
|
19
|
+
{
|
19
20
|
char *temp = calloc(VALID_NUMBER_LENGTH, sizeof(char));
|
20
21
|
strcpy(temp, &phone_number[1]);
|
21
22
|
strcpy(phone_number, temp);
|
@@ -58,7 +59,8 @@ char *phone_number_format(const char *input)
|
|
58
59
|
char *cleaned_input = phone_number_clean(input);
|
59
60
|
char *output = calloc(FORMATTED_LENGTH, sizeof(char));
|
60
61
|
|
61
|
-
sprintf(output, "(%.3s) %.3s-%.4s", cleaned_input,
|
62
|
+
sprintf(output, "(%.3s) %.3s-%.4s", cleaned_input,
|
63
|
+
&cleaned_input[AREA_CODE_LENGTH], &cleaned_input[EXTENSION_OFFSET]);
|
62
64
|
|
63
65
|
free(cleaned_input);
|
64
66
|
|
@@ -5,36 +5,35 @@
|
|
5
5
|
#define NUM_OF_ELEMENTS(a) (sizeof(a) / sizeof(a[0]))
|
6
6
|
#define MAX_NUMERAL_LENGTH (7)
|
7
7
|
|
8
|
-
typedef struct
|
9
|
-
|
10
|
-
|
11
|
-
unsigned int value;
|
8
|
+
typedef struct {
|
9
|
+
char *numeral;
|
10
|
+
unsigned int value;
|
12
11
|
} numeral_values_t;
|
13
12
|
|
14
|
-
const numeral_values_t numeral_values[] =
|
15
|
-
{
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
{ "I", 1 }
|
13
|
+
const numeral_values_t numeral_values[] = {
|
14
|
+
{"M", 1000},
|
15
|
+
{"CM", 900},
|
16
|
+
{"D", 500},
|
17
|
+
{"CD", 400},
|
18
|
+
{"C", 100},
|
19
|
+
{"XC", 90},
|
20
|
+
{"L", 50},
|
21
|
+
{"XL", 40},
|
22
|
+
{"X", 10},
|
23
|
+
{"IX", 9},
|
24
|
+
{"V", 5},
|
25
|
+
{"IV", 4},
|
26
|
+
{"I", 1}
|
29
27
|
};
|
30
28
|
|
31
|
-
char *
|
29
|
+
char *to_roman_numeral(unsigned int number)
|
32
30
|
{
|
33
31
|
char *numerals = calloc(0, sizeof(char) * MAX_NUMERAL_LENGTH);
|
34
32
|
|
35
33
|
for (size_t i = 0; i < NUM_OF_ELEMENTS(numeral_values); i++) {
|
36
34
|
while (number >= numeral_values[i].value) {
|
37
|
-
strncat(numerals, numeral_values[i].numeral,
|
35
|
+
strncat(numerals, numeral_values[i].numeral,
|
36
|
+
MAX_NUMERAL_LENGTH - strlen(numerals));
|
38
37
|
number -= numeral_values[i].value;
|
39
38
|
}
|
40
39
|
}
|
@@ -1,7 +1,9 @@
|
|
1
1
|
#include "sum_of_multiples.h"
|
2
2
|
#include <stdbool.h>
|
3
3
|
|
4
|
-
unsigned int sum_of_multiples(const unsigned int *multiples,
|
4
|
+
unsigned int sum_of_multiples(const unsigned int *multiples,
|
5
|
+
const size_t number_of_multiples,
|
6
|
+
const unsigned int upper_bound)
|
5
7
|
{
|
6
8
|
unsigned int sum = 0;
|
7
9
|
|
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
#include <stddef.h>
|
5
5
|
|
6
|
-
unsigned int sum_of_multiples(const unsigned int *multiples,
|
6
|
+
unsigned int sum_of_multiples(const unsigned int *multiples,
|
7
|
+
const size_t number_of_multiples,
|
8
|
+
const unsigned int up_to);
|
7
9
|
|
8
10
|
#endif
|
@@ -5,68 +5,90 @@
|
|
5
5
|
|
6
6
|
void test_sum_of_multiples_of_3_and_5_up_to_1(void)
|
7
7
|
{
|
8
|
-
const unsigned int multiples[] = {3, 5};
|
9
|
-
TEST_ASSERT_EQUAL(0,
|
8
|
+
const unsigned int multiples[] = { 3, 5 };
|
9
|
+
TEST_ASSERT_EQUAL(0,
|
10
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
11
|
+
1));
|
10
12
|
}
|
11
13
|
|
12
14
|
void test_sum_of_multiples_of_3_and_5_up_to_4(void)
|
13
15
|
{
|
14
|
-
const unsigned int multiples[] = {3, 5};
|
15
|
-
TEST_ASSERT_EQUAL(3,
|
16
|
+
const unsigned int multiples[] = { 3, 5 };
|
17
|
+
TEST_ASSERT_EQUAL(3,
|
18
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
19
|
+
4));
|
16
20
|
}
|
17
21
|
|
18
22
|
void test_sum_of_multiples_of_3_and_5_up_to_10(void)
|
19
23
|
{
|
20
|
-
const unsigned int multiples[] = {3, 5};
|
21
|
-
TEST_ASSERT_EQUAL(23,
|
24
|
+
const unsigned int multiples[] = { 3, 5 };
|
25
|
+
TEST_ASSERT_EQUAL(23,
|
26
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
27
|
+
10));
|
22
28
|
}
|
23
29
|
|
24
30
|
void test_sum_of_multiples_of_3_and_5_up_to_100(void)
|
25
31
|
{
|
26
|
-
const unsigned int multiples[] = {3, 5};
|
27
|
-
TEST_ASSERT_EQUAL(2318,
|
32
|
+
const unsigned int multiples[] = { 3, 5 };
|
33
|
+
TEST_ASSERT_EQUAL(2318,
|
34
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
35
|
+
100));
|
28
36
|
}
|
29
37
|
|
30
38
|
void test_sum_of_multiples_of_3_and_5_up_to_1000(void)
|
31
39
|
{
|
32
|
-
const unsigned int multiples[] = {3, 5};
|
33
|
-
TEST_ASSERT_EQUAL(233168,
|
40
|
+
const unsigned int multiples[] = { 3, 5 };
|
41
|
+
TEST_ASSERT_EQUAL(233168,
|
42
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
43
|
+
1000));
|
34
44
|
}
|
35
45
|
|
36
46
|
void test_sum_of_multiples_of_7_13_and_17_up_to_20(void)
|
37
47
|
{
|
38
|
-
const unsigned int multiples[] = {7, 13, 17};
|
39
|
-
TEST_ASSERT_EQUAL(51,
|
48
|
+
const unsigned int multiples[] = { 7, 13, 17 };
|
49
|
+
TEST_ASSERT_EQUAL(51,
|
50
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
51
|
+
20));
|
40
52
|
}
|
41
53
|
|
42
54
|
void test_sum_of_multiples_of_4_and_6_up_to_15(void)
|
43
55
|
{
|
44
|
-
const unsigned int multiples[] = {4, 6};
|
45
|
-
TEST_ASSERT_EQUAL(30,
|
56
|
+
const unsigned int multiples[] = { 4, 6 };
|
57
|
+
TEST_ASSERT_EQUAL(30,
|
58
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
59
|
+
15));
|
46
60
|
}
|
47
61
|
|
48
62
|
void test_sum_of_multiples_of_5_6_and_8_up_to_150(void)
|
49
63
|
{
|
50
|
-
const unsigned int multiples[] = {5, 6, 8};
|
51
|
-
TEST_ASSERT_EQUAL(4419,
|
64
|
+
const unsigned int multiples[] = { 5, 6, 8 };
|
65
|
+
TEST_ASSERT_EQUAL(4419,
|
66
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
67
|
+
150));
|
52
68
|
}
|
53
69
|
|
54
70
|
void test_sum_of_multiples_of_5_and_25_up_to_51(void)
|
55
71
|
{
|
56
|
-
const unsigned int multiples[] = {5, 25};
|
57
|
-
TEST_ASSERT_EQUAL(275,
|
72
|
+
const unsigned int multiples[] = { 5, 25 };
|
73
|
+
TEST_ASSERT_EQUAL(275,
|
74
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
75
|
+
51));
|
58
76
|
}
|
59
77
|
|
60
78
|
void test_sum_of_multiples_of_43_and_47_up_to_10000(void)
|
61
79
|
{
|
62
|
-
const unsigned int multiples[] = {43, 47};
|
63
|
-
TEST_ASSERT_EQUAL(2203160,
|
80
|
+
const unsigned int multiples[] = { 43, 47 };
|
81
|
+
TEST_ASSERT_EQUAL(2203160,
|
82
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
83
|
+
10000));
|
64
84
|
}
|
65
85
|
|
66
86
|
void test_sum_of_multiples_of_1_up_to_100(void)
|
67
87
|
{
|
68
|
-
const unsigned int multiples[] = {1};
|
69
|
-
TEST_ASSERT_EQUAL(4950,
|
88
|
+
const unsigned int multiples[] = { 1 };
|
89
|
+
TEST_ASSERT_EQUAL(4950,
|
90
|
+
sum_of_multiples(multiples, NUM_OF_ELEMENTS(multiples),
|
91
|
+
100));
|
70
92
|
}
|
71
93
|
|
72
94
|
void test_no_multiples_given(void)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
CFLAGS = -std=c99
|
2
|
+
CFLAGS += -Wall
|
3
|
+
CFLAGS += -Wextra
|
4
|
+
CFLAGS += -pedantic
|
5
|
+
CFLAGS += -Werror
|
6
|
+
|
7
|
+
|
8
|
+
test: tests.out
|
9
|
+
@./tests.out
|
10
|
+
|
11
|
+
clean:
|
12
|
+
rm -f *.o *.out
|
13
|
+
|
14
|
+
tests.out: test/test_word_count.c src/word_count.c src/word_count.h
|
15
|
+
@echo Compiling $@
|
16
|
+
@cc $(CFLAGS) src/word_count.c test/vendor/unity.c test/test_word_count.c -o tests.out
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#include <stdlib.h>
|
2
|
+
#include <string.h>
|
3
|
+
#include <ctype.h>
|
4
|
+
#include "word_count.h"
|
5
|
+
|
6
|
+
// checks to see if we are counting a given word:
|
7
|
+
// if word counted already it returns index,
|
8
|
+
// else returns -1
|
9
|
+
static int word_match(char *testWord, int current_word_count,
|
10
|
+
WordCount_Word_t words[MAX_WORDS])
|
11
|
+
{
|
12
|
+
int matchIndex = -1;
|
13
|
+
|
14
|
+
for (int index = 0; index < current_word_count; index++) {
|
15
|
+
if (!strcmp(testWord, words[index].text)) {
|
16
|
+
matchIndex = index;
|
17
|
+
break;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
return matchIndex;
|
21
|
+
}
|
22
|
+
|
23
|
+
int word_count(char *input_text, WordCount_Word_t words[MAX_WORDS])
|
24
|
+
{
|
25
|
+
int index;
|
26
|
+
int uniqueWords = 0;
|
27
|
+
char *testWord;
|
28
|
+
char *lowerCaseInputText; // hold lowercase copy of passed text
|
29
|
+
const char *delimiters = " ,.-\n:!!&@$%^&\"";
|
30
|
+
|
31
|
+
// convert the input text to lower case
|
32
|
+
lowerCaseInputText = malloc(strlen(input_text) + 1);
|
33
|
+
for (index = 0; input_text[index] != 0; index++) {
|
34
|
+
lowerCaseInputText[index] = tolower(input_text[index]);
|
35
|
+
}
|
36
|
+
lowerCaseInputText[index] = '\0';
|
37
|
+
|
38
|
+
// start with known results...
|
39
|
+
memset(words, 0, sizeof(WordCount_Word_t));
|
40
|
+
|
41
|
+
testWord = strtok(lowerCaseInputText, delimiters);
|
42
|
+
while (testWord != NULL) {
|
43
|
+
// account for leading/trailing single quote.
|
44
|
+
if (('\'' == testWord[0]) && ('\'' == testWord[strlen(testWord) - 1])) {
|
45
|
+
testWord[strlen(testWord) - 1] = '\0';
|
46
|
+
testWord++;
|
47
|
+
}
|
48
|
+
// determine index of counted word.
|
49
|
+
index = word_match(testWord, uniqueWords, words);
|
50
|
+
|
51
|
+
// add if not yet counted else increment count.
|
52
|
+
if (-1 == index) {
|
53
|
+
words[uniqueWords].count = 1;
|
54
|
+
strcpy(words[uniqueWords].text, testWord);
|
55
|
+
uniqueWords++;
|
56
|
+
} else {
|
57
|
+
words[index].count++;
|
58
|
+
}
|
59
|
+
// get next word in string
|
60
|
+
testWord = strtok(NULL, delimiters);
|
61
|
+
}
|
62
|
+
|
63
|
+
free(lowerCaseInputText);
|
64
|
+
return uniqueWords;
|
65
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#ifndef _WORD_COUNT_H
|
2
|
+
#define _WORD_COUNT_H
|
3
|
+
|
4
|
+
#define MAX_WORDS 20 // at most MAX_WORDS will be found in the test input string
|
5
|
+
#define MAX_WORD_LENGTH 50 // no individual word will exceed this length
|
6
|
+
|
7
|
+
// results structure
|
8
|
+
typedef struct WordCount_Word {
|
9
|
+
char text[MAX_WORD_LENGTH];
|
10
|
+
int count;
|
11
|
+
} WordCount_Word_t;
|
12
|
+
|
13
|
+
// word_count - routine to classify the unique words and their frequency in a test input string
|
14
|
+
// inputs:
|
15
|
+
// input_text = string no longer than will take (MAX_WORDS * MAX_WORD_LENGTH)
|
16
|
+
// words = allocated structure to record the words fourn and their frequency
|
17
|
+
//
|
18
|
+
// outputs:
|
19
|
+
// uniqueWords - number of words in the words structure
|
20
|
+
int word_count(char *input_text, WordCount_Word_t words[MAX_WORDS]);
|
21
|
+
|
22
|
+
#endif
|