summaryrefslogtreecommitdiff
path: root/go/parallel-letter-frequency/parallel_letter_frequency.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-08-26 13:10:33 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-08-26 13:10:33 +0200
commit754e21075a2b67ab6df1b2aa6201d2506f07cd42 (patch)
tree3f6afadfa75c17846ee562aac7efbee70232f4a0 /go/parallel-letter-frequency/parallel_letter_frequency.go
parentb436ce6e3473ea606259730a1e7c3fe6f72c990e (diff)
Add parallel letter
Diffstat (limited to 'go/parallel-letter-frequency/parallel_letter_frequency.go')
-rw-r--r--go/parallel-letter-frequency/parallel_letter_frequency.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/go/parallel-letter-frequency/parallel_letter_frequency.go b/go/parallel-letter-frequency/parallel_letter_frequency.go
new file mode 100644
index 0000000..e1080b8
--- /dev/null
+++ b/go/parallel-letter-frequency/parallel_letter_frequency.go
@@ -0,0 +1,26 @@
+package letter
+
+import "sync"
+
+func ConcurrentFrequency(s []string) FreqMap {
+ c := make(chan rune, len(s))
+ wg := sync.WaitGroup{}
+ for _, v := range s {
+ wg.Add(1)
+ go func(s string) {
+ for _, r := range s {
+ c <- r
+ }
+ wg.Done()
+ }(v)
+ }
+ go func() {
+ wg.Wait()
+ close(c)
+ }()
+ m := FreqMap{}
+ for r := range c {
+ m[r]++
+ }
+ return m
+}