ভোল্টস, এম্পস, ওয়াটস এবং ওহমস: দুটি দেওয়া হয়েছে, অন্য দুটি গণনা করুন


27

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

V = I / R

একইভাবে যে প্রতিরোধের দ্বারা বিচ্ছিন্ন ওয়াটগুলিতে শক্তি (পি) দেওয়া হয়:

P = V * I

পুনঃব্যবস্থা এবং প্রতিস্থাপনের মাধ্যমে, অন্য দুটি যে কোনও দেওয়া হলে এই দুটি পরিমাণের গণনা করার জন্য সূত্রগুলি নেওয়া যেতে পারে। এই সূত্রগুলি নিম্নরূপে সংক্ষিপ্ত করা হয়েছে ( ভোল্টের Eপরিবর্তে এই চিত্রটি ব্যবহার করে নোট করুন V):

পরম শক্তি দূষিত একেবারে!  প্রতিরোধ বৃথা!

একটি স্ট্রিং এ এই দুটি পরিমাণের একটি ইনপুট দেওয়া, অন্য দুটি আউটপুট।

  • আপনার ভাষার জন্য উপযুক্ত যে বিন্যাসে উপযুক্ত তা ইনপুট নম্বর দশমিক হবে। যথার্থতা কমপক্ষে 3 দশমিক স্থানে হওয়া উচিত। ( আইইইই 754-2008 বাইনারি32 ফ্লোটগুলি পর্যাপ্ত)
  • প্রতিটি ইনপুট নম্বর ইউনিটের সাথে সংযুক্ত হবে। এটি V A W Rভোল্টেজ, অ্যাম্পেরেজ, শক্তি এবং প্রতিরোধের (বা সমতুল্য ছোট ছোট হাতের) জন্য একটি হবে। অতিরিক্ত হিসাবে, আপনি এর Ωপরিবর্তে ব্যবহার করতে পারেন R। ইউনিটগুলির কোনও দশমিক উপসর্গ থাকবে না (কিলো-, মিলি- ইত্যাদি)।
  • দুটি ইনপুট পরিমাণ কোনও স্ট্রিংয়ে যে কোনও ক্রমে একক স্থান দ্বারা পৃথক করা হবে।
  • ইনপুট পরিমাণ সর্বদা 0 এর চেয়ে বড় সংখ্যা হবে।
  • আউটপুট ইনপুট হিসাবে একই বিন্যাসে হবে।
  • সমীকরণ-সমাধান বিল্টিনগুলি অনুমোদিত নয়।

উদাহরণ ইনপুট

1W 1A
12V 120R
10A 10V
8R 1800W
230V 13A
1.1W 2.333V

সংশ্লিষ্ট আউটপুট

1V 1R
0.1A 1.2W
1R 100W
120V 15A
2990W 17.692R
0.471A 4.948R

এটি লক্ষ্য করা উচিত যে এই চ্যালেঞ্জের সমাধানগুলি কার্যকরভাবে স্ব-বিপরীত হবে। অন্য কথায় আপনি যদি ইনপুটটিতে সমাধান প্রয়োগ করেন A Bএবং আউটপুট পান C D, তবে ইনপুটটিতে একটি সলিউশন প্রয়োগ করুন C D, তবে আউটপুটটি A Bআবার হওয়া উচিত , যদিও সম্ভবত অর্ডার থেকে বাইরে এবং এফপি রাউন্ডিংয়ের কারণে বিচলিত হয়। সুতরাং পরীক্ষার ইনপুট এবং আউটপুটগুলি বিনিময়যোগ্য হিসাবে ব্যবহার করা যেতে পারে।


আমরা কি 4 টি মান আউটপুট করতে পারি?
ক্যালকুলেটরলাইন

@ ক্যাটস আরেফ্লুফাই নং - ইনপুট এবং আউটপুট উভয়ই সর্বদা ঠিক 2 টি মান হবে।
ডিজিটাল ট্রমা

12
এটি সম্ভবত আমি চ্যালেঞ্জের জন্য সর্বাধিক তাত্ক্ষণিক বর্ণনামূলক শিরোনাম দেখেছি।
অ্যালেক্স এ।

4
@AlexA। হ্যাঁ, আমি আকর্ষণীয় এবং আকর্ষণীয় কিছু ভাবার চেষ্টা করছিলাম - বৈদ্যুতিকরণ , যদি আপনি চান। তবে আমি সংক্ষেপে এসেছি - ক্যাপ্টেন ওবিশির দিনটি জিতেছে
ডিজিটাল ট্রমা

উত্তর:


3

রুবি 171 বাইট

ফাংশন আর্গুমেন্ট হিসাবে ইনপুট। ট্রেলিং স্পেসের সাহায্যে আউটপুট (প্রয়োজনে সংশোধন করা যেতে পারে))

->s{a,b,c,d=s.split.map{|z|[z[-1],z.to_f]}.sort.flatten
%w{EA9.EAAVAA.WVA GS;.A?#WWV.RRR}.map{|w|m=w[n=(a+c+?!).sum%10].ord;print (b**(m%9-4)*d**(m/9-5))**0.5,w[n+7],' '}}

ব্যাখ্যা

সমস্ত সূত্রগুলি ফর্মটিতে প্রকাশ করা যেতে পারে b**x*d**yযেখানে বি এবং ডি দুটি ইনপুট মান এবং এক্স এবং ওয়াই শক্তি। গল্ফিং কারণে (b**x*d**y)**0.5অবশেষে অভিব্যক্তিটিকে পছন্দ করা হয়েছিল কারণ এর অর্থ x এবং y -4 থেকে 4 এর পরিসীমাতে পূর্ণসংখ্যায় পরিণত হয়।

নিম্নলিখিত টেবিলটি প্রয়োজনীয় অভিব্যক্তিগুলি (ইনপুটগুলি বর্ণানুক্রমিকভাবে সাজানো হয়) এবং পাওয়ারগুলির জন্য এনকোডযুক্ত মানগুলি দেখায়। যেখানে x এবং y দ্বিগুণ শক্তি, সেগুলি (x+4)+(y+4)*9+9বা সমতুল্যভাবে এনকোড করা আছে (x+4)+(y+5)*9। এটি সমস্ত এনকোডিংগুলি মুদ্রণযোগ্য এএসসিআইআই ব্যাপ্তিতে রাখে। শক্তি অপারেটরদের ব্রেভিটির সূত্রগুলি থেকে বাদ দেওয়া হয়।

nইনপুট ইউনিট প্রতীক থেকে তৈরি এক ধরণের চেকসাম; এটি 0,1,2,4,5,6 মান নিতে পারে (3 টি ব্যবহৃত হয় না)

n     formula 1 formula 2      formula 1                formula 2
value                      powers x+4 y+4 encoding   powers x+4 y+4 encoding

0      A*R=V    A2*R=W       1 1    6 6   69 E        2 1     8 6   71 G  
1    R-1*V=A  R-1*V2=W      -1 1    2 6   65 A       -1 2     2 8   83 S
2 R-.5*W.5=A R.5*W.5=V     -.5 .5   3 5   57 9       .5 .5    5 5   59 ;
3          .         .                       .                         .
4      A*V=W   A-1*V=R       1 1    6 6   69 E       -1 1     2 6   65 A
5    A-1*W=V   A-2*W=R      -1 1    2 6   65 A       -2 1     0 6   63 ?
6    V-1*W=A  V2*W-1=R      -1 1    2 6   65 A        2 -1    8 2   35 #

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

f=->s{
  a,b,c,d=s.split.map{|z|[z[-1],z.to_f]}.        #split the input into an array [[symbol1,value1],[symbol2,value2]]
  sort.flatten                                   #sort alphabetically by symbol and flatten to assign the 4 objects to different variables
  n=(a+c+?!).sum%10                              #sum the ascii codes of the symbols (plus that of ! for good value distribution) and take mod 10. gives a number 0..6 (3 is not used)
  %w{EA9.EAAVAA.WVA GS;.A?#WWV.RRR}.             #for each of the outputs, there is a 14 character string. 1st 7 characters encode powers, 2nd 7 characters are output symbol
  map{|w|                                        #iterate through the 2 outputs
    m=w[n].ord                                   #select one character according to value of n and convert to a number encoding the powers to raise the two inputs to
    print (b**(m%9-4)*d**(m/9-5))**0.5,w[n+7],' '#decode the powers, evaluate the expression and output, append the unit symbol and a space
  }
}

f["6W 3A"]
puts
f["12V 120R"]
puts
f["10A 10V"]
puts
f["8R 1800W"]
puts
f["6W 2V"]
puts
f["2A 3R"]
puts

আউটপুট

2.0V 0.6666666666666666R
0.1A 1.2W
100.0W 1.0R
15.0A 120.0V
3.0A 0.6666666666666666R
6.0V 12.0W

2

পাইথন 3, 329 347 343 339 326 305 267 251 249 245 237 বাইট

এটি বেশ ফুলে যায়। অবশ্যই এখনও অনেক গল্ফ করার দরকার আছে।

সম্পাদনা: সাময়িকভাবে আউটপুট স্থির করে। কোনও কারণে, return' '.join(str(eval(z[m][i]))+t[i]for i in range(2))সঠিকভাবে কাজ করতে অস্বীকার করে।

সম্পাদনা: বাদ পড়েছে eval

এই ফাংশনটি এখন লেভেল রিভার সেন্টের উত্তরের কিছু অংশ ধার করে । আমি পরিবর্তন opsপ্রথম সংশোধিত বহিঃপ্রকাশ একটি অভিধানের মধ্যে অভিধান, exponent*2+4জন্য b**((p-4)/2) * d**((q-4)/2), প্রতিটি যাতে pএবং qএকটি এক অঙ্কের সংখ্যা হতে হবে। উদাহরণস্বরূপ, b*d == b**1*d**1 == b**((6-4)/2)*d**((6-4)/2)এবং ফলাফল 66অভিধানে হবে।

তারপরে, আমি zঅভিধানগুলিকে সেই সংশোধনকারী এক্সটেনশনগুলি এবং এককগুলির জন্য যা একটি লাইনে এবং নির্দিষ্ট ক্রমে প্রয়োজনীয় একটি স্ট্রিংয়ে রূপান্তরিত করে। প্রথমত, ARVW10 মডের প্রতিটি অক্ষরের ASCII মান 5, 2, 6, 7। যখন এই মূল্যবোধের কোন দুটি যোগ করা হয়, তখন তারা দিতে একটি অনন্য সংখ্যা এভাবে mod 10, প্রতিটি দুই-অক্ষর সমন্বয় সঙ্গে একটি অনন্য নম্বর দেওয়া যায় (ord(x[0]) + ord(y[10] + 3) % 10, দান AR: 0, AV: 4, AW: 5, RV: 1, RW: 2, VW: 6(খুব লিভার নদী সেন্ট এর চেকসাম অনুরূপ)। পরিবর্তিত বহিঃপ্রকাশ ব্যবস্থা এই আদেশ করা, অর্থাত্ [AR] [RV] [RW] [blank] [AV] [AW] [VW], পারবেন zদক্ষতার অ্যাক্সেস করা (বাইটস পরিপ্রেক্ষিতে)।

সম্পাদনা: তালিকা বোধগম্যতা নীচে গল্ফড return। গল্ফড সংজ্ঞা m

কোড:

def e(s):x,y=sorted((i[-1],float(i[:-1]))for i in s.split());m=(ord(x[0])+ord(y[0])+3)%10*6;z="6686VW2628AW3555AV0000002666RW0626RV2682AR";return' '.join(str((x[1]**(int(z[m+i*2])-4)*y[1]**(int(z[m+i*2+1])-4))**.5)+z[m+i+4]for i in(0,1))

Ungolfed:

def electric(s):
    x, y = sorted((i[-1],float(i[:-1]))for i in s.split())
    m = (ord(x[0]) + ord(y[0]) + 3) % 10 * 6
    z = "6686VW2628AW3555AV0000002666RW0626RV2682AR"
    h = []
    for i in range(2):
         f = (x[1] ** (int(z[m*6+i*2])-4) * y[1] ** (int(z[m*6+i*2+1])-4)) ** 0.5
         h.append(str(f)+z[m*6+i+4])
    return ' '.join(h)

1

পাইথন 3, 193 187 বাইট

import re
exec(re.sub('(.+?) (.)',r'\2=\1;',input()))
for s,r in zip('AVRW'*3,'V/R W**.5*R V/A V*V/R W/V W/A V*V/W R*A*A W**.5/R A*R W/A**2 V*A'.split()):
 try:print(eval(r),s,)
 except:0

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

ফর্মের ইনপুটকে <value> <unit> <value> <unit>অ্যাসাইনমেন্ট স্টেটমেন্টে রূপান্তর করে । তারপরে, evalপ্রতিটি সূত্র ব্যবহার করুন, try/exceptভেরিয়েবলগুলি বরাদ্দ করা হয়নি এমনগুলি থেকে ত্রুটি উপেক্ষা করে।


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