ফ্রেডের জলের বিল


9

ফ্রেড একটি আধা-বান্ধব লোক, তবে বাস্তবে তিনি বুদ্ধিমান।

এ কারণেই ফ্রেড সিএর লস আল্টোসের একটি ছোট অ্যাপার্টমেন্টে একা বাস করেন ফ্রেড এতটাই নির্বোধ কারণ তিনি পানির বিষয়ে অত্যন্ত বিশেষ। অতএব, তার পানির বিলটি কী তা নির্ধারণ করার জন্য তাঁর আপনার সহায়তা প্রয়োজন।

আপনার কাজ হ'ল একটি ফাংশন বা প্রোগ্রাম লিখুন যা তার পানির বিলটি ইনপুট হিসাবে ব্যবহৃত জলের পরিমাণ (যা সর্বদা পূর্ণসংখ্যার হিসাবে দেয়) ফেরত দেয়।

জলের ব্যবহার স্তরে আসে। এর অর্থ পানির পরিমাণের উপর নির্ভর করে দামের ব্যাপ্তি রয়েছে।

এগুলি হ'ল স্তর, তাদের দাম এবং তারা যে পরিমাণ পানির সাথে মিল রাখে:

Tier I
   First 10 Ccf: $3.8476/Ccf
Tier II
   Next 17 Ccf: $4.0932/Ccf
Tier III
   All subsequent water: $4.9118/Ccf

জন্য এন (CCF) ঘনফুট শত শত, নিম্নলিখিত অতিরিক্ত চার্জ হিসাবে ভাল আছে:

CPUC fee: 1.5% of above charges
LIRA quantity surcharge: $0.047*n
PBOP amoritization surcharge: $0.004*n

টিয়ার প্রথম, তৃতীয় দ্বিতীয়, তৃতীয় তৃতীয়, সিপিইউসি, লিরা, এবং পিবিওপি ফিসের সমষ্টি হ'ল মোট জলের বিল। এই যোগফলটি আপনি হয় ফিরে আসুন বা দুটি দশমিক স্থানে গোল করে কনসোলে মুদ্রণ করতে হবে।

এখানে দুটি উদাহরণ দেওয়া হল:

Input: 15
... Calculations which you do not need to output but here to help explain:
Tier I: 10*3.8476 = 38.476
Tier II: (15-10)*4.0932 = 20.466
Tier III: 0*4.9118 = 0
Tiers sum: 58.942
CPUC: 1.5% of 58.942 = 0.88413
LIRA: 0.047*15 = 0.705
PBOP: 0.004*15 = 0.06
Total sum: 58.942 + 0.88413 + 0.705 + 0.06 = 60.59113
...
Output: 60.59

Input: 100
... Calculations which you do not need to output but here to help explain:
Tier I: 10*3.8476 = 38.476
Tier II: 17*4.0932 = 69.5844
Tier III: (100-10-17)*4.9118 = 358.5614
Tiers sum: 466.6218
CPUC: 1.5% of  = 6.999327
LIRA: 0.047*100 = 4.7
PBOP: 0.004*100 = 0.4
Total sum: 478.721127
...
Output: 478.72

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


আমার সম্পাদনা আপনার অভিপ্রায় মেলে কিনা তা দয়া করে পরীক্ষা করে দেখুন।
msh210

হ্যাঁ, @ এমএস 210 ধন্যবাদ, আমার যা ছিল তা থেকে আরও স্পষ্ট
ড্যানিয়েল

আপনি যদি ডাউন-ভোটিংয়ের উপর খ্যাতি নষ্ট করতে চান তবে কমপক্ষে দয়া করে কেন ব্যাখ্যা করতে পারেন?
ড্যানিয়েল

@ ডপপ কিছু লোক সম্ভবত চ্যালেঞ্জ পছন্দ করতে পারে না। আপনি সেখানে কিছুই করতে পারবেন না। এটি মূল্যবান কিসের জন্য, ডাউনভোটিং চ্যালেঞ্জগুলি ডাউনভোটারের খ্যাতি থেকে বিয়োগ করে না - কেবল উত্তরগুলি।
মেগো

আমাদের কি অ-পূর্ণসংখ্যা পরিচালনা করতে হবে n?
পূর্কাকাডারী

উত্তর:


1

পাইথ, 55 41 বাইট

.R+s*Vv.",9t¬®Ï0NwÝ"lMcUQ,T27*.051Q2

xxdকোডটিতে অপ্রিন্টযোগ্য অক্ষর রয়েছে, সুতরাং এখানে একটি হ্যাক্সডাম্প রয়েছে।

00000000: 2e52 2b73 2a56 762e 222c 3904 1874 c2ac  .R+s*Vv.",9..t..
00000010: c2ae c280 c293 c38f 301c 4e77 c39d 226c  ........0.Nw.."l
00000020: 4d63 5551 2c54 3237 2a2e 3035 3151 32    McUQ,T27*.051Q2

ব্যাখ্যা

  1. ."…"একটি প্যাকযুক্ত স্ট্রিং যা এতে থাকে 3.8476,4.0932,4.9118
  2. vযে টিপল যাও মূল্যায়ন (3.8476, 4.0932, 4.9118)। এগুলি সিপিইউসি যোগ করার সাথে টিয়ারের দামগুলি গুণিত হয়।
  3. UQপরিসীমা উত্পন্ন করে 0n-1
  4. c,T27পরিসীমা খুব ছোট হলে শেষদিকে অতিরিক্ত খালি তালিকা সহ সূচকগুলি 10 এবং 27 এ বিস্তৃত হয়।
  5. lM প্রতিটি স্তরের জন্য জলের পরিমাণ প্রদান করে প্রতিটি অংশের দৈর্ঘ্য সন্ধান করে।
  6. *V স্তরের দাম পেতে দ্বিতীয় ধাপ 2 থেকে দ্বিগুণ করে multip
  7. s ফলাফলের যোগফল।
  8. +*Q.051ইনপুট 0.051, অর্থাৎ LIRA + PBOP দ্বারা গুণিত হয়।
  9. .R2ফলাফলটিকে 2 দশমিকের চেয়ে বেশি করে দেয়।

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


2

ম্যাথামেটিকাল, 83 76 69 বাইট

1.015{3.8476,.2456(b=Boole)[#>10],.8186b[#>27],51/1015}&~Array~#~Total~2~Round~.01&

অজ্ঞাতনামা ফাংশন যা প্রথম কলামে তিন স্তরের একটি অ্যারে তৈরি করে LIRA এবং পিবিওপি চতুর্থ কলামে একটি স্বেচ্ছাসেবক-নির্ভুলতা নম্বর হিসাবে উপস্থাপন করে। পুরো জিনিসটি দ্বারা গুণিত হয় 1.015এবং অ্যারের সমস্ত উপাদানকে সংযুক্ত করে এবং বৃত্তাকার করা হয় .01। যেহেতু 51/1015*1.015পছন্দসই 0.051হবে আউটপুটটি হুবহু নির্ভেজাল যেমন ওপিতে স্পেসিফিকেশন।

পার্ল সমাধানের অধীনে আমার মন্তব্যে যেমন পরামর্শ দেওয়া হয়েছে তেমন একটি সংক্ষিপ্ত সমাধান, 76 বাইটে in

{3.956314,.249284(b=Boole)[#>10],.830879b[#>27]}&~Array~#~Total~2~Round~.01&

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

73 বাইট (তবে আমি আমার বাইট-কাউন্টটি আপডেট করতে নারাজ কারণ এটি সোজা পার্ল সমাধানের খুব কাছে):

69 বাইট - আহ কি হ্যাক, গল্ফিং কিছুটা চেষ্টা করেছে।

.01Round[395.6314#+{24.9284,83.0879}.(UnitStep[#-1]#&/@{#-10,#-27})]&

ভাসমান বিন্দু ত্রুটি সম্পর্কিত
সম্পাদনা আমার উত্তরের প্রথম তিনটি পুনরাবৃত্তিগুলি তাদের দশমিক উপস্থাপনে হুবহু সঠিক, কারণ জড়িত সমস্ত সহগের দশমিক উপস্থাপনা সমাপ্ত করে। তবে, যেহেতু সহগগুলি স্পষ্টরূপে ভাসমান, বাইনারিতে সঞ্চিত এবং অ-সমাপ্ত বাইনারি উপস্থাপনা রয়েছে, তাই যথেষ্ট পরিমাণে বড় ইনপুটগুলি বাইনারি উপস্থাপনের সর্বনিম্ন-তাত্পর্যপূর্ণ অঙ্কগুলিতে ত্রুটিগুলি সংগ্রহ করতে শুরু করবে। আমি অনুমান করব, যখন ভাসাটি এত বড় হয় যে এটি দশমিক পয়েন্টের ডানদিকে মাত্র 3-4 টি ফিট করে, আমরা প্রায় 1 শতাংশের ত্রুটি আশা করতে পারি। একটি সঠিক উত্তরের জন্য নীচে দেখুন ।

72 বাইট, কিছুটা অনাবৃত ভাসা থেকে অনাক্রম্য

.01Round[{3956314,249284,830879}.(UnitStep[#-1]#&)/@(#-{0,10,27})/10^4]&

নেতৃস্থানীয় দ্বারা গুণটি .01খুব শেষ ধাপে সম্পন্ন হয়। এই বিন্দু অবধি সমস্ত গণনা পূর্ণসংখ্যার সাহায্যে সম্পন্ন হয়। এর অর্থ হ'ল, যদি এটি .01বাদ দেওয়া হয় তবে সঠিক ফলাফল আসবে তবে ডলারের পরিবর্তে সেন্টে প্রকাশ করা হবে। অবশ্যই, একটি ফ্লোট দ্বারা গুণটি পুরো জিনিসটিকে একটি ফ্লোটে রূপান্তরিত করে এবং যেমনটি উল্লেখ করা হয়েছে, এটি 64 বিটের মধ্যে ফিট করার জন্য যথেষ্ট ছোট হওয়া দরকার এবং এখনও এটি সঠিক হতে পারে .01


2

05AB1E, 64 58 51 বাইট

0T27¹)vy¹‚ï{0è})¥•_ÄÄ™wu24@•2'.:7ô)ø€PO¹"5.1"*+ïTn/

ব্যাখ্যা

0T27¹)                                               # list of price brackets
      vy¹‚ï{0è})                                     # min of each with input
                ¥                                    # calculate deltas to get amounts within each bracket
                 •_ÄÄ™wu24@•2'.:7ô                   # list of price rates with CPUC included
                                  )ø                 # zip with amounts for each rate
                                    €PO              # multiply amounts by their rates and sum
                                       ¹"5.1"*+      # add LIRA/PBOP
                                               ïTn/  # round to 2 decimals

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


1

পার্ল 5, 73 বাইট

সুস্পষ্ট সমাধান। 72 বাইট, প্লাস 1 এর -neপরিবর্তে -e

printf'%.2f',$_*3.956314+($_-10)*($_>10)*.249284+($_-27)*($_>27)*.830879

সংরক্ষিত 5 ধন্যবাদ বাইট LLlAMnYP । ধন্যবাদ!


আমার পূর্ববর্তী মন্তব্যটি পুনরায় করুন, এই সম্পাদনাটি আসলে আপনার মূল ভাসমান পয়েন্টের ত্রুটিগুলি মুছে ফেলার জন্য সক্রিয় হয় ।
LLlAMnYP

@ এলএলএএমএনওয়াইপি, অবশ্যই কোনও ইনপুটটির উচ্চমানের মানটির জন্য কোনও আনুমানিক ত্রুটি থাকতে হবে। আশা করি এই সীমাটি যথেষ্ট পরিমাণে যথেষ্ট যে ওপিকে যত্ন নেই (কারণ এটি কোনও একক ব্যক্তির আবাসের জন্য অযৌক্তিক পরিমাণ জলের)।
এমএস 210

@ msh210 আপনি ফ্রেডের গল্প জানেন না !!
বিড়াল

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

1

ওরাকল এসকিউএল 11.2, 151 বাইট

SELECT ((DECODE(SIGN(:1-10),1,10,:1)*3.8476)+(DECODE(SIGN(:1-27),1,17,:1-10)*4.0932)+(DECODE(SIGN(:1-27),-1,0,:1-27)*4.9118))*1.015+:1*0.051 FROM DUAL;

আন golfed

SELECT ((DECODE(SIGN(:1-10),1,10,:1)*3.8476)+
       (DECODE(SIGN(:1-27),1,17,:1-10)*4.0932)+
       (DECODE(SIGN(:1-27),-1,0,:1-27)*4.9118))*1.015+
       :1*0.051
FROM DUAL

একটি বাইটের মধ্যে SELECTএবং ((DECODEসেভ করার জন্য জায়গাটি থেকে মুক্তি পান । একটি নামযুক্ত টেবিল ব্যবহার করে আরও 10 বাইট সংরক্ষণ করুন! 7 কলোনগুলি সরিয়ে এবং একটি চর কলামের নাম প্লাস তিনটি ব্যবহার করে একটি চর টেবিলের নাম ব্যবহার করে।
গিয়াকোমো গারাবেলো

@ জিয়াকোমো গারাবেলো: স্থানটি সরিয়ে ফেলা সর্বদা তুষারপাতের সাথে বাতিল হয়ে যায় এবং এসকিউএল ডেভেলপারের সাথে একটি ত্রুটি দেয়। তৈরি টেবিল স্ক্রিপ্টটি 10 ​​বাইটের বেশি যোগ করে।
জেটো

আপনাকে তৈরির স্ক্রিপ্টটি যুক্ত করতে হবে না ... এখানে দেখুন
গিয়াকোমো গ্যারাবেলো

1

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

x=>(x>27?(x-27)*4.985477+109.681:(x>10?(x-10)*4.1546+39.053:x*3.9053))+.051*x

আন golfed

f = x => {
  if (x > 27) {
    res = (x - 27) * 4.985477 + 109.681306
  } else if (x > 10) {
    res = (x - 10) * 4.154598 + 39.05314
  } else {
    res = x * 3.905314
  }
  return res + 0.051 * x
}

আমি LIRA এবং পিবিওপি সহগগুলিতে ফ্যাক্টার্ড করেছি। অতিরিক্ত 1.5% শেষে যুক্ত হয়।

গল্ফিংয়ের ক্ষেত্রে সম্ভবত সবচেয়ে কার্যকর সমাধান নয় তবে পার্লের থেকে কিছুটা আলাদা।

ভাসমান পয়েন্ট ত্রুটিটি বৃহত্তর সংখ্যার সাথে হওয়া উচিত এবং প্রতিটি সহগের সাথে 1 বা 2 অতিরিক্ত বাইট যুক্ত করে স্থির করা যায়।

f=x=>(x>27?(x-27)*4.985477+109.681:(x>10?(x-10)*4.1546+39.053:x*3.9053))+.051*x

console.log(f(15))
console.log(f(100))
console.log(f(200000))


আপনি প্রয়োজন হবে না ()প্রায় গুলি x>10?:, ?:সহযোগীদের ডান-থেকে-বাম। আমি মনে করি আপনি প্যারেন্টেটিকালগুলি যেমন (x-10)*4.154598+39.05314গুণমান x*4.154598-41.54598+39.05314সমানকে গুণ করে কিছু বাইটও সঞ্চয় করতে পারেন x*4.154598-2.49284
নিল

1

আর , 52 বাইট

approxfun(c(0,10,27,10^6),c(0,39.56,111.06,5036475))

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

0,10,27 এবং 10 ^ 6 এ আমার আগের উত্তরের মানগুলির ভিত্তিতে একটি লিনিয়ার আনুমানিক ফাংশন উত্পন্ন করে। ক্যাচ: ইনপুটটির উপরের সীমাটি 10 ​​^ 6।

approxfun(সঙ্গে ecdf, stepfun, splinefun, ইত্যাদি) অনেক চমৎকার বৈশিষ্ট্য R


0

ভিবিএ, 88 বাইট

Function W(V):W=Round(.051*V+.203*(V*19.238-(V-10)*(V>10)*1.228-(V-27)*(V>27)*4.093),2)
 

বেস রেট এবং উচ্চতর ব্যবহারের ডিফারেন্সিয়াল রেটগুলি 5 দ্বারা এবং গুণিত সিপিইউসি ফি গুণককে 5 (0.203) দ্বারা বিভক্ত করা হয়েছে।

ভিবি সম্পাদক একটি End Functionলাইন যুক্ত করবে , এ কারণেই টার্মিনাল লাইন ফিড অন্তর্ভুক্ত করা হয়েছে।


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