首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你下了多少雪?

你下了多少雪?
EN

Code Golf用户
提问于 2011-02-08 05:59:20
回答 4查看 915关注 0票数 11

我为这句话道歉。在我们的内部高尔夫比赛中,我们玩得很开心,但它需要一些电子邮件来澄清,所以我希望我第一次就能捕捉到其中的大部分内容。

问题

给定“模拟”降雪快照(作为字符串、stdin或函数/方法的参数),报告4个值:最小深度、最大深度、平均深度和持续时间。

下面是一个格式化的示例来说明输入:

代码语言:javascript
复制
* * **     
** * ***    
** *  *    
*          
--------

“*”是雪花,“-”是地面。想象一下那些“雪花”都落在地上了。这是最后的“快照”:

代码语言:javascript
复制
*      
*          
** * **    
********    
--------

你需要报告:

  1. 最小深度-计算最短的“桩”(1,在上面的例子)
  2. 最大深度-计算最高的“桩”(4,在上面的例子)
  3. 平均深度-所有“桩”的平均计数(1.9,例如,四舍五入到十分之一)
  4. 持续时间-(每个“下降”=1秒)-从第一个快照到最后一个快照的时间(例如,上面的3秒)

另一个供参考的例子:

代码语言:javascript
复制
     * 
   *   *
      *
*      
--------

最后快照:

代码语言:javascript
复制
*  * ***
--------

输入

开始的“快照”将有8个“行”,8个“列”,并被管道分隔(管道分隔行)。例如(不包括引号):

代码语言:javascript
复制
“        |        |        |        |     *  |   *   *|      * |*       |--------” 

输出

在单行上用管道分隔的4种值:0_

EN

回答 4

Code Golf用户

发布于 2011-02-08 07:57:18

Python,153个字符

代码语言:javascript
复制
s=raw_input()
R=range(8)
C=[s[i::9].count('*')for i in R]
print"%d|%d|%.1f|%d"%(min(C),max(C),sum(C)/8.,max(8-s[i::9].find('*')-C[i]for i in R if C[i]))
票数 6
EN

Code Golf用户

发布于 2011-02-08 18:51:17

另外几种语言来源于我们的内部高尔夫:

C#,188个字符(易读)

代码语言:javascript
复制
int a = 0, b = 8, c = 0, d = 0, f, i, j, x;    
for (i = 0; i < 8; i++)    
{    
      f = x = 0;    
      for (j = 0; j < 8; )
            if (s[i + j++ * 9] == '*')    
            {    
                  x = x > 0 ? x : 9 - j;    
                  f++;    
            }         

      d += f;    
      a = f > a ? f : a;    
      b = f < b ? f : b;    
      c = x - f > c ? x - f : c;    
}

Console.Write("{0}|{1}|{2:.0}|{3}", b, a, d / 8f, c);

Ruby,173个字符

代码语言:javascript
复制
s=gets;n=8;a=o=l=0;8.times{|i|f=x=0;8.times{|j|if(s[i+j*9].chr=='*'):x=8-j if x==0;f+=1;end}
o+=f;a=f if f>a;n=f if f<n;l=x-f if x-f>l}
printf "%d|%d|%.1f|%d",n,a,o.to_f/8,l
票数 0
EN

Code Golf用户

发布于 2016-07-23 13:31:01

Mathematica,~115

代码语言:javascript
复制
"        \n        \n* * **  \n        \n** * ***\n** *  * \n*       \n--------"

Most/@ToCharacterCode@%~Partition~9/10-16/5
Min@#|Max@#|Mean@#~Round~.1|Position[#,1][[{-1,1},1]].{1,-1}-1&@Total@%

1-4

在这篇文章中,我不得不求助于转义字符串形式\n作为粘贴和复制失去空格。在前端,我可以这样输入:

票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档