免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: r2007

[游戏娱乐] 招聘面试题,用shell击败它吧 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2014-05-14 16:08 |显示全部楼层
回复 10# reyleon


    pf说 回去写嘎嘎 。。。。
  1. <?php
  2. function print_str($num = 0){
  3.         $out = '';
  4.         $nums = array(
  5.                 '3' => 3,
  6.                 '5' =>5,
  7.                 '7' =>7,
  8.         );
  9.         if($num<10){
  10.                 if($num%$nums['3']==0)$out = "Fizz";
  11.                 else if($num%$nums['5']==0)$out = "Buzz";
  12.                 else if($num%$nums['7']==0)$out = "Whizz";
  13.                 else $out = $num;
  14.         }
  15.         if($num>=10 and $num <100){
  16.                 $fisrt = substr($num, 0,1);
  17.                 $second = substr($num,1,1);
  18.                 if($fisrt == $nums['3'] or $second == $nums['3']) $out = "Fizz";
  19.                 else $out = $num;
  20.                 if($out == $num){
  21.                         if($num%$nums['3']==0 and $num%$nums['5']==0) $out = "FizzBuzz";
  22.                         else if($num%$nums['3']==0 and $num%$nums['7']==0) $out = "FizzWhizz";
  23.                         else if($num%$nums['5']==0 and $num%$nums['7']==0) $out = "BuzzWhizz";
  24.                         else{
  25.                                 if($num%$nums['3']==0)$out = "Fizz";
  26.                                 else if($num%$nums['5']==0)$out = "Buzz";
  27.                                 else if($num%$nums['7']==0)$out = "Whizz";
  28.                                 else $out = $num;}
  29.                 }else return $out;
  30.         }
  31.         return $out;
  32. }
  33. for($i=1;$i<100;$i++)
  34. echo print_str($i),"\n";
复制代码

论坛徽章:
58
15-16赛季CBA联赛之北控
日期:2019-09-29 17:40:5815-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:532015七夕节徽章
日期:2015-08-21 11:06:1715-16赛季CBA联赛之北京
日期:2016-07-06 15:42:07
发表于 2014-05-14 16:11 |显示全部楼层
回复 11# 这个冬天不冷


球带PHP


   

论坛徽章:
0
发表于 2014-05-14 22:10 |显示全部楼层
  1. #!/bin/sh

  2. read a b c
  3. for i in $(seq 100)
  4. do
  5.     result=`echo $i | grep $a`
  6.     [ -n "$result" ] && echo "Fizz" && continue

  7.     result=""

  8.     [ $((i%a)) = 0 ] && result="Fizz"
  9.     [ $((i%b)) = 0 ] && result=${result}Buzz
  10.     [ $((i%c)) = 0 ] && result=${result}Whizz

  11.     [ -n "$result" ] && echo $result && continue

  12.     echo $i
  13. done
复制代码

论坛徽章:
475
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-05-15 09:40 |显示全部楼层
回复 13# lsnl8480
亲,你只完成了部分需求。


   

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2014-05-15 10:26 |显示全部楼层
来个gnused?

  1. read Fizz Buzz Whizz

  2. seq 100|sed "0~${Fizz}s/[0-9]*$/Fizz/;0~${Buzz}s/[0-9]*$/Buzz/;0~${Whizz}s/[0-9]*$/Whizz/"
复制代码

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2014-05-15 11:37 |显示全部楼层
本帖最后由 不能超过15字 于 2014-05-15 15:48 编辑

表示我提交的是用shell写的
  1. ThinkPad-Edge-E430:~/tmp$ cat lagou_game.sh
  2. #!/bin/sh
  3. spec_1="$1"
  4. spec_2="$2"
  5. spec_3="$3"

  6. help()
  7. {
  8.     echo "$0 number1 number2 number3"
  9.     exit
  10. }

  11. chk_para()
  12. {
  13.     [ -z "$spec_1" ]&&help
  14.     [ -z "$spec_2" ]&&help
  15.     [ -z "$spec_3" ]&&help
  16. }

  17. is_include()
  18. {
  19.     length=$(echo $1|awk '{print length($1)}')
  20.     index=1
  21.     loop=$(echo $length|awk '{print 1+$1}')
  22.     while [ $index -lt $loop ]
  23.     do
  24.         bit=$(echo $1|cut -c$index)

  25.         if  [ $bit -eq $spec_1 ]  
  26.         then
  27.             return 1
  28.         fi

  29.         if  [ $bit -eq $spec_2 ]  
  30.         then
  31.             return 2
  32.         fi

  33.         if  [ $bit -eq $spec_3 ]
  34.         then
  35.             return 3
  36.         fi
  37.         index=$(echo $index|awk '{print $1+1}')
  38.     done
  39.     return  0
  40. }

  41. cal_number()
  42. {
  43.     ret=$(echo $1 $2|awk '{print $1%$2}')
  44.     if [ "$ret" = "0" ]
  45.     then
  46.         return 0
  47.     fi
  48.     return 1
  49. }
  50. main()
  51. {
  52.     chk_para
  53.     indexs=1
  54.    
  55.     while [ $indexs -lt 101 ]
  56.     do
  57.         is_include $indexs
  58.         ret="$?"
  59.     case $ret in
  60.         1)
  61.             echo "Fizz";;
  62.         2)
  63.             echo "Buzz";;
  64.         3)
  65.             echo "Whizz";;
  66.         0)
  67.             prt_number=""
  68.             cal_number $indexs $spec_1
  69.             [ $? -eq 0 ]&&prt_number="Fizz"
  70.             cal_number $indexs $spec_2
  71.             [ $? -eq 0 ]&&prt_number=$(echo "$prt_number"|awk '{
  72.                                                     if(length($1) ==0 )
  73.                                                         printf("%s","Buzz")
  74.                                                     else
  75.                                                         printf("%s%s",$1,"Buzz")
  76.                                                         
  77.                                                 }')
  78.             cal_number $indexs $spec_3
  79.             [ $? -eq 0 ]&&prt_number=$(echo "$prt_number"|awk -v num="$indexs" '{
  80.                                                     if(length($1) ==0 )
  81.                                                     {
  82.                                                         print "Whizz"
  83.                                                     }
  84.                                                     else
  85.                                                         printf("%s%s",$1,"Whizz")
  86.                                                 }')
  87.             echo "$prt_number"|awk '{
  88.                                                         if(length($1) != 0 && $1 != 0)
  89.                                                               printf("%s\n",$1)
  90.                                                         else
  91.                                                         {
  92.                                                               print '"$indexs"'
  93.                                                         }
  94.                                        
  95.                                                 }'
  96.             ;;
  97.     esac
  98.         indexs=$(echo $indexs|awk '{print $1+1}')
  99.     done
  100. }
  101. main
复制代码
  1. ThinkPad-Edge-E430:~/tmp$ ./lagou_game.sh 2 4 6
  2. 1
  3. Fizz
  4. 3
  5. Buzz
  6. 5
  7. Whizz
  8. 7
  9. FizzBuzz
  10. 9
  11. Fizz
  12. 11
  13. Fizz
  14. 13
  15. Buzz
  16. 15
  17. Whizz
  18. 17
  19. FizzWhizz
  20. 19
  21. Fizz
  22. Fizz
  23. Fizz
  24. Fizz
  25. Fizz
  26. Fizz
  27. Fizz
  28. Fizz
  29. Fizz
  30. Fizz
  31. FizzWhizz
  32. 31
  33. Fizz
  34. 33
  35. Buzz
  36. 35
  37. Whizz
  38. 37
  39. Fizz
  40. 39
  41. Buzz
  42. Buzz
  43. Buzz
  44. Buzz
  45. Buzz
  46. Buzz
  47. Buzz
  48. Buzz
  49. Buzz
  50. Buzz
  51. Fizz
  52. 51
  53. Fizz
  54. 53
  55. Buzz
  56. 55
  57. Whizz
  58. 57
  59. Fizz
  60. 59
  61. Whizz
  62. Whizz
  63. Whizz
  64. Whizz
  65. Whizz
  66. Whizz
  67. Whizz
  68. Whizz
  69. Whizz
  70. Whizz
  71. Fizz
  72. 71
  73. Fizz
  74. 73
  75. Buzz
  76. 75
  77. Whizz
  78. 77
  79. FizzWhizz
  80. 79
  81. FizzBuzz
  82. 81
  83. Fizz
  84. 83
  85. Buzz
  86. 85
  87. Whizz
  88. 87
  89. FizzBuzz
  90. 89
  91. FizzWhizz
  92. 91
  93. Fizz
  94. 93
  95. Buzz
  96. 95
  97. Whizz
  98. 97
  99. Fizz
  100. 99
  101. FizzBuzz


复制代码

论坛徽章:
1
巨蟹座
日期:2014-06-04 13:33:30
发表于 2014-05-15 18:00 |显示全部楼层
  1. [root@localhost perl]# perl -e  'print (((($_ % 3)?"":"fizz").(($_%5)?"":"buzz")).(($_%7)?"":"whizz")||$_,"\n")for(1..100);'|less
  2. 1
  3. 2
  4. fizz
  5. 4
  6. buzz
  7. fizz
  8. whizz
  9. 8
  10. fizz
  11. buzz
  12. 11
  13. fizz
  14. 13
  15. whizz
  16. fizzbuzz
  17. 16
  18. 17
  19. fizz
  20. 19
  21. buzz
  22. fizzwhizz
  23. 22
  24. 23
  25. fizz
  26. buzz
  27. 26
  28. fizz
  29. whizz
  30. 29
  31. fizzbuzz
  32. 31
  33. 32
  34. fizz
  35. 34
  36. buzzwhizz
  37. fizz
复制代码

论坛徽章:
1
巨蟹座
日期:2014-06-04 13:33:30
发表于 2014-05-15 18:08 |显示全部楼层
  1. [root@localhost perl]# more test
  2. #!/bin/bash
  3. for i in {1..100}
  4. do
  5.         if [ $(($i % 3)) = 0 ]; then
  6.         echo -n "fizz"
  7.         fi
  8.         if [ $(($i % 5)) = 0 ]; then
  9.         echo -n "buzz"
  10.         fi
  11.         if [ $(($i % 7)) = 0 ]; then
  12.         echo -n "whizz"
  13.         fi
  14.         if [ $(($i % 3)) != 0 ] && [ $(($i % 5)) != 0 ] && [ $(($i % 7)) != 0 ]; then
  15.         echo -n "$i"
  16.         fi
  17.         echo
  18. done
  19. [root@localhost perl]# bash test | more
  20. 1
  21. 2
  22. fizz
  23. 4
  24. buzz
  25. fizz
  26. whizz
  27. 8
  28. fizz
  29. buzz
  30. 11
  31. fizz
  32. 13
  33. whizz
  34. fizzbuzz
  35. 16
  36. 17
  37. fizz
  38. 19
  39. buzz
  40. fizzwhizz
  41. 22
  42. 23
  43. fizz
  44. buzz
  45. 26
  46. fizz
  47. whizz
  48. 29
  49. fizzbuzz
  50. 31
  51. 32
  52. fizz
  53. 34
  54. buzzwhizz
  55. fizz
  56. 37
  57. 38
复制代码

论坛徽章:
0
发表于 2014-05-16 09:21 |显示全部楼层
#!/bin/bash
for((i=1;i<=100;i++))
do
        a[$i]=$i
done

num1=$1
num2=$2
num3=$3

for((i=1;i<=100;i++))
do
        if [ `echo ${a[$i]}|awk  '{if($0 ~ /'$num1'/){print 1} else {print 0}}'` -eq "1" ]
        then
                echo "Fizz"
        elif [ "$((${a[$i]}%$num1))" -eq "0" -a "$((${a[$i]}%$num2))" -eq "0" -a "$((${a[$i]}%$num3))" -eq "0" ]
        then
                echo "FizzBuzzWhizz"
        elif [ "$((${a[$i]}%$num1))" -eq "0" -a "$((${a[$i]}%$num2))" -eq "0" ]
        then
                echo "FizzBuzz"
        elif [ "$((${a[$i]}%$num1))" -eq "0" -a "$((${a[$i]}%$num2))" -eq "0" ]
        then
                echo "FizzWhizz"
        elif [ "$((${a[$i]}%$num2))" -eq "0" -a "$((${a[$i]}%$num3))" -eq "0" ]
        then
                echo "BuzzWhizz"
        elif [ "$((${a[$i]}%$num1))" -eq "0" ]
        then
                echo "Fizz"
        elif [ "$((${a[$i]}%$num2))" -eq "0" ]
        then
                echo "Buzz"
        elif [ "$((${a[$i]}%$num3))" -eq "0" ]
        then
                echo "Whizz"
        else
                echo ${a[$i]}
        fi


1
2
Fizz
4
Buzz
Fizz
Whizz
8
Fizz
Buzz
11
Fizz
Fizz
Whizz
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
Fizz
Fizz
Buzz
26
Fizz
Whizz
29
Fizz
Fizz
Fizz
Fizz
Fizz
Fizz
Fizz
Fizz
Fizz
Fizz
Buzz
41
Fizz
Fizz

论坛徽章:
2
白羊座
日期:2013-11-18 19:52:42辰龙
日期:2014-09-07 07:46:06
发表于 2014-05-16 10:00 |显示全部楼层
题目例子结果中的15答案是错的,按照规则五,应该只显示5的echo,Buzz
  1. seq 100|awk -va=3 -vb=5 -vc=7 '{s="";s=($0%a>0)?s:"Fizz";s=($0%b>0)?s:s"Buzz";s=($0%c>0)?s:s"Whizz";s=(match($0,a))?"Fizz":(match($0,b))?"Buzz":(match($0,c))?"Whizz":s;s=(s=="")?$0:s;print s}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP