আপনি পাব পরিচালনা করতে পারেন?


23

পটভূমি

শুক্রবার বিকেলে এটি শেষ হয়েছে এবং আপনি এবং আপনার বন্ধুরা সেই সন্ধ্যার পরে পাবটি আঘাত করার সিদ্ধান্ত নিয়েছেন, তবে পাব যাওয়ার আগে আপনি কয়েকটি পানীয় পান করা উচিত। যাইহোক, জিনিসগুলি দ্রুত বৃদ্ধি পায়; আপনার বন্ধু শ্যাডক প্যাম্পলমৌস এই সপ্তাহের শুরুতে লটারি জিতেছিলেন এবং বিভিন্ন পানীয় সহ ক্রেটগুলিতে ক্রেট আনার সিদ্ধান্ত নিয়েছিলেন। পাবটিতে সুরক্ষা অত্যন্ত কঠোর এবং আপনি যদি প্রাঙ্গনে প্রবেশের চেষ্টা করার আগে অতিরিক্ত বিবেচনা করেন তবে আপনাকে ভিতরে প্রবেশ করার অনুমতি নেই। আপনি সমস্ত প্রোগ্রামার যদিও - তাই আপনি চিত্রিত জিনিস যাইহোক দুর্দান্ত হতে হবে।

চ্যালেঞ্জ

আপনাকে অ্যালকোহল মিটারের প্রোগ্রাম করতে হবে যা আপনি যদি যুক্তিসঙ্গত পাব সীমাটির উপরে / নীচে থাকেন তবে সত্য / মিথ্যা ফলাফল করে। আপনি পাবে নামার আগে সন্ধ্যার সময় stdinআপনার পরিমাপ প্রোগ্রামটি যে পরিমাণ পরিমাণ পানীয় এবং পানীয় গ্রহণ করেছেন সেটিতে প্রবেশ করুন । যদি এটি সত্যবাদী হয়ে যায় তবে আপনি পাব সীমা ছাড়িয়ে আছেন এবং বাড়িতে থাকবেন। যদি এটি মিথ্যা ফলাফল করে, আপনি যেতে ভাল।

ইনপুট

এর চেয়ে বড় একটি পূর্ণসংখ্যা 0যা আপনার দেহের ওজনকে কিলোগ্রামে প্রতিনিধিত্ব করে তার পরে একটি নতুন লাইন। এই ইনপুটটি নিম্নলিখিত ফর্মটিতে এক অঙ্কের পরিমাণ এবং পানীয়গুলির একটি সিরিজ অনুসরণ করে:

<amount><amount type>o<beverage type>

এক বোতল বিয়ারের জন্য এটি দেখতে পাবেন:

1Bob

প্রতিটি ইনপুট একটি স্পেস দ্বারা পৃথক করা হয়।

ইনপুট স্পেসিফিকেশন

প্রতিটি পানীয়ের একটি ইউনিট থাকে যা এটি দ্বারা সৃষ্ট প্রভাবের সাথে মিল রাখে। আপনি যদি নিজের ওজনের চেয়ে আরও দুটি ইউনিট গ্রাস করেন তবে দুটি পাব ভাগ করে নেওয়া কোনও বিকল্প নয়।

(এটি বাস্তবতা প্রতিফলিত বা নাও করতে পারে)

নিম্নলিখিত বৈধ পানীয় এবং পানীয় সম্পর্কিত মদ্যপ ইউনিট:

  • বিয়ার: b, 1ইউনিট

  • এনার্জি ড্রিংক: e, 0ইউনিট

  • হট সস: h, 2ইউনিট (শক্তিশালী কাপড়)

  • রস (জৈব ফল ইত্যাদি দিয়ে তৈরি): j, 0ইউনিট

  • রাম: r, 6ইউনিট

  • টেকিলা: t, 7ইউনিট

  • ভদকা: v, 6ইউনিট

  • মদ: w, 3ইউনিট

বিভিন্ন পরিমাণের ধরণ রয়েছে:

  • রহমান: B

  • বাক্স: C

  • গ্লাস: G

  • ছোট পিপা: K

  • চুমুক: S

প্রতিটি পরিমাণের ধরণের একটি গুণক থাকে যা এতে থাকা পানীয়ের অ্যালকোহলিক ইউনিটগুলিকে গুণ করে:

  • রহমান: 3

  • বাক্স: 25

  • গ্লাস: 2

  • ছোট পিপা: 50

  • চুমুক: 0.2

আউটপুট

তোমার প্রোগ্রাম হইবে আউটপুট truthy / falsy করতে stdoutযদি পরিমাণ খাওয়া উপরে / নিচে আপনার শরীরের ওজন 2. দ্বারা বিভক্ত পরিমাণ খাওয়া আপনার ওজন 2 দ্বারা বিভক্ত, আপনি আউটপুট falsy উচিত সমান করে।

সম্ভাব্য ইনপুট এবং আউটপুট উদাহরণ

ইনপুট

70
1Bob 3Soj

আউটপুট

False

ইনপুট

2
1Cov

আউটপুট

1

ইনপুট

50
1Cob

আউটপুট

0

ইনপুট

100
4Gow 1Koe 1Bov 1Gow 2Sot

আউটপুট

True

বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতল!


1
১. মনে হচ্ছে এটি oএকটি বিন্যাসের চরিত্র, যদিও আপনি এতটা সুনির্দিষ্টভাবে বলেননি। আপনার এটি পরিষ্কার করা উচিত ( oপাশাপাশি জলপাইয়ের তেলকেও বোঝায়)) ২. আমরা ঠিক সীমাতে থাকলে আমরা কী আউটপুট করব? বা এটা কোন ব্যাপার না?
স্তর নদী সেন্ট

1
ভাল কল; আমি পুরোপুরি মিস করেছি। আমি জলপাইয়ের তেল অপসারণ করছি (যে সে যাইহোক পান করে?) এর নীচে বা সমান সীমাবদ্ধ হওয়া উচিত ফলস্বরূপ। আমি এটি যোগ করব।
সুইপারপোটাতো

1
সেখানে কি এক অঙ্কের বেশি পানীয় থাকতে পারে? যেমন 43Gow,?
মরগান থ্রাপ

6
+1 ভাল প্রশ্ন, তবে এটি শুক্রবার বিকেলে এবং আমার একটি বিয়ারের জন্য বের হওয়া দরকার। সোমবার হতে পারে :)
মিকিটি

1
আমি চেয়েছিলাম এটি কোনও পরিমাণে সত্যই হোক - নেতিবাচক পরিমাণগুলি ব্যতীত। আমি ভাবিনি যে এটি অস্পষ্ট হিসাবে বন্ধ হবে। আমি বুঝতে পেরেছি যদি আমি এটি পরিবর্তন করি তবে এটি আপনার উত্তরকে অকার্যকর করবে, এবং আমরা কীভাবে এটি করি না। পরিমাণটি এক অঙ্ক হিসাবে স্পষ্ট করা হবে।
সুইপারপোটো

উত্তর:


4

সিজেম, 53 বাইট

6:B50:C2*:K4:G.4:S];q"behjrtvwo ""10206763*"er~*]:-U<

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

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

6:B          e# Push 6 and save it in B.
50:C         e# Push 50 and save it in C.
2*:K         e# Multiply by 2 to push 100 and save it in K.
4:G          e# Push 4 and save it in G.
.4:S         e# Push 0.4 and save it in S.
             e#
             e# The letters representing the types will now push its doubled
             e# (to avoid diving the weight by 2) associated multiplier.
];           e# Clear the stack.
q            e# Read all input.
"behjrtvwo " e# Push the string of beverages, concatenated with "o ".
"10206763*"  e# Push the string of associated units of alcohol and '*'.
er           e# Transliterate. This replaces each beverage letter with the
             e# associated units of alcohol, and each 'o' and ' ' with '*'.
             e#
             e# For example, the input
             e# 70
             e# 1Bob 3Soj
             e# is transformed into
             e# 70
             e# 1B*1*3S*0
             e#
~            e# Evaluate the resulting string.
             e#
             e# For the example this does the following:
             e#   + Push 70.
             e#   + Push 1, push 6, multiply, push 1, multiply.
             e#   + Push 3, push 0.4, multiply, push 0.
             e#
*            e# Multiply the last two (for the lack of a trailing space).
]            e# Collect all results in an array.
:-           e# Reduce by subtraction; subtract all other elements from the
             e# first element (body weight).
U<           e# Compare the result with 0.

8

পাইথন 3, 131

এখন আমরা সাপ নিয়ে গল্ফ করছি!

শেবাংকে ধন্যবাদ 18 বাইট সংরক্ষণ করা হয়েছে।
ডিএসএমকে আরও 4 টি বাইট সংরক্ষণ করা হয়েছে।
তাজমানকে ধন্যবাদ দিয়ে প্রচুর বাইট সংরক্ষণ করা হয়েছে।

অপব্যবহারের তার উজ্জ্বল কৌতুক জন্য tzaman অনেক ধন্যবাদ .find()ফিরে -1যদি এটি একটি মান নয় এটি নেই।

বর্তমানে এটি ধরে নিয়েছে যে এই পানীয়ের ফর্ম্যাটটি চ্যালেঞ্জটিতে ঠিক একইভাবে বলা হয়েছে, যেমন, প্রতিটি পানীয়ের জন্য কেবল 1 ডিজিটের মূল্য।

w=input()
print(sum([6,50,4,100,.4]['BCGKS'.find(b)]*int(a)*int('1267730'['bhrtvw'.find(v)])for a,b,_,v in input().split())>int(w))

আমি মনে করি আপনি যদি ডিকটগুলি ফেলে দেন এবং মুদ্রণ বিবৃতিতে সবকিছু করেন তবে এটি ভাল হতে পারে। সুতরাং, সঙ্গে বিট সরান mএবং প্রতিস্থাপন , এবং একই । আপনার কোডটিতে এই পরিবর্তনগুলি নিয়ে আমি 168 এ নেমে এসেছি। m[p[-1]][3,25,2,50,.2]['BCGKS'.find(p[-1])]d
কেদে

4

মিনকোলাং 0.11 , 59 বাইট

126763355*25l*2l$:"SKGCBwvtrhb"m(0pI)n(no0qoxo0q**2*-$I)`N.

এখানে চেষ্টা করুন।

ব্যাখ্যা

126763355*25l*2l$:    Pushes the values of the characters
"SKGCBwvtrhb"         Pushes the characters themselves
m                     Merge; interleaves the first and second halves of the stack
(                     Open while loop
 0p                   Put character's value in character's place in the codebox
   I)                 Close while loop when stack is empty
n                     Read in integer (weight)
(                     Open while loop
 n                    Read in integer, ignoring any non-numeric characters
  o0q                 Read in character and get its value from the codebox
     ox               Read in character and dump it
       o0q            Read in character and get its value from the codebox
          **          Multiply the three numbers together
            2*-       Multiply by 2 and subtract from weight
               $I)    Close while loop when input is empty
`                     1 if less than 0, 0 otherwise
 N.                   Output as integer and stop.

আমার ধারণা সিজাম পুরানো হয়ে গেছে ... আমার তখন আমার ভাষা শেষ করা দরকার
anOKsquirrel

@ অ্যানোকস্কুইরেল: বা বরং, আপনি এটি যথেষ্ট গল্ফ করেন নি। :)
এল'েন্ডিয়া স্টারম্যান

বা বরং, উভয়। : পি
anOKsquirrel

না, আসলে, আমি কেবল খারাপ: p
anOKsquirrel

3

সিজেম, 54 বাইট

ldlS/{A,s"CbretjvwSBK"+f#A,[25X6T7T6Z.2Z50Y]+f=:*-}/0<

বিট বিষ্ঠা এবং সম্ভবত suboptimal, কিন্তু আমি মনে করি এটি ঠিক আছে। এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা

ld             Read first line, convert to double
lS/            Read second line, split by space
{...}/         For each item in the second line...
  A,s"..."+f#    Get index in "0123456789CbretjvwSBK", or -1 if not found
  A,[...]+f=     Index into [0 1 2 3 4 5 6 7 8 9 25 1 6 0 7 0 6 3 0.2 3 50 2]
  :*             Take product
  -              Subtract from weight
0<             Check if < 0

নোট করুন যে সংখ্যার অ্যারেটির শেষে 2 থাকে, যার অর্থ Gho, প্রথম স্ট্রিং থেকে অনুপস্থিত, 2 এ ম্যাপ করা যায়।



2

ভিবিএ, 251 বাইট

Function k(x) As Boolean:q=Split(x):g="b1e0h2j0r6t7v6w3":h="B03C25G02K50S.2":For i=1 To UBound(q):j=j+Left(q(i),Len(q(i))-3)*Mid(h,InStr(h,Mid(Right(q(i),3),1,1))+1,2)*Mid(g,InStr(g,Mid(Right(q(i),3),3,1))+1,1):Next i:If q(0)/2<j Then k=1
End Function

:পরিবর্তে তখন নিউলাইন ব্যবহার করে এটি খাটো করা যায় না, তবে এটি আরও গোলাপী দেখায়!

পঠনযোগ্য ফর্ম্যাট

Function b(x) As Boolean
q = Split(x)
g = "b1e0h2j0r6t7v6w3"
h = "B03C25G02K50S.2"
For i = 1 To UBound(q)
j = j + Left(q(i), Len(q(i)) - 3) * _          'Left most digits would be the Quantity
Mid(h, InStr(h, Mid(Right(q(i), 3), 1, 1)) + 1, 2) * _  'Find the Container value in h
Mid(g, InStr(g, Mid(Right(q(i), 3), 3, 1)) + 1, 1)      'Find the Drink value in g
Next i
If q(0) / 2 < j Then b = 1 'Checks if Drunk or not
End Function

খুব নিশ্চিত এটি গল্ফ করা যেতে পারে। আমার স্ট্রিং ম্যানিপুলেশনটি Mid(Right())অত্যধিক শব্দযুক্ত বলে মনে হচ্ছে, তবে অ্যারে চালানো যদিও StrReverseএটি দীর্ঘতর করে তোলে। যদি আমরা ধরে নিই যে আপনি কেবলমাত্র কোনও নির্দিষ্ট পানীয়ের 0-9 পানীয় পান করেন তবে আমরা কয়েক মুঠো বাইট সংরক্ষণ করতে পারি

VBAডোজ মাল্টি লাইন ইনপুট সমর্থন করে না হিসাবে স্থান দ্বারা পৃথক ওজন সহ একটি স্ট্রিং হিসাবে ইনপুট নিন


2

রুবি, 153 বাইট

আমাকে কোনওভাবে gsubs থেকে মুক্তি দিতে হবে

w=gets.to_i;$><<(eval(gets.chars{|c|c[/[0-9]/]!=p ? ($_[c]+='*'):0}.tr('behjrtvwo BG','10206763*+32').gsub('C','25').gsub('K','50').gsub('S','0.2'))>w/2)

2

জাভাস্ক্রিপ্ট, 131 134 139 বাইট

এটি একটি সম্পূর্ণ প্রোগ্রাম এবং মূলত আমার পিএইচপি উত্তরের একটি অভিযোজন :

for(c=prompt,b=c(a=c(s=i=0));b[i];i+=2)s+=b[i++]*{B:3,C:25,G:2,K:50,S:.2}[b[i++]]*{b:1,h:2,r:6,t:7,v:6,w:3}[b[++i]]||0;alert(s>a/2)

এটি ব্যবহার করে দুটি মান পড়ে promptএবং alertফলাফল হিসাবে [true|false]


সম্পাদনাগুলি

  • সংরক্ষিত 5 বাইট একটি লজিক্যাল অভিব্যক্তি ব্যবহার করে ||0পরিবর্তে সঙ্গে পানীয় প্রকাশক 0ইউনিট। ব্যবহারকারী 81655 ধন্যবাদ ।
  • সংরক্ষিত 3 বাইট মজুত করে promptএকটি পরিবর্তনশীল এবং আরম্ভের সংক্ষেপিত। ধন্যবাদ Stefnotch

1
আপনি পরিবর্তন করে 6 বাইট সংরক্ষণ করতে ,e:0,j:0}[b[++i]]পারেন }[b[++i]]|0
ব্যবহারকারী 81655

@ ব্যবহারকারী81655 গতকাল আমি ভাবছিলাম, কীভাবে এই 0মূল্যগুলি থেকে মুক্তি পাবেন । ঠিক আছে, আমি এটা ভাবিনি। ||বিটওয়াইস অপারেটরের পরিবর্তে ব্যবহার করতে হয়েছিল । এখনও 5 বাইট কম। ধন্যবাদ।
সন্নিবেশকারী নাম এখানে

সমস্যা নেই. আমি সম্ভাব্য অ-সংখ্যার মানগুলি ভুলে গিয়েছি।
ব্যবহারকারী 81655

1
for(s=i=0,a=prompt(),b=prompt();এতে পরিবর্তন করা যেতে পারে:for(c=prompt,b=c(a=c(s=i=0));
স্টেফনচ

1
পছন্দ করেছেন আমি এটা পছন্দ করি. 3 বাইট সংরক্ষণ করার জন্য ধন্যবাদ।
সন্নিবেশকারী নাম

1

বাশ (+ বিসি + জিএনইউ সেড), 200 196 194 বাইট

read x
read y
y="$(sed 's/^/((/;s/$/))/;s/ /)+(/g;s/o/*/g;s/b/1/g;s/[ej]/0/g;s/h/2/g;s/[rv]/6/g;s/w/3/g;s/t/7/g;s/B/*3/g;s/C/*25/g;s/G/*2/g;s/K/*50/g;s/S/*0.2/g'<<<"$y")"
echo "$y>$x/2"|bc -l

1

জাভাস্ক্রিপ্ট, 159 বাইট

function b(t){return a={B:3,C:25,G:2,K:50,S:.2,b:1,h:2,w:3,r:6,v:6,t:7},t.split(/\W/).reduceRight(function(t,n,r){return r?n[0]*a[n[1]]*a[n[3]]+t||t:t>n/2},0)}

যেহেতু জাভাস্ক্রিপ্টের STDIN অ্যাক্সেসের জন্য একটি লাইব্রেরি প্রয়োজন, এই কোডটি কেবলমাত্র একটি ফাংশন যা ইনপুটটির সম্পূর্ণতা গ্রহণ করে, যেমন b("100\n4Gow 1Koe 1Bov 1Gow 2Sot")


1
একটি নোট হিসাবে: prompt()সাধারণত একটি বৈধ বিকল্প হিসেবে গৃহীত STDINমধ্যে জাভাস্ক্রিপ্ট
সন্নিবেশকারীর নাম এখানে

1
আপনি পারে সংরক্ষণ 30 বাইট ES6 যাচ্ছে এবং তীর-অপারেটর ব্যবহার করে: b=t=>(a={B:3,C:25,G:2,K:50,S:.2,b:1,h:2,w:3,r:6,v:6,t:7},t.split(/\W/).reduceRight((t,n,r)=>r?n[0]*a[n[1]]*a[n[3]]+t||t:t>n/2,0))
সন্নিবেশকারী নাম এখানে

1

পাইথন 3, 157 বাইট

n,l,d,u=int(input()),input(),"behjrtvwBCGKS",[1,0,2,0,6,7,6,3,3,25,2,50,.2]
print(sum(map(lambda x:int(x[0])*u[d.find(x[1])]*u[d.find(x[3])],l.split()))>n/2)

1

পিএইচপি, 163 169 বাইট

for($a=fgets(STDIN),$b=fgets(STDIN),$v=[b=>1,h=>2,r=>6,t=>7,v=>6,w=>3,B=>3,C=>25,G=>2,K=>50,S=>.2];$b[$i];$i+=2)$s+=$b[$i++]*$v[$b[$i++]]*$v[$b[++$i]];echo$s>$a/2;

আউটপুট 1বা কিছুই না, সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে।


আমি এখনও বিস্মিত এই গরম সসটি কি, 2 ইউনিট আছে


সম্পাদনাগুলি

  • সংরক্ষিত 6 বাইট পানীয় এবং গুণক জন্য দুইটি অ্যারের মার্জ দ্বারা এবং সরিয়ে 0থেকে 0.2

1

কেগ , 165 বাইট (এসবিসিএস)

¿®w?(: =[_]")0®u(!4/|\0-&:B=[&3*&|:C=[&55**&|:G=[&2*&|:K=[&\2*&|&15/*&]]]]__:b=[&1*&|:e=[&0&|:h=[&2*&|:j=[&0&|:r=[&6*&|:t=[&7*&|:v=[&6*&|&3*&]]]]]]]_©u&+®u)©w2/:©u<.

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

আমার মনে হয় যেন কোনও কেগ উত্তর এর চেয়ে বেশি যথাযথ হয় নি! এটি সম্ভবত গল্ফ করা যেতে পারে, তবে আমি এটি করতে পারি বলে মনে করি না।

ব্যাখ্যা

¿®w                                                                         #Take the weight and store it in a variable
?(: =[_]")                                                                  #Take the second line and remove spaces
0®u                                                                         #Store the units in a variable
(!4/|                                                                       #For every part in the input
\0-&                                                                        #Store the amount of drink in the register
:B=[&3*&|:C=[&55**&|:G=[&2*&|:K=[&\2*&|&15/*&]]]]__                         #Determine the beverage multiplier
:b=[&1*&|:e=[&0&|:h=[&2*&|:j=[&0&|:r=[&6*&|:t=[&7*&|:v=[&6*&|&3*&]]]]]]]_   #Determine the drink
©u&+®u)                                                                     #Add the amount to units
©w2/:©u<.                                                                   #Check the condition and print
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.