免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5182 | 回复: 14

[休闲] 寻找所有可能的答案 [复制链接]

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2014-03-16 00:00 |显示全部楼层
本帖最后由 rubyish 于 2014-03-17 22:28 编辑

原始文本:

AB BD AC AD BC
AB BD AC A,D
A,B,C,D,A
A,B,C,D,ABCD
A,C,CD ABCD AB
A,B,C,ABCD AB
A,BC CD D,D
A,BC BCD C,D
ABC C,CD C,D
A,BC C,AB CD
B,ACD CD D,D
C,C,CD C,C

原始文本:
这是一个试题答案 ( 由 ABCD 字符组成 )

1: 每行共计有 5 答案
2: 每行答案有多选, 单选
3: 单选答案后面小逗点, 多选答案( 2~4 个字符 )后面有空格
4: 多选答案字符, 从小到大按序排列 ( A->B->C->D )
5: 答案是正确的. (不可能有: C, DD, BA.. 的多选答案)


这是一个手工抄写的拷贝文本:

AB BD AC AD BC
AB BD AC AD
ABCDA
ABCDABCD
ACCD ABCD AB
ABCABCD AB
ABC CD DD
ABC BCD CD
ABC CCD CD
ABC CAB CD
BACD CD DD
CCCD CC


拷贝文本:

1: 每行字符数和字符顺序与原始文本一样
2: 但失去了小逗点
3: 请寻找出每行所有可能的答案 (忽略不可能的)

example:

ABC BCD CD

所有可能的答案: ( 只有 3 个可能 )

A BC B CD CD
A BC BCD C D
ABC B CD C D


A BC BC D CD  不可能是答案

biru:
  1. >> A BC BC D CD
  2.    A,BC BC D,CD        原始文本: 单选后面有小逗点, 多选后面有空格
  3.    ABC BC DCD        手抄文本: 失去了小逗点
  4. != ABC BCD CD        NG 不可能是答案


  5. >> A BC B CD CD
  6.    A,BC B,CD CD        原始文本: 单选后面有小逗点, 多选后面有空格
  7.    ABC BCD CD        手抄文本: 失去了小逗点
  8. == ABC BCD CD        OK 可能是答案
复制代码
这是所有的答案

================
1| AB BD AC AD BC
    AB BD AC AD BC
================
2| AB BD AC AD
    AB BD AC A D
================
3| ABCDA
    A B C D A
================
4| ABCDABCD
    A B C D ABCD
================
5| ACCD ABCD AB
    A C CD ABCD AB
================
6| ABCABCD AB
    A B C ABCD AB
================
7| ABC CD DD
    A BC CD D D
================
8| ABC BCD CD
    A BC B CD CD
    A BC BCD C D
    ABC B CD C D
================
9| ABC CCD CD
    A BC C CD CD
    ABC C CD C D
================
10| ABC CAB CD
    A BC C AB CD
    ABC C AB C D
================
11| BACD CD DD
    B ACD CD D D
================
12| CCCD CC
    C C CD C C


my pl
a.pl.zip (743 Bytes, 下载次数: 16)

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
发表于 2014-03-17 09:52 |显示全部楼层
mark一个                 

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-03-17 14:23 |显示全部楼层
看起来挺复杂的,楼主做出来了吗?

论坛徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役纪念章
日期:2018-03-16 10:24:0515-16赛季CBA联赛之山东
日期:2017-11-10 14:32:142016科比退役纪念章
日期:2017-09-02 15:42:4715-16赛季CBA联赛之佛山
日期:2017-08-28 17:11:5515-16赛季CBA联赛之浙江
日期:2017-08-24 16:55:1715-16赛季CBA联赛之青岛
日期:2017-08-17 19:55:2415-16赛季CBA联赛之天津
日期:2017-06-29 10:34:4315-16赛季CBA联赛之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亚冠之萨济拖拉机
日期:2015-05-22 11:38:5315-16赛季CBA联赛之北京
日期:2019-08-13 17:30:53
发表于 2014-03-17 16:00 |显示全部楼层
本帖最后由 523066680 于 2014-03-17 16:01 编辑

=_= 以前有时间,现在工作忙碌
还有题目描述有点凌乱。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2014-03-17 16:40 |显示全部楼层
本帖最后由 ly5066113 于 2014-03-17 16:56 编辑

回复 1# rubyish


是这个意思么?
  1. #! /usr/bin/perl

  2. use strict;
  3. use warnings;

  4. use Algorithm::Combinatorics qw(combinations permutations);


  5. my %h;
  6. my @answer;
  7. my @data=("A", "B", "C", "D");
  8. for (1 .. scalar(@data))
  9. {
  10.         my $iter = combinations(\@data, $_);
  11.         while (my $c = $iter->next) {
  12.                 push @answer, join("", @$c);
  13.         }
  14. }

  15. @data=(@answer, @answer, @answer, @answer, @answer);
  16. my $iter = combinations(\@data, 5);
  17. while (my $c = $iter->next) {
  18.         $h{join(" ", @$c)} = join("", @$c);
  19. }

  20. while (<DATA>)
  21. {
  22.         chomp;
  23.         my $answer = $_;
  24.         $answer =~ s/\s//g;
  25.         for (keys %h)
  26.         {
  27.                 print "$_\n" if $h{$_} eq $answer;
  28.         }
  29. }


  30. __DATA__
  31. ABC BCD CD
复制代码
  1. ./test.pl
  2. A BC BC D CD
  3. A BC B CD CD
  4. ABC BC D C D
  5. A B C BCD CD
  6. A BC BCD C D
  7. AB C B CD CD
  8. ABC B CD C D
  9. AB C BCD C D
  10. ABC B C D CD
  11. AB C BC D CD
复制代码

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2014-03-18 01:34 |显示全部楼层
回复 5# ly5066113

  
ABC BCD CD

所有可能的答案: ( 只有 3 个可能 )

A BC B CD CD
A BC BCD C D
ABC B CD C D

why ? {:3_202:}
  1. >> A BC BC D CD
  2.    A,BC BC D,CD        原始文本: 单选后面有小逗点, 多选后面有空格
  3.    ABC BC DCD        手抄文本: 失去了小逗点
  4. != ABC BCD CD        NG 不可能是答案


  5. >> A BC B CD CD
  6.    A,BC B,CD CD        原始文本: 单选后面有小逗点, 多选后面有空格
  7.    ABC BCD CD        手抄文本: 失去了小逗点
  8. == ABC BCD CD        OK 可能是答案


  9. >> ABC BC D C D
  10.    ABC BC D,C,D        原始文本: 单选后面有小逗点, 多选后面有空格
  11.    ABC BC DCD        手抄文本: 失去了小逗点
  12. != ABC BCD CD        NG 不可能是答案


  13. >> A B C BCD CD
  14.    A,B,C,BCD CD        原始文本: 单选后面有小逗点, 多选后面有空格
  15.    ABCBCD CD        手抄文本: 失去了小逗点
  16. != ABC BCD CD        NG 不可能是答案


  17. >> A BC BCD C D
  18.    A,BC BCD C,D        原始文本: 单选后面有小逗点, 多选后面有空格
  19.    ABC BCD CD        手抄文本: 失去了小逗点
  20. == ABC BCD CD        OK 可能是答案


  21. >> AB C B CD CD
  22.    AB C,B,CD CD        原始文本: 单选后面有小逗点, 多选后面有空格
  23.    AB CBCD CD        手抄文本: 失去了小逗点
  24. != ABC BCD CD        NG 不可能是答案


  25. >> ABC B CD C D
  26.    ABC B,CD C,D        原始文本: 单选后面有小逗点, 多选后面有空格
  27.    ABC BCD CD        手抄文本: 失去了小逗点
  28. == ABC BCD CD        OK 可能是答案


  29. >> AB C BCD C D
  30.    AB C,BCD C,D        原始文本: 单选后面有小逗点, 多选后面有空格
  31.    AB CBCD CD        手抄文本: 失去了小逗点
  32. != ABC BCD CD        NG 不可能是答案


  33. >> ABC B C D CD
  34.    ABC B,C,D,CD        原始文本: 单选后面有小逗点, 多选后面有空格
  35.    ABC BCDCD        手抄文本: 失去了小逗点
  36. != ABC BCD CD        NG 不可能是答案


  37. >> AB C BC D CD
  38.    AB C,BC D,CD        原始文本: 单选后面有小逗点, 多选后面有空格
  39.    AB CBC DCD        手抄文本: 失去了小逗点
  40. != ABC BCD CD        NG 不可能是答案


复制代码

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2014-03-18 01:45 |显示全部楼层
本帖最后由 rubyish 于 2014-03-18 02:35 编辑

回复 3# yestreenstars


bu 复杂的~

规则很简单 阅读原始文本规则
一句话就是说: 尝试恢复

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2014-03-18 02:00 |显示全部楼层
回复 2# xiumu2280


    可以试试 play 下~

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2014-03-18 06:37 |显示全部楼层
回复 4# 523066680


    bu乱的~

规则很简单 阅读原始文本规则
一句话就是说: 尝试恢复

可以试试 play 下~

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2014-03-18 08:51 |显示全部楼层
回复 6# rubyish


那就变简单了:
  1. $ awk 'NR==FNR{a[$0]=gensub(/,/,"","g");next}{print "================\n"FNR"| "$0;for(i in a){if(a[i]==$0)print "  "gensub(/,/," ","g",i)}}' file1 file2
  2. ================
  3. 1| AB BD AC AD BC
  4.   AB BD AC AD BC
  5. ================
  6. 2| AB BD AC AD
  7.   AB BD AC A D
  8. ================
  9. 3| ABCDA
  10.   A B C D A
  11. ================
  12. 4| ABCDABCD
  13.   A B C D ABCD
  14. ================
  15. 5| ACCD ABCD AB
  16.   A C CD ABCD AB
  17. ================
  18. 6| ABCABCD AB
  19.   A B C ABCD AB
  20. ================
  21. 7| ABC CD DD
  22.   A BC CD D D
  23. ================
  24. 8| ABC BCD CD
  25.   A BC BCD C D
  26. ================
  27. 9| ABC CCD CD
  28.   ABC C CD C D
  29. ================
  30. 10| ABC CAB CD
  31.   A BC C AB CD
  32. ================
  33. 11| BACD CD DD
  34.   B ACD CD D D
  35. ================
  36. 12| CCCD CC
  37.   C C CD C C
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP