找回密码
 欢迎注册
楼主: markfang2050

[原创] 六边形上19个黑点上不同数字求所有的解!

[复制链接]
发表于 2019-5-12 15:03:14 | 显示全部楼层
本帖最后由 王守恩 于 2019-5-12 18:37 编辑
wayne 发表于 2019-5-12 14:19
受到mathe的手工求解的启发。我也写了一个程序, 耗时的地方主要是整数的拆分,代码暂时不能上传,被论坛的 ...


谢谢wayne! 可以改一下吗?改成这样:
六个顶点按从小到大排列:1号位是最小的,最小数的两边总有一个数是比较小的,摆2号位。或
六个顶点按从大到小排列:1号位是最大的,最大数的两边总有一个数是比较大的,摆2号位。
3,4,5,6号位随着1,2号位的方向走,这样就不存在 “逆(顺)时针”问题,答案就是唯一的了。

点评

是两个数的最大数  发表于 2019-5-12 20:33
谢谢wayne!最大的不一定排在末位。  发表于 2019-5-12 18:38
1并不一定在六个顶点上  发表于 2019-5-12 15:07
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-5-12 18:04:13 | 显示全部楼层
恩,稍微改改,六个顶点的最小数排在1号位,与之相邻的两个数中最小的排在2号位,最大的排在末位。
  1. ans=Flatten[Table[Select[Flatten[Table[Table[Table[{tmp={s[[1]],k,S-2MovingAverage[PadRight[k,7,First[k]],2],S-s[[1]]-k};{S,s[[1]],k},Union[Flatten[tmp]]},{k,Flatten[Table[Flatten[{c[[1;;2]],cc,c[[3]]}],{c,Flatten[{First[t],#}]&/@Sort/@Subsets[Rest[t],{2}]},{cc,Permutations[Complement[t,c]]}],1]}],{t,s[[2]]}],{s,Table[{2i,Select[Sort/@IntegerPartitions[6S-Binomial[20,2]/2-5i,{6}],Length[Union[#]]==6 &&Not@MemberQ[#,2i]&&Max[#]<20&]},{i,(6S-Binomial[20,2]/2-Binomial[7,2])/5}]}],2],Length[Last[#]]==19&&Min[Last[#]]==1&][[All,1]],{S,22,31}],1]
复制代码

  1. {22,4}
  2. {23,2}
  3. {24,6}
  4. {25,6}
  5. {26,4}
  6. {27,11}
  7. {28,5}
  8. {29,8}
  9. {31,8}
  10. {32,5}
  11. {33,11}
  12. {34,4}
  13. {35,6}
  14. {36,6}
  15. {37,2}
  16. {38,4}
复制代码

  1. {22,2,{1,3,5,7,4,12}}
  2. {22,2,{1,3,5,11,4,8}}
  3. {22,2,{1,3,4,8,9,7}}
  4. {22,4,{1,2,6,5,10,3}}
  5. {23,6,{1,3,8,10,2,4}}
  6. {23,6,{1,3,2,4,8,10}}
  7. {24,2,{3,5,9,4,8,15}}
  8. {24,4,{2,3,11,12,5,6}}
  9. {24,4,{2,3,5,6,11,12}}
  10. {24,6,{1,4,2,13,3,11}}
  11. {24,6,{1,11,4,2,3,13}}
  12. {24,8,{1,5,12,3,2,6}}
  13. {25,2,{4,8,7,17,5,9}}
  14. {25,2,{4,8,16,6,5,11}}
  15. {25,4,{2,6,10,3,8,16}}
  16. {25,4,{2,5,8,14,10,6}}
  17. {25,8,{1,5,7,14,2,6}}
  18. {25,8,{1,6,2,4,12,10}}
  19. {26,4,{3,5,10,9,16,8}}
  20. {26,8,{1,6,2,13,4,15}}
  21. {26,8,{2,5,11,14,3,6}}
  22. {26,8,{2,5,3,6,11,14}}
  23. {27,2,{6,7,17,9,13,10}}
  24. {27,6,{3,8,4,11,7,19}}
  25. {27,6,{3,9,10,4,7,19}}
  26. {27,6,{4,5,19,7,9,8}}
  27. {27,8,{2,6,18,5,7,9}}
  28. {27,8,{3,5,7,9,17,6}}
  29. {27,8,{1,7,6,16,2,15}}
  30. {27,8,{1,15,7,6,2,16}}
  31. {27,8,{1,14,6,2,9,15}}
  32. {27,14,{1,7,4,10,2,8}}
  33. {27,14,{1,7,2,8,4,10}}
  34. {28,4,{5,6,15,10,16,11}}
  35. {28,4,{5,6,10,15,11,16}}
  36. {28,8,{1,14,4,17,2,15}}
  37. {28,8,{1,14,2,15,4,17}}
  38. {28,10,{2,7,3,17,5,14}}
  39. {29,2,{8,14,11,17,9,15}}
  40. {29,2,{8,14,9,15,11,17}}
  41. {29,4,{6,10,18,8,16,11}}
  42. {29,10,{2,13,11,3,7,18}}
  43. {29,10,{1,12,14,6,4,17}}
  44. {29,12,{3,7,4,8,16,11}}
  45. {29,16,{2,10,5,6,4,12}}
  46. {29,16,{1,9,7,8,3,11}}
  47. {31,4,{9,17,12,13,11,19}}
  48. {31,4,{8,16,14,15,10,18}}
  49. {31,8,{4,9,17,13,16,12}}
  50. {31,10,{3,16,14,6,8,19}}
  51. {31,10,{2,13,17,9,7,18}}
  52. {31,16,{2,10,14,9,4,12}}
  53. {31,18,{3,9,6,12,5,11}}
  54. {31,18,{3,9,5,11,6,12}}
  55. {32,10,{3,15,6,18,13,17}}
  56. {32,12,{3,16,6,19,5,18}}
  57. {32,12,{3,16,5,18,6,19}}
  58. {32,16,{4,9,15,14,5,10}}
  59. {32,16,{4,9,5,10,14,15}}
  60. {33,6,{10,16,13,19,12,18}}
  61. {33,6,{10,16,12,18,13,19}}
  62. {33,12,{4,14,13,19,5,18}}
  63. {33,12,{4,18,14,13,5,19}}
  64. {33,12,{5,11,18,14,6,19}}
  65. {33,12,{2,14,18,11,13,15}}
  66. {33,12,{3,11,13,15,17,14}}
  67. {33,14,{1,13,9,16,12,17}}
  68. {33,14,{1,13,16,10,11,17}}
  69. {33,14,{1,13,11,12,16,15}}
  70. {33,18,{3,11,7,10,14,13}}
  71. {34,12,{5,16,7,18,14,19}}
  72. {34,12,{6,9,15,18,14,17}}
  73. {34,12,{6,9,14,17,15,18}}
  74. {34,16,{4,11,10,15,17,12}}
  75. {35,12,{8,10,19,14,18,16}}
  76. {35,12,{6,13,15,19,14,18}}
  77. {35,16,{4,12,17,10,14,18}}
  78. {35,16,{6,10,14,18,15,12}}
  79. {35,18,{4,12,16,9,15,14}}
  80. {35,18,{3,13,12,16,11,15}}
  81. {36,12,{8,15,19,14,18,17}}
  82. {36,14,{7,17,9,19,16,18}}
  83. {36,14,{7,17,18,16,9,19}}
  84. {36,16,{8,9,17,18,14,15}}
  85. {36,16,{8,9,14,15,17,18}}
  86. {36,18,{5,12,16,11,15,17}}
  87. {37,14,{10,12,17,19,16,18}}
  88. {37,14,{10,12,16,18,17,19}}
  89. {38,16,{10,15,14,18,19,17}}
  90. {38,18,{8,16,13,15,17,19}}
  91. {38,18,{9,15,17,19,12,16}}
  92. {38,18,{11,12,16,17,19,13}}
复制代码

评分

参与人数 1威望 +12 金币 +12 贡献 +12 经验 +12 鲜花 +12 收起 理由
王守恩 + 12 + 12 + 12 + 12 + 12 好!!!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-5-12 18:31:00 | 显示全部楼层

大佬!这个比较漂亮!何种语言写的?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-5-12 18:35:28 | 显示全部楼层
期待C或python写的代码

点评

我看您是来问作业的?  发表于 2019-5-12 18:40
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-5-12 18:43:32 | 显示全部楼层
markfang2050 发表于 2019-5-12 18:35
期待C或python写的代码

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-5-12 19:16:47 | 显示全部楼层
wayne 发表于 2019-5-12 18:04
恩,稍微改改,六个顶点的最小数排在1号位,与之相邻的两个数中最小的排在2号位,最大的排在末位。

能直接输出图吗?我想了很久。

点评

我看看,好像没别的方法就是Graphics  发表于 2019-5-12 20:37
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-5-12 20:11:42 | 显示全部楼层
如果两数之和等于20,就称为彼此的互补数。
显然,互补替换保持这种异形幻六方的等和性,只是定和(幻方数)有变化,前后幻方数之和等于60。
可见幻方数之和为60的幻方是一一对应的,故实际上只需要搜索幻方数在30以内的幻方。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-5-12 20:37:30 | 显示全部楼层
恩恩,很有道理,反正程序就只需改一个数字,,运算时间也只是线性的增加,计算结果刚好也确实是对称的,互相印证~
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-5-12 21:37:35 | 显示全部楼层
zeroieme 发表于 2019-5-12 19:16
能直接输出图吗?我想了很久。

先借用前面的代码,算出解
  1. ans=Flatten[Table[Select[Flatten[Table[Table[Table[{tmp={s[[1]],k,S-2MovingAverage[PadRight[k,7,First[k]],2],S-s[[1]]-k};{S,s[[1]],k},Union[Flatten[tmp]]},{k,Flatten[Table[Flatten[{c[[1;;2]],cc,c[[3]]}],{c,Flatten[{First[t],#}]&/@Sort/@Subsets[Rest[t],{2}]},{cc,Permutations[Complement[t,c]]}],1]}],{t,s[[2]]}],{s,Table[{2i,Select[Sort/@IntegerPartitions[6S-Binomial[20,2]/2-5i,{6}],Length[Union[#]]==6 &&Not@MemberQ[#,2i]&&Max[#]<20&]},{i,(6S-Binomial[20,2]/2-Binomial[7,2])/5}]}],2],Length[Last[#]]==19&&Min[Last[#]]==1&][[All,1]],{S,22,31}],1]
复制代码


再画图:
  1. Table[mid=Function[{a,b},{t[[1]]-a[[1]]-b[[1]],Mean[{a[[2]],b[[2]]}]}];
  2. vtx=Table[{If[k==0,t[[3,-1]],t[[3,k]]],{Cos[(2Pi)/6 k],Sin[(2Pi)/6 k]}},{k,0,6}];
  3. origin={t[[2]],{0,0}};
  4. others=Join[Table[mid@@m,{m,Partition[vtx,2,1]}],Table[mid[origin,m],{m,Rest[vtx]}]];
  5. all=Join[Rest[vtx],others,{origin}];
  6. Graphics[{Thickness[0.01],Magenta,Line[vtx[[All,2]]],Line/@(Partition[Rest[vtx[[All,2]]],4,1][[All,{1,4}]]),Blue,PointSize[.1],Point[all[[All,2]]],Yellow,Text[Style[#[[1]],FontSize->20],#[[2]]]&/@all},ImageSize->500,PlotLabel->Style[Framed[t[[1]]],30,Red,Background->Yellow],Background->RGBColor["#eedddd"]],{t,ans}]
复制代码


Screenshot from 2019-05-12 21-41-46.png

点评

谢,已经绘图成功  发表于 2019-5-13 16:39
把MidPoint改成Mean就行,其他都不用动  发表于 2019-5-13 14:45
太美了,教科书般的解答,可惜我使用 Mathematica 11, 请给出 Midpoint 函数 的定义  发表于 2019-5-13 14:05
图看起来不错!  发表于 2019-5-13 11:46

评分

参与人数 2威望 +10 金币 +10 贡献 +10 经验 +10 鲜花 +10 收起 理由
northwolves + 6 + 6 + 6 + 6 + 6 赞一个!
zeroieme + 4 + 4 + 4 + 4 + 4 很给力!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-5-12 23:18:53 | 显示全部楼层
Table[mid =
   Function[{a, b}, {t[[1]] - a[[1]] - b[[1]],
     Mean[{a[[2]], b[[2]]}]}];

点评

Midpoint是 Mathematica 12引入的新函数  发表于 2019-5-13 08:12
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 12:41 , Processed in 0.078640 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表