লিলি প্যাড জাম্পিং


24

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

এই ব্যাঙটি পিছনে পিছনে লাফিয়ে যেতে পছন্দ করে: সামনে ঝাঁপ দেওয়ার পরে, সে সবসময় পিছনের দিকে লাফ দেয় এবং বিপরীতে।

আপনি পূর্ণসংখ্যার একটি তালিকা পাস করেছেন, যা তার জাম্পগুলি উপস্থাপন করে। আপনাকে তার জাম্পগুলির ফলাফল আউটপুট করতে হবে।

উদাহরণস্বরূপ, বলুন আপনি পাস করেছেন [2,3,6,8,2]:

আমাদের ব্যাঙটি 2 টি লিলি প্যাড এগিয়ে দিয়ে শুরু করে:

_2

তারপরে 3 টি লিলি প্যাড ফিরে:

3__2

তারপরে 6 টি লিলি প্যাড এগিয়ে:

3__2__6

8 পিছনে:

8_3__2__6

তারপরে অবশেষে, 2 টি লিলি প্যাডগুলি এগিয়ে দেখুন (2 কীভাবে 3 টি ওভাররাইট করে তা লক্ষ্য করুন):

8_2__2__6

আরও সুস্পষ্ট হওয়ার জন্য: আপনার ইনপুটটি সংখ্যার একটি অ্যারে S, আপনাকে S[K]অবস্থানে আউটপুট করতে হবে S[K] - S[K-1] + S[K-2] - S[K-3]...

  • যদি নির্দিষ্ট স্থানে একাধিক সংখ্যা মুদ্রণ করতে হয় তবে সর্বাধিক সূচী সহ একটি মুদ্রণ করুন।
  • _কোনও নির্দিষ্ট স্থান খালি থাকলে আপনাকে ব্যবহার করতে হবে
  • যদি কোনও সংখ্যার একাধিক সংখ্যা থাকে তবে এটি একাধিক অবস্থান গ্রহণ করে না। (অন্য কথায়, একটি অবস্থান একাধিক অক্ষর নিয়ে গঠিত)
  • আপনি ধরে নিতে পারেন যে আপনার তালিকাটি খালি নয় এবং সমস্ত পূর্ণসংখ্যা 0 এর চেয়ে বড়।

পরীক্ষার কেস:

5                   ____5
2,2                 2_2
4,3,2,1             3124
5,3,2,1             _3125
2,3,6,8,2           8_2__2__6
10,3,12,4,1,12,16   ___12__3__10____41__1216
100,4,7,2,2         _______________________________________________________________________________________________4___1002_2

এটি একটি , সুতরাং এটি যতটা সম্ভব অক্ষরে উত্তর দিন!


13
আমি ভাবছি কে নম্বরফিল দেখেছেন?
ওকএক্স

3
সুতরাং তখন প্রতিটি
নাম্বার ফাইলের


5
@ ফ্যাটালাইজ করুন আমি এতে কোনও ভুল দেখছি না।
orlp

উত্তর:


9

এমএটিএল , 35 34 বাইট

1 বাইট সংরক্ষণের জন্য ইমেনাকে ধন্যবাদ !

32Oittn:oEq*Yst1hX<-Q(Vh' 0'95ZtXz

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

আপনার কোড গল্ফ, আপনার ব্যাখ্যা নয়!

নিম্নলিখিত [2,3,6,8,2]হিসাবে উদাহরণ হিসাবে ইনপুট ব্যবহার করে । প্রকৃত কোডের মধ্যবর্তী ফলাফলগুলি দেখতে আপনি %সেই মুহুর্তে প্রোগ্রামটি থামাতে একটি (মন্তব্য প্রতীক) সন্নিবেশ করতে এবং স্ট্যাকের সামগ্রীগুলি দেখতে চাইতে পারেন। উদাহরণস্বরূপ, এটি স্টেটমেন্ট স্টেটমেন্টটি স্টেটমেন্টের পরে দেখায় Ys(সংযোজক যোগফল)।

32       % Push 32 (ASCII for space)
O        % Push 0
i        % Input array
         % STACK: 32, 0, [2,3,6,8,2]
t        % Duplicate
         % STACK: 32, 0, [2,3,6,8,2], [2,3,6,8,2]
tn:      % Push [1 2 ... n] where n is length of input array
         % STACK: 32, 0, [2,3,6,8,2], [2,3,6,8,2], [1,2,3,4,5]
o        % Modulo 2
         % STACK: 32, 0, [2,3,6,8,2], [2,3,6,8,2], [1,0,1,0,1]
Eq       % Multiply by 2, subtract 1
         % STACK: 32, 0, [2,3,6,8,2], [2,3,6,8,2], [1,-1,1,-1,1]
*        % Multiply elementwise
         % STACK: 32, 0, [2,3,6,8,2], [2,-3,6,-8,2]
Ys       % Cumulative sum
         % STACK: 32, 0, [2,3,6,8,2], [2,-1,5,-3,1]
         % The top-most array is the positions where the entries of the second-top
         % array will be written. But postions cannot be less than 1; if that's
         % the case we need to correct so that the minimum is 1. If this happens,
         % it means that the frog has gone further left than where he started
t        % Duplicate
1hX<     % Append 1 and compute minimum. So if the original minimum is less than 1
         % this gives that minimum, and if it is more than 1 it gives 1
         % STACK: 32, 0, [2,3,6,8,2], [2,-1,5,-3,1], -3
-        % Subtract
         % STACK: 32, 0, [2,3,6,8,2], [5 2 8 0 2]
Q        % Add 1
         % STACK: 32, 0, [2,3,6,8,2], [6 3 9 1 3]
(        % Assign values (top array) to specified positions (second-top) into array
         % which contains a single 0 (third-top). Newer values overwrite earlier
         % values at the same position
         % STACK: 32, [8 0 2 0 0 2 0 0 6]
V        % Convert to string. This produces spaces between the numbers
         % STACK: 32, '8 0 2 0 0 2 0 0 6'
h        % Concatenate with initial 32 (space). This converts to char
         % STACK: ' 8 0 2 0 0 2 0 0 6'
         % Thanks to this initial space, all zeros that need to be replaced by '_'
         % are preceded by spaces. (In this example that initial space would not
         % be needed, but in other cases it will.) Other zeros, which are part of
         % a number like '10', must not be replaced
' 0'     % Push this string: source for string replacement
         % STACK: ' 8 0 2 0 0 2 0 0 6', ' 0 '
95       % Push 95 (ASCII for '_'): target for string replacement
         % STACK: ' 8 0 2 0 0 2 0 0 6', ' 0 ', 95
Zt       % String replacement
         % STACK: ' 8_2__2__6'
Xz       % Remove spaces. Implicit display
         % STACK: '8_2__2__6'

আমি মনে করি '0'পরিবর্তে প্রতিস্থাপন করে আপনি দুটি বাইট সংরক্ষণ করতে পারেন ' 0 ', কারণ Xzস্পেসগুলি পরে সরিয়ে ফেলেছে
বি মেহতা

1
@ বি মেহতা ধন্যবাদ আমি প্রথমে যে করেনি, কিন্তু দুর্ভাগ্যবশত কারণ তারপর কাজ না করে, '0''10'খুব প্রতিস্থাপিত হয়। এটা কেন আমি ইনিশিয়াল যোগ এর 32খুব
লুইস Mendo

হ্যাঁ, আমার ভুল
বি মেহতা

@ বি মেহতা না, আমার ব্যাখ্যা থেকে এটি মোটেও পরিষ্কার ছিল না। আমি পরে এটি পরিষ্কার করব
লুইস মেন্ডো

1
মোড 2 অ্যারের ব্যাখ্যাতে উল্টানো হয়েছে। এবং এছাড়াও, ' 0'ঠিক পাশাপাশি কাজ করবে না ?
এমিগিনা

4

পিএইচপি, 100 101 99 104 বাইট

for($p=-1;$d=$argv[++$k];+$i<$p?:$i=$p,$x>$p?:$x=$p)$r[$p+=$k&1?$d:-$d]=$d;for(;$i<=$x;)echo$r[$i++]?:_;

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; সাথে চালানো -nr

ভাঙ্গন

for($p=-1;          // init position
    $d=$argv[++$k]; // loop $d through command line arguments
    +$i<$p?:$i=$p,          // 3. $i=minimum index
    $x>$p?:$x=$p            // 4. $x=maximum index
)
    $r[
        $p+=$k&1?$d:-$d     // 1. jump: up for odd indexes, down else
    ]=$d;                   // 2. set result at that position to $d
for(;$i<=$x;)           // loop $i to $x inclusive
    echo$r[$i++]?:_;        // print result at that index, underscore if empty

এটি কীভাবে উদাহরণটি ইনপুট পরিচালনা করে 2,3,6,8,2, যেখানে 8লিলি প্যাডগুলির "শুরু" পেরিয়ে লাফিয়ে "পিছন দিকে" যায়?
অ্যাডমবর্কবার্ক

@ অ্যাডমবর্কবার্ক পিএইচপি নেতিবাচক অ্যারে সূচকগুলি সমর্থন করে।
তিতাস

আহ, এটা জানতেন না। ধন্যবাদ!
অ্যাডমবর্কবার্ক

4

জাভাস্ক্রিপ্ট (ES6), 99 107 বাইট

সম্পাদনা করুন: কারণ ওপি স্পষ্ট করে দিয়েছে যে একমাত্র সীমা উপলব্ধ মেমরির হওয়া উচিত, এটি হার্ডকডযুক্ত সর্বাধিক ব্যাপ্তির উপর নির্ভর না করে প্রয়োজনীয় স্থানটি বরাদ্দ করতে আপডেট করা হয়েছিল।

f=(a,x='',p=M=0)=>a.map(n=>x[(p-=(i=-i)*n)<m?m=p:p>M?M=p:p]=n,i=m=1)&&x?x.join``:f(a,Array(M-m).fill`_`,-m)

কিভাবে এটা কাজ করে

এই ফাংশনটি দুটি পাসে কাজ করে:

  • প্রথম পাসের সময়:

    • 'ব্যাঙ পয়েন্টার' pএ প্রাথমিকভাবে তৈরি করা হয়েছে 0
    • xপরিবর্তনশীল একটি খালি স্ট্রিং সেট করা থাকে, যাতে এটি পরিবর্তন করতে সকল প্রচেষ্টা কেবল উপেক্ষা করা হয়।
    • আমরা গণনা করি mএবং Mযা যথাক্রমে সর্বনিম্ন এবং সর্বোচ্চ মান পৌঁছে যায় p
    • এই পাসের শেষে: আমরা একটি পুনরাবৃত্তি কল করি f()
  • দ্বিতীয় পাসের সময়:

    • pথেকে আরম্ভ করা হয় -m
    • xঅক্ষরের M-mসাথে ভরাট আকারের অ্যারেতে সেট করা আছে _
    • আমরা সঠিক অবস্থানগুলিতে সংখ্যাগুলি সন্নিবেশ করি x
    • এই পাসের শেষে: আমরা একটি যুক্ত সংস্করণটি ফিরিয়ে দিচ্ছি x, যা চূড়ান্ত ফলাফল।

পরীক্ষার মামলা


এটি এমন ক্ষেত্রে ব্যর্থ হয় যেখানে ব্যাঙটি সূচক -৯৯৮ এর নীচে বা ১০০২ এর উপরে লাফ দেয় Example উদাহরণ: [1100]পজিশনের 1002পরিবর্তে পজিশনে ছাপানো সংখ্যার ফলাফল 1100
nderscore

1
@ ইন্ডারস্কোর এটি 8 বাইটের দাম নির্ধারণ করে।
আর্নল্ড

অসাধারণ! দুর্দান্ত পদ্ধতিটিও :)
nderscore

4

আর , 100 97 96 বাইট

function(x){p=cumsum(x*c(1,-1))[seq(x^0)]
p=p+max(1-p,0)
v=rep('_',max(p));v[p]=x
cat(v,sep='')}

এটি অনলাইন চেষ্টা করুন!

লাইন 1 এমন সমস্ত অবস্থান সন্ধান করে যেখানে লাফাতে হবে। প্রথমে, সমস্ত জাম্পগুলি x1 বা −1 দ্বারা গুণিত হয় এবং তারপরে সংযোজক যোগফল ব্যবহার করে চূড়ান্ত অবস্থানে রূপান্তরিত হয়। c(-1,1)প্রয়োজনে ভেক্টরটি পুনর্ব্যবহার করা হয়, তবে, যখন xদৈর্ঘ্য 1 হয়, xপরিবর্তে পুনর্ব্যবহৃত হয়। সুতরাং শুধুমাত্র seq(x^0)(সমতুল্য seq_along(x)) পরিমাণগুলি বিবেচনা করা হয়। (যখন একটি দৈর্ঘ্য x2 এর একাধিক না হয় তবে ফলাফলটি প্রভাবিত করে না এমন একটি সতর্কতা উত্পন্ন হয়)

লাইন 2 জাম্পিং অবস্থানগুলিকে বৃদ্ধি করে যাতে সমস্ত কমপক্ষে 1 হয়।

3 এবং 4 লাইন আউটপুট তৈরি করে এবং এটি মুদ্রণ করে।

জিউসেপ থেকে −1 বাইট


সাথে ঝরঝরে কৌশল seq(x^0)!
জিউসেপ্পে

-p+11-pএক বাইট কম জন্য হতে পারে ।
জিউসেপ্পে

@ জিউসেপ আহ, অবশ্যই, ধন্যবাদ!
রবার্ট হ্যাকেন

3

জাভাস্ক্রিপ্ট (ES6), 109 বাইট

f=x=>x.map((y,i)=>o[j=(j-=i%2?y:-y)<0?o.unshift(...Array(-j))&0:j]=y,o=[],j=-1)&&[...o].map(y=>y||'_').join``
<!-- snippet demo: -->
<input list=l oninput=console.log(f(this.value.split(/,/)))>
<datalist id=l><option value=5><option value="4,3,2,1"><option value="5,3,2,1"><option value="2,3,6,8,2"><option value="10,3,12,4,1,12,16"><option value="100,4,7,2,2"></datalist>

মন্তব্য করেছে:

f=x=>x.map((y,i)=>o[j=(j-=i%2?y:-y)<0?o.unshift(...Array(-j))&0:j]=y,o=[],j=-1)&&[...o].map(y=>y||'_').join``
                /* initialize output array [] and index j at -1: */  o=[],j=-1
     x.map((y,i)=> /* iterate over all items in input x (y=item, i=index) */  )
                      (j-=i%2?y:-y) /* update j +/-y based on if index i is odd */
                                   <0? /* if resulting j index is less than zero */
                                      o.unshift(...Array(-j)) /* prepend -j extra slots to the output array */
                                                             &0 /* and give result 0 */
                                                               :j /* else give result j */
                    j= /* assign result to j */
                  o[ /* assign y to output array at index j */   ]=y
   /* short-circuit && then spread output array to fill any missing entries */ &&[...o]
                                                      /* fill falsey slots with '_' */ .map(y=>y||'_')
                                                                         /* join with empty spaces */ .join``

3

পার্ল 6 , 68 67 বাইট

{(my @a)[[[\+] |(1,-1)xx*Z*$_].&{$_ X-min 1,|$_}]=$_;[~] @a X//"_"}

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

প্রথমে এটি संचयी লাফের অবস্থানগুলি নির্ধারণ করে:

[[\+] |(1,-1)xx*Z*$_]
                  $_  # Input array.          e.g.  2, 3, 6, 8, 2
      |(1,-1)xx*      # Infinite sequence:          1,-1, 1,-1, 1...
                Z*    # Zip-multiplied.       e.g.  2,-3, 6,-8, 2
 [\+]                 # Cumulative addition.  e.g.  2,-1, 5,-3,-1

তারপরে এগুলি সমস্ত সংখ্যা থেকে সর্বনিম্ন সংখ্যা (তবে সর্বাধিক 1) বিয়োগ করে 0-ভিত্তিক অ্যারে সূচকগুলিতে পরিণত করে:

.&{$_ X-min 1,|$_}    #                       e.g.  5, 2, 8, 0, 2

তারপরে এটি সেই সূচকগুলিতে নির্ধারিত ইনপুট নম্বরগুলি সহ একটি অ্যারে তৈরি করে:

(my @a)[   ]=$_;      #                       e.g.  8, Nil, 2, Nil, Nil, 2 Nil, Nil, 6

অবশেষে এটি অপরিজ্ঞাপিত উপাদানগুলির জায়গায় আন্ডারস্কোর সহ একটি স্ট্রিতে অ্যারে সংক্ষিপ্ত করে:

[~] @a X//"_"         #                       e.g.  8_2__2__6

3

জেলি ,  28  24 বাইট

-2 (এবং আরও অন্যটিকে অনুমতি দেয় -২) ফ্রাউনফ্রোগকে ধন্যবাদ (প্রিফিক্স অ্যাপ্লিকেশনটির [পোস্ট-চ্যালেঞ্জ] কার্যকারিতা দ্রুত ব্যবহার করুন Ƥ)

ṚƤḅ-µCṀ»0+µṬ€×"³Ṛo/o”_;⁷

এটি অনলাইন চেষ্টা করুন! সম্পূর্ণ কার্যকারিতা, একই কার্যকারিতা ব্যবহার করে একটি পরীক্ষার স্যুটের জন্য, এখানে ক্লিক করুন

কিভাবে?

ṚƤḅ-µCṀ»0+µṬ€×"³Ṛo/o”_;⁷ - Main link: list a       e.g. [ 5, 3, 2, 1]
 Ƥ                       - prefix application of:
Ṛ                        -  reverse                e.g. [[5],[3,5],[2,3,5],[1,2,3,5]]
   -                     - literal minus one
  ḅ                      - from base (vectorises)  e.g. [ 5, 2, 4, 3]=
    µ                    - start a new monadic chain - call that list c
                         - [code to shift so minimum is 1 or current minimum]
     C                   - complement (vectorises) e.g. [-4,-1,-3,-2]
      Ṁ                  - maximum                 e.g.     -1
       »0                - maximum of that & zero  e.g.      0
         +               - add to c (vectorises)   e.g. [ 5, 2, 4, 3]
          µ              - start a new monadic chain - call that list d
           Ṭ€            - untruth €ach            e.g. [[0,0,0,0,1],[0,1],[0,0,0,1],[0,0,1]]
               ³         - the program input (a)
             ×"          - zip with multiplication e.g. [[0,0,0,0,5],[0,3],[0,0,0,2],[0,0,1]]
                Ṛ        - reverse                      [[0,0,1],[0,0,0,2],[0,3],[0,0,0,0,5]]
                 o/      - reduce with or          e.g. [0,3,1,2,5]
                    ”_   - '_'
                   o     - or (replace 0 with '_') e.g. ['_',3,1,2,5]
                      ;⁷ - concatenate a newline   e.g. ['_',3,1,2,5, '\n']
                         - implicit print

নোট:

একটি নতুন লাইনের চূড়ান্ত বক্তব্য, ;⁷সেই ক্ষেত্রে ক্ষেত্রে যখন _আউটপুটটিতে উপস্থিত না হয়, তবে এই ক্ষেত্রে অন্তর্নিহিত মুদ্রণটি [3, 1, 2, 4]উদাহরণের মতো কিছু না করে, উদাহরণের প্রতিনিধিত্ব করে _3125। কোন trailing সম্পর্কে newline এক প্রতিস্থাপন করতে পারে জন্য ;⁷সঙ্গে ;““চরিত্র তালিকার একটি তালিকা সংযোজন করতে, [[''],['']](কোন ঘনিষ্ঠ প্রয়োজনীয় যেমন একটি প্রোগ্রাম শেষ চরিত্র)।

মিথ্যা ফাংশন, T, সঙ্গে একটি তালিকা দেয় 1একটি একক প্রাকৃতিক সংখ্যার জন্য, এটা ইনপুট মধ্যে ইনডেক্স এ এস, এন যে এন -1 0 করা একটি দ্বারা অনুসরণ 1যার ফলে ইনপুট সংখ্যা গুণ দ্বারা বাম থেকে তাদের সঠিক দূরত্ব স্থাপন করা হবে । বিপরীতমুখী,, এর সাথে হ্রাস বা সম্পন্ন করা হয় যখন পূর্বের তুলনায় পরে ব্যাঙ-দর্শনগুলি ওভাররাইট করা আবশ্যক ।o/


1,-ṁ×µ+\UƤ_@/€?
ফ্রাউনফ্রোগ 12

Ƥএটি লেখা হয়েছিল এমন সময়ে কোনও বৈশিষ্ট্য ছিল না, তবে হ্যাঁ এটি কার্যকর হবে। আরও ভাল UƤḅ€-(যেহেতু বেস -১ থেকে রূপান্তরকরণটি গুণন ...,1,-1,1,-1,1,-1,1এবং তার পরে যোগফলের মতো)।
জোনাথন অ্যালান

... বা ভেক্টরাইজ UƤḅ-হওয়ার পরেও :) (আমিও সরল বিপরীতে চলেছি , যেহেতু আমাদের উপার্জনের জটিলতার দরকার নেই U)
জোনাথন অ্যালান

1

এপিএল (ডায়ালগ ইউনিকোড) , 45 30 বাইট এসবিসিএস

{∊⍕¨⍵@i⍴∘'_'⌈/1+i←(⊢-1⌊⌊/)-\⍵}

এটি অনলাইন চেষ্টা করুন!

-\⍵বিকল্প -এবং সঙ্গে আর্গুমেন্ট স্ক্যান+

(⊢ - 1 ⌊ ⌊/)( ) কে বিয়োগ 1 বা সর্বনিম্ন ( ⌊/), যেটি ছোট ( )

i← ধার্য i

⌈/ 1+ বৃদ্ধি এবং সর্বোচ্চ গ্রহণ

⍴∘'_' যে অনেক আন্ডারস্কোর উত্পাদন

⍵@iআর্গুমেন্ট থেকে নম্বরগুলি অবস্থানে রাখুনi

∊⍕¨ প্রতিটি ফর্ম্যাট এবং সমতল


0

রুবি , 85 বাইট

->a{i=1;j=c=0;a.map{|x|[c-=x*i=-i,x]}.to_h.sort.map{|x,y|[?_*[x+~j,0*j=x].max,y]}*''}

এটি অনলাইন চেষ্টা করুন!

প্রতিটি লাফের পরে অবস্থানগুলি রেকর্ড করে, ডুপ্লিকেটগুলি সরানোর জন্য ফলাফলগুলি অ্যারে হ্যাশ রূপান্তর করে (প্রতিটি সদৃশ অবস্থানের শেষ মান সংরক্ষণ করে) এবং তারপরে প্রয়োজনীয় পরিমাণ আন্ডারস্কোর দিয়ে আঠালো করে তোলে।


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