सेब नीचे गिर रहे हैं


15

परिचय

एक्स-एक्सिस पर -2 से 2 के बीच एक एप्पल ट्री ट्रंक है, जहां कुछ सेब इसके चारों ओर नीचे गिरते हैं:

        |   |
        |   |
<-------|---|------->
       -2   2

हर दिन, एन सेब नीचे गिर जाते हैं। प्रत्येक सेब अपने x को जमीन पर सीधा गिरने के रूप में समन्वयित रखता है।

लेकिन अगर यह एक और सेब के शीर्ष पर उतरता है, तो यह निम्नलिखित नियमों के अनुसार रोल करेगा जब तक कि यह जमीन या सेब की एक सहायक परत तक नहीं पहुंचता:

  1. यदि इसकी वर्तमान ऊंचाई पर x + 1 पर स्थान खाली है तो वर्तमान सेब वहां चला जाता है।
  2. यदि x-1 पर स्थान खाली है, तो वर्तमान सेब वहां चला जाता है।
  3. अन्यथा वर्तमान सेब जहां रहता है, वह उस अन्य सेब के ऊपर होता है।

चुनौती

इनपुट क्रम में प्रत्येक ऐप्पल की n शुरुआती स्थिति होगी । आप इसे एक सरणी के रूप में या अलग संख्या या किसी अन्य मान्य तरीके से ले सकते हैं, बस यह सुनिश्चित करें कि आप इसे अपने उत्तर में समझाएं।

आउटपुट ट्री ट्रंक और चारों ओर सेब का एक ASCII ड्राइंग होना चाहिए। आपको बाईं ओर के सेब के बाईं ओर और सबसे दाहिने सेब के एक्स-अक्ष को खींचने की आवश्यकता नहीं है , लेकिन आपको इसे कहीं भी आकर्षित करने की आवश्यकता है यह कुछ सेब के नीचे है। आप उच्चतम सेब के ऊपर पेड़ का विस्तार भी कर सकते हैं।

आप मान सकते हैं कि सभी x- निर्देशांक -100 और 100 के बीच हैं, लेकिन -2 और 2 के बीच नहीं।

यह .. बाइट्स जीत में सबसे छोटा जवाब!

उदाहरण

इनपुट: [-3, 5, 5, -4, -4, 5, -3]

आउटपुट:

  a|   |
aaa|   | aaa
---|---|----

इनपुट: [3, 3, 3, 3, 8, 9]

आउटपुट:

|   |a
|   |aaa  aa
|---|-------

इनपुट: [-5, -5, -5, -5, -5, -5, -5, -5, -5]

आउटपुट:

  a  |   |
 aaa |   |
aaaaa|   |
-----|---|


आपके उदाहरण का अर्थ है कि एक्स दिशा में न्यूनतम संभव सीमा दिखाई जानी चाहिए (पेड़ों और सेब के बाईं और दाईं ओर कोई खाली जमीन नहीं)। क्या यह एक आवश्यकता है? इसके अलावा, क्या हमें अनुगामी रिक्त स्थान को प्रिंट करने की अनुमति है, कम से कम आयत को आउटपुट करने के लिए?
मार्टिन एंडर

1
बोनस बहुत लोकप्रिय नहीं हैं। मुझे लगता है कि "दृश्यमान" आउटपुट की आवश्यकता कम से कम होनी चाहिए (शीर्ष पर कोई खाली पंक्तियां, किनारों पर कोई भी ग्राउंड सेल खाली नहीं है) ठीक है, लेकिन मैं निश्चित रूप से रिक्त स्थान के साथ आयताकार को पैडिंग करने की अनुमति दूंगा।
मार्टिन एंडर

इसके अलावा, आपके बोनस का वर्तमान में कोई मतलब नहीं है क्योंकि कल्पना वास्तव में किसी को भी अनुमति नहीं देती है अलग आउटपुट प्रारूप के साथ शुरू करने की ।
मार्टिन एंडर

2
मैं मारबेलस में पहले उत्तर के लिए 100 प्रतिनिधि इनाम दूंगा। गिरते हुए सेबों की गणना गिरते हुए सेब से होती है ... यह अभी बहुत उपयुक्त है।
क्विंटोपिया 15

जवाबों:


1

PHP, 230 बाइट्स

मैंने पठनीयता के लिए पहले दो नए अंक जोड़े हैं।

function($l){for($y=count($l);$y>=0;$f[]="$a|   |$a")$a=str_repeat($y--?$w=' ':'-',99);
foreach($l as$x){for($x+=101,$s=$y=0;!$s;$b[$x]!=$w?$b[$x+1]!=$w?$b[$x-1]!=$w?$s=1:--$x
:++$x:0)$b=$f[$y++];$f[$y-2][$x]=a;}echo join('
',$f);};

Ideone

यहाँ ungolfed संस्करण है:

function drawApples(array $listStartX)
{
    $field = [];
    $maximalHeight = count($listStartX);
    for ($y = $maximalHeight; $y >= 0; --$y)
    {
        $line = str_repeat($y > 0 ? ' ' : '-', 98);
        $field[] = $line .'|   |'. $line;
    }

    foreach ($listStartX as $x)
    {
        $x += 100;
        for ($y = 0; true; ++$y)
        {
            if ($field[$y][$x] === ' ') {
                continue;
            }

            if ($field[$y][$x + 1] === ' ') {
                ++$x;
                continue;
            }

            if ($field[$y][$x - 1] === ' ') {
                --$x;
                continue;
            }

            $field[$y - 1][$x] = 'a';
            break;
        }
    }

    echo implode("\n", $field);
}

1

पायथन 2.7, 282 बाइट्स

from collections import*;a=Counter();a[2]=-1;a[-2]=-1
for d in input():
 while 0<=a[d+1]<a[d]:d+=1
 while 0<=a[d-1]<a[d]:d-=1
 a[d]+=1
m=max(a.values())+1
print'\n'.join(''.join(' '*(m-a[i]-1)+'a'*a[i]+'-'if i**2!=4 else'|'*m for i in range(min(a),max(a)+1))[i::m]for i in range(m))

Ideone

ठीक है मैंने कोशिश की।

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