Skip to content

Commit

Permalink
Implement parallel-letter-frequency
Browse files Browse the repository at this point in the history
  • Loading branch information
m-dango committed Mar 10, 2024
1 parent 2aec71e commit 5fd2545
Show file tree
Hide file tree
Showing 9 changed files with 215 additions and 0 deletions.
9 changes: 9 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,15 @@
"prerequisites": [],
"difficulty": 1,
"topics": []
},
{
"slug": "parallel-letter-frequency",
"name": "Parallel Letter Frequency",
"uuid": "e0e62b08-01d7-48a3-ae50-51f4a05ac003",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": []
}
]
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Instructions

Count the frequency of letters in texts using parallel computation.

Parallelism is about doing things in parallel that can also be done sequentially.
A common example is counting the frequency of letters.
Create a function that returns the total frequency of each letter in a list of texts and that employs parallelism.
15 changes: 15 additions & 0 deletions exercises/practice/parallel-letter-frequency/.meta/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"authors": [],
"files": {
"solution": [
"lib/ParallelLetterFrequency.rakumod"
],
"test": [
"t/parallel-letter-frequency.rakutest"
],
"example": [
".meta/solutions/lib/ParallelLetterFrequency.rakumod"
]
},
"blurb": "Count the frequency of letters in texts using parallel computation."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
unit module ParallelLetterFrequency;

sub letter-frequencies (+@texts) is export {
return @texts
.race( :batch(2) )
.map( *.lc.comb(/<:L>/).Slip )
.Bag;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
properties:
calculateFrequencies:
test: |-
sprintf(q:to/END/, (%case<input><texts><>.List, %case<expected><>, %case<description>).map(*.raku));
cmp-ok(
letter-frequencies%s,
"(==)",
%s.Bag,
%s,
);
END
unit: module

example: |-
sub letter-frequencies (+@texts) is export {
return @texts
.race( :batch(2) )
.map( *.lc.comb(/<:L>/).Slip )
.Bag;
}
stub: |-
sub letter-frequencies (+@texts) is export {
}
49 changes: 49 additions & 0 deletions exercises/practice/parallel-letter-frequency/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[c054d642-c1fa-4234-8007-9339f2337886]
description = "no texts"

[818031be-49dc-4675-b2f9-c4047f638a2a]
description = "one text with one letter"

[c0b81d1b-940d-4cea-9f49-8445c69c17ae]
description = "one text with multiple letters"

[708ff1e0-f14a-43fd-adb5-e76750dcf108]
description = "two texts with one letter"

[1b5c28bb-4619-4c9d-8db9-a4bb9c3bdca0]
description = "two texts with multiple letters"

[6366e2b8-b84c-4334-a047-03a00a656d63]
description = "ignore letter casing"

[92ebcbb0-9181-4421-a784-f6f5aa79f75b]
description = "ignore whitespace"

[bc5f4203-00ce-4acc-a5fa-f7b865376fd9]
description = "ignore punctuation"

[68032b8b-346b-4389-a380-e397618f6831]
description = "ignore numbers"

[aa9f97ac-3961-4af1-88e7-6efed1bfddfd]
description = "Unicode letters"

[7b1da046-701b-41fc-813e-dcfb5ee51813]
description = "combination of lower- and uppercase letters, punctuation and white space"

[4727f020-df62-4dcf-99b2-a6e58319cb4f]
description = "large texts"

[adf8e57b-8e54-4483-b6b8-8b32c115884c]
description = "many small texts"
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
unit module ParallelLetterFrequency;

sub letter-frequencies (+@texts) is export {
}

Large diffs are not rendered by default.

0 comments on commit 5fd2545

Please sign in to comment.