免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yinyuemi
打印 上一主题 下一主题

循环编程(转贴) [复制链接]

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
11 [报告]
发表于 2011-08-01 14:39 |只看该作者
不是只有2^5 种选择吗?历遍下

论坛徽章:
0
12 [报告]
发表于 2011-08-01 14:46 |只看该作者
蚂蚁碰撞可以看成互相穿过啊..
最短的是,11之前的蚂蚁往头走,17之后的往后走.得最短11s
最长的是,3之后的往27走...得最长24s.

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
13 [报告]
发表于 2011-08-01 14:51 |只看该作者
回复 10# jason680


    赞这种思路!!!看起来最长时间出现在头或尾,最短时间出现靠近中值的那个

论坛徽章:
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
14 [报告]
发表于 2011-08-01 14:52 |只看该作者
回复  jason680


    赞这种思路!!!看起来最长时间出现在头或尾,最短时间出现靠近中值的那个
yinyuemi 发表于 2011-08-01 14:51


是的,我在10楼code,解释参考12楼

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
15 [报告]
发表于 2011-08-01 15:26 |只看该作者
  1. #!/bin/perl
  2. use strict;
  3. my @ant;
  4. my $i;
  5. for (0..1){
  6.         $ant[1]{dir}=$_;
  7.         for  (0..1){
  8.                 $ant[2]{dir}=$_;
  9.                 for (0..1){
  10.                         $ant[3]{dir}=$_;
  11.                         for (0..1){
  12.                                 $ant[4]{dir}=$_;
  13.                                 for (0..1){
  14.                                         $ant[5]{dir}=$_;
  15.                                         my $time = 0;
  16.                                         $i++;
  17.                                         $ant[1]{pos}=3;
  18.                                         $ant[2]{pos}=7;
  19.                                         $ant[3]{pos}=11;
  20.                                         $ant[4]{pos}=17;
  21.                                         $ant[5]{pos}=23;
  22.                                         while(1){
  23.                                                 $time++;
  24.                                                 my $out=1;
  25.                                                 for(1..5){
  26.                                                         ($ant[$_]{dir}==0)?$ant[$_]{pos}--:$ant[$_]{pos}++;
  27.                                                         $out=($ant[$_]{pos}>0&&$ant[$_]{pos}<27)?0:$out;
  28.                                                         for my $j ($_+1..5){
  29.                                                                 if($ant[$_]{pos}==$ant[$j]{pos}){
  30.                                                                         $ant[$_]{dir}=($ant[$_]{dir}==0)?1:0;
  31.                                                                         $ant[$j]{dir}=($ant[$j]{dir}==0)?1:0;
  32.                                                                 }
  33.                                                         }
  34.                                                 }
  35.                                                 if($out){
  36.                                                         print "$i-------------------------$time\n";
  37.                                                         last;
  38.                                                 }
  39.                                         }
  40.                                 }
  41.                         }
  42.                 }
  43.         }
  44. }
复制代码

论坛徽章:
0
16 [报告]
发表于 2011-08-03 11:22 |只看该作者
  1. #!/bin/sh

  2. declare -a pos=(3 7 11 17 23)
  3. declare -a timeArray
  4. LEN=27

  5. for((i=0;i<32;++i))
  6. do
  7.     for((index=0;index<${#pos[*]};++index))
  8.     do
  9.         ((d=i&1<<index))
  10.         if [ $d -eq 0 ]
  11.         then
  12.             let "ss=$LEN-${pos[$index]}"
  13.             timeArray[$index]=$ss
  14.         else
  15.             timeArray[$index]=${pos[index]}
  16.         fi
  17.     done

  18.     echo ${timeArray[*]} |tr ' ' '\n'|sort -gr|head -1
  19. done
复制代码

论坛徽章:
13
巨蟹座
日期:2013-10-30 18:29:4115-16赛季CBA联赛之青岛
日期:2019-01-04 17:30:1015-16赛季CBA联赛之天津
日期:2016-03-08 10:30:1715-16赛季CBA联赛之天津
日期:2015-12-10 15:56:452015年亚洲杯之约旦
日期:2015-03-09 16:29:36双鱼座
日期:2014-11-27 17:17:20寅虎
日期:2014-11-18 13:55:12双子座
日期:2014-03-31 15:41:32狮子座
日期:2014-03-14 11:23:24狮子座
日期:2014-02-19 16:30:12午马
日期:2013-11-04 23:22:31卯兔
日期:2013-10-30 19:51:15
17 [报告]
发表于 2011-08-03 22:02 |只看该作者
太强了

论坛徽章:
0
18 [报告]
发表于 2011-08-04 10:02 |只看该作者
呵呵

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
19 [报告]
发表于 2013-03-17 19:43 |只看该作者
  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #

  4. for i in range(2**5):
  5.     pos = [ 3, 7, 11, 17, 23 ]
  6.     dir = [ -1 for j in range(len(pos)) ]
  7.     for j in range(len(pos)):
  8.         dir[j] = (i >> j) & 1
  9.     time = 0
  10.     while True:
  11.         time += 1
  12.         gone = 1
  13.         for j in range(len(pos)):
  14.             if dir[j] == 0:
  15.                 pos[j] -= 1
  16.             else:
  17.                 pos[j] += 1
  18.             for k in range(len(pos)):
  19.                 if j != k:
  20.                     if pos[j] == pos[k]:
  21.                         dir[j] = (dir[j] + 1) % 2
  22.                         dir[k] = (dir[k] + 1) % 2
  23.             if pos[j] > 0 and pos[j] < 27:
  24.                 gone = 0
  25.         if gone:
  26.             print time
  27.             break
复制代码

论坛徽章:
0
20 [报告]
发表于 2013-03-18 09:53 |只看该作者
呵呵,有时间啊,玩起这个了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP