Bạn đã nhận được bao nhiêu tuyết?


12

Tôi xin lỗi vì sự dài dòng. Chúng tôi đã có niềm vui với nó khi làm việc trong môn đánh gôn nội bộ của chúng tôi, nhưng nó cần một vài email để làm rõ, vì vậy tôi hy vọng tôi đã bắt được hầu hết trong lần đầu tiên.

VẤN ĐỀ

Đưa ra một ảnh chụp nhanh mô phỏng tuyết tuyết mô phỏng (như một chuỗi, stdin hoặc tham số cho chức năng / phương thức của bạn), báo cáo về 4 giá trị: độ sâu tối thiểu, độ sâu tối đa, độ sâu trung bình và thời lượng.

Đây là một ví dụ được định dạng để minh họa đầu vào:

* * **     
** * ***    
** *  *    
*          
--------

'*' Là một bông tuyết và '-' là mặt đất. Hãy tưởng tượng tất cả những bông tuyết tuyết đó rơi xuống đất. Đây là ảnh chụp nhanh cuối cùng

*      
*          
** * **    
********    
--------

Bạn cần báo cáo về:

  1. Độ sâu tối thiểu - đếm số cọc cọc ngắn nhất (1, ví dụ ở trên)
  2. Độ sâu tối đa - đếm số cọc cọc cao nhất (4, ví dụ ở trên)
  3. Độ sâu trung bình - số lượng trung bình của tất cả các cọc cọc của Google (1.9, ví dụ ở trên - làm tròn đến phần mười)
  4. Thời lượng - (mỗi lần rơi vào mùa thu = 1 giây) - thời gian từ ảnh chụp nhanh đầu tiên đến ảnh chụp nhanh cuối cùng (3 giây, ví dụ ở trên)

Một ví dụ khác để tham khảo:

     * 
   *   *
      *
*      
--------

Ảnh chụp cuối cùng:

*  * ***
--------

ĐẦU VÀO

Bắt đầu, một snapshot, sẽ có 8 hàng, các cột, 8 cột, và được phân định bằng đường ống (các đường ống phân tách các hàng). Ví dụ: (không bao gồm dấu ngoặc kép):

“        |        |        |        |     *  |   *   *|      * |*       |--------” 

ĐẦU RA

4 giá trị được phân định bằng đường ống trên một dòng duy nhất: 0 | 1 | .6 | 3 hoặc 0 | 5 | 1 | 1


Mặt đất có thể có độ cao khác nhau?
Nemo157

@ Nemo157 - đó không phải là vấn đề ban đầu của chúng tôi, vì vậy với mục đích ở đây, không. Đó là một biến thể thú vị cho vấn đề.
Steve

Bạn có yêu cầu làm tròn số trung bình?
Tít

Câu trả lời:


1

Perl, 128 ký tự

map{$d++;s/\*/$d{$-[0]}++;$t&&$t<$d or$t=$d/ge}split'\|',<>;map{$A+=$_/8}@m=sort values%d;printf"$m[0]|$m[-1]|%.1f|%d\n",$A,8-$t

6

Con trăn, 153 ký tự

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]))

1

Windows PowerShell, 180 189

$a=(0..7|%{$x=$_;-join(0..7|%{$s[$_*9+$x]})})
$b=$a-replace' '|%{$_.length}|sort
"{0}|{1}|{2:.0}|{3}"-f($b[-1..0]+(($b-join'+'|iex)/8),($a|%{($_-replace'^ +|\*').length}|sort)[-1])

Đầu vào đến như là $s.

Lịch sử:

  • 2011/02/10 01:53 (189) - Nỗ lực đầu tiên.
  • 2011/02/10 02:03 (180) - Định dạng chuỗi để giải cứu. Nhược điểm duy nhất: Nó xuất ra các số ở định dạng khu vực, không còn tuân thủ nghiêm ngặt các đặc điểm kỹ thuật. Tuy nhiên, đó cũng là một vấn đề được chia sẻ bởi giải pháp C # nên tôi đoán điều đó cũng ổn.

0

Một vài kết quả ngôn ngữ khác từ việc chơi golf nội bộ của chúng tôi:

C #, 188 ký tự (dễ đọc)

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 ký tự

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

PHP, 139 byte

<?for(;$y<8;$y++)for($x=0;++$n[$x],$x<8;$x++)'!'>$argv[1][$y*9+$x]&&--$n[$x]?$b[$x]++:0;print_r([min($n),max($n),array_sum($n)/8,max($b)]);

cho mỗi cột, không có. của những bông tuyết và không. các khoảng trắng bên dưới bông tuyết đầu tiên, sau đó tính toán
lấy chuỗi làm đối số từ dòng lệnh

sự cố và các bước chơi gôn

$i=$argv[1];
for(;$y<8;$y++)         # $y=row
{
    for($x=0;$x<8;$x++) # $x=column
    {
        // loop body: 32+26=58 bytes
        if('*'==$i[$p=$y*9+$x])$n[$x]++;# if snowflake: increase snowflakes count
        elseif($n[$x]+=0)$b[$x]++;      # elseif has snowflakes: increase blanks count
                                        # +=0: min needs a value in every column

        // -> golf if/elseif to ternaries, 16+9+25+1 = 51 (-7)
#       '*'==$i[$y*9+$x]
#           ? $n[$x]++
#           : (($n[$x]+=0)?$b[$x]++:0)
#       ;

        // golfing on the ternary, 15+23+9+1 = 48 (-3)
#       '!'>$i[$y*9+$x]                 # -1: char<'!' <=> char==' '
#           ? ($n[$x]+=0)?$b[$x]++:0    # -2: inverted condition -> eliminated parens
#           : $n[$x]++
#       ; # 15+23+9+1-2=46

        // increase snowflakes count in any case (initialization)
        // (needs curlies; elminate them by moving increase to the for condition)
        // decrease snowflakes count for blank
#       ++$n[$x];if('!'>$i[$y*9+$x]&&--$n[$x])$b[$x]++; # if: 47
#       ++$n[$x];'!'>$i[$y*9+$x]&&--$n[$x]?$b[$x]++:0;  # ternary: 46
    }
}
print_r([min($n),max($n),array_sum($n)/8,max($b)]); # calculate and print results

thêm round(...,1)xung quanh array_sum($n)/8để làm tròn (+9)


0

Toán học , ~ 115

"        \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 | 1.9 | 4

Trong bài đăng này, tôi đã phải sử dụng dạng chuỗi thoát \nkhi dán và sao chép mất khoảng trắng. Trong Front End tôi có thể nhập nó như thế này:

nhập mô tả hình ảnh ở đây


0

JavaScript, 328 byte

Không đặc biệt ngắn, nhưng đó là những gì tôi đã có.

var input = "        |        |        |* * **  |        |** * ***|** *  * |*       |--------";

(s=>{var l=s.split("|"),a=[0,0,0,0,0,0,0,0],o=[8,0,0,0],b;for(i=0;i<l.length;i++){if(!b&&l[i]!="        ")o[3]=7-i,b=1;for(j=0;j<l[i].length;j++){a[j]+=l[i][j]=="*"?1:0}}for(i=0;i<a.length;i++){if(a[i]<o[0])o[0]=a[i];if(a[i]>o[1])o[1]=a[i];o[2]+=a[i];}console.log(o[0]+"|"+o[1]+"|"+(o[2]/a.length).toFixed(1)+"|"+o[3]);})(input)

Bỏ chơi gôn:

var input = "        |        |        |        |     *  |   *   *|      * |*       |--------";

(s=>{
  var splits = s.split("|");
  var arr = [0,0,0,0,0,0,0,0];
  var b;
  var o=[8,0,0,0];
  for (var i = 0; i < splits.length; i++) {
    if (!b&&splits[i]!="        ") {
      o[3] = 7-i;b=1;
    }
    for (var j = 0; j < splits[i].length; j++) {
      arr[j]+=splits[i][j]=="*"?1:0;
    }
  }
  for (var i = 0; i < arr.length; i++) {
    if (arr[i]<o[0]) {
      o[0]=arr[i];
    }
    if (arr[i]>o[1]) {
      o[1]=arr[i];
    }
    o[2]+=arr[i];
  }
  console.log(o[0]+"|"+o[1]+"|"+(o[2]/arr.length).toFixed(1)+"|"+o[3]);
})(input)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.