অনুকূল স্লাইডিং দরজা প্রস্থ সন্ধান করুন


13

স্লাইডিং দরজাগুলির দরজার প্রস্থের ভিত্তিতে বিভিন্ন দাম রয়েছে। বিভিন্ন দাম নিম্নরূপ:

  • 60 - 80 সেমি: ¤150
  • 81 - 100 সেমি: ¤200
  • 101 - 120 সেমি: 20220

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

নিয়মাবলী:

  • মোট প্রস্থ ইনপুট হিসাবে নেওয়া হবে
  • সমস্ত দরজা একই প্রস্থ হবে
  • যদি দুটি ধরণের দরজা একই রকম হয় তবে সবচেয়ে ছোট দরজা চয়ন করুন
  • প্রস্থগুলি দশমিক দশমিক নয় সেন্টিমিটারে হয়
    • দশমিক দশমিক রাউন্ড
  • পূর্ণসংখ্যা হিসাবে দাম ফিরিয়ে দেওয়া হবে (মুদ্রার সইয়ের প্রয়োজন নেই)
  • ইনপুট এবং আউটপুট বিন্যাসের ঐচ্ছিক, কিন্তু আউটপুট ক্রম হতে হবে: Number of doors, Width, Price
  • ইনপুট সীমার মধ্যে থাকবে [120 1000)

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

উদাহরণ:

Input: 156
Output: 2, 78, 300

Input: 331
Output: 3, 111, 660

Input: 420
Output: 4, 105, 880

এর প্রস্থ 201একটি আকর্ষণীয় পরীক্ষা ক্ষেত্রে দেখা যায় ...
AdmBorkBork

8
স্লাইডিং দরজা? স্পষ্টতই প্রতিটি দরজার একটি @ ডুরকনব দরকার।
অ্যালেক্স এ।

উত্তর:


2

05 এ বি 1 ই , 47 বাইট

কোড:

D120/ó>DU=/ó>=D101›iX220*=q}D80›iX200*=q}X150*=

সেরা জমা নয়, তবে কমপক্ষে কিছু :)

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


টিআইওতে 333 লাগানো [3, 112, 660] এর আউটপুট দেয় যখন (আফাইক) আউটপুটটি [3, 111, 660] হওয়া উচিত যেহেতু 3 * 111 যথাযথ 333 সমান হয়
হেলেন

২০১২ [2, 101, 440] এর পরিবর্তে [2, 101, 400] দেওয়ার ক্ষেত্রে একইরকম সমস্যা
হেলেন

4

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

t=>[[80,150],[100,200],[120,220]].map(([w,p])=>[n=-~(~-t/w),-~(~-t/n),n*p]).sort((a,b)=>a[2]-b[2])[0]

-~(~-a/b) 31-বিট পূর্ণসংখ্যার মধ্যে ম্যাথ.সিল (a / b) এর সমান।


4

পার্ল, 190 180 154 133 128 117 বাইট

+1 এর জন্য অন্তর্ভুক্ত -p

use POSIX;$m=1E4;for$q(80,100,120){($m,@z)=($p,$n,ceil$_/$n)if$m>($p=(150,200,220)[$x++]*($n=ceil$_/$q))}$_="@z $m"

মন্তব্য করেছে:

use POSIX;                                  # for ceil()
$m = 1E4;                                   # init min price to 10k
for $q (80,100,120) {                       # iterate widths
    ($m,@z) = ($p,$n, ceil $_/$n)           # update min, output
    if $m > (                               #
       $p = (150,200,220)[$x++]             # grab price
          * ( $n = ceil $_/$q )             # times nr of doors needed
    )
}
$_="@z $m"

  • 11 টি বাইট ইনলাইন করে এবং দুটি অ্যারে হ্যাশ বিভক্ত করে সংরক্ষণ করুন

  • ব্যবহার করে 5 বাইট সংরক্ষণ করুন -p(@ দেব-নালকে ধন্যবাদ)

  • প্যাসিক্স :: সিল ব্যবহার করে আরও 18 টি বাইট সংরক্ষণ করুন এবং হ্যাশের জন্য তালিকা বাক্য গঠন ব্যবহার করে আরও 3 টি (@ এমএসসি 210 কে ধন্যবাদ)


চেয়ে খাটো sub r{$a=$_[0];~~$a==$a?$a:1+~~$a}হয় sub r{use POSIX;ceil pop}
এমএস 210

চেয়ে খাটো (80=>150,100=>200,120=>220)হয় (80,150,100,200,120,220)
এমএস 210

এটি কি খুব প্রশস্ত দরজার জন্য কাজ করে (যেখানে দাম 10_000 এর বেশি)?
এমএস 210

@ msh210 টিপসগুলির জন্য ধন্যবাদ, আমি সেগুলি অন্তর্ভুক্ত করব! না, এটি কেবল প্রশ্নে নির্দিষ্ট রেঞ্জের জন্যই কাজ করে, তবে যে কোনও [120-1000)একটি সর্বদা পরিবর্তিত 1E4হতে পারে 1E9...
কেনে

ওহ, আমি লক্ষ্য করি না যে প্রশ্নটি একটি ব্যাপ্তি নির্দিষ্ট করেছে।
এমএস 210

3

পাওয়ারশেল, 137 135 বাইট

param($a)$j=9e9;60..120|%{if((($c=[math]::ceiling($a/$_))*($p=(220,(200,150)[$_-le80])[$_-le100]))-lt$j){$j=($k=$c)*$p;$i=$_}}
$k;$i;$j

আউটপুট নিউলাইন-পৃথক।

আমরা ইনপুট নিতে $a, আমাদের খরচ সেট $jকরার 9000000000(উপায় যে আরো আমরা কখনও প্রয়োজন হবে চেয়ে সংখ্যক)। এর পরে, আমরা থেকে লুপ 60..120সঙ্গে |%{...}। প্রতিটি পুনরাবৃত্তি আমরা সিউডো-টের্নারি স্টেটমেন্ট$p দিয়ে বর্তমান আইটেমের দাম গণনা করি , তারপরে সিলিংয়ের গণনা করি । বর্তমানের মোটটি যদি আমরা দেখেছি এমন ছোটের তুলনায় সবচেয়ে ছোট ( ), এই সমস্ত পরিবর্তনগুলি সংরক্ষণ করুন: (মোট), (প্রয়োজনীয় দরজার সংখ্যা) এবং (দরজার প্রস্থ), এবং লুপটি চালিয়ে যান। লুপটি শেষ হয়ে গেলে, সেরা মানগুলি আউটপুট করুন।$c$a/$_$j$j$k$i

সম্পাদনা - সংরক্ষিত দুই সরিয়ে বাইট $cএবং $pমধ্যে বরাদ্দকরণ ifশর্তাধীন


2

পাইথ, 65 বাইট

ho+eNcehNTm[d*hd?>81ed150?<101ed220 200)f}eTr60 121m[d.EcQd)r2 17

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

ব্যাখ্যা

প্রথমে এটি সমস্ত সম্ভাব্য দরজার গণনা / দরজার প্রস্থের সংমিশ্রনের একটি তালিকা তৈরি করে এবং এই সংমিশ্রণের জন্য প্রতিটিটির জন্য মূল্য গণনা করে। তারপরে আমাদের কেবল দাম এবং দরজার প্রস্থ অনুসারে এটি অর্ডার করতে হবে এবং ফলাফলের তালিকার প্রথম উপাদানটি নিতে হবে।

কোডের ব্যাখ্যাটি পরে আমি এটি গল্ফ করেছিলাম দয়া করে আমাকে এটি গল্ফ করতে সহায়তা করুন, এটি বেশ দীর্ঘ।

ho + eNcehNTm [d * hd?> 81ed150? <101ed220 200) f} eTr60 121m [d.EcQd) r2 17 # কিউ = ইনপুট

                                                   মি আর 2 17 # মানচিত্রের সীমা (2,17) থেকে
                                                    [d) # দরজার গণনা সহ প্রথম তালিকা
                                                      .EcQd # এবং প্রস্থ দ্বিতীয়
                                        চ # টি দিয়ে ফিল্টার মানচিত্রের ফলাফল
                                         range r60 121 # পরিসীমা (60,121)
                                          eT # দরজা প্রস্থ
          মি # মানচিত্রের ফিল্টার ফলাফল ডি
           [d) # প্রথমে দরজা গণনা এবং প্রস্থ সহ একটি তালিকায়
             * এইচডি # বহু দরজা গণনা সহ
                ?> 81ed150? <101ed220 200 # দরজা প্রতি মূল্য, টের্নারিগুলির সাথে সরল সন্ধান
 o # অর্ডার মানচিত্রের ফলাফল এন
  + eNcehNT # অর্ডার কী = দাম + প্রস্থ / 10
এইচ # প্রথম উপাদানটি সেরা

1

জাভাস্ক্রিপ্ট (ES6) 96

n=>[80,100,120].map((d,i)=>[d=-~(~-n/d),-~(~-n/d),d*[150,200,220][i]]).sort((a,b)=>a[2]-b[2])[0]

@ নীল দ্বারা উল্লিখিত হিসাবে =-~(~-n/d), 32 বিট বা তারও কম সংখ্যার পূর্ণসংখ্যার জন্য বৃত্তাকার সাথে সমান।


1

আর , 135 104 বাইট

"!"=utf8ToInt;cbind(n<-16:1,w<-ceiling(scan()/n),p<-n*approx(!"<Qex",!"–ÈÜÜ",w,"c")$y)[order(p)[1],]

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

31 বাইট দ্বারা সংরক্ষিত

  • সংক্ষেপিত সংখ্যা
  • ব্যবহার utf8ToInt
  • ব্যবহার "!" সংক্ষিপ্ত ফাংশন কল
  • ভেক্টরাইজড ফাংশন ব্যবহার করে
  • মোট দৈর্ঘ্য নির্ধারণ না
  • cbindভেরিয়েবল সংজ্ঞায়নের পরিবর্তে সরাসরি ব্যবহার করা

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

  1. approxদৈর্ঘ্যের উপর ভিত্তি করে একটি একক দরজার দাম ফেরত দেয়। এটি NAব্যাপ্তির বাইরে ফিরে আসে [60,120]
  2. অনুমানের ভিত্তিতে, মোট দরজার সংখ্যা 16 (মোট দৈর্ঘ্য 1000) এর বেশি হতে পারে না। 16 থেকে 1 পর্যন্ত সমস্ত দরজা পরীক্ষা করা হয় এবং ট্রিপলেটটি (number of doors, door width, total price)ফেরত দেওয়া হয়।
  3. orderফাংশন সর্বনিম্ন মূল্য খোজা ব্যবহার করা হয়; তার উপর ভিত্তি করে সঠিক ট্রিপলেট বের করা হয়েছে। সম্পর্কের ক্ষেত্রে, order প্রথম প্রবেশকারীটি ফিরে আসবে এবং যেহেতু আমরা 16 থেকে 1 পর্যন্ত লুপ করেছি সর্বাধিক সংখ্যক দরজা (ক্ষুদ্রতম দরজার প্রস্থ) ফিরে আসবে।

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