आपको कितनी बर्फ मिली?


12

शब्दानुवाद के लिए मेरी क्षमायाचना। हमने अपनी आंतरिक गोल्फ में काम करने में इसके साथ मज़े किए, लेकिन इसे स्पष्टीकरण के लिए कुछ ईमेल की आवश्यकता थी, इसलिए मुझे उम्मीद है कि मैंने पहली बार इसमें से अधिकांश पर कब्जा कर लिया था।

संकट

एक "सिम्युलेटेड" स्नोफॉल स्नैपशॉट (आपके कार्य / विधि के लिए एक स्ट्रिंग, स्टडिन या पैरामीटर के रूप में) को देखते हुए, 4 मानों पर रिपोर्ट करें: न्यूनतम गहराई, अधिकतम गहराई, औसत गहराई और अवधि।

इनपुट का वर्णन करने के लिए यहां एक स्वरूपित उदाहरण दिया गया है:

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

'*' एक हिमखंड है और '-' जमीन है। ज़मीन की ओर गिरने वाले उन सभी "बर्फ के टुकड़ों" की कल्पना करें। यह अंतिम "स्नैपशॉट" है:

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

आपको रिपोर्ट करने की आवश्यकता है:

  1. न्यूनतम गहराई - सबसे छोटे "ढेर" (1, उदाहरण के लिए ऊपर) को गिनें
  2. अधिकतम गहराई - सबसे लंबा "ढेर" (4, उदाहरण के लिए ऊपर) गिनें
  3. औसत गहराई - सभी "बवासीर" की औसत गिनती (1.9, उदाहरण के लिए - ऊपर से दसवीं तक)
  4. अवधि - (प्रत्येक "गिरावट" = 1 सेकंड) - पहले स्नैपशॉट से आखिरी स्नैपशॉट तक का समय (उदाहरण के लिए, उदाहरण के लिए)

संदर्भ के लिए एक और उदाहरण:

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

अंतिम स्नैपशॉट:

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

इनपुट

शुरुआती "स्नैपशॉट" में 8 "पंक्तियां", 8 "कॉलम" होंगे, और पाइप-सीमांकित (पाइप अलग-अलग पंक्तियों) होंगे। उदाहरण के लिए (उद्धरण को छोड़कर):

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

आउटपुट

4 मानों को एक लाइन पर पाइप-सीमांकित किया गया: 0 | 1 | 6 | 3 या 0 | 5 | 1 | 1 |


क्या जमीन में अलग-अलग ऊँचाई हो सकती है?
निमो 157

@ निमो 157 - यह हमारी मूल समस्या में नहीं था, इसलिए यहां के उद्देश्यों के लिए, नहीं। यह समस्या का एक दिलचस्प बदलाव होगा।
स्टीव

क्या आपको औसतन चक्कर लगाने की आवश्यकता है?
टाइटस

जवाबों:


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

6

पायथन, 153 वर्ण

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

विंडोज पॉवरशेल, 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

हमारे आंतरिक गोल्फ से कुछ अन्य भाषा के परिणाम:

C #, 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

PHP, 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

गणितज्ञ , ~ ११५

"        \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)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.