এটি কি বৈধ পেনাল্টি শ্যুট আউট উপসর্গ?


14

ইন সমিতি ফুটবল (এছাড়াও ফুটবল নামে পরিচিত), একটি পেনাল্টি শুট-আউট দ্বিতীয় টাইব্রেকারে পরিমাপ করে একটি ম্যাচে টাই মধ্যে শেষ হতে পারে না ব্যবহার করা যেতে পারে, অতিরিক্ত সময় (অর্থাত সমিতি ফুটবল ওভারটাইম) পরে।

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

প্রতিটি দলে 5 টি জরিমানা শুরুতে পাওয়া যায় এবং পেনাল্টি স্কোর 0-0 হয়। যদি, যে কোনও মুহুর্তে, একটি দলের অবশিষ্ট পেনাল্টিগুলি বর্তমানে বিজয়ী দল পরিবর্তন করার পক্ষে যথেষ্ট না হয়, তবে শ্যুট আউট থামবে।

যদি বাকী জরিমানা না থাকে তবে উভয় দলের পয়েন্ট সমান হলে উভয় দলকেই অতিরিক্ত জরিমানা দেওয়া হয়। পয়েন্ট সমান না হওয়া পর্যন্ত এটি পুনরাবৃত্তি হবে।

শ্যুট আউট থামার পরে, বৃহত্তম পেনাল্টি স্কোর সহ দলটি খেলায় জয়লাভ করে।

চ্যালেঞ্জ

আপনার চ্যালেঞ্জ, দুটি তালিকাগুলি দেওয়া হয়েছে Aএবং Bযথাক্রমে কোন জরিমানা শট আউটকে প্রতিনিধিত্ব করে কিনা তা নির্ধারণ করার জন্য, টি এবং বি বি যথাক্রমে কোন পেনাল্টি দলকে প্রতিনিধিত্ব করে তা উপস্থাপন করে। বিজয়ী দল নির্ধারণ করা যায় কিনা তা বিবেচনা না করে ইনপুট দ্বারা প্রতিনিধিত্ব করা রাজ্যে পৌঁছানো সম্ভব হলে শ্যুট আউট বৈধ। নোট করুন যে আপনাকে সম্ভবত উভয় পরিস্থিতিতে পরীক্ষা করতে হবে (টিম এ শুরু, টিম বি শুরু), যেহেতু, ইনপুটটিতে বর্ণিত রাষ্ট্র যদি কমপক্ষে একটি দৃশ্যের জন্য পৌঁছতে পারে তবে ইনপুটটি বৈধ is তালিকাগুলির দৈর্ঘ্য পৃথক হলে লম্বা দলের প্রতিনিধিত্বকারী দলটি প্রথমে শুরু হয় (এতে অন্যটির তুলনায় আরও একটি উপাদান থাকতে পারে এবং সংক্ষিপ্ত তালিকার দলটি আরম্ভ করতে পারে না, তারপরেও দীর্ঘ তালিকার দলটি দুটি পেনাল্টি ছুঁড়ে মারবে একটি সারিতে, সংক্ষিপ্ত তালিকাটি অকাল হ্রাস পাবে)।

বিস্তারিত উদাহরণ

আপনি নীচের বিধি বিধানগুলি এড়িয়ে যেতে পারেন , এগুলি কেবলমাত্র চ্যালেঞ্জ সমাধানে সহায়তা করার জন্য।

ধরুন আপনি এই শ্যুট আউটটিকে ইনপুট হিসাবে পেয়েছেন, -যার অর্থ কোনও গোল করা হয়নি এবং Xঅর্থ একটি গোল করা হয়েছিল (এটি অবৈধ):

Team A: - X X X X
Team B: - - - - X

Assuming team A starts first:

Team A: - (0 - 0) (max possible score 4 - 5)
Team B: - (0 - 0) (max possible score 4 - 4)
Team A: X (1 - 0) (max possible score 4 - 4)
Team B: - (1 - 0) (max possible score 4 - 3)
Team A: X (2 - 0) (max possible score 4 - 3)
Team B: - (2 - 0) (max possible score 4 - 2)
Team A: X (3 - 0) (max possible score 4 - 2)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team A is first.

Assuming team B starts first:

Team B: - (0 - 0) (max possible score 5 - 4)
Team A: - (0 - 0) (max possible score 4 - 4)
Team B: - (0 - 0) (max possible score 4 - 3)
Team A: X (1 - 0) (max possible score 4 - 3)
Team B: - (1 - 0) (max possible score 4 - 2)
Team A: X (2 - 0) (max possible score 4 - 2)
Team B: - (2 - 0) (max possible score 4 - 1)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team B stars first.

The input is invalid no matter which team starts first, so it's considered
invalid.

বিপরীতে, এখানে একটি বৈধ উদাহরণ:

Team A: X X X
Team B: - - -

Assuming team A starts first:

Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: - (2 - 0) (max possible score 5 - 3)
Team A: X (3 - 0) (max possible score 5 - 3)
Team B: - (3 - 0) (max possible score 5 - 2)
It can be determined that team A wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.

আরেকটি উদাহরণ, এবার অতিরিক্ত জরিমানা সহ:

Team A: X - X - - - X -
Team B: - X X - - - X X

Assuming team A starts first:

Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: - (1 - 0) (max possible score 4 - 4)
Team B: X (1 - 1) (max possible score 4 - 4)
Team A: X (2 - 1) (max possible score 4 - 4)
Team B: X (2 - 2) (max possible score 4 - 4)
Team A: - (2 - 2) (max possible score 3 - 4)
Team B: - (2 - 2) (max possible score 3 - 3)
Team A: - (2 - 2) (max possible score 2 - 3)
Team B: - (2 - 2) (max possible score 2 - 2)
First 5 penalties result in a tie, so we move on to extra penalties.
Team A: -, Team B: - (2 - 2)
Team A: X, Team B: X (3 - 3)
Team A: -, Team B: X (3 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.

এখানে একটি বৈধ ইনপুট রয়েছে যেখানে বিজয়ী নির্ধারণ করা খুব তাড়াতাড়ি:

Team A: X X - -
Team B: - X - X

Assuming team A starts first:

Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: X (2 - 1) (max possible score 5 - 4)
Team A: - (2 - 1) (max possible score 4 - 4)
Team B: - (2 - 1) (max possible score 4 - 3)
Team A: - (2 - 1) (max possible score 3 - 3)
Team B: X (2 - 2) (max possible score 3 - 3)
The input has ended before the winner can be determined, so it's valid if team A
starts first. Therefore, the input is valid.

অবশেষে, এখানে একটি ইনপুট রয়েছে যেখানে তালিকার দৈর্ঘ্য পৃথক:

Team A: - - -
Team B: X X - X

Since team B shot more penalties, it starts first:

Team B: X (0 - 1) (max possible score 5 - 5)
Team A: - (0 - 1) (max possible score 4 - 5)
Team B: X (0 - 2) (max possible score 4 - 5)
Team A: - (0 - 2) (max possible score 3 - 5)
Team B: - (0 - 2) (max possible score 3 - 4)
Team A: - (0 - 2) (max possible score 2 - 4)
Team B: X (0 - 3) (max possible score 2 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid.

বিধি

  • যে দলটি প্রথমে গুলি চালায় তারা এ বা বি হতে পারে, আপনি ধরে নিতে পারবেন না যে কোনও একটি সর্বদা প্রথমে শুটিং করবে।
  • তালিকাগুলির হয় একই দৈর্ঘ্য হবে, বা তাদের দৈর্ঘ্য এক একর দ্বারা পৃথক হবে।
  • স্কোর / আনস্কার্ড জরিমানা উপস্থাপনের জন্য আপনি যে কোনও দুটি স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ মান চয়ন করতে পারেন।
  • তালিকাগুলি বাইজিক বেস 2, স্ট্রিংগুলি বা আপনার ভাষার নেটিভ তালিকা ফর্ম্যাট থেকে রূপান্তরিত পূর্ণসংখ্যার হিসাবেও উপস্থাপিত হতে পারে । (ডিজিট তাই একটি bijective বেস 2 বিন্যাস বেছে নেওয়া হয়, তাহলে ইনপুট নিয়ম সংখ্যার ক্ষেত্রে প্রযোজ্য bijective বেস 2 রূপান্তরিত 1এবং 2পারেন রান করতে গড় এবং আনস্কোর্ড বা আনস্কোর্ড এবং রান যথাক্রমে)। নিয়মিত বাইনারি অনুমোদিত নয় , কারণ কেউ বাইনারি উপস্থাপনায় অগ্রণী জিরোগুলির উপস্থিতি নির্ধারণ করতে পারে না।
  • এটি , তাই সংক্ষিপ্ততম সমাধানটি জয়লাভ করে। তবে দয়া করে আপনার ভাষা "বিশেষায়িত ব্যক্তিকে পরাজিত" করতে পারে না বলে মনে হলেও উত্তর দেওয়া থেকে নিরুৎসাহিত হন না।

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

এই পরীক্ষার ক্ষেত্রে, একটি 0কোনও গোলকে 1উপস্থাপন করবে এবং একটি গোলকে উপস্থাপন করবে।

বিন্যাস:

[Team A], [Team B]

বৈধ ইনপুট:

[], []
[0], [0]
[0], [1]
[1], [1]
[0], []
[1, 1, 1, 1], [0, 0, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0, 1]
[1, 1, 1], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

অবৈধ ইনপুট:

[0, 1, 1, 1, 1], [0, 1, 1, 0, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1]
[1, 1, 1, 0], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
[1, 0, 1, 0, 1], [0, 1, 0, 1, 0, 1]
[0, 0, 0, 0, 1], [0, 1, 1, 1, 0]

আমি কি অবৈধ হিসাবে 0 বা মিথ্যা প্রত্যাবর্তন করতে পারি এবং বৈধের জন্য সত্য ফিরে আসতে পারি?
অজ্ঞতার

@ এম্বোডিমেন্টফ অজানা "স্কোর / আনস্কার্ড জরিমানার উপস্থাপনের জন্য আপনি যে কোনও দুটি স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ মান চয়ন করতে পারেন" " সঠিক মানগুলি কোনও ব্যাপার নয়, তবে কেবল দুটি মান থাকতে হবে।
এরিক আউটগল্ফার

আমি ধরে নিই [[0,0],[1,1]](বা যে কোনও টেস্টের ক্ষেত্রে যেখানে দুটি অভ্যন্তরের তালিকার মধ্যে দুটিতে 2 টি আইটেম রয়েছে) সত্য সত্য, যেহেতু গেমটি এখনও চলছে (ঠিক যেমন পরীক্ষার কেসগুলি চলছে [[0],[1]]বা [[0],[]]এখনও চলছে)?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন হ্যাঁ, কারণ কে জিতবে তা নির্ধারণ করতে পারে না, ফলাফল হতে পারে ৩-২। ;-)
এরিক দ্য আউটগল্ফার

উত্তর:


3

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

(a)(b)1201

a=>b=>!(g=(a,b,P=Q=i=5)=>(p=a[5-i])|(q=b[5-i])&&(--i<0?P-Q:P-Q>i|Q+q-P-p>i&p<2)|g(a,b,P+p,Q+=q))(a,b)|!g(b,a)

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

মন্তব্য

a => b =>                   // given a[] and b[]
  !(g = (                   // g is a recursive function taking:
      a,                    //   the results a[] of the team that plays first
      b,                    //   the results b[] of the team that plays second
      P =                   //   the cumulated goals P of the 1st team (relative value)
      Q =                   //   the cumulated goals Q of the 2nd team (relative value)
      i = 5                 //   a counter i
    ) =>                    // and returning a truthy value if something goes wrong
      (p = a[5 - i]) |      // if either the first team
      (q = b[5 - i]) && (   // or the second team is playing this round:
        --i < 0 ?           //   decrement i; if we've played more than 5 penalties:
          P - Q             //     do we already have a goal difference?
        :                   //   else:
          P - Q > i |       //     was the 1st team already guaranteed to win?
          Q + q - P - p > i //     or is the 2nd team now guaranteed to win
          & p < 2           //     while the 1st team failed its last attempt?
      ) |                   //
      g(                    //   do a recursive call:
        a, b,               //     pass a[] and b[] unchanged
        P + p,              //     update P
        Q += q              //     update Q
      )                     //   end of recursive call
  )(a, b) |                 // try g(a, b)
  !g(b, a)                  // try g(b, a); return 1 if at least one of them is falsy

2

পাইথন 2 , 176 169 171 169 বাইট

-2 বাইটস @ কেভিন ক্রুইজসেনকে ধন্যবাদ

exec"h=lambda a,b,m:m-%s/2>abs(sum(a)-sum(b));f=lambda a,b:a[5#==b[5#and h(a[:5],b[:5],6)if %s>10else h(a,b,7)and h(a[#,b[#,6)".replace("#",":~-%s/2]")%(("len(a+b)",)*6)

এটি অনলাইন চেষ্টা করুন! (উপরে বর্ণিত কিছু অতিরিক্ত পরীক্ষার মামলা সহ।)

এমন একটি ফাংশন তৈরি করে fযা দুটি আর্গুমেন্ট গ্রহণ করে (স্কোর / আনস্কার্ড জরিমানার দুটি তালিকা) এবং Trueস্কোরগুলি সম্ভবত বৈধ এবং Falseঅন্যথায় যদি ফিরে আসে ।

আংশিক ব্যাখ্যা:

প্রথমত, execনির্মাণটি কেবলমাত্র len(a+b)একবারে আরও একবারে অভিব্যক্তি পুনরাবৃত্তি না করে কয়েকটি বাইট সংরক্ষণের এক উপায় । উপরের কোডের টুকরোটি নীচের সমতুল্য:

আপডেট: নতুন এবং উন্নত উত্তরটি execকৌতুকপূর্ণ বা ছাড়াই একই বাইট গণনা , তাই সরলতার স্বার্থে আমি এটিকে সরিয়েছি।

আপডেট 2: নতুন বাগফিক্সড ভার্সনে বিকল্প এবং এর মাধ্যমে আরও স্ট্রিং সংক্ষেপণ অন্তর্ভুক্ত রয়েছে exec। হ্যাঁ, আমি একই স্ট্রিংয়ে %ফর্ম্যাট এবং একটি ব্যবহার করি .replace। উপরের কোডটি সমান:

h=lambda a,b,m:m-len(a+b)/2>abs(sum(a)-sum(b))
f=lambda a,b:a[5:(len(a+b)-1)/2]==b[5:~-len(a+b)/2]and h(a[:5],b[:5],6)if len(a+b)>10else h(a,b,7)and h(a[:(~-len(a+b)/2],b[:(len(a+b)-1)/2],6)

<=5not len(a+b)>10hm

যাইহোক, স্কোরগুলির একটি বৈধ সেট হতে, একটি ইনপুট কঠোরভাবে ধারাবাহিক হওয়া উচিত নয়, তবে এটি শেষ পর্বের আগে অবশ্যই চালিয়ে যাওয়া উচিত ছিল। এই শর্তটি এটি বলার সমতুল্য যে এটি অবশ্যই ১) উভয় পক্ষের একই সংখ্যক বার লাথি মেরে শেষ সময় অবিচ্ছিন্ন ছিল এবং ২) বর্তমানে ধারাবাহিক হওয়ার দুই অর্ধ-পয়েন্টের মধ্যে থাকতে হবে - যেখানে চূড়ান্ত যুক্তিটি এখানে আসতে হবে h: h(a[:~-len(a+b)/2],b[:~-len(a+b)/2],6)পরীক্ষার শর্ত ১) এবং h(a,b,7)( 7মার্জিনে অতিরিক্ত দুটি অনুমোদিত আধা-পয়েন্ট উপস্থাপন করে) পরীক্ষার শর্ত ২)।

প্রতিটি দল সর্বাধিক পাঁচবার লাথি মেরেছে এমন মামলা নিষ্পত্তি হয়েছে। (অন্যান্য মামলার জন্য ব্যাখ্যা অব্যাহত রাখার জন্য।)

নিম্ন-স্তরের গল্ফিংয়ের ক্ষেত্রে, আমি সন্দেহ করি যে শেভ করার অনেক কিছুই আছে তবে অ্যালগোরিদমিকভাবে এটি সম্ভবত আরও কিছুটা সহজভাবে করা যেতে পারে।


1
আপনি 2 বাইট সংরক্ষণ করতে গল্ফ (%s-1)/2করতে পারেন ~-%s/2
কেভিন ক্রুইজসেন

ধন্যবাদ কেভিন ক্রুজসেন!
আইডান এফ পিয়ার্স

1

জেলি , 62 54 49 বাইট

ṫ⁵Ṗm2¬Ạ
N§ỤḢƊ¦LÞṚZFĵ12R:2U_ṁḣ⁵ṫ-N<Ø.ẠaÇoL<3
ṚÇoÇ

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

ṫ⁵Ṗm2¬Ạ # helper function to determine whether
        # even indices at or beyond 10 are zero
ṫ⁵      # tail - take every item from 10
  Ṗ     # remove last item
   m2   # take every second item
     ¬  # logical not, will return 1 for an empty list
      Ạ # all
# function to create cumulative score
# difference and check values
N§ỤḢƊ¦    # negate scores for team with lower score
          # (or one of them if both same score)
  LÞṚ     # sort by length, longest first
  ZF      # transpose lists and flatten
  Ä       # cumulative sum
  µ       # this cumulative score difference (CSD) 
          # now becomes left value
  12R:2U_ # subtract cumulative score difference from
          # 6,5,5,4,4,3,3,2,2,1
  ṁḣ⁵     # shorten to be no longer than 10 items
          # and no longer than CSD
  ṫ-N<Ø.Ạ # check last two values are greater than 0,-1
  aÇ      # check that helper function also TRUE
  oL<3    # handle very short scores
# main link that calls the above for scores in either order
ṚÇoÇ

নোট করুন পাদদেশে পাদলেখের কোডটি একাধিক পরীক্ষার কেসগুলি হ্যান্ডেল করার জন্য এবং ইনপুটগুলির বিরুদ্ধে আউটপুটগুলি মুদ্রণের জন্য।

8 বাইট বন্ধ গল্ফ করার জন্য @ এরিকথ আউটগলফারকে ধন্যবাদ


ভাল চেষ্টা! এটি খুব তুচ্ছ চ্যালেঞ্জ নয়। কিছু গল্ফ।
এরিক আউটগল্ফার

0

পার্ল 6 , 123 বাইট

{all map {@^b>@^a||[R,](map {abs(($+=$_)-++$ %2/2)>(5-++$ /2 max++$ %2)},flat roundrobin @a,-<<@b).skip.any},@^a,@^b,@b,@a}

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

বৈধ শ্যুট আউটগুলির জন্য মিথ্যা প্রত্যাবর্তন করে, অবৈধগুলির জন্য সত্য y

ব্যাখ্যা

# Check whether block returns true (invalid shoot-out) for arguments (a, b) and (b, a)
{all map {...},@^a,@^b,@b,@a}
# Return true (invalid) if array b is longer than a
@^b>@^a||
# Return true (invalid) if any except the last value is true (shoot-out stopped)
[R,](...).skip.any
# Map values from a and negated b, interleaved
map {...},flat roundrobin @a,-<<@b
# Shoot out stopped?
abs(($+=$_)-++$ %2/2)>(5-++$ /2 max++$ %2)
    #     # Accumulator
           #        # Subtract 0.5 for first team
                      #                  # Sequence 4.5 4 3.5 3 2.5 2 1.5 1 1 0 1 0 1 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.