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


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.