আপেল নিচে পড়ে যাচ্ছে


15

ভূমিকা

এক্স-অক্ষের উপরে -2 থেকে 2 এর মধ্যে একটি আপেল গাছের ট্রাঙ্ক রয়েছে, যেখানে কয়েকটি আপেল এর চারপাশে নেমে পড়ে:

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

দৈনন্দিন, এন আপেল নিচে পড়ে। প্রতিটি আপেল সরাসরি মাটিতে পড়ে যাওয়ায় এর এক্স স্থানাঙ্ক বজায় রাখে ।

তবে যদি এটি অন্য একটি আপেলের শীর্ষে অবতরণ করে তবে এটি মাটিতে বা আপেলের একটি সহায়ক স্তর পর্যন্ত না পৌঁছা পর্যন্ত নিম্নলিখিত নিয়ম অনুসারে এটি ঘূর্ণায়মান হবে:

  1. যদি তার বর্তমান উচ্চতায় x + 1 এ স্থানটি খালি থাকে তবে বর্তমান আপেল সেখানে যায়।
  2. অন্যথায় যদি এক্স -1 এ স্থান খালি থাকে তবে বর্তমান আপেল সেখানে যায়।
  3. অন্যথায় বর্তমান আপেল যেখানে এটি অন্যান্য আপেলের উপরে রয়েছে সেখানেই থাকে।

চ্যালেঞ্জ

ইনপুটটি হ'ল প্রতিটি আপেলের এন শুরুর অবস্থানগুলি। আপনি এটিকে অ্যারে বা আলাদা সংখ্যা হিসাবে বা অন্য কোনও বৈধ উপায়ে নিতে পারেন, কেবলমাত্র আপনার উত্তরে এটি ব্যাখ্যা করেছেন তা নিশ্চিত করুন।

আউটপুটটি গাছের কাণ্ড এবং আশেপাশের আপেলগুলির একটি 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
বোনাসগুলি খুব জনপ্রিয় নয়। আমি মনে করি "দৃশ্যমান" আউটপুটটি ন্যূনতম হতে হবে (শীর্ষে কোনও খালি সারি নেই, প্রান্তগুলিতে কোনও খালি শেলাগুলি খালি নেই) ভাল, তবে আমি স্পেসগুলি সহ আউটপুটকে অবশ্যই স্পর্শ করার অনুমতি দেব pad
মার্টিন এেন্ডার

এছাড়াও, আপনার বোনাসটি বর্তমানে বোধগম্য নয় কারণ অনুমানটি আসলে কোনও আলাদা আউটপুট ফর্ম্যাটটি শুরু করার অনুমতি দেয় না ।
মার্টিন এেন্ডার

2
আমি মার্বেলাসের প্রথম উত্তরের জন্য একটি 100 রিপ্রেস অনুগ্রহ দেব। পতিত আপেলগুলি মার্বেল দ্বারা গণনা করা ... এটি কেবল খুব ফিটযোগ্য।
কুইন্টোপিয়া

উত্তর:


1

পিএইচপি, 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

নিখরচায় সংস্করণটি এখানে:

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

ঠিক আছে ... আমি চেষ্টা করেছি।

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