এটা কোন ইনিং?


15

লক্ষ্য

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

Example A:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
  Them| 0| 0| 0| 0| 0| 2|  |  |  |
    Us| 0| 0| 2| 0| 0| 0|  |  |  |

Example B:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
  Them| 0| 0| 0| 0| 0| 2|  |  |  |
    Us| 0| 0| 2| 0| 0| 1|  |  |  |

Example C:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
  Them| 0| 0| 0| 0| 0| 2|  |  |  |
    Us| 0| 0| 2| 0| 0|  |  |  |  |

#Them is the Away Team, Us is the Home Team (who are the guys you root for)
  • উদাহরণ এ: আমরা জানি আমরা the তম শীর্ষে রয়েছি কারণ আমাদের the তম নীচে রেকর্ড করা আছে এবং সপ্তমীর শীর্ষটি ফাঁকা রয়েছে।
  • উদাহরণ বি: এটি হয় 6th ষ্ঠের নীচে বা the তম শীর্ষে থাকতে পারে।
  • সি সি: এটি হয় 6th ম এর শীর্ষ বা নীচে হতে পারে।

আপনার কাজটি কোন ইনিংস (গুলি) হতে পারে তা ফিরিয়ে দেওয়া।

ইনপুট

অ-নেতিবাচক পূর্ণসংখ্যার দুটি তালিকা। হোম টিমের তুলনায় অ্যাওয়ে দলের তালিকা একই আকার বা একটি উপাদান বৃহত্তর হওয়ার সাথে তালিকাগুলি দমে যাবে। আপনি কোনও ক্রমে স্কোর নিতে পারেন তবে আপনি যদি ডিফল্টটি ব্যবহার না করেন তবে আপনার উত্তরে জানিয়ে দিন। অর্থাৎ, অ্যাওয়ে টিম তারপর হোম দল (ডিফল্ট), বা হোম দল তারপরে অ্যাওয়ে দল (বিপরীত)। আপনি চাইলে এগুলি ডামি ডেটা সহ প্যাড করা যেতে পারে, আপনি যদি তা করেন তবে আপনার জবাবে লিখুন।

আউটপুট

একটি স্ট্রিং বা সমতুল্য কিছু যা ইনিং নম্বরটি চিহ্নিত করে এবং এটি শীর্ষ বা নীচে কিনা। যেমন 7B 8T, B7 T8, ['7B','8T']সব জরিমানা হয়। যদি দুটি উত্তর থাকে তবে আপনাকে উভয়ই আউটপুট করতে হবে। যদিও ফর্ম্যাটটি বেশ নমনীয়।

বিধি

  • ইনপুট সর্বদা বৈধ থাকবে
  • গেমগুলি অনির্দিষ্টকালের অতিরিক্ত ইনিংসে যেতে পারে। আপনার প্রোগ্রামটি 255 ইনিংস পর্যন্ত সমর্থন করতে সক্ষম হওয়া উচিত।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ
  • এটি তাই সংক্ষিপ্ততম কোডের জয়

পরীক্ষার কেস

#Input:
[[], 
 []] 
#Output: 1T

#Input:
[[0], 
 []] 
#Output: 1B

#Input:
[[0,0,0,1], 
 [0,0,0,0]] 
#Output: 5T

#Input:
[[0,0,0,1], 
 [0,0,0,1]] 
#Output: 4B, 5T

#Input:
[[0,0,0,1,0,0,1,0,0,1],
 [0,0,0,0,1,0,0,1,0,1]] 
#Output: 10B, 11T

#Input:
[[0,0,0,1], 
 [0,0,0]] 
#Output: 4T, 4B

#Input:
[[0,0,0,0], 
 [0,0,0]] 
#Output: 4B

আমরা কি দুটি তালিকা বিপরীত ক্রমে নিতে পারি? অর্থাৎ নীচে তাহলে শীর্ষ?
জো কিং

@ জোকিং শিওর, যতক্ষণ না এটি উল্লেখ করা হয়েছে এবং উত্তর এখনও সঠিকভাবে মেলে।
ভেস্কাহ

ইতিবাচক / নেতিবাচক পূর্ণসংখ্যা ফেরতের মান গ্রহণযোগ্য আউটপুট?

@ রোজেম এটি কিছুটা চাপ দিচ্ছে তবে আপনার লেখার বিষয়টি পড়ছেন, ঠিক আছে। আমি বলেছিলাম আউটপুট বেশ নমনীয়।
ভেস্কাহ

উত্তর:


4

সি (জিসিসি) , 50 বাইট

ইন্টারলিভড লিস্টে (যেমন {them#1, us#1, them#2,...}) পয়েন্টার হিসাবে ইনপুট নেয় ।

পরিবর্তনের মাধ্যমে একটি বিকল্প এবং অন্যটি ফেরত মানের মাধ্যমে প্রদান করে।

নেতিবাচক মানগুলি ইনিংসের নীচে এবং ইতিবাচক মানগুলি ইনিংসের শীর্ষকে নির্দেশ করে। শূন্য "খালি"। আউটপুটের পরম মান হ'ল ইনিংয়ের সংখ্যা। সুতরাং, -4,5সম্ভাবনাগুলি চতুর্থের পঞ্চম এবং নীচে 1,0শীর্ষে থাকার নির্দেশ করে এবং একমাত্র সম্ভাবনাটিকে প্রথমটির শীর্ষে থাকার ইঙ্গিত দেয়।

এক বা দুটি সম্ভাব্য ইনিংস রয়েছে কিনা তা নির্ধারণ করতে ম্যাক্রোর রিটার্ন মানটি ব্যবহার করা যেতে পারে; 0অন্য কোনও ইনিং না থাকলে ফেরতের মান value অন্যথায় এটি ইনিংসের সংখ্যা।

উত্স কোডের জিরো বাইট। প্রিপ্রোসেসর পতাকা হিসাবে নিম্নলিখিতটি ব্যবহার করুন:

-Df(o,n,l)=({o=n%2?~n/2:n/2+1;l[n-1]?-o-~n%2:0;})

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

Degolf

-Df(o,n,l)=({
// Define a function-like macro f(o,n,l)
// o is the output variable, n is the size of the list, 
// l is a pointer to the first element of the list.
o=n%2?~n/2:n/2+1;
// If there's an odd number of elements, first possible inning is -(n+1)/2. 
// Else, it is (n/2)+1.
l[n-1]?-o-~n%2:0})
// If the score from the last inning is non-zero, the other possible inning
// needs to be determined; flip the sign of first output value then deduct 
// 1 from it if the number of elements is even.

এছাড়াও, যদি আমি তালিকাটি বিপরীত ক্রমে (প্রথম থেকে শেষের প্রথমটি), বা পয়েন্টারকে অ্যারের শেষ উপাদানটির দিকে নির্দেশ করতে পারি তবে এটি অতিরিক্ত 4 বাইট গল্ফ করা যেতে পারে। এটির জন্য যান নি, যেমন মনে হয় অনেক বেশি প্রতারণা।

আপনার মত ইনপুট নেওয়া ঠিক থাকলে @ ভেস্কাহর কাছ থেকে শুনতে ভাল লাগবে, কারণ এটি আসল অনুমানের থেকে একেবারেই আলাদা (এবং দরকারী) বলে মনে হচ্ছে।
বিএলটি

2
@ বিএলটি কনভেনশন অনুসারে, ইন্টারলিভিংয়ে সি-র তালিকা কীভাবে করা হয়; একাধিক ডেরেফারেন্সিং সংস্থানসমূহের উপর খুব কর দিচ্ছে। অন্য বিকল্পগুলির একের পর এক তালিকা থাকবে তবে এটি নতুন উপাদানগুলিতে যুক্ত করা খুব অবৈধ হবে।

3

পার্ল 6 , 52 48 45 বাইট

-৩ বাইটস নেলহোনাফ থেকে কিছু পুনর্গঠন করার জন্য ধন্যবাদ!

->\a,\b{(+a,a==b if (b,a)[a>b].tail;b+1,a>b)}

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

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

ব্যাখ্যা:

       {                                    }  # Anonymous code block
->\a,\b   # That takes input lists a and b
        (                                  )   # Return a list of
                                    b+1,a>b    # A list of 
                                               #  The length of the second list plus 1
                                               #  And top/bottom
         +a,a==b     # And the length of the first list
                     # And the other of top/bottom
                 if  # Only if:
                    (b,a)[a>b]      # The current of top/bottom's
                              .tail # Last element exists and is not 0

3

আর , 103 96 বাইট

function(a,b,l=sum(a|1),k=sum(b|1))I(l,I(l-k,I(a[l],c(l,-l),-l),I(b[l],c(-l,l+1),l+1)),1)
I=`if`

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

@ ডিগইমাল সবকটি 7 বাইট সংরক্ষণ করেছে!

ইনপুট হিসাবে দুটি তালিকা ভেক্টর নেয় এবং সম্ভাব্য ইনিংসের প্রতিনিধিত্বকারী এক বা দুটি পূর্ণসংখ্যা বের করে। ধনাত্মক পূর্ণসংখ্যাগুলি ইনিংসের শীর্ষ এবং নেতিবাচক পূর্ণসংখ্যাগুলি ইনিংসের নীচে।

আর-তে, ধনাত্মক পূর্ণসংখ্যাগুলি সত্য, সুতরাং আমি প্রথম তর্ক হিসাবে দৈর্ঘ্যের পার্থক্যটি ব্যবহার করতে পারি if()


আপনি আপনার কোডটি ব্যবহার করার কারণে প্রতিস্থাপন [[হিসাবে সম্ভবত আপনার ভাগ্য ভাল হবে । if[
জিউসেপ

@Giuseppe আমি এটা চেষ্টা <এবং ^। আমি মনে করি [যে উদাহরণটি আমার মনে আছে সেটিতে তিনিই ব্যবহার করেছিলেন।
বিএলটি

আপনি অন্য নামটিও দিতে পারেন 'if'(এবং মুছে ফেলুন {}এবং f=বাইরে সরে যান ): 96 বাইট
digEmAll


2

জেলি , 11 বাইট

ZẎṖṠṪ$СẈd2

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

প্রথম উপাদান: কলামের 0 ভিত্তিক সূচক।
দ্বিতীয় উপাদান: 0শীর্ষের 1জন্য, নীচে জন্য।

আউটপুট উপরে উল্লিখিত হিসাবে এক বা দুটি জোড়ার একটি তালিকা (এটি আরও ভাল দেখানোর জন্য প্রস্তাবিত)। আউটপুট ইনিংসগুলি বিপরীত ক্রমে রয়েছে।


2

পাইথন 2 , 135 129 126 125 123 119 বাইট

a,b=input()
c=len(a)
e,f=`c+1`+"T",`c`+"B"
print((f+e,e)[b[-1]<1],(`c`+"T"+f,f)[a[-1]<1])[len(b)<c]if b else"1"+"TB"[c]

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

@Ovs ধন্যবাদ দিয়ে -1

-4 @ovs কে আবার ধন্যবাদ


if d else"11BT"[c<1::2]-3
ovs

if dআমি দেখতে পাচ্ছি (এটি মিস করা উচিত নয়!) else"11BT"[c<1::2]তবে আমি যদি কিছু মিস না করি তবে আমার জন্য কোনও সংক্ষিপ্ত আকার বের করে না।
এলপেড্রো

আপনার যে if dকোনওভাবেই অনুপ্রাণিত হয়ে অন্য উপায় খুঁজে পেয়েছেন বলে @ অজানা কোনও উদ্বেগ নেই ।
এলপেড্রো

পরিবর্তে if dআপনি এটি করতে পারেন if b, তারপরে আপনাকে len(b)ভেরিয়েবলে সঞ্চয় করার দরকার নেই ।
ovs

@ovs আমি যে দিকে তাকিয়ে বরং প্রয়োজন dজন্য [d<c]। যে রাস্তা দেখতে পারেন না। কোন ধারনা?
এলপেড্রো

1

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

a,b=input()
exec"a,b=[0]+b,a;print[len(b)][a[-1]<len(a+b)%2:];"*2

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

দুটি লাইন মুদ্রণ করে, প্রথমে নীচের দিকের ইননিং সম্ভাবনা এবং তারপরে শীর্ষস্থানীয় একক তালিকা হিসাবে। উভয় একটির পক্ষে সম্ভব না হলে, তালিকাটি খালি empty


1

পরিষ্কার , 84 75 বাইট

import StdEnv
$ =length
?v|last[0:v]>0= $v=0
@a b| $b< $a=(?a,$a)=($a+1,?b)

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

ফাংশন @ :: [Int] [Int] -> (Int, Int)এবং কিছু সহায়ককে সংজ্ঞায়িত করে ।
ফর্মটিতে আউটপুট দেয় (Top, Bottom)যেখানে শূন্য একটি নালার সম্ভাবনা প্রকাশ করে।

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