পরিবর্তন কাজ [বন্ধ]


10

আপনি একটি স্বয়ংক্রিয় নগদ নিবন্ধকের জন্য একটি প্রোগ্রাম লিখছেন। ব্যবহারকারীর নূন্যতম সংখ্যক ব্যবহৃত মুদ্রা ব্যবহার করে পরিবর্তনের প্রয়োজন। একটি প্রোগ্রাম লিখুন যা পরিমাণ নেয় (1.53 ডলার বলুন) এবং মার্কিন সংখ্যার পরিবর্তন দেয় - এই উদাহরণে: 1 এক্স ডলারের নোট, 1 এক্স পঞ্চাশ সেন্ট এবং 3 এক্স এক শতাংশ। সংক্ষিপ্ততম প্রোগ্রামটি বিজয়ী হবে। অন্যান্য মুদ্রা (যেমন যুক্তরাজ্যের সংজ্ঞা) এবং অস্বাভাবিক মুদ্রাগুলি (1, 2, 3 সেন্ট?) সমর্থন করার জন্য বোনাস পয়েন্টগুলি

আপনার এই মার্কিন সম্প্রদায়গুলি রয়েছে: 1 সেন্ট, 5 সেন্ট, 10 সেন্ট, 25 সেন্ট, 50 সেন্ট, 1 ডলার (নোট বা মুদ্রা), 2 ডলার, 5 ডলার, 10 ডলার।

আপনার কাছে যুক্তরাজ্যের এই সংজ্ঞা রয়েছে: 1 পেন্স, 2 পেন্স, 5 পেন্স, 10 পেন্স, 20 পেন্স, 50 পেন্স, £ 1, £ 2, £ 5 (নোট বা মুদ্রা), £ 10


3
এর জন্য সম্ভবত কিছুটা ব্যাখ্যা দরকার needs প্রথমত আপনার সম্ভবত উল্লেখ করা উচিত আমরা ন্যূনতম সংখ্যক মুদ্রা চাই (যা বোনাস প্রশ্নটি আরও কিছুটা আকর্ষণীয় করে তোলে, যেমন c 1c, 49c, 50c} এবং 98c একটি নির্দোষ অ্যালগরিদম বিচ্ছেদ করে)। দ্বিতীয়ত, একটি ইনপুট / আউটপুট ফর্ম্যাট দরকারী। অপ্রয়োজনীয় মানগুলি পরিচালনা করার বৈশিষ্ট্য (মেক-আপ মুদ্রার জন্য) সহায়তা করবে। শেষ অবধি - আপনি এখানে আধিপত্যগুলি তালিকাবদ্ধ করতে চান যাতে লোকেরা এটির সাথে অপরিচিত হলে এটি দেখার প্রয়োজন হবে না।
নবাব

বোনাস পয়েন্টগুলি কীভাবে কাজ করবে? সংক্ষিপ্ততম অনুষ্ঠানের জন্য যদি টাই থাকে?
gnibbler

@ জিগনিবার, স্টিফেন ফ্রাইয়ের বরাত দিয়ে: "[পয়েন্ট] নিরপেক্ষভাবে একটি জনসংখ্যার ভিত্তিক-নির্বাচিত গ্রাহক পরিষেবা ফোকাস পরামর্শ দ্বারা নির্ধারিত হয়, বয়স এবং লিঙ্গ দ্বারা ভেঙে দেওয়া - অর্থাৎ আমি।"
টমাস ও

আমি 50c জিজ্ঞাসা করতে যাচ্ছি কারণ আমি এখনও 50 শতাংশ মুদ্রা দেখিনি। তবে স্পষ্টতই
মার্টিন ইয়র্ক

উত্তর:


2

উইন্ডোজ পাওয়ারশেল, 108 111 117

একেবারে প্রথম প্রচেষ্টা, অবধি অবধি:

$i=+("$input"-replace'[^\d.]')
$args|%{0d+$_}|sort -des|%{$a=[math]::floor($i/$_)
if($a){$i-=$a*$_
"$a×$_"}}

বাস্তবায়ন নোট:

  1. পাইপলাইন দিয়ে ফিরে আসতে পরিমাণ গ্রহণ করে
  2. কমান্ড-লাইনের মাধ্যমে মুদ্রার সংজ্ঞাগুলির তালিকা গ্রহণ করে
  3. পরিমাণ একটি মুদ্রার চিহ্ন দিয়ে দেওয়া যেতে পারে; এটি ছিনিয়ে নেওয়া হবে (আসলে, অ-সংখ্যাসূচক কিছু)।
  4. বর্ণের তালিকা বাছাই করার দরকার নেই।
  5. প্রোগ্রামটি প্রদত্ত সংখ্যার সাথে প্রাপ্ত পরিমাণের তুলনায় প্রাপ্ত পরিমাণের চেয়ে ছোট পরিবর্তনের আউটপুট দেবে, যদি ১ শতাংশের মুদ্রাটি অনুপস্থিত থাকে তবে 1.53 এর জন্য 1.5।

যদি 3 এবং 4 এর সন্তুষ্ট হওয়ার প্রয়োজন না হয় (যেমন আমি ইনপুট ফর্ম্যাটটি নিয়ন্ত্রণ করে ;-)), তবে নিম্নলিখিত প্রোগ্রামটি যথেষ্ট (71):

$i=+"$input"
$args|%{$a=[math]::floor($i/$_)
if($a){$i-=$a*$_
"$a×$_"}}

2

গণিত: ১১০ টি চর

Sort[IntegerPartitions[Rationalize@#,Infinity,{10,5,2,1,1/2,1/4,1/10,5/100,1/100}],
    Length@#1<Length@#2&][[1]]&  

ব্যবহার

%[0.98]  
{1/100, 1/100, 1/100, 1/10, 1/10, 1/4, 1/2}  

অথবা

Tally@Sort[IntegerPartitions[Rationalize@#,Infinity,
                             {10,5,2,1,1/2,1/4,1/10,5/100,1/100}],
     Length@#1<Length@#2&][[1]]&  

(আরও ছয় অক্ষর) দেয়

{{1/100, 3}, {1/10, 2}, {1/4, 1}, {1/2, 1}}

অন্যান্য সংখ্যার জন্য, কেবল যুক্তি সারণী {10, ...., 5 / 100,1 / 100 change পরিবর্তন করুন


2

ডি: 225 অক্ষর

import std.algorithm,std.conv,std.stdio;void main(string[]args){auto m=args[1].findSplit(".");void p(T,S)(T t,T u,S s){foreach(v;[u,10,5,1]){writefln("%s %s%s",t/v,v,s);t-=(t/v)*v;}}p(to!int(m[0]),20,"");p(to!int(m[2]),25,"/100");}

আরও সুস্পষ্টভাবে:

import std.algorithm,std.conv,std.stdio;

void main(string[] a)
{
    auto m = a[1].findSplit(".");

    void p(T, S)(T t, T u, S s)
    {
        foreach(v; [u, 10, 5, 1])
        {
            writefln("%s %s%s", t / v, v, s);
            t -= (t / v) * v;
        }
    }

    p(to!int(m[0]), 20, "");
    p(to!int(m[2]), 25, "/100");
}

কেবল মার্কিন মুদ্রা পরিচালনা করে। কমান্ড লাইনে একটি ভাসমান পয়েন্টের মান হিসাবে মান গ্রহণ করে (1 ডলারের নীচে মানের জন্য অবশ্যই अग्रणी 0 থাকতে হবে)। মান হিসাবে অংশ গ্রহণ করে না। পৃথক লাইনে প্রতিটি ধরণের বিল / মুদ্রার সংখ্যা আউটপুট করে। যেমন 1.53 ফলাফলের একটি ইনপুট ফলাফল:

0 20
0 10
0 5
1 1
2 25/100
0 10/100
0 5/100
3 1/100


1

গণিত, 51 বাইট

#~NumberDecompose~{10,5,2,1,.5,.25,.1,.05,.01}&

ইনপুট

[1.53]

আউটপুট

{0, 0, 0, 1, 1, 0, 0, 0, 3.}


গাণিতিক, 82 বাইট - বোনাস -

(s=#~NumberDecompose~#2;Row@Flatten@Table[Table[#2[[i]]"+",s[[i]]],{i,Length@s}])&

ইনপুট

[37.6, {15, 7, 2.5, 1, 0.88, 0.2, 0.01}]

আউটপুট

15 +15 +7 +0.2 +0.2 +0.2 +


উম্মে, এই প্রশ্নটি সদৃশ থেকে বিভিন্ন সংজ্ঞা ব্যবহার করে।
ericw31415

ওপি ইনপুট / আউটপুট ফর্ম্যাট নির্দিষ্ট করে না।
J42161217

এই প্রশ্নটি 100 ডলার বিল ব্যবহার করে না এবং কোনও বোনাস নেই।
ericw31415

ঠিক আছে.ফিক্সড এবং কিছু বাইট সংরক্ষণ! বোনাস হিসাবে, আমি দয়া করে অনুরোধ করছি আপনি আবার প্রশ্ন পড়তে অনুরোধ। বিশেষত অংশ .. "অন্যান্য মুদ্রাগুলি সমর্থন করার জন্য বোনাস পয়েন্ট"
J42161217

উফফ, আমার ধারণা আমি তখন দেখিনি!
ericw31415

1

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

(n,v=[10,5,2,1,.5,.25,.1,.05,.01],l=[])=>{for(i in v)l[i]=n/v[i]|0,n%=v[i];return l}

(n,v=[10,5,2,1,.5,.25,.1,.05,.01],l=[])=>eval("for(i in v)l[i]=n/v[i]|0,n%=v[i];l")

একটি লোভী অ্যালগরিদম ব্যবহার করে।


0

এপিএল (ডায়ালগ) , 19 বাইট

সর্বনিম্ন ইউনিটে (পেনি / সেন্ট) প্রকাশিত কাঙ্ক্ষিত পরিমাণের জন্য এবং তারপরে বর্ণের জন্য অনুরোধ জানানো হয়।

CY'dfns'
 stamps

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

⎕CY'dfns'সিপি Y কর্মক্ষেত্রdfns

⎕ stamps⎕ ইনপুট জন্য জিজ্ঞাসা করুন এবং আর্গুমেন্ট হিসাবে ব্যবহার ফাংশনstamps

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