免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 84964 | 回复: 8
打印 上一主题 下一主题

小学一年级数学题 - 系列-3 [复制链接]

论坛徽章:
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
1 [报告]
发表于 2017-06-25 04:59 |显示全部楼层
8:
  1. 2 7 6
  2. 9 5 1
  3. 4 3 8
  4. -----
  5. 2 9 4
  6. 7 5 3
  7. 6 1 8
  8. -----
  9. 4 3 8
  10. 9 5 1
  11. 2 7 6
  12. -----
  13. 4 9 2
  14. 3 5 7
  15. 8 1 6
  16. -----
  17. 6 1 8
  18. 7 5 3
  19. 2 9 4
  20. -----
  21. 6 7 2
  22. 1 5 9
  23. 8 3 4
  24. -----
  25. 8 1 6
  26. 3 5 7
  27. 4 9 2
  28. -----
  29. 8 3 4
  30. 1 5 9
  31. 6 7 2
  32. -----
复制代码


biru:
  1. #!/usr/bin/perl

  2. explore();   

  3. # ______________________ SUB ______________________

  4. sub explore { E_( [ 1 .. 9 ], [] ) }
  5. use List::Util qw[sum];

  6. sub E_ {
  7.     my ( $a, $b ) = @_;
  8.     if    ( @$b == 3 ) { sum( @$b[ 0, 1, 2 ] ) != 15 and return }
  9.     elsif ( @$b == 6 ) { sum( @$b[ 3, 4, 5 ] ) != 15 and return }
  10.     elsif ( @$b == 7 ) { sum( @$b[ 0, 3, 6 ] ) != 15
  11.                        || sum( @$b[ 2, 4, 6 ] ) != 15 and return }
  12.     elsif ( @$b == 8 ) { sum( @$b[ 1, 4, 7 ] ) != 15 and return }
  13.     elsif ( @$b == 9 ) { sum( @$b[ 0, 4, 8 ] ) != 15 and return;
  14.         print "@$b[0,1,2]\n@$b[3,4,5]\n@$b[6,7,8]\n";
  15.         print "-----\n";
  16.     }

  17.     E_( [ @$a[ 0 .. $_ - 1, $_ + 1 .. $#$a ] ], [ @$b, $a->[$_] ] )
  18.         for 0 .. $#$a;
  19. }

  20. __DATA__
  21. $_
复制代码

论坛徽章:
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
2 [报告]
发表于 2017-06-25 05:09 |显示全部楼层
回复 5# jason680

填入[0,1,2,3,4,5,6,8]不用检查(要检查也可以)
if no check?
biru:

1 6 8
9 2 4
5 7 3

sum( @A[0, 4, 8] ) = 1 + 2 + 3  != 15

论坛徽章:
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
3 [报告]
发表于 2017-06-26 00:43 |显示全部楼层
回复 9# jason680

穷举法 再优化 改良...
填入[0,1]立即检查[0] + [1] > 5 , [2] = 15 -( [0] + [1] )
3 Q ~~

论坛徽章:
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
4 [报告]
发表于 2017-06-26 00:51 |显示全部楼层
回复 14# 523066680

[Finished in 7.2s]
good machine ~~
wode:
real        0m22.694s
user        0m22.413s
sys        0m0.167s



论坛徽章:
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
5 [报告]
发表于 2017-06-26 01:00 |显示全部楼层
本帖最后由 rubyish 于 2017-06-25 21:03 编辑

回复 11# 田小江

下面说说我的思路

3Q ~ zhege youyisi. XXle.
  1. #!/usr/bin/perl
  2. # (v5.26.0)
  3. use 5.010;

  4. make();

  5. # _____________________SUB____________________

  6. sub make {
  7.     my @abcd = ( 2, 4, 6, 8 );

  8.     for my $a (@abcd) {
  9.         my $b = 10 - $a;
  10.         my @cd = grep { $_ != $a and $_ != $b } @abcd;
  11.         for my $cd ( [@cd], [ reverse @cd ] ) {
  12.             my ( $c, $d ) = @$cd;
  13.             my @X = ( 15 - $a - $c, 15 - $a - $d, 15 - $c - $b, 15 - $d - $b );

  14.             # a  X0 c
  15.             # X1 5  X2
  16.             # d  X3 b

  17.             say join ' ', $a, $X[0], $c;
  18.             say join ' ', $X[1], 5, $X[2];
  19.             say join ' ', $d, $X[3], $b;
  20.             say '------';
  21.         }
  22.     }
  23. }

  24. __DATA__
  25. $_
复制代码




论坛徽章:
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
6 [报告]
发表于 2017-06-29 04:49 |显示全部楼层
回复 18# sunzhiguolu

如果代码 添加了 use warnings; 该怎样改动一下?
OK,

add
  1. use warnings;
复制代码

NO warnings;
perl version 26, subversion 0 (v5.26.0)

论坛徽章:
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
7 [报告]
发表于 2017-06-29 05:02 |显示全部楼层
v2:
real        0m0.079s
user        0m0.065s
sys        0m0.004s

  1. #!/usr/bin/perl
  2. # version 26, subversion 0 (v5.26.0)

  3. use 5.010;

  4. explore();

  5. # ______________________ SUB ______________________

  6. sub explore { E_(0) }

  7. sub E_ {
  8.     my $n = shift;
  9.     state $b   = [ (0) x 4 ];
  10.     state $has = [ (0) x 10 ];
  11.     state $in = [ [ 0, 1 ], [ 2, 3 ], [ 0, 2 ], [ 1, 3 ], [ 0, 3 ] ];

  12.     if ( $n == 4 ) {
  13.         my ( @test, @x ) = (0) x 10;
  14.         $test[$_] = 1 for @$b;
  15.         
  16.         for my $i (@$in) {
  17.             my $it = $b->[ $i->[0] ] + $b->[ $i->[1] ];
  18.             return if $it < 6 or $it > 14;
  19.             $it = 15 - $it;
  20.             return if $test[$it]++;
  21.             push @x, $it;
  22.         }

  23.         return if $x[0] + $b->[3] + $x[2] != 15;
  24.         my @X = ( @$b[ 0, 1 ], $x[0], @$b[ 2, 3 ], @x[ 1 .. 4 ] );

  25.         say join ' ', @X[ 0, 1, 2 ];
  26.         say join ' ', @X[ 3, 4, 5 ];
  27.         say join ' ', @X[ 6, 7, 8 ];
  28.         say '-----';
  29.         return;
  30.     }

  31.     for my $it ( 1 .. 9 ) {
  32.         next if $has->[$it];
  33.         $has->[$it]++;
  34.         $b->[$n] = $it;
  35.         E_( $n + 1 );
  36.         $has->[$it]--;
  37.     }
  38. }

  39. __DATA__
  40. $_

复制代码

论坛徽章:
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
8 [报告]
发表于 2017-06-29 05:19 |显示全部楼层
回复 23# sunzhiguolu

kankan:
  1. 0 [0 1 2 3]   []
  2. 1 [1 2 3]     [0]
  3. 2 [2 3]       [0 1]
  4. 3 [3]         [0 1 2]
  5. 4 []          [0 1 2 3]
  6. 3 [2]         [0 1 3]
  7. 4 []          [0 1 3 2]
  8. 2 [1 3]       [0 2]
  9. 3 [3]         [0 2 1]
  10. 4 []          [0 2 1 3]
  11. 3 [1]         [0 2 3]
  12. 4 []          [0 2 3 1]
  13. 2 [1 2]       [0 3]
  14. 3 [2]         [0 3 1]
  15. 4 []          [0 3 1 2]
  16. 3 [1]         [0 3 2]
  17. 4 []          [0 3 2 1]
  18. 1 [0 2 3]     [1]
  19. 2 [2 3]       [1 0]
  20. 3 [3]         [1 0 2]
  21. 4 []          [1 0 2 3]
  22. 3 [2]         [1 0 3]
  23. 4 []          [1 0 3 2]
  24. 2 [0 3]       [1 2]
  25. 3 [3]         [1 2 0]
  26. 4 []          [1 2 0 3]
  27. 3 [0]         [1 2 3]
  28. 4 []          [1 2 3 0]
  29. 2 [0 2]       [1 3]
  30. 3 [2]         [1 3 0]
  31. 4 []          [1 3 0 2]
  32. 3 [0]         [1 3 2]
  33. 4 []          [1 3 2 0]
  34. 1 [0 1 3]     [2]
  35. 2 [1 3]       [2 0]
  36. 3 [3]         [2 0 1]
  37. 4 []          [2 0 1 3]
  38. 3 [1]         [2 0 3]
  39. 4 []          [2 0 3 1]
  40. 2 [0 3]       [2 1]
  41. 3 [3]         [2 1 0]
  42. 4 []          [2 1 0 3]
  43. 3 [0]         [2 1 3]
  44. 4 []          [2 1 3 0]
  45. 2 [0 1]       [2 3]
  46. 3 [1]         [2 3 0]
  47. 4 []          [2 3 0 1]
  48. 3 [0]         [2 3 1]
  49. 4 []          [2 3 1 0]
  50. 1 [0 1 2]     [3]
  51. 2 [1 2]       [3 0]
  52. 3 [2]         [3 0 1]
  53. 4 []          [3 0 1 2]
  54. 3 [1]         [3 0 2]
  55. 4 []          [3 0 2 1]
  56. 2 [0 2]       [3 1]
  57. 3 [2]         [3 1 0]
  58. 4 []          [3 1 0 2]
  59. 3 [0]         [3 1 2]
  60. 4 []          [3 1 2 0]
  61. 2 [0 1]       [3 2]
  62. 3 [1]         [3 2 0]
  63. 4 []          [3 2 0 1]
  64. 3 [0]         [3 2 1]
  65. 4 []          [3 2 1 0]
复制代码

论坛徽章:
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
9 [报告]
发表于 2017-07-24 01:20 |显示全部楼层
v3:
  1. real        0m0.030s
复制代码

  1. #!/usr/bin/perl
  2. # version 26, subversion 0 (v5.26.0)
  3. use 5.010;
  4. explore();

  5. # ______________________ SUB ______________________

  6. sub explore { E_(0) }

  7. sub E_ {
  8.     my $n = shift;
  9.     state $b   = [ (0) x 4 ];
  10.     state $has = [ (0) x 10 ];
  11.     state $in  = [ [ 0, 1 ], [ 2, 3 ], [ 0, 2 ], [ 1, 3 ], [ 0, 3 ] ];

  12.     if ( $n == 3 ) {
  13.         # b3 = 15 - (15 - b0 - b1) - (15 - b0 - b2)
  14.         my $b3 = $b->[0] + $b->[0] + $b->[1] + $b->[2] - 15;
  15.         return if $b3 < 1 or $b3 > 9;
  16.         $b->[3] = $b3;
  17.         my ( @test, @x ) = (0) x 10;
  18.         $test[$_]++ and return for @$b;

  19.         for my $i (@$in) {
  20.             my $it = $b->[ $i->[0] ] + $b->[ $i->[1] ];
  21.             return if $it < 6 or $it > 14;
  22.             $it = 15 - $it;
  23.             return if $test[$it]++;
  24.             push @x, $it;
  25.         }

  26.         say join ' ', @$b[ 0, 1 ], $x[0];
  27.         say join ' ', @$b[ 2, 3 ], $x[1];
  28.         say join ' ', @x[ 2, 3, 4 ];
  29.         say '-----';
  30.         return;
  31.     }

  32.     for my $it ( 1 .. 9 ) {
  33.         next if $has->[$it];
  34.         $has->[$it]++;
  35.         $b->[$n] = $it;
  36.         E_( $n + 1 );
  37.         $has->[$it]--;
  38.     }
  39. }

  40. __DATA__
  41. $_
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP