হাইড্রা আক্রমণ


15

হাইড্রাসকে হত্যা করতে সক্ষম দক্ষ যোদ্ধা হওয়ার পরিবর্তে ( এখানে এবং এখানে দেখুন ), আপনি এখন এমন এক যোদ্ধা, যাকে জীবের বিরুদ্ধে কীভাবে হত্যা করতে হবে বা কোন অস্ত্রগুলি ব্যবহার করতে হবে সে সম্পর্কে পূর্ব জ্ঞান নেই।

এই সমস্যায়, আপনি যখনই একটি মাথা কেটে ফেলবেন, তখন একই স্থানে দুটি বাড়বে grow আপনার একসাথে অনেকগুলি মাথা কেটে ফেলার ব্যবস্থা নেই, তাই কেবলমাত্র মাথার সংখ্যা বাড়বে। এই ক্ষেত্রে, আমাদের হাইড্রা N(N ⩾ 1) মাথা দিয়ে শুরু করতে পারে । আসুন প্রথম মুখোমুখিটিকে একটি প্রজন্ম বলা যাক এবং আমরা প্রথম প্রজন্মের শিরোনামকে 0 হিসাবে প্রতিনিধিত্ব করব , 1 টি প্রথম আঘাতের পরে তৈরি হওয়া মাথাগুলি এবং আরও অনেক কিছু।

ইনপুট

আপনাকে Nপ্রাথমিকভাবে হাইড্রার কতটি মাথা রয়েছে তা উপস্থাপিত করে একটি আকার দেওয়া হবে এবং কোন সূচকযুক্ত আকারের একটি তালিকা রয়েছে N(উদাহরণগুলিতে আমি 0-সূচক বিন্যাসটি ব্যবহার করব) আপনি একটি মাথা কেটে ফেলবেন। আপনি সর্বদা প্রদত্ত সূচকগুলি বৈধ বলে ধরে নিতে পারেন - মনে রাখবেন যে আপনি মাথা কেটে দেওয়ার সাথে সাথে তালিকাটি (যেমন: মাথাগুলি) বাড়বে।

উদাহরণ

ইনপুট : N = 4এবং[0,4,2,5]

জেনারেশন 0 - অ্যাটাক সূচক 0

0 0 0 0     =>     1 1 0 0 0
^                  ^ ^

জেনারেশন 1 - অ্যাটাক সূচক 4

1 1 0 0 0     =>     1 1 0 0 2 2
        ^                    ^ ^

প্রজন্ম 2 - আক্রমণ সূচক 2

1 1 0 0 2 2     =>     1 1 3 3 0 2 2
    ^                      ^ ^

জেনারেশন 3 - অ্যাটাক সূচি 5

1 1 3 3 0 2 2     =>     1 1 3 3 0 4 4 2
          ^                        ^ ^

শেষ প্রজন্ম

1 1 3 3 0 4 4 2

আপনি দেখতে পাচ্ছেন যে প্রদত্ত সূচীগুলি পূর্ববর্তী প্রজন্মের তালিকার সাথে সম্পর্কিত।

আউটপুট

আপনি শেষ প্রজন্মের আউটপুট প্রয়োজন।

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

N = 1 and [0] => [1,1]
N = 2 and [0,0] => [2,2,1,0]
N = 2 and [0,1] => [1,2,2,0]
N = 2 and [1,0] => [2,2,1,1]
N = 2 and [1,1] => [0,2,2,1]
N = 4 and [0,4,2,5] => [1,1,3,3,0,4,4,2]
N = 6 and [0,0,0,0,0,0] => [6, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0]
N = 6 and [5,6,7,8,9,10] => [0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6]
N = 10 and [1,7,3,12,9,0,15,2,2,10] => [6, 6, 9, 9, 8, 1, 3, 3, 0, 0, 10, 10, 2, 5, 5, 0, 0, 4, 7, 7]

এটি তাই বাইট জিতে সংক্ষিপ্ত উত্তর!


স্যান্ডবক্স লিঙ্ক
ihavenoidea

এমন পরীক্ষার কেস দরকার যেখানে প্রাথমিক শিরোনামের সংখ্যা কাটা মাথা ছাড়ার চেয়ে বেশি। আমি মনে করি আমি কমপক্ষে একটি বর্তমান উত্তর দেখতে পাচ্ছি যা সেই ক্ষেত্রে ব্যর্থ হবে।
এক্সকালি

@ এক্সকালি মাথা কেটে ফেলার জন্য প্রাথমিকভাবে মাথাগুলির প্রাথমিক সংখ্যার সমান গ্যারান্টিযুক্ত: আপনাকে একটি পূর্ণসংখ্যা N(...) এবং আকারের একটি তালিকা দেওয়া হবেN (তবে আমি প্রথমটি পড়ার সাথে সাথে সেই অংশটিও মিস করেছি) চ্যালেঞ্জ।) সুতরাং, Nকেবল অকেজো।
আর্নৌল্ড

3
আমি আসলে Nইনপুট থেকে অপসারণের কথা ভেবেছিলাম কারণ এটি অ্যারের আকার হিসাবে "স্পষ্টভাবে" দেওয়া হয়। যাইহোক, আমি ভেবেছিলাম যে সমাধানগুলি Nবাইটসের উপর নির্ভর করে array.size()বা এর অনুরূপ পরিবর্তে বাঁচিয়ে দেবে ।
ihavenoidea

1
স্টিক কমিকের প্রাসঙ্গিক অর্ডার (+ পরবর্তী এক)।
পাওলো ইবারম্যান

উত্তর:


11

পাইথন 2 , 59 বাইট

H,a=input()
H*=[0]
for i in a:H[i:i+1]=[max(H)+1]*2
print H

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

Xnor কে খুব চতুর -1 ধন্যবাদ ।


2
ধূর. 52 সেকেন্ডের মধ্যে আমাকে
মারধর করুন

1
@ ফিল্ড এলএল আপনি প্রজন্মের জন্যও একটি অতিরিক্ত পরিবর্তনশীল এড়াতে চেষ্টা করেছেন! : ডি
এরিক দ্য আউটগল্ফার


5

স্ট্যাক্স , 12 11 বাইট

î╓≡╧▄#¥oWä)A

এটি চালান এবং স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

এক বাইট সাশ্রয়ের জন্য পুনরাবৃত্তি করার জন্য ধন্যবাদ !

প্যাকযুক্ত (13 বাইট) এবং ব্যাখ্যা:

z),{i^c\&:fFm
z)               Push initial array of zeroes to stack
  ,              Push array of attacks to stack
   {       F     For each attack, push it and then:
    i^c\           Push [x,x], where x is the generation number
        &          Set the head at the attack index to this new array
         :f        Flatten
            m    Print the last generation

চ্যালেঞ্জটি স্পষ্টতই বলেছে "আপনাকে শেষ প্রজন্মকে আউটপুট করতে হবে", সুতরাং আমার অনুমান যে এই sens ক্যমত্য এখানে ধারণ করে না। যদি এটি হয় তবে দশটি বাইট ফলকে অন্যথায় খালি স্ট্যাকের উপর রেখে পরিচালনা করা যেতে পারে:

z),Fi^c\&:f

1
0]*সঙ্গে প্রতিস্থাপন করা যেতে পারে z)। সম্পাদনা: আপাতদৃষ্টিতে এটি অননুমোদিত আচরণ, তবে প্যাড-বাম তার ক্রিয়াকলাপটিকে উভয় ক্রমে গ্রহণ করে। (এনএমপি এলওএল)
পুনরাবৃত্ত

1
@ রিচার্সিভ অদ্বন্ধিত আচরণ হ'ল সর্বোত্তম ধরণের আচরণ :)
খুলদ্রেসথে না'বাড়িয়া

5

হাস্কেল , 63 57 বাইট

foldl(\y(x,n)->take n y++x:x:drop(n+1)y).(0<$)<*>zip[1..]

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


takeএবং dropএর চেয়ে কম splitAt। বাঁক gএকটি ল্যামডা মধ্যে অন্য বাইট সংরক্ষণ: foldl(\y(x,n)->take n y++x:x:drop(n+1)y).(0<$)<*>zip[1..]
নিমি

আহ আহ - আমি এই দুটোই চেষ্টা করেছিলাম তবে কিছু কারণে আমি কেবল gপয়েন্টফ্রি তৈরির চেষ্টা করেছি এবং এটি আরও খারাপ হয়ে গেছে।
বি মেহতা

4

ওরাকল এসকিউএল, 325 বাইট

select listagg(ascii(substr(l,level,1)),', ')within group(order by level)
from(select * from t
model dimension by(1 i)measures(l,r)
rules iterate(1e5)until(r[1]is null)
(l[1]=regexp_replace(l[1],'.',chr(:n-length(r[1])+1)||chr(:n-length(r[1])+1),1,ascii(substr(r[1],1,1))+1),r[1]=substr(r[1],2)))
connect by level<=length(l);

এসকিউএল * প্লাসে পরীক্ষা করুন।

SQL> set heading off
SQL>
SQL> create table t(l varchar2(4000), r varchar2(4000));

Table created.

SQL>
SQL> var n number;
SQL> exec :n := 10;

PL/SQL procedure successfully completed.

SQL>
SQL> insert into t
  2  values(rpad(chr(0),:n,chr(0)), chr(1)||chr(7)||chr(3)||chr(12)||chr(9)||chr(0)||chr(15)||chr(2)||chr(2)||chr(10));

1 row created.

SQL>
SQL> select listagg(ascii(substr(l,level,1)),', ')within group(order by level)
  2  from(select * from t
  3  model dimension by(1 i)measures(l,r)
  4  rules iterate(1e5)until(r[1]is null)
  5  (l[1]=regexp_replace(l[1],'.',chr(:n-length(r[1])+1)||chr(:n-length(r[1])+1),1,ascii(substr(r[1],1,1))+1),r[1]=substr(r[1],2)))
  6  connect by level<=length(l);

6, 6, 9, 9, 8, 1, 3, 3, 0, 0, 10, 10, 2, 5, 5, 0, 0, 4, 7, 7

পুনশ্চ. 255 পর্যন্ত সংখ্যাগুলির জন্য কাজ করে।


3

Zsh , 41 বাইট

আমরা নিয়ম অনুসারে এন কে উপেক্ষা করি ।

for i;a+=(0)
for i;a[i]=($[++j] $j)
<<<$a

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

সুন্দর মান: শুরু করতে 0 এর একটি অ্যারে করুন, শেষ করতে এটি মুদ্রণ করুন। a[i]=(a b)উভয় পরিবর্তন এবং ঢোকাতে পদ্ধতি আমার কাছে নতুন, সুখী আমি এটির জন্য একটি ব্যবহার পাওয়া যায় নি।


বা, 41 বাইটও :

a[#]=
for i;a[i]=($[++j] $j)
<<<${a/#%/0}

এই এক কম মান। আমরা কয়েকটি ঝরঝরে কৌশল ব্যবহার করি:

  • ${a/#%/0}: এটি প্রতিস্থাপন, তবে #এবং %zsh কে ম্যাচটি শুরু এবং শেষে অ্যাঙ্কর করতে বলুন। যেহেতু এটি খালি, আমরা 0 দিয়ে সমস্ত খালি উপাদান প্রতিস্থাপন করি।
  • a[#]=: এটি কার্যকরভাবে $#Zsh এ আকারের একটি ফাঁকা অ্যারে ঘোষণা করে । এটি char *a[argc]সি এর মতো we

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


3

স্কালা , 104 বাইট

def^(l:Seq[Int],r:Seq[Int]):Seq[Int]=if(r.size>0)^(l.patch(r(0),Seq.fill(2)(l.max+1),1),r.drop(1))else l

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

এখন পর্যন্ত সবচেয়ে দীর্ঘ উত্তর বলে মনে হচ্ছে। :)

List.fill(2)(l.max+1)এর সাথে প্রতিস্থাপন করা যেতে পারে List(l.max+1,l.max+1)তবে দৈর্ঘ্য একই থাকে।


3

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

nউভয় সংস্করণে 8 বাইট সংরক্ষণ করে সর্বদা অ্যারের দৈর্ঘ্য হ'ল নির্দেশ করার জন্য @ শেগগিকে ধন্যবাদ জানাই

0-সূচিযুক্ত বিন্যাসে অ্যারের আশা করে। উপেক্ষা করে n

a=>a.map(i=>b.splice(i,1,++g,g),b=a.map(_=>g=0))&&b

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


জাভাস্ক্রিপ্ট (নোড.জেএস) ,  64  56 বাইট

ব্যবহার reduce()এবং flat():

a=>a.reduce((b,i,g)=>b.flat(1,b[i]=[++g,g]),a.map(_=>0))

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


হায় a=>a.map(i=>b.splice(i,1,++g,g),b=a.map(_=>g=0))&&bনা নিয়েই কাজn ?
শেগি

@ শেগি ওফস আমি সেই অংশটি মিস করেছি: এবং আকারের একটি তালিকাN । সুতরাং, হ্যাঁ, এটি nIS বেহুদা মনে হচ্ছে ।
আর্নৌল্ড


2

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

function h($n,$a){$h=array_fill(0,$n,0);foreach($a as$b)array_splice($h,$b,0,$h[$b]=++$x);return $h;}

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


স্বাগত! টিআইও-র মতো কোনও অনলাইন দোভাষীকে একটি ব্যাখ্যা এবং একটি লিঙ্ক যুক্ত করার বিষয়ে বিবেচনা করুন । কেবলমাত্র কোডের উত্তরগুলি স্বয়ংক্রিয়ভাবে নিম্ন-মানের হিসাবে চিহ্নিত হয়। বিশদ জন্য বিদ্যমান উত্তর দেখুন।
mbomb007

আমি একটি টিআইও লিঙ্ক যুক্ত করেছি
এক্সমার্ক

1

পার্ল 5 -pal , 48 বাইট

@h=($i=0)x@F;splice@h,$_,1,(++$i)x2for@F;$_="@h"

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

STDIN থেকে স্থান-বিভাজিত তালিকা হিসাবে অ্যারে নেয়। ইনপুট দেয় না n


কোনও ক্ষেত্রে যদি কোনও ইনপুট না নেওয়ার অনুমতি দেওয়া হচ্ছে কিনা তা ভেবে দেখছেন
প্রশ্নগুলি

1

রেটিনা 0.8.2 , 69 বাইট

\d+
$*_
r`_\G
,0
+`^((,*)_)(_)*(.*,,(?<-3>\d+,)*)\d+
$2$4$.1,$.1
^,+

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। 1-ইন্ডেক্স। হিসাবে ইনপুট লাগে ...list,N। তালিকাটি দৈর্ঘ্যের হতে হবে না N। ব্যাখ্যা:

\d+
$*_

সমস্ত ইনপুটকে অচেনা রূপান্তর করুন, তবে ব্যবহার করুন _, যাতে এটি অঙ্কের পরবর্তী ব্যবহারগুলির সাথে বিভ্রান্ত না হয় 1। (রেটিনা 1 এটি 2-বাইট সংরক্ষণের জন্য স্বয়ংক্রিয়ভাবে করবে do

r`_\G
,0

শূন্যের Nএকটি অ্যারের সাথে প্রতিস্থাপন করুন N, তবে তালিকার কোনও পরিবর্তন করবেন না।

+`

তালিকার সমস্ত উপাদানকে প্রক্রিয়া করুন।

^((,*)_)(_)*(.*,,(?<-3>\d+,)*)\d+

তালিকার পরবর্তী উপাদান এবং অ্যারের সমতুল্য অবস্থানটি সন্ধান করুন। $1= বর্তমান প্রজন্ম (দৈর্ঘ্যের হিসাবে), $2= পূর্ববর্তী প্রজন্মের থেকে কমা, $3= বর্তমান সূচি - 1, $4= প্রথম $3মাথা।

$2$4$.1,$.1

দশমিকের মধ্যে বর্তমান প্রজন্মের দুটি কপি দিয়ে বর্তমান সূচকে মাথাটি প্রতিস্থাপন করুন।


1

পাইথ , 16 বাইট

u.nXGH,=+Z1ZE*]0

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

মজার বিষয় হল, এটি প্রমাণিত হয়েছে যে আমি sতালিকাটি সমতল করতে ব্যবহার করতে পারছি না কারণ এটি সংক্ষিপ্তভাবে হ'ল +F, যা +সমস্ত উপাদান প্রক্রিয়াজাত না হওয়া পর্যন্ত তালিকার বামতম দুটি উপাদানগুলিতে কাজ করে। এর অর্থ হ'ল সর্বশেষ প্রতিস্থাপনটি কোথায় ঘটেছে তার উপর নির্ভর করে প্রথম কয়েকটি উপাদানগুলি কেবলমাত্র সংক্ষিপ্তভাবে যুক্ত করা যেতে পারে।

u.nXGH,=+Z1ZE*]0Q   Implicit: Q=input 1 (N), E=input 2 (array), Z=0
                    Trailing Q inferred
              ]0    [0]
             *  Q   Repeat Q times
u           E       Reduce E, with current value G and next value H, starting with the above:
       =+Z1           Increment Z in-place
      ,  Z Z          Pair the updated Z with itself
   XGH                In G, replace the element with index H with the above
 .n                   Flatten
                    Implicit print


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 94 89 85 বাইট

a=>b=>b.Aggregate(new int[a-(a-=a)].ToList(),(c,d)=>{c.Insert(d,c[d]=++a);return c;})

অ্যান্ড্রু বাউমারকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

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


আপনি এ ব্যবহার করে 2 বাইট সংরক্ষণ করতে পারেন। a=>b=>b.Aggregate(new int[a-(a-=a)].ToList(),(c,d)=>{c[d]=++a;c.Insert(d,a);return c;})<
অ্যান্ড্রু বাউমার

গত 5 মিনিট, ডের্প। আপনি এটি এখানে
অ্যান্ড্রু বাউমার

@AndrewBaumher ধন্যবাদ
অজ্ঞতা প্রতিমূর্তি

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