忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 5295 | 回复: 13

[其他] 求和? [复制链接]

论坛徽章:
12
射手座
日期:2014-10-02 11:31:29程序设计版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-25 06:20:00每日论坛发贴之星
日期:2016-05-24 06:20:00程序设计版块每日发帖之星
日期:2016-05-24 06:20:0015-16赛季CBA联赛之深圳
日期:2016-05-23 15:33:59程序设计版块每日发帖之星
日期:2016-05-20 06:20:00程序设计版块每日发帖之星
日期:2016-04-26 06:20:00神斗士
日期:2015-12-03 09:27:3215-16赛季CBA联赛之八一
日期:2016-12-29 09:56:05
发表于 2016-04-19 10:25 |显示全部楼层
有一个类似这样的大文件

a 11 23 34 22 34 56
b 23 46 32 64 67 34
c 64 67 34 11 23 34
a 12 33 35 22 39 36
b 21 41 12 61 62 24
c 25 17 14 21 22 14
...


文件的行和列都比较多,
想分类求和,结果如下:

a 23 56 69 44 73 92
b 44 87 44 125 129 58
c 89 84 48 33 45 48
......

请问怎么实现
谢谢!

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2016-04-19 16:18 |显示全部楼层
回复 1# patagonia2

没看懂你的求和算法 。。。
   

论坛徽章:
12
射手座
日期:2014-10-02 11:31:29程序设计版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-25 06:20:00每日论坛发贴之星
日期:2016-05-24 06:20:00程序设计版块每日发帖之星
日期:2016-05-24 06:20:0015-16赛季CBA联赛之深圳
日期:2016-05-23 15:33:59程序设计版块每日发帖之星
日期:2016-05-20 06:20:00程序设计版块每日发帖之星
日期:2016-04-26 06:20:00神斗士
日期:2015-12-03 09:27:3215-16赛季CBA联赛之八一
日期:2016-12-29 09:56:05
发表于 2016-04-19 20:32 |显示全部楼层
回复 2# q1208c


a: 11 + 12 -> 23
23 + 33 -> 56

a 11 23 34 22 34 56
b 23 46 32 64 67 34
c 64 67 34 11 23 34
a 12 33 35 22 39 36


结果如下:

a 23 56 69 44 73 92
b 44 87 44 125 129 58
c 89 84 48 33 45 48
......

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2016-04-20 11:35 |显示全部楼层
回复 3# patagonia2

如果你的文件不是太大,还好办。

如果文件太大了, 或者行太多了, 很可能内存不够。 需要使用临时文件了。

我已经2年多没写过 erlang 的代码了。 怕是都不记得怎么写了。
   

论坛徽章:
26
金牛座
日期:2014-09-15 15:59:16程序设计版块每日发帖之星
日期:2015-11-24 06:20:00程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:00
发表于 2016-04-20 11:47 |显示全部楼层
回复 4# q1208c 写一个,写一个,写一个


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2016-04-20 12:11 |显示全部楼层
回复 5# shijiang1130

你来。
   

论坛徽章:
26
金牛座
日期:2014-09-15 15:59:16程序设计版块每日发帖之星
日期:2015-11-24 06:20:00程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:00
发表于 2016-04-20 12:54 |显示全部楼层
回复 6# q1208c

想写来着,但不知道怎么匹配 “...”,不但要自己写,还要自己造数据,工程太麻烦
   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2016-04-20 13:01 |显示全部楼层
回复 7# shijiang1130
可以先用楼主的数据呀。

够用了。

   

论坛徽章:
26
金牛座
日期:2014-09-15 15:59:16程序设计版块每日发帖之星
日期:2015-11-24 06:20:00程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:00
发表于 2016-04-20 17:55 |显示全部楼层
  1. -module(t).

  2. -compile(export_all).

  3. get_same_seq() ->
  4.     {ok, F} = file:open("in.txt", [binary, read]),
  5.     all_line(F).

  6. all_line(F) ->
  7.     case io:get_line(F, "") of
  8.       eof -> file:close(F);
  9.       L ->
  10.           Line = binary:replace(L, <<"\n">>, <<>>),
  11.           [N | V] = binary:split(Line, <<" ">>, [global]),
  12.           case ets:lookup(sum, N) of
  13.             [{N, Old}] ->
  14.                 New = [all_line_1(V1) || V1 <- V],
  15.                 %[V1,V2,V3,V4,V5,V6]  = Old,
  16.                 %io:format("Old: ~p ~p ~p ~p ~p ~p ~n",[V1,V2,V3,V4,V5,V6]),
  17.                 Add = lists:zipwith(fun (C1, C2) ->
  18.                                             list_to_integer(C1) +
  19.                                               list_to_integer(C2)
  20.                                     end,
  21.                                     New, Old),
  22.                 Add1 = [all_line_2(V2) || V2 <- Add],
  23.                 ets:insert(sum, {N, Add1});
  24.             [] ->
  25.                 Init = [all_line_3(V3) || V3 <- V],
  26.                 ets:insert(sum, {N, Init})
  27.           end,
  28.           all_line(F)
  29.     end.

  30. all_line_1(A1) -> binary_to_list(A1).

  31. all_line_2(_T) -> integer_to_list(_T).

  32. all_line_3(A1) -> binary_to_list(A1).

  33. p([H | T]) ->
  34.     case H of
  35.       {N, [V1, V2, V3, V4, V5, V6]} ->
  36.           io:format("~p: ~p ~p ~p ~p ~p ~p ~n",
  37.                     [N, V1, V2, V3, V4, V5, V6]);
  38.       {<<>>, []} -> skip
  39.     end,
  40.     p(T);
  41. p([]) -> done.

  42. main() ->
  43.     ets:new(sum,
  44.             [named_table, public, {write_concurrency, true}]),
  45.     get_same_seq(),
  46.     Result = ets:tab2list(sum),
  47.     p(Result).
复制代码

论坛徽章:
26
金牛座
日期:2014-09-15 15:59:16程序设计版块每日发帖之星
日期:2015-11-24 06:20:00程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:00
发表于 2016-04-20 17:56 |显示全部楼层
  1. 100> t:main().
  2. <<"b">>: "396" "783" "396" "1125" "1161" "522"
  3. <<"c">>: "801" "756" "432" "288" "405" "432"
  4. <<"a">>: "207" "504" "621" "396" "657" "828"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP