কত তুষার পেলেন?


12

কথায় কথায় ক্ষমা চাইছি। আমাদের অভ্যন্তরীণ গল্ফিংয়ের সাথে আমরা এটির সাথে মজা করেছি, তবে এটি স্পষ্টতার জন্য কয়েকটি ইমেল প্রয়োজন, তাই আমি আশা করি যে আমি বেশিরভাগটিকে প্রথমবারেই ক্যাপচার করেছি।

সমস্যা

একটি "সিমুলেটেড" তুষারপাত স্ন্যাপশট দেওয়া (আপনার ফাংশন / পদ্ধতির স্ট্রিং, স্টিডিন বা প্যারামিটার হিসাবে), 4 টি মানের প্রতিবেদন করুন: ন্যূনতম গভীরতা, সর্বাধিক গভীরতা, গড় গভীরতা এবং সময়কাল।

ইনপুট চিত্রিত করার জন্য এখানে একটি ফর্ম্যাট করা উদাহরণ:

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

'*' হ'ল তুষারকণা এবং '-' স্থল। সেই সমস্ত "স্নোফ্লেক্স" মাটির দিকে পড়ার কল্পনা করুন। এটি চূড়ান্ত "স্ন্যাপশট":

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

আপনি রিপোর্ট করতে হবে:

  1. সর্বনিম্ন গভীরতা - সংক্ষিপ্ততম "গাদা" গণনা করুন (1 উদাহরণস্বরূপ, উপরে)
  2. সর্বাধিক গভীরতা - দীর্ঘতম "গাদা" গণনা করুন (4 উদাহরণস্বরূপ উপরে)
  3. গড় গভীরতা - সমস্ত "পাইলস" এর গড় গণনা (উপরে 1.9 উদাহরণস্বরূপ - দশমিতে গোলাকার)
  4. সময়কাল - (প্রতিটি "পতন" = 1 সেকেন্ড) - প্রথম স্ন্যাপশট থেকে শেষ স্ন্যাপশট পর্যন্ত সময় (3 সেকেন্ড, উপরে উদাহরণস্বরূপ)

রেফারেন্সের জন্য আরেকটি উদাহরণ:

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

চূড়ান্ত স্ন্যাপশট:

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

ইনপুট

শুরু করার "স্ন্যাপশট" এ 8 "সারি", 8 "কলাম" থাকবে এবং পাইপ-বিস্মৃত হবে (পাইপগুলি সারিগুলি পৃথক করে)। উদাহরণস্বরূপ (উদ্ধৃতিগুলি বাদ দিয়ে):

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

আউটপুট

4 টি মান একক লাইনে পাইপ-বিস্মৃত: 0 | 1 | .6 | 3 বা 0 | 5 | 1 | 1


মাটির কি বিভিন্ন উচ্চতা থাকতে পারে?
নিমো 157

@ নিমো ১৫77 - এটি আমাদের মূল সমস্যায় ছিল না, তাই এখানে উদ্দেশ্যগুলির জন্য, না। সমস্যাটির জন্য এটি একটি আকর্ষণীয় প্রকরণ হতে চাই।
স্টিভ

আপনার কি গড় গড় দরকার?
তিতাস

উত্তর:


1

পার্ল, 128 অক্ষর

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


1

উইন্ডোজ পাওয়ারশেল, 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])

ইনপুট হিসাবে আসে $s

ইতিহাস:

  • 2011-02-10 01:53 (189) - প্রথম প্রচেষ্টা।
  • 2011-02-10 02:03 (180) - উদ্ধার করতে স্ট্রিমের ফর্ম্যাট করুন। কেবল নেতিবাচক: এটি আঞ্চলিক ফর্ম্যাটে সংখ্যাগুলিকে আউটপুট দেয়, কার্য স্পষ্টকরণের সাথে আর কঠোরভাবে মেনে চলেনি। তবুও, এটি সি # সমাধান দ্বারা ভাগ করা সমস্যা তাই আমি অনুমান করি যে এটি ঠিক।

0

আমাদের অভ্যন্তরীণ গল্ফিং থেকে অন্য কয়েকটি ভাষার ফলাফল:

সি #, 188 টি অক্ষর (সহজেই পঠনযোগ্য)

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

রুবি, 173 টি অক্ষর

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

পিএইচপি, 139 বাইট

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

প্রতিটি কলামের জন্য, নম্বর গণনা করুন। তুষারপাত এবং না। প্রথম স্নোফ্লেকের নীচে ফাঁকা স্থান, তারপরে গণনা
কমান্ড লাইন থেকে আর্গুমেন্ট হিসাবে স্ট্রিং নেয়

ভাঙ্গন এবং গল্ফিং পদক্ষেপ

$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

রাউন্ডিংয়ের জন্য round(...,1)চারপাশে যুক্ত করুন array_sum($n)/8(+9)


0

গণিত , 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

এই পোস্টে আমাকে \nপেস্ট হিসাবে অনাবৃত স্ট্রিং ফর্মটি অবলম্বন করতে হয়েছিল এবং অনুলিপি ফাঁকা স্থান হারাবে। ফ্রন্ট এন্ডে আমি এটি এভাবে প্রবেশ করতে পারি:

এখানে চিত্র বর্ণনা লিখুন


0

জাভাস্ক্রিপ্ট, 328 বাইট

বিশেষভাবে সংক্ষিপ্ত নয়, তবে এটি আমি পেয়েছি।

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)

ডি-golfed:

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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.