সোমবার মিনি-গল্ফ # 7: উপাদান পরিমাপ সরল করুন


12

সোমবার মিনি-গল্ফ: সংক্ষিপ্ত চ্যালেঞ্জগুলির একটি সিরিজ , প্রতি সোমবার পোস্ট করা (আশাবাদী!)।
দুঃখিত, দেরী হয়েছে; আমি বুঝতে পেরেছি যে 90% পথটি একটি ভিন্ন ধারণা লেখার মাধ্যমে এটি একটি সদৃশ।

আমার পরিবার বরং বড়, তাই আমরা প্রচুর খাবার খাই। পর্যাপ্ত খাবার তৈরি করার জন্য আমাদের সাধারণত দ্বিগুণ, ট্রিপল বা চতুর্ভুজ রেসিপিগুলি দরকার! তবে পরিমাপের গুণকে বাড়ানো যেমন একটি ব্যথা হতে পারে, তবে আমাদের জন্য এটি করার জন্য কোনও প্রোগ্রাম করে রাখা ভাল লাগবে।

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করা যা একটি নম্বর এন এবং একটি চিঠি এল হিসাবে পরিমাপ করে এবং যতটা সম্ভব সরলভাবে একই পরিমাপ প্রদান করে। এখানে প্রয়োজনীয় পরিমাপের ইউনিট রয়েছে (সমস্ত আমেরিকান, আমার পরিবারের মতো) এবং তাদের সম্পর্কিত চিঠিগুলি:

1 cup (c) = 16 tablespoons (T) = 48 teaspoons (t)
1 pound (l) = 16 ounces (o)
1 gallon (g) = 4 quarts (q) = 8 pints (p) = 128 fluid ounces (f)

"যথাসম্ভব সরলকরণ" এর অর্থ:

  • সম্ভাব্য বৃহত্তম পরিমাপ ইউনিট ব্যবহার করে। প্রতিটি ইউনিটে 1/4, 1/3, 1/2, 2/3, বা 3/4 বাকি থাকতে পারে।
  • প্রয়োজনে ফলাফলকে মিশ্র সংখ্যায় রূপান্তর করা।

উদাহরণস্বরূপ, 4 oচার আউন্স, যা হয়ে যায় 1/4 l, এক চতুর্থাংশ পাউন্ড। 8 t, 8 চা চামচ, হয়ে যায় 2 2/3 T

বিস্তারিত

  • ইনপুটটি কোনও যুক্তিসঙ্গত বিন্যাসে নেওয়া যেতে পারে; আউটপুট সঙ্গে একই। ( 1 t, 1,"t", 1\nt, ইত্যাদি)
  • কোনও ভগ্নাংশের অংশটি সঠিকভাবে মোকাবেলা করা হয়েছে তা নিশ্চিত করুন। ( 11/4জায়গায় 1 1/4এটি অনুমোদিত নয়।)
  • সংখ্যা সবসময় একটি মিশ্র সংখ্যা হতে হবে, এবং সবসময় একটি হর থাকবে 2, 3অথবা 4(অথবা কিছুই নয়)। (না 1 1/8 T, না 1.5 T, ইত্যাদি)
  • উপরের ফলস্বরূপ, কোনও নিম্নগামী রূপান্তরগুলি (উদাহরণস্বরূপ কাপ থেকে টেবিল চামচ) কখনও প্রয়োজন হয় না।
  • চিঠিটি সর্বদা উপরে বর্ণিত অক্ষরের একটি হবে ( Tcfglopqt)।

টেস্ট-মামলা

আশা করি সব ধরণের কেস কভার করে আশা করা যায় এখানে একটি বৃহত তালিকা রয়েছে:

Input   | Output
--------+--------
1/2 t   | 1/2 t
3/4 t   | 1/4 T
1 t     | 1/3 T
1 1/2 t | 1/2 T
2 t     | 2/3 T
2 1/4 t | 3/4 T
2 1/2 t | 2 1/2 t
3 t     | 1 T
10 t    | 3 1/3 T
16 t    | 1/3 c
5 1/3 T | 1/3 c
8 T     | 1/2 c
16 T    | 1 c
36 T    | 2 1/4 c
1/4 c   | 1/4 c
1024 c  | 1024 c
1 o     | 1 o
4 o     | 1/4 l
5 1/3 o | 1/3 l
5 2/3 o | 5 2/3 o
8 o     | 1/2 l
28 o    | 1 3/4 l
28 l    | 28 l
2 f     | 2 f
4 f     | 1/4 p
8 f     | 1/4 q
16 f    | 1/2 q
32 f    | 1/4 g
64 f    | 1/2 g
128 f   | 1 g
2/3 p   | 1/3 q
1 1/3 p | 2/3 q
2 p     | 1/4 g
1 q     | 1/4 g

স্কোরিং

আমাদের রান্নাঘরটি খুব ছোট, তাই কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত, যাতে রান্নাঘরটিকে আরও জটিল না করা যায়। বাইট জেতে সংক্ষিপ্ততম বৈধ কোড; টাইব্রেকার সাবমিশনে যায় যা তার চূড়ান্ত বাইট গণনাটি প্রথম পৌঁছেছিল। বিজয়ী আগামী সোমবার 9 নভেম্বর নির্বাচিত হবে, শুভকামনা!

দয়া করে নোট করুন যে এই চ্যালেঞ্জটি ওয়ার্ল্ড বিগ ডোসের অনুরূপ তবে এর সদৃশ নয় ।



@AlexA। আহ, হ্যাঁ, আমি এর সাথে লিঙ্ক করতে ভুলে গেছি। আইএমএইচও, এটি যথেষ্ট আলাদা: 1) এটি একটি আলাদা ইনপুট ফর্ম্যাট নেয়। 2) আউটপুটটি কিছুটা আলাদা। 3) আরও রূপান্তর ধরণের প্রয়োজন। 3 ক) 1/8 পরিমাপ ব্যবহার করা হয় না।
ইটিএইচ প্রডাকশন

@Etproductions সিমেটার স্পিরিট সদৃশ সমান।
আকংকা

9
এটি কখনই যথাযথভাবে ঘটবে না, আমাকে ক্ষমা করুন, মেট্রিক ইউনিট;)
অ্যাড্রায়ান

5
আপনার গল্ফগুলি কম এবং মিনি কম হচ্ছে।
ডেনিস

উত্তর:


2

গণিত, 349 334 330 322 বাইট

এই উত্তর বিভাগটি কিছুটা নিঃসঙ্গ অনুভব করেছে। তাই আহ, আমার চেষ্টা এখানে। পরীক্ষার ক্ষেত্রে যেমন ইনপুট দেওয়া উচিত।

n=ToExpression@StringSplit@InputString[];i=#~Mod~1&;b=#&@@n;If[Length@n==3,{x,y,z}=n,{x,y,z}=If[IntegerQ@b,{b,0,Last@n},{0,b,Last@n}]];v={0,1/4,1/3,1/2,2/3,3/4};s=<|T->16,t->3,o->16,q->4,p->2,f->16|>;r=<|T->c,t->T,o->l,f->p,p->q,q->g|>;If[v~MemberQ~i[a=(x+y)/s@z],{x,y,z}={Floor@a,i@a,r@z}]~Do~3;Print@Row[{x,y,z}/. 0->""]

ব্যাখ্যা

প্রথমে ব্যবহারকারীর ইনপুট পান, সেই ইনপুটটি সাদা স্থানের মধ্যে বিভক্ত করুন এবং এতে নির্ধারণ করুন ni=#~Mod~1&এটি একটি ফাংশন তৈরি করে যা সংখ্যার ভগ্নাংশের অংশ পায়, এটি 1 মড করে নিলে b=#&@@nকেবল প্রথম আইটেমটি পাওয়া যাবে n; এটি প্রথম স্থান পর্যন্ত সবকিছু হবে।

যদি n3 টি উপাদান দীর্ঘ হয় তবে এর অর্থ আমাদের একটি পূর্ণসংখ্যা, একটি ভগ্নাংশ এবং একটি ইউনিট রয়েছে। {x,y,z}=nদায়িত্ব অর্পণ করবে x, yএবং zএর তিনটি অংশ হতে n। অন্য ক্ষেত্রে এটি n3 টি উপাদান দীর্ঘ নয়; এর অর্থ এটি পরিবর্তে 2 টি উপাদান হয়ে যাবে। উপরের সাথে সামঞ্জস্য রাখতে আমরা xপূর্ণসংখ্যার অংশ, yভগ্নাংশ এবং zইউনিট হতে চাই। সুতরাং এই ক্ষেত্রে, আমাদের যাচাই করা দরকার:

  • যদি b(প্রথম উপাদানটি n) একটি পূর্ণসংখ্যা হয় তবে x=b, y=0এবং z=Last@n(এর শেষ উপাদান n)।
  • যদি bকোনও পূর্ণসংখ্যা না হয়, তার অর্থ আমাদের কাছে কোনও পূর্ণসংখ্যা ছাড়া কেবল একটি ভগ্নাংশ রয়েছে। সুতরাং আমরা অদলবদল করতে চাই xএবং yউপরে থেকে; পরিবর্তে, x=0, y=b, এবং zউপরে সমান।

এখন আমাদের কয়েকটি তালিকা স্থাপন করতে হবে:

v = {0, 1/4, 1/3, 1/2, 2/3, 3/4} প্রশ্নে বর্ণিত হিসাবে গ্রহণযোগ্য ভগ্নাংশের তালিকা।

s = <|T -> 16, t -> 3, o -> 16, q -> 4, p -> 2, f -> 16|>অ্যাসোসিয়েশন (মূল-দামের জোড়, পাইথনের অভিধানের মতো) যা পরের বৃহত্তম ইউনিটের একটিতে "আপ" যেতে একটি প্রদত্ত ইউনিটের প্রয়োজনীয় পরিমাণকে উপস্থাপন করে। উদাহরণস্বরূপ, o -> 16কারণ আমরা 1 পাউন্ডে যাওয়ার আগে 16 আউন্স প্রয়োজন।

r = <|T -> c, t -> T, o -> l, f -> p, p -> q, q -> g|>আসলে সেই ইউনিয়ন যা পরবর্তী ইউনিটটি কী তা উপস্থাপন করে। উদাহরণস্বরূপ, T -> cটেবিল চামচের চেয়ে বড় এককটি কাপ।

If[v~MemberQ~i[a = (x + y)/s@z], {x, y, z} = {Floor@a, i@a, r@z}]~Do~3

এখন, আমাদের একক যেতে সর্বোচ্চ সময় প্রয়োজন 3; এটি তরল আউন্স (চ) -> পিন্ট (পি) -> কোয়ার্টস (কিউ) -> গ্যালন (ছ) হবে। সুতরাং, এখন আমরা নিম্নলিখিত 3 বার করি:

  • যোগ করুন xএবং y, (পূর্ণসংখ্যা এবং ভগ্নাংশ অংশ)
  • sউপরের সমিতি থেকে , উপাদান পান z; এটি হ'ল বর্তমান ইউনিটটি অ্যাক্সেস করুন এবং সেই সমিতিতে সংশ্লিষ্ট মানটি পান।
  • আমরা যে মানটি পেয়েছি তার দ্বারা (x + y) ভাগ করুন, এটিকে বরাদ্দ করুন a, তারপরে এর ভগ্নাংশটি পান।
  • যদি সেই অংশটি তালিকায় থাকে vতবে আমরা একটি ইউনিট পর্যন্ত যেতে পারি; সেট xথেকে aবৃত্তাকার নিচে (পূর্ণসংখ্যা অংশ), সেট yএর ভগ্ন অংশ a, তারপর সমিতি অ্যাক্সেস rবর্তমান ইউনিট সঙ্গে zসেট পরবর্তী ইউনিট পর্যন্ত পেতে, এবং যে জন্য z
  • যদি এটির পরিবর্তে এর অংশ না হয় তবেv আমরা কিছু করি না, কারণ এটি সরল করা যায় না।

এটি একবার 3 বার হয়ে গেলে, আমরা ফলাফলটি মুদ্রণ করব:

Print@Row[{x,y,z}/. 0->””]

এটি কেবল {x,y,z}একটি সারিতে প্রিন্ট করে , তবে কোনও শূন্যকে (যদি কোনও পূর্ণসংখ্যা না থাকে বা কোনও ভগ্নাংশ না থাকে), খালি স্ট্রিংয়ের সাথে প্রতিস্থাপন করে, যাতে তারা মুদ্রণ না করে।

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