免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234
最近訪問板塊 發新帖
樓主: sunzhiguolu
打印 上一主題 下一主題

小學一年級數學題 - 系列-3 [復制鏈接]

論壇徽章:
22
2015年亞洲杯之科威特
日期:2015-04-18 15:27:07每日論壇發貼之星
日期:2016-01-27 06:20:0015-16賽季CBA聯賽之廣夏
日期:2016-03-28 16:20:51程序設計版塊每日發帖之星
日期:2016-04-09 06:20:00CU十四周年紀念徽章
日期:2016-05-03 09:35:1415-16賽季CBA聯賽之天津
日期:2016-11-18 08:31:3115-16賽季CBA聯賽之山西
日期:2016-12-07 16:29:5315-16賽季CBA聯賽之八一
日期:2017-01-10 11:34:3415-16賽季CBA聯賽之吉林
日期:2017-03-30 22:51:1915-16賽季CBA聯賽之廣夏
日期:2017-04-13 20:51:52程序設計版塊每日發帖之星
日期:2016-01-27 06:20:00每日論壇發貼之星
日期:2015-12-28 06:20:00
31 [報告]
發表于 2017-06-29 20:14 來自手機 |只看該作者
贊            

論壇徽章:
307
程序設計版塊每周發帖之星
日期:2016-04-08 00:41:33操作系統版塊每日發帖之星
日期:2015-09-02 06:20:00每日論壇發貼之星
日期:2015-09-02 06:20:00程序設計版塊每日發帖之星
日期:2015-09-04 06:20:00每日論壇發貼之星
日期:2015-09-04 06:20:00每周論壇發貼之星
日期:2015-09-06 22:22:00程序設計版塊每日發帖之星
日期:2015-09-09 06:20:00程序設計版塊每日發帖之星
日期:2015-09-19 06:20:00程序設計版塊每日發帖之星
日期:2015-09-20 06:20:00每日論壇發貼之星
日期:2015-09-20 06:20:00程序設計版塊每日發帖之星
日期:2015-09-22 06:20:00程序設計版塊每日發帖之星
日期:2015-09-24 06:20:00
32 [報告]
發表于 2017-06-29 21:58 |只看該作者
回復 31# Windows19
謝謝諸位大神,包括樓上打醬油的 。說過的話一定會兌現,等我消化消化。。。

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
33 [報告]
發表于 2017-07-02 20:15 |只看該作者

論壇徽章:
0
34 [報告]
發表于 2017-07-10 21:20 |只看該作者
回復 14# 523066680

Algorithm:ermute版本 <= 0.12的話在Perl 5.24及以上是build不出來的。這是因為Perl 5.24有一個稱為Context rework的工作,提高了函數調用的速度,但是一些原來非公開的內部API被改了,當時造成了一批XS package break。

我前兩天因為單位里工作的原因,剛好把Algorithm:ermute修了一下,現在最新的版本是0.14,你可以再試試。

評分

參與人數 1信譽積分 +5 收起 理由
523066680 + 5 很給力!

查看全部評分

論壇徽章:
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
35 [報告]
發表于 2017-07-11 10:05 |只看該作者
回復 34# zhouzhen1

厲害了。高性能。

論壇徽章:
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
36 [報告]
發表于 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. $_
復制代碼

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
37 [報告]
發表于 2017-07-24 12:54 |只看該作者
回復 32# sunzhiguolu

>> ...說過的話一定會兌現,等我消化消化。。。

消化消化
帖子都快消失,還不出來說說話...

論壇徽章:
0
38 [報告]
發表于 2020-07-30 00:11 |只看該作者
最近在看《七周七語言》,這類題用prolog是最合適的,而perl有AI:rolog,寫了個代碼,因為要完成窮舉和滿足所有條件,運行時間會有點久。
fd_domain與fd_all_diff函數都是自己寫的,另個解決問題的方式是通過遞歸來實現的。
  1. use AI::Prolog;
  2. use Data::Dumper;
  3. $Data::Dumper::Indent = 0;

  4. my $prolog;

  5. # If reading from DATA, we need a CHECK block to ensure that
  6. # DATA is available by the time the constructor is called
  7. CHECK {
  8.     $prolog = AI::Prolog->new(
  9.         do { local $/; <DATA> }
  10.     );
  11. }
  12. #[4, 9,2,
  13. # 3,5,7,
  14. # 8, 1,6]
  15. $prolog->query("sudoku([_, _,_,_,_,_,_, _,_], Solution).");

  16. #顯示執行過程
  17. #$prolog->trace(1);
  18. while ( my $results = $prolog->results ) {
  19.     #print "@$results\n";
  20.     print Dumper $results;
  21. }

  22. __DATA__
  23. member(X, [ X | _ ]).
  24. member(X, [ _ | TAIL ]) :-
  25.    member(X, TAIL).
  26. fd_domain([],_).
  27. fd_domain([ HEAD | TAIL ],L) :-
  28.    member(HEAD,L),
  29.    fd_domain(TAIL,L).
  30. fd_all_diff([]).
  31. fd_all_diff([ HEAD | TAIL ]) :-
  32.    not(member(HEAD,TAIL)),
  33.    fd_all_diff(TAIL).
  34. sum([], 0).
  35. sum([Head|Tail],Total) :-
  36.     sum(Tail,Sum),
  37.     Total is Head + Sum.
  38.    
  39. valid([]).
  40. valid([HEAD|TAIL]) :-
  41.     sum( HEAD , Total),
  42.     eq(15,Total),
  43.     valid(TAIL).
  44. sudoku(Puzzle, Solution) :-
  45.     Solution = Puzzle,
  46.     eq(Puzzle, [S11, S12, S13, S21, S22, S23, S31, S32, S33]),
  47.     fd_domain(Solution, [1,2,3,4,5,6,7,8,9]),
  48.     eq(Row1,[S11, S12, S13]),
  49.     eq(Row2,[S21, S22, S23]),
  50.     eq(Row3,[S31, S32, S33]),
  51.     eq(Col1,[S11, S21, S31]),
  52.     eq(Col2,[S12, S22, S32]),
  53.     eq(Col3,[S13, S23, S33]),
  54.     eq(ObjLineL,[S11, S22, S33]),
  55.     eq(ObjLineR, [S13, S22, S31]),
  56.     fd_all_diff(Solution),
  57.     valid([Row1, Row2, Row3, Col1, Col2, Col3, ObjLineL, ObjLineR]).
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

  

北京盛拓優訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP
   日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站