9 নিনজা এর মৃত্যু


12

চ্যাটে এই কথোপকথন দ্বারা অনুপ্রাণিত ।

এই চ্যালেঞ্জের মধ্যে আপনার লক্ষ্য একটি নিনজা অনুকরণ এবং তিনি মারা গেছে কত গণনা।

চশমা

আপনি নিনজা 9 মৃত্যুর বাকি দিয়ে শুরু হয়। তিনি একটি ইনপুট হিসাবে একটি অবিচ্ছেদ্য সূচনা স্বাস্থ্য পান।

তারপরে, তিনি ইনপুট হিসাবে তার জীবনের ঘটনাগুলির একটি তালিকা নেন যা তার স্বাস্থ্যের পরিবর্তন করে। এগুলি নেতিবাচক, ধনাত্মক বা শূন্য পূর্ণসংখ্যার হতে পারে।

যে কোনও মুহুর্তে, যদি তার স্বাস্থ্য শূন্যের বা তার নীচে পৌঁছে যায়, তবে তিনি একটি জীবন হারান এবং তার স্বাস্থ্য শুরু করে স্বাস্থ্যের দিকে ফিরে যায়।

আপনার কর্মসূচিতে তার মৃত্যুর সংখ্যাটি রিপোর্ট করা উচিত। যদি তার শূন্য বা তার চেয়ে কম বামে থাকে তবে আপনার deadপরিবর্তে আউটপুট নেওয়া উচিত ।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড !

পরীক্ষার কেস

3, [] -> 9
100, [-20, 5, -50, 15, -30, -30, 10] -> 8
10, [-10, -10, -10, -10] -> 5
10, [-10, -10, -10, -10, -10, -10, -10, -10, -10] -> dead
0, [] -> dead
0, [1] -> dead
100, [10, -100] -> 9

1
হ্যাঁ!!! আমার চ্যাট পোস্টটি লিঙ্কযুক্ত !!! : পি
আর

8
দেখে মনে হচ্ছে আমি সমস্যায় আছি ...
নিনজা বিয়ারমোনকি

সুতরাং ইভেন্টগুলির ক্রম "যদি <= 0 হয়, একটি সংখ্যা পড়ুন, মোটে যোগ করুন, পুনরাবৃত্তি করুন"?
lirtosiast

@ থমাসকওয়া হ্যাঁ, তবে মারা যাওয়া একাধিকবার ঘটতে পারে
মালটিসেন

1
নিঞ্জারা কি সময়ের মালিকদের মতো পুনরুত্থিত করতে পারে? অনুগ্রহ?
আশ্বিন গুপ্ত

উত্তর:


8

জেলি , 30 28 26 বাইট

»0o⁴+
;@ñ\<1S_9«0N“dead”×?

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

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

;@ñ\<1S_9«0N“dead”×?  Main link. Input: e (events), h (initial health)

;@                    Prepend h to e.
  ñ\                  Reduce the resulting array by the next, dyadic link.
                      This returns the array of intermediate results.
    <1                Check each intermediate value for non-positivity.
      S               Sum. This calculates the number of event deaths.
       _9             Subtract 9 from the result.
         «0           Take the minimum of the result and 0. This yields 0 if no
                      lives are left, the negated amount of lives otherwise.
                   ?  Conditional:
                  ×     If the product of the minimum and h is non-zero:
           N              Return the negated minimum.
            “dead”      Else, return "dead".


»0o⁴+                 Dyadic helper link. Arguments: x, y

»0                    Take the maximum of x and 0.
                      This yields x if x > 0 and 0 otherwise.
  o⁴                  Take the logical OR of the result and the second input (h).
    +                 Take the sum of the result and y.

¯_ (ツ) _ / ¯ ডেনিস
জিতল

7

জাপট, 40 39 32 বাইট

U¬©(9-Vf@T=X+(T¬²ªU)<1} l)¬²ª`Ü%

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

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

গল্ফ এই শেষ রাতে চেষ্টা করার সময় (একটি কম্পিউটার থেকে দূরে, কম), আমি একটি আকর্ষণীয় প্রতিস্থাপন জুড়ে জন্য দৌড়ে >0: ¬। সংখ্যায়, এটি বর্গমূল গ্রহণ করে যা NaNনেতিবাচক সংখ্যার জন্য প্রত্যাবর্তন করে । NaNমিথ্যা, তাই এটি ঠিক একইভাবে সত্য / মিথ্যা হিসাবে প্রত্যাবর্তন করে >0

এই কৌতুক একটু আরো সম্প্রসারণ, আমরা iff এটা ইউ টি পুনরায় সেট করতে পারেন >=0মাত্র পাঁচ বাইটে: T¬²ªU। কিভাবে কাজ করে? এর কটাক্ষপাত করা যাক:

T    ¬      ²       ªU
     sqrt   square  if falsy, set to U (JS's || operator)
4    2      4       4
7   ~2.646  7       7
0    0      0       U
-4   NaN    NaN     U
-7   NaN    NaN     U

আপনি দেখতে পাচ্ছেন, নেতিবাচক হলে T¬²রিটার্ন দেয় ; অন্যথায়, এটি ফিরে আসে । যেহেতু এবং উভয়ই মিথ্যা, তাই নিনজা স্বাস্থ্যের সাথে পুনরায় সেট করার একটি সহজ উপায় সরবরাহ করে । এই সংখ্যাটি যদি ইতিবাচক হয়, বা negative ণাত্মক হয় তবে নিনজার জীবন ছেড়ে দেওয়ার জন্যও এই কৌশলটি ব্যবহৃত হয় ।NaNTTNaN0ªU"dead"

এই সব একত্র করা:

           // Implicit: U = starting health, V = events, T = 0
U©        // If U is positive,
Vf@     }  // Filter out the items X in V that return truthily from this function:
 T=X+      //  Set T to X plus
 (T¬²ªU)   //   If T is positive, T; otherwise, U.
           //  This keeps a running total of the ninja's health, resetting upon death.
 <1        //  Return (T < 1).
9-    l)   // Take the length of the resulting array and subtract from 9.
           // This returns the number of lives the ninja has left.
¬²         // If the result is negative, set it to NaN.
ª`Ü%       // If the result of EITHER of the two parts above is falsy, return "dead".
           //  (`Ü%` is "dead" compressed.)
           // Otherwise, return the result of the middle part (lives left).
           // Implicit: output last expression

যদি ইনপুটটি অ-নেতিবাচক বা এমনকি ধনাত্মক হওয়ার নিশ্চয়তা থাকে তবে আমরা 1 বা 4 বাইটের গল্ফ করতে পারি:

U©(9-Vf@T=X+(T¬²ªU)<1} l)¬²ª`Ü%  // U is non-negative
9-Vf@T=X+(T¬²ªU)<1} l)¬²ª`Ü%     // U is positive

6

জাভাস্ক্রিপ্ট ES6, 62 60 58 বাইট

@ বুদ্ধিমানের জন্য 4 টি বাইট সংরক্ষণ করা হয়েছে

(a,b,d=9,l=a)=>b.map(i=>l=l+i<1?d--&&a:l+i,a)|d<1?"dead":d

এটি অনলাইনে ব্যবহার করে দেখুন (সমস্ত ব্রাউজার কাজ করে)

ব্যাখ্যা

(a,b,    // a = 1st input, b = 2nd input
 d=9)=>  // Lives counter

  (b.reduce((l,i)=>     // Loop through all the health changes
    l+i<1                 // If (health + health change) < 1
    ?(d--,a)              // Decrease life, reset health
    :l+i                  // Return new health
  ,a)                   // Sets starting health to `a`
  ,d<1?        // Lives is less than 1
   "dead":d);  // Output "dead" otherwise lives left

চান d--&&aকাজ, বা b.reduce(...)&&d<1?"dead":d?
ETH প্রোডাকশনগুলি

mapbeats reduceসবচেয়ে পরিস্থিতিতে: (a,b,d=9,l=a)=>b.map(i=>l=l+i<1?d--&&a:l+i)&&d<1?"dead":d57. হয়
ETHproductions

@ ইথ প্রডাকশন ধন্যবাদ, আমি মনে করি না যে রিটার্নের .reduce(...)&&কারণে কাজ করবে, এটি কার্যকর হবে না। .reduce0
ডাউনগোট

(a,b,d=9,l=a)=>b.map(i=>l=l+i<1?d--&&a:l+i,a)|d<1?"dead":dপরিবর্তে কাজ করবে ?
ইটিএইচ প্রডাকশনগুলি


2

হাস্কেল, 81 77 75 বাইট

p l i h a|l<1="dead"|i<1=p(l-1)h h a|[]<-a=show l|x:y<-a=p l(i+x)h y
p 10 0

ব্যবহারের উদাহরণ: p 10 0 100 [-20, 5, -50, 15, -30, -30, 10]->"8"


1

পাইথ, 32

 u+?>GZG&=hZQH+E0Q?&Q<Z9-9Z"dead

নোট করুন যে একটি নেতৃস্থানীয় স্থান আছে। এটি সম্ভবত সেরা পন্থা নয়, তবে এটি প্রথম জিনিসটি মনে আসল। এটি নিনজার স্বাস্থ্যের সাথে মান যুক্ত করে এবং একটি কাউন্টার বাড়িয়ে এবং যখন শূন্যের নীচে নেমে আসে তখন স্বাস্থ্য পুনরায় সেট করে এটি ইনপুটকে হ্রাস করে। শেষ পরিবর্তনটি নিঞ্জাকে হত্যা করে কিনা তা গণনা করতে আমরা তালিকার শেষে শূন্য যুক্ত করি এবং তারপরে নিনজা মারা গেছে কিনা তা পরীক্ষা করার জন্য কিছু পরীক্ষা করে দেখি। শূন্য শুরুর স্বাস্থ্য কেস হার্ড কোডড od

পরীক্ষা স্যুট


1

এমএটিএল, 32

9yi"@+t0>~?x1-y]]g*wxt0>~?x'dead'

ব্যাখ্যা

9        # push 9
y        # duplicate 2nd value to top (there is none -> get it from input first)
i        # get input and push it

স্ট্যাকটি এখন এর মতো দেখাচ্ছে (ইনপুট জন্য 100, [-20, 5, -50, 15, -30, -30, 10]):

100        9        100        [-20, 5, -50, 15, -30, -30, 10]

reload   deaths    health
value    left

অ্যারে এবং লুপটি পপ করুন

"            ]    # loop
 @+               # add to health
   t0>~?    ]     # if health is zero or less
        x1-y      # delete health counter, decrement life counter, reload health

স্বাস্থ্য যদি শূন্য হয় তবে ডেথ কাউন্টারকে শূন্যে সেট করুন। জন্য বিশেষ কেস হ্যান্ডলিং initial health = 0

g        # health to bool
*        # multiply with death counter

স্ট্যাক থেকে পুনরায় লোড মান মুছুন

wx

যদি ডেথ কাউন্টার শূন্য বা তার চেয়ে কম হয়, এটি মুছুন এবং পরিবর্তে 'মৃত' মুদ্রণ করুন।

t0>~?x'dead'

1

টিস্ক্রিপ্ট , 36 34 31 বাইট

yR#l+i<1?e─·x:l+i,x);e≥0?e:D`Ü%

আমার জাভাস্ক্রিপ্ট উত্তরের অনুরূপ। শেষ 4 টি অক্ষর হ'ল "মৃত" স্ট্রিংয়ের ক্ষয়।

টিস্ক্রিপ্টের অনলাইন ইন্টারপ্রেটার অ্যারে ইনপুট সমর্থন করে না যাতে আপনার কনসোলটি খোলার দরকার হয় এবং এটি লিখে টাইপ করে চালান:

TeaScript( `yR#l+i<1?(e─,x):l+i,x);─e>0?e:D\`Ü%` ,[
  10, [-10, -10, -10, -10]
],{},TEASCRIPT_PROPS);

ব্যাখ্যা

      // Implicit: x = 1st input, y = 2nd input
yR#   // Reduce over 2nd input
  l+i<1?  // If pending health is less then 1
  (e─,x): // then, decrease life counter, reset health
  l+i     // else, modify health
,x);  // Set starting health
─e>0? // Ninja is alive?
e:    // Output lives left
D`Ü%  // Decompress and output "dead"

1

পাইথন 2.7, 82 66 55 106 বাইট

-RikerW ধন্যবাদ -16 বাইট জন্য। :(

-১১ বাইটের জন্য @ মাল্টেসেনকে ধন্যবাদ। :(

i=input;h=[i()]*9;d=i()
if 0==h[0]:print'dead';exit()
for x in d:
 h[0]+=x
 if h[0]<=0:h=h[1:]
y=len(h)
print['dead',y][y!=0]

প্রথমে স্বাস্থ্য টাইপ করুন, তারপরে প্রবেশ করুন, তারপরে ইভেন্টগুলি তালিকা আকারে দিন।


0

সি # 207

class P{static void Main(string[]a){int h=int.Parse(a[0]),H=h,l=9,i=1;if(a.Length!=1){for(;i<a.Length;i++){H+=int.Parse(a[i]);if(H<=0){l--;H=h;}}}System.Console.Write(h==0?"dead":l<=0?"dead":l.ToString());}}

যুক্তি প্রবাহের মাধ্যমে ইনপুট নেয়। প্রথম যুক্তি হ'ল স্বাস্থ্যের পরিমাণ এবং বাকি সমস্ত ঘটনাগুলির তালিকা।

পাঠযোগ্য / নিরবচ্ছিন্ন সংস্করণ

class Program
{
    static void Main(string[]a)
    {
        int health = int.Parse(a[0]);
        int Health = health;
        int lives = 9;

        if(a.Length!=1)
        {
            for (int i = 1;i < a.Length;i++)
            {
                Health += int.Parse(a[i]);
                if (Health <= 0)
                {
                    lives--;
                    Health = health;
                }
            }
        }

        System.Console.Write(health == 0 ? "dead" : lives <= 0 ? "dead" : lives.ToString());
    }
}

উদাহরণ:

  • CSharp.exe 3 => 9

  • CSharp.exe 100 -20 5 -50 15 -30 -30 10 => 8

(Psst।) CSharp.exe উদাহরণ হিসাবে ব্যবহৃত নাম। বর্গাকার প্রথম বন্ধনী ছাড়াই আপনাকে বাস্তবে এ জাতীয় কল করতে হবে: [program_name.exe] যুক্তি।

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