নিরীহ স্টক মার্কেট


16

একাধিক ব্যক্তির বিনিয়োগের ডেটার সাথে একটি স্ট্রিং দেওয়া হয়েছে, তারা কত লাভ / ক্ষতি রেকর্ড করেছে তা সন্ধান করুন।

স্ট্রিংটিতে কেবল মূল এবং ছোট হাতের অক্ষর থাকে:

AABaBbba

প্রতিটি অক্ষর একজন ব্যক্তির প্রতিনিধিত্ব করে - একটি মূলধনির অর্থ কেনা, একটি ছোট হাতের অক্ষরের অর্থ বিক্রয়। তারা যে শেয়ারটি বিনিয়োগ করছে (সিজিএলএফ) তার মূল্য $ 50 থেকে শুরু হয়। কেউ কেনার পরে, দাম 5% বেড়ে যায়। কেউ বিক্রি করার পরে দাম 5% কমে যায়। আপনার অংশগ্রহণকারী প্রতিটি ব্যক্তি কত টাকা পয়সা করেছেন / হারিয়েছেন তা আপনাকে খুঁজে বের করতে হবে।

মন্তব্য:

  • স্ট্রিং সর্বদা বৈধ থাকবে, প্রথম কেনা ছাড়া কোনও বিক্রয় হবে না। এছাড়াও, যে সমস্ত স্টক কিনেছেন তারা অবশেষে এটি বিক্রি করবেন।
  • আপনার গণনাগুলি কমপক্ষে 6 দশমিক জায়গায় সঠিক হওয়া উচিত। তবে চূড়ান্ত উত্তরগুলি দুটি দশমিকের সাথে গোল করা উচিত।

পরীক্ষার কেস:

ইনপুট: AABaBbba

  • উত্তর: কিনুন - $ 50
  • উত্তর: কিনুন -। 52.50
  • বি: কিনুন - .1 55.125
  • a: বিক্রয় - .8 57.88125
  • বি: কিনুন - .9 54.9871875
  • বি: বিক্রয় -। 57.736546875
  • বি: বিক্রয় -। 54.8497195313
  • a: বিক্রয় -। 52.1072335547
  • ব্যক্তি একটি লাভ: 57.88125+52.1072335547-50-52.50= 7.4884835547
  • ব্যক্তি বি লাভ: 57.736546875+54.8497195313-55.125-54.9871875=2.4740789063

আউটপুট: A:7.49,B:2.47 (অর্ডার কোনও বিষয় নয়, পৃথককারী প্রয়োজন নেই)


ইনপুট: DGdg

  • ডি: কিনুন - 50 ডলার
  • জি: কিনুন -। 52.50
  • d: বিক্রয় - .1 55.125
  • g: বিক্রয় - .3 52.36875
  • ব্যক্তি ডি লাভ: 55.125-50=5.125
  • ব্যক্তি জি মুনাফা: 52.36875-52.50=-0.13125

আউটপুট: D:5.13,G:-.13


ইনপুট: ADJdja

  • উত্তর: কিনুন - $ 50
  • ডি: কিনুন -। 52.50
  • জে: কিনুন - .1 55.125
  • d: বিক্রয় - .8 57.88125
  • j: বিক্রয় - .9 54.9871875
  • a: বিক্রয় - .2 52.237828125
  • ব্যক্তি মুনাফা: 52.237828125-50=2.237828125
  • ব্যক্তি ডি লাভ: 57.88125-52.50=5.38125
  • ব্যক্তি জে লাভ: 54.9871875-55.125=-0.1378125

আউটপুট: A:2.24,D:5.38,J:-.14


@ এথ প্রডাকশনগুলি যখন আপনি আউটপুট মুদ্রণ করেন, তখন ডেটাটাইপ কী তা আসলে কিছু যায় আসে না, কেবল সঠিক তথ্য জানানো দরকার।
— জিওকাভেল

চূড়ান্ত ফলাফলটি বৃত্তাকার পরিবর্তে কাটা যাবে?
— Mwr247

@ এমডব্লিউ দুঃখিত, আপনাকে গোল করতে হবে।
— জিওকাভেল

আমাদের কি বর্ণমালা অনুসারে আউটপুট দিতে হবে?
— পুর্কাকুডারী

এছাড়াও, পাইথনের roundস্টাফগুলি অদ্ভুতভাবে; ডিফল্ট হিসাবে 5.125বৃত্তাকার 5.12। এটা কি গৃহীত?
— পুর্কাকুডারী

উত্তর:



3

জাভা, 277 বাইট

class c{public static void main(String[]a){double[]m=new double[26];double s=50;for(byte b:a[0].getBytes()){if(b>=97){m[b-97]+=s;s*=.95;}else{m[b-65]-=s;s*=1.05;}}char g=65;for(double k:m){if(k!=0){System.out.println(g+String.format(java.util.Locale.ENGLISH,"%.2f",k));}g++;}}}

Ungolfed:

class c {
    public static void main(String[]a) {
        double[] m = new double[26];
        double s = 50;
        for(byte b : a[0].getBytes()) {
            if(b>=97) {
                m[b-97]+=s;  
                s*=.95;
            } else {
                m[b-65]-=s;
                s*=1.05;
            }
        }
        char g=65;
        for(double k:m) {
            if(k!=0) {
                System.out.println(g+String.format(java.util.Locale.ENGLISH,"%.2f",k));
            }
            g++;
        }
    }
}

বিন্যাসের অনেক কিছুই অপ্রয়োজনীয়। দশমিক বিন্দু ঠিক হওয়ার আগে 0 থাকা, কমা এবং কলোন প্রয়োজন হয় না।
— জিওকাভেল

দুর্দান্ত এটি আমার বাইট গণনা উল্লেখযোগ্যভাবে হ্রাস করে
— বাইটবিট

শ্রেণীর পাবলিক হওয়ার দরকার নেই।
— একটি স্প্যাগেটো

লোকেল নির্দিষ্ট করা কি প্রয়োজনীয়? এটি "3,54" হিসাবে দেখায় তাতে আমার আপত্তি নেই।
— জিওকাভেল

আপনার অর্থকে float
— একটিতে

2

জাভাস্ক্রিপ্ট (ES7), 145 142 বাইট

আমি ফলাফলগুলি খুঁজে পাওয়ার জন্য আরও ছোট উপায় খুঁজে পাচ্ছি না ...

x=>[for(c of(i=50,a={},x))(a[d=c.toUpperCase()]=a[d]||0,c<"["?(a[d]-=i,i*=1.05):(a[d]+=i,i*=.95))]&&Object.keys(a).map(k=>[k,a[k].toFixed(2)])

মজাদার ঘটনা: এটি কেবল 101 বাইট হবে যদি রাউন্ডিং প্রয়োজনীয়তার জন্য না হয়:

x=>[for(c of(i=50,a={},x))(a[d=c.toUpperCase()]=a[d]||0,c<"["?(a[d]-=i,i*=1.05):(a[d]+=i,i*=.95))]&&a

43 বাইট অনেক বেশি মনে হচ্ছে..আমি নিশ্চিত যে আপনি আরও ভাল উপায় খুঁজে পেতে পারেন!
— জিওকাভেল

2

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

P=50
M={}
for c in input():C=c.upper();u=c>C;u+=~-u;M[C]=M.get(C,0)+P*u;P*=1-u*.05
for k in M:print(k,round(M[k],2))

Ungolfed

price = 50
profits = {}
for char in input():
    upper = char.upper()
    direction = 2 * (char > upper) - 1
    profits[upper] = profits.get(upper, 0) + price * direction
    price *= 1 - direction * .05
for key in profits:
    print(key, round(profits[key], 2))

এটি u=2*(c>C)-1সরাসরি করা সহজতর মনে হয়।
— xnor
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.