থ্যাঙ্কসগিভিং তুরস্ক


10

(আশা করি এটি এখনও আপনার জন্য থ্যাঙ্কসগিভিং)

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

ইনপুট

দুটি ইনপুট হবে। প্রথমটি হবে বিভিন্ন মানুষের আসকি শিল্প art

     o
 o  \|/
\|/  |
 |   |
/ \ / \

ascii- শিল্প বিশেষ উল্লেখ

প্রতিটি ব্যক্তি 3 টি কলামের প্রস্থ গ্রহণ করে। প্রতিটি ব্যক্তি স্পেসের একক কলাম দ্বারা পৃথক করা হয়। প্রতিটি ব্যক্তির খুব উপরে একটি হয় o। এর নীচে o, অফসেট দ্বারা 1এবং -1এক্স এর মধ্যে যথাক্রমে \এবং রয়েছে /। ইনপুটটিতে oদ্বিতীয় থেকে শেষের সারি পর্যন্ত |, প্রতি ব্যক্তি এই পরিমাণ তাদের "উচ্চতা"। প্রতিটি ব্যক্তি থেকে আপনার কেবলমাত্র ডেটা বের করতে হবে তা হ'ল তাদের "উচ্চতা"।


সর্বদা কমপক্ষে একজন ব্যক্তি থাকবেন। প্রতিটি ব্যক্তির সর্বদা কমপক্ষে 2-উচ্চতা থাকে। আপনার প্রোগ্রামটি সর্বাধিক উচ্চতাটি পরিচালনা করবে কমপক্ষে of৪ এর উচ্চতা।

আপনি যদি ফাঁকা জায়গাগুলি দিয়ে ইনপুটটি একটি আয়তক্ষেত্র গঠন করতে চান তবে দয়া করে আপনার উত্তরে এটি উল্লেখ করুন।


দ্বিতীয় ইনপুটটি হ'ল টার্কি। টার্কি আসলেই টার্কি নয়, টার্কির NxMমাত্রা বেশি। যদি দ্বিতীয় ইনপুট হয় 3x2, তবে টার্কির মোট আয়তন 3 * 2 হয় has

আউটপুট

আউটপুট একটি তালিকা বা আপনার ভাষার নিকটতম বিকল্প হতে পারে (যেমন অ্যারে)। স্পেস দ্বারা পৃথক মানগুলি সহ আপনি একটি স্ট্রিংও আউটপুট করতে পারেন।

প্রতিটি ব্যক্তির মানগুলি যাতে ইনপুট ছিল সেভাবে আউটপুট হওয়া উচিত।

চ্যালেঞ্জ

আপনার লক্ষ্য টার্কির অঞ্চলটি মানুষের মধ্যে ভাগ করে নেওয়া।

উদাহরণ উদাহরণ:

ধরুন তারা যথাক্রমে উচ্চতা সহ 3এবং দুটি ব্যক্তি 6। যদি একটি টার্কি হয় 5x3। তুরস্ক মোট আয়তন যে বিতরণ করা প্রয়োজন হবে 15

এখন আপনি কিভাবে এটি সবার মাঝে বিতরণ করবেন? এখানে কীভাবে:

                    the_persons_height
TurkeyForAPerson = -------------------- * turkey_area
                    sum_of_all_heights

এর অর্থ হ'ল, উচ্চতা সম্পন্ন প্রথম ব্যক্তির পক্ষে 3তারা 3/9*15টার্কি পাবে, বা 5দ্বিতীয় ব্যক্তি যার উচ্চতা রয়েছে 6তারা পাবে 6/9*15বা 10টার্কি পাবে।

আউটপুট

আউটপুট অবশ্যই সম্পূর্ণরূপে অঙ্কগুলি নিয়ে গঠিত এবং .যদি না আপনি বোনাসের জন্য বেছে নেন। সেক্ষেত্রে এটিতে কেবল অঙ্ক, স্পেস ( ) এবং একটি স্ল্যাশ ( /) থাকতে পারে।

পুরো উদাহরণ

ইনপুট:

6x5
     o 
     | 
 o  \|/
\|/  | 
 |   | 
 |   | 
/ \ / \

আউটপুট:

11.25 18.75

বোনাসেস

-20% বোনাস: আপনি আউটপুট ভগ্নাংশ (সরলীকৃত করা আবশ্যক), এটা আছে না ব্যাপার কিনা এটা একটি মিশ্র বা অপ্রকৃত ভগ্নাংশ হয়।

স্কোরিং

এটি তাই বাইট জেতে সংক্ষিপ্ততম কোড!


আমার কিছু অনুপস্থিত হতে পারে তবে কীভাবে প্রতিটি ব্যক্তির আউটপুটটিকে অন্যের থেকে আলাদা করব? অর্থাৎ কোন সঠিক বিন্যাসে আউটপুট থাকা উচিত?
ETH প্রোডাকশন

@ ইথ প্রডাকশনগুলি আপনি কোনও তালিকায় আউটপুট দিতে পারেন, বা ফাঁক দিয়ে আলাদা করেছেন, আমি বিশ্বাস করতে পারি না যে আমি এটি উল্লেখ করতে ভুলে গিয়েছি।
ডাউনগোট

টার্কি মাত্রা উপরের একটি উচ্চতর সীমা আছে? অর্থাত্ প্রতিটি মাত্রা সবসময়ই একটি ডিজিট হয়, বা এটি 11x10 বা এর চেয়েও বড় হতে পারে?
টম কার্পেন্টার

@ টমকার্পেন্টার এটি একাধিক অঙ্কের হতে পারে, উপরের সীমাটি আপনার ভাষা যা সমর্থন করে
ডাউনগোট ২

উত্তর:


3

পাইথ, 23 বাইট

mc*vXzG\*dsN=N-/R\|C.z0

এটি অনলাইন সংস্করণে কাজ করে না, কারণ এটি evalটার্কির আকার নির্ধারণ করতে ব্যবহার করে।

ব্যাখ্যা:

mc*vXzG\*dsN=N-/R\|C.z0   implicit: z = first input line
                    .z    read all other lines
                   C      transpose them
               /R\|       count the "|"s in each column
              -       0   remove 0s in this list (columns with no "|"s)
            =N            assign the resulting list to N
m                         map each value d in N to:
    XzG\*                    replace every letter in z with a "*"
   v                         evaluate the result (does the multiplication)
  *      d                   multiply with d
 c        sN                 divide by sum(N)

4

ল্যাবভিউ, 67 বাইট

আমি মেটা পোস্টে যা প্রস্তাব দিয়েছিলাম তার পরে গণনা করছি তাই এটি স্থির নয় তবে হ্যাঁ এখানে যায়।

এখানে চিত্র বর্ণনা লিখুন

স্পেস সহ প্যাডযুক্ত ইনপুট প্রত্যাশিত।

আমি মাথা গণনা করছি এবং মাথা যেদিকে রয়েছে সেখান থেকে লোকের আকার পাব।


3

জাপট , 49 46 বাইট

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়অনুবাদক

W=UqR y f@Y%4¥1 £Xq'| l -1)£Vq'x r@X*Y,1 *X/Wx

অ্যারে হিসাবে আউটপুট। (নোট করুন যে আপনাকে দুটি ইনপুটগুলির প্রতিটি উদ্ধৃতি চিহ্নগুলিতে আবৃত করতে হবে))

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

            // Implicit: U = stick-figures, V = turkey size
W=UqR y     // Assign variable W to: split U at newlines, transpose rows with columns,
f@Y%4==1    // take each stick-figure body,
m@Xq'| l -1 // and count the number of "|"s.
)m@Vq'x     // Now map each item X in W to: V split at "x",
r@X*Y,1     // reduced by multiplication, starting at 1,
*X/Wx       // multiplied by X and divided by the total of W.
            // Implicit: output last expression

3

ম্যাটল্যাব 109 * 80% = 87.2 বাইট

function o=f(t,p);p=char(strsplit(p,'\n'));a=sum(p(:,2:4:end)=='|');o=rats(prod(sscanf(t,'%dx%d'))*a/sum(a));

সুতরাং এটি একটি ম্যাটল্যাব ফাংশন যা দুটি ইনপুট গ্রহণ করে, প্রথমটি টার্কি আকারের একটি স্ট্রিং (যেমন '8x4', এবং দ্বিতীয়টি স্ট্রিংটি লোকেদের ধারণ করে It

এটি অনেক ছোট হতে পারে তবে নতুন লাইনগুলি জটিল হয়ে উঠেছে। ম্যাটল্যাব সহজেই ;প্রতিটি লাইনের বিভাজক হিসাবে একটি স্ট্রিং রূপান্তর করতে পারে , তবে 25 টি অক্ষরের ব্যয়বহুল একটি নতুন লাইন ব্যবহার করার চেষ্টা করা কঠিন প্রমাণিত হয়েছিল:

p=char(strsplit(p,'\n')); % Converts the input person string to a 2D array

মানুষের আকার পাওয়া আসলে বেশ সহজ:

a=sum(p(:,2:4:end)=='|');

এটি দ্বিতীয় থেকে শুরু করে প্রতি চতুর্থ কলাম নেয় (যা সমস্ত কলাম যেখানে লোকজনের দেহ হবে) তখন এটি 1 টি এমন অ্যারেতে রূপান্তর করে যেখানে বডি বিট রয়েছে এবং যেখানে নেই সেখানে 0 রয়েছে। অবশেষে এটি কলাম অনুসারে aসমান হবে যা অ্যারের ফলাফল দেয় যা প্রতিটি ব্যক্তির আকার যুক্ত 1D অ্যারে হয় ar

prod(sscanf(t,'%dx%d'))*a/sum(a)

এরপরে আমরা টার্কির আকারটি ইনপুট স্ট্রিং থেকে বের করব যা আকারে রয়েছে %dx%d, অর্থাত্ একটি সংখ্যা 'x' এর পরে অন্য সংখ্যা number টার্কি অঞ্চল পেতে দুটি সংখ্যার ফলাফলের অ্যারে একসাথে গুণিত হয়।

এটি প্রতিটি মানুষের উচ্চতার প্রতিটি দ্বারা গুণিত হয় এবং দশমিক সংখ্যা হিসাবে প্রতিটি ব্যক্তির জন্য টার্কির অংশ পেতে সমস্ত লোকের মোট উচ্চতা দ্বারা বিভক্ত হয়।

rats(...)

বোনাসের যোগ্যতা অর্জনের চূড়ান্ত পদক্ষেপ - এই বিটটি কোডটি 6 টি অক্ষর দীর্ঘায়িত করে, তবে বোনাসটি ~ 22 ছাড়ায় তাই এর মূল্য। rats()দশমিক সংখ্যাটিকে সরলিকৃত অনুচিত ভগ্নাংশে (নির্ভুলভাবে 13 ডিপি) রূপান্তর করে এমন একটি দুর্দান্ত ফাংশন। এটিকে দশমিক সংখ্যার অ্যারে খাওয়ানো (অর্থাত্ প্রতিটি ব্যক্তির জন্য পরিমাণ) স্পেস দ্বারা পৃথক পৃথকভাবে প্রতিটি ব্যক্তির ভগ্নাংশ যুক্ত একটি স্ট্রিং প্রদান করবে।

মঞ্জুরি দেওয়া হয়েছে যে rats()একাধিক স্পেস যুক্ত করে, কিন্তু প্রশ্নটি বলে না এটি এটি করতে পারে না - কেবল স্ট্রিংয়ে অবশ্যই কেবলমাত্র অঙ্ক থাকতে হবে, '' এবং '/' বলে।

এটি উদাহরণ থেকে প্রাপ্ত ফলাফল (আসল আউটপুটে নয়, ফাঁকা স্থানগুলি সরানো রোধ করার জন্য আমার দ্বারা উদ্ধৃত চিহ্নগুলি যুক্ত করা হয়েছে):

'     45/4          75/4     '

ব্যবহারের উদাহরণ:

f('6x5',['     o ' 10 '     | ' 10 ' o  \|/' 10 '\|/  | ' 10 ' |   | ' 10 ' |   | ' 10 '/ \ / \'])

আউটপুট:

'     45/4          75/4     '

এটি অনলাইন অক্টোব দোভাষীর (সতর্কতা সহকারে) কাজ করে । আপনি এটি এখানে চেষ্টা করতে পারেন । fইতিমধ্যে একটি ফাইলে সংজ্ঞায়িত ফাংশনটির সাথে লিঙ্কটি একটি ওয়ার্কস্পেসের সাথে সম্পর্কিত । সুতরাং আপনার কেবল প্রম্পটে উপরের উদাহরণ ব্যবহার সন্নিবেশ করতে সক্ষম হওয়া উচিত।



2

হাস্কেল ১১৯ বাইট

import Data.List
g x=sum[1|y<-x,y>'{']
s#p|(h,_:t)<-span(<'x')s=[g x*read h*read t/g p|x<-transpose$lines p,any(>'{')x]

ব্যবহারের উদাহরণ: "6x5" # " o \n | \n o \\|/\n\\|/ | \n | | \n | | \n/ \\ / \\\n"-> [11.25,18.75]


2

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

(t,p)=>eval(`h=[];for(s=0;m=r.exec(p);s++)h[i=m.index%l/4|0]=~~h[i]+1;h.map(v=>v/s*${t.replace("x","*")})`,l=p.search`
`+1,r=/\|/g)

অংশগুলির একটি অ্যারে প্রদান করে।

ব্যাখ্যা

(t,p)=>                      // t = turkey equation, p = ASCII art of people
  eval(`                     // use eval to enable for loop without {} or return
    h=[];                    // h = array of each person's height
    for(s=0;m=r.exec(p);s++) // for each match of "|", s = sum of all heights
      h[i=m.index%l/4|0]=    // i = person index of this match
        ~~h[i]+1;            // increment person's height (~~ casts undefined to 0)
    h.map(v=>v/s*            // divide each height by the sum and multiply by turkey area
      ${t.replace("x","*")}  // since this is inside an eval just convert t to an equation
    )`,                      // implicit: return array of each person's portion

    // These are executed BEFORE the eval (escaping characters would mean more bytes)
    l=p.search`
`+1,                         // l = line length
    r=/\|/g                  // r = regex to match height markers
  )

পরীক্ষা


1

পাইথন 99 বাইট

lambda a,b: [`(''.join(i)).count('|')*1.0/a.count('|')*eval(b)` for i in zip(*a.split('\n'))[1::4]]

ইনপুট:' o \n | \n o \\|/\n\\|/ | \n | | \n | | \n/ \\ / \\','6*5'

আউটপুট: ['11.25', '18.75']

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