Redian新闻
>
求问一道用新语言写wordcount的题
avatar
求问一道用新语言写wordcount的题# JobHunting - 待字闺中
z*c
1
题目就是经典的wordcount,给一个string array,让统计每个词的出现次数,并按出
现次数多少排序打印出。
如{“a”, "a", "b", "c"} 就打印
a 2
b 1
c 1
不过要求使用一种定义的新语言来写,该语言中的data structure仅包括array,
hashmap。且array和hashmap都是immutable的,也就是不能直接往hashmap里插数,只
能重新创建hashmap在原有的基础上加一个数。
我第一个思路是用hashmap存string和其出现次数。感觉难处有三:一是连把array过一
遍的for loop都不好写,因为该语言中无变量,连i++也没法用,二是hashmap在loop里
创建新的,属于局部变量,下一个loop里貌似就没法用到了 三是 如何sort结果也还没
想出来
第二个思路就是用mapreduce,该语言中包括map和reduce的方法,举的例子中map对一
个integer的array整体加减乘除一个常数得到一个新的array,reducer可以对一个
integer的数组进行sum或者两两相乘得到一个数作为结果。不过对于运用到wordcount
完全无头绪啊。
求各位大牛指点!
avatar
z*c
2
ding
avatar
m*k
3
some stupid idea,
throwing a brick waiting for jade , hehe
suppose the alphabet only has {a,b,c,d}
create map: char->array
a: [1,0,0,0]
b: [0,1,0,0]
c: [0,0,1,0]
d: [0,0,0,1]
and init result as [0, 0, 0, 0]
then just use the mapreduce way to add corresponding
array each time seeing a char?
avatar
j*d
4
LZ 你确定不允许用整形变量?
如果允许,可以用递归解,recursiveFunc ( String A[], int i).
avatar
p*2
5

用spark一句话的事情

【在 z*c 的大作中提到】
: 题目就是经典的wordcount,给一个string array,让统计每个词的出现次数,并按出
: 现次数多少排序打印出。
: 如{“a”, "a", "b", "c"} 就打印
: a 2
: b 1
: c 1
: 不过要求使用一种定义的新语言来写,该语言中的data structure仅包括array,
: hashmap。且array和hashmap都是immutable的,也就是不能直接往hashmap里插数,只
: 能重新创建hashmap在原有的基础上加一个数。
: 我第一个思路是用hashmap存string和其出现次数。感觉难处有三:一是连把array过一

avatar
z*c
6

很有创意。。。 不过我举这个例子比较片面,实际上是general的string array哈

【在 m*****k 的大作中提到】
: some stupid idea,
: throwing a brick waiting for jade , hehe
: suppose the alphabet only has {a,b,c,d}
: create map: char->array
: a: [1,0,0,0]
: b: [0,1,0,0]
: c: [0,0,1,0]
: d: [0,0,0,1]
: and init result as [0, 0, 0, 0]
: then just use the mapreduce way to add corresponding

avatar
z*c
7

已经定义的都是immutable的,不过我貌似也没看明白允许用整形变量的话递归咋弄?

【在 j*d 的大作中提到】
: LZ 你确定不允许用整形变量?
: 如果允许,可以用递归解,recursiveFunc ( String A[], int i).

avatar
l*t
8
这不就是个FP的基本题?
avatar
z*c
9

额,那是啥?

【在 l******t 的大作中提到】
: 这不就是个FP的基本题?
avatar
p*2
10

学学haskell就明白了。
FP里没有循环,只有递归

【在 z*c 的大作中提到】
:
: 额,那是啥?

avatar
e*s
11
最近haskell为何又火起来了

【在 p*****2 的大作中提到】
:
: 学学haskell就明白了。
: FP里没有循环,只有递归

avatar
p*2
12

val xs = List('a', 'a', 'b', 'c');
val res = xs.groupBy(identity).map(i=>(i._1, i._2.size)).toList.sortBy(_
._2)(implicitly[Ordering[Int]].reverse)

【在 z*c 的大作中提到】
: 题目就是经典的wordcount,给一个string array,让统计每个词的出现次数,并按出
: 现次数多少排序打印出。
: 如{“a”, "a", "b", "c"} 就打印
: a 2
: b 1
: c 1
: 不过要求使用一种定义的新语言来写,该语言中的data structure仅包括array,
: hashmap。且array和hashmap都是immutable的,也就是不能直接往hashmap里插数,只
: 能重新创建hashmap在原有的基础上加一个数。
: 我第一个思路是用hashmap存string和其出现次数。感觉难处有三:一是连把array过一

avatar
t*r
13
Scala怎么写

(_
★ 发自iPhone App: ChineseWeb 8.7

【在 p*****2 的大作中提到】
:
: val xs = List('a', 'a', 'b', 'c');
: val res = xs.groupBy(identity).map(i=>(i._1, i._2.size)).toList.sortBy(_
: ._2)(implicitly[Ordering[Int]].reverse)

avatar
p*2
14
就这么写

【在 t**r 的大作中提到】
: Scala怎么写
:
: (_
: ★ 发自iPhone App: ChineseWeb 8.7

avatar
W*o
15
回贴看看

【在 z*c 的大作中提到】
: 题目就是经典的wordcount,给一个string array,让统计每个词的出现次数,并按出
: 现次数多少排序打印出。
: 如{“a”, "a", "b", "c"} 就打印
: a 2
: b 1
: c 1
: 不过要求使用一种定义的新语言来写,该语言中的data structure仅包括array,
: hashmap。且array和hashmap都是immutable的,也就是不能直接往hashmap里插数,只
: 能重新创建hashmap在原有的基础上加一个数。
: 我第一个思路是用hashmap存string和其出现次数。感觉难处有三:一是连把array过一

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。