তারা কোন "কমা ক্লাব" এর সাথে যুক্ত তা আমার বন্ধুদের বলুন


16

সিলিকন ভ্যালি এর "তিন কমা ক্লাব" দৃশ্যগুলো দ্বারা অনুপ্রাণিত মত, এই এক , আপনি দশ জন পর্যন্ত লোক "কমা ক্লাব" যা তারা একে অন্তর্গত কহন হবে এই প্রতিদ্বন্দ্বিতায়।

আপনি যদি "কমা ক্লাব" শব্দটির সাথে অপরিচিত হন তবে আমাকে ব্যাখ্যা করুন: আপনার কাছে থাকা অর্থটি যদি অন্তর্ভুক্ত থাকে তবে অন্তর্ভুক্ত থাকে range 1,000.00 থেকে $ 999,999.99; আপনি দ্বি-কমা ক্লাবে রয়েছেন যদি এটি $ 1,000,000.00 থেকে শুরু করে 9 999,999,999.99; এই "ক্লাবগুলি" ত্রি-কমা ক্লাবটির মাধ্যমে পুনরাবৃত্তি করে, যেহেতু পৃথিবীর কোনও ব্যক্তিই (এএফএইআইকে) এক ট্রিলিয়ন মার্কিন ডলারের বেশি মালিক না (জাপানি ইয়েন খুব দ্রুত আলাদা গল্প হবে)। সুতরাং, আপনার ব্যাংক অ্যাকাউন্টে কমা সংখ্যার সংখ্যাটি মার্কিন যুক্তরাষ্ট্র এবং গ্রেট ব্রিটেনের মধ্যে প্রচলিত স্বীকৃতি মান অনুসারে, আপনি যে কমা কমা ক্লাবটিকে বোঝায় তা বোঝায়। একই "কমা" বিধিগুলি নেতিবাচক সংখ্যার জন্য প্রযোজ্য (যদিও আপনি নেতিবাচক কমা ক্লাবে থাকতে চান না): অন্তর্ভুক্ত রেঞ্জে নেতিবাচক পরিমাণ [-0.01, -999।

পরীক্ষার ক্ষেত্রে

Friend    Amount
John      100000
Jamie     0.05
Kylie     1549001.10
Laura     999999999.99
Russ      986000000
Karla     1
Reid      99.99
Mark      999.99
Manson    1000.01
Lonnie    999999999999.00
Nelly     -123.45

সঠিক উত্তর:

John is in the 1-comma club.
Jamie is in the 0-comma club.
Kylie is in the 2-comma club.
Laura is in the 2-comma club.
Russ is in the 2-comma club.
Karla is in the 0-comma club.
Reid is in the 0-comma club.
Mark is in the 0-comma club.
Manson is in the 1-comma club.
Lonnie is in the 3-comma club.
Nelly is in the 0-comma club.

যাই হোক না কেন অ্যারের সেটআপ আপনি একটি পেতে প্রয়োজন friendsএবং অ্যারে amountsঅ্যারের আপনার স্কোর দিকে গণনা করা হয় না। পাইথনের জন্য, নিম্নলিখিত কোড গণনা করে না:

f = ['John', 'Jamie', 'Kylie', 'Laura', 'Russ', 'Karla', 'Reid', 'Mark', 'Manson', 'Lonnie']
a = ['100000', '0.05', '1549001.10', '999999999.99', '986000000', '1', '99.99', '999.99', '1000.01', '999999999999.00']

সম্পাদনা করুন: দয়া করে সংশোধিত পরীক্ষার কেসগুলি দেখুন

আমি পরীক্ষার কেসগুলি থেকে প্রকৃত স্ট্রিং কমাগুলি সরিয়ে দিয়েছি বিষয়গুলিকে কিছুটা আরও কঠিন করে তুলতে, কেবল কমা গণনার বিপরীতে।


2
আমি মনে করি না আপনি আউটপুট ফর্ম্যাটটি খুব পরিষ্কার করেছেন। "Name number,Name number,..."গ্রহণযোগ্য কিছু কি ?
FryAmTheEggman

2
চ এর এন্ট্রিগুলি কি ইতিবাচক হওয়ার গ্যারান্টিযুক্ত, বা -$1,234.561-কমা ক্লাবেও থাকবে?
জোনাথন অ্যালান

2
@not_a_robot আপনি ফ্রাইয়ের মন্তব্যে সম্বোধন করতে পারবেন? কোনও ফরমেটে নাম এবং সংখ্যার জোড়া আউটপুট দেওয়ার পক্ষে কি এটি যথেষ্ট?
মার্টিন ইন্ডার

1
@ ফ্রাইআম দ্য এজিগম্যান না, আউটপুটটি ফর্ম্যাটে থাকা দরকার"<name> is in the <number of commas>-club."
কৃষ্ণচূড়ায়

1
পরীক্ষার মামলাগুলি অনুমানযোগ্য নয়। এমনকি যদি সেগুলি হয়, উপরে জোনাথন অ্যালান উত্থাপিত বড় নেতিবাচক বিষয়গুলির বিষয়ে কোনও পরীক্ষার মামলা নেই।
পিটার টেলর

উত্তর:


10

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

a=>a.map(([s,n])=>s+` is in the ${n.toFixed(n<0?3:4).length/3-2|0}-comma club.`)

[বন্ধু, পরিমাণ] অ্যারের একটি অ্যারে নেয় এবং "বন্ধু এন-কমা ক্লাবে আছে" এর একটি অ্যারের প্রদান করে। স্ট্রিং। অতিরিক্ত ট্রেলিং জিরো যুক্ত করে কাজ করে যাতে দৈর্ঘ্য 0-কমা ক্লাবের জন্য 6-8 হয়, 1-কমা ক্লাবের জন্য 9-11, 2-কমা ক্লাবের জন্য 12-15 ইত্যাদি length

https://jsfiddle.net/cau40vmk/1/


আমি মনে করি না এটি নেতিবাচক সংখ্যার জন্য কাজ করে। উদাহরণস্বরূপ, এটি নেলিকে (-123.45) 1-কমা ক্লাবটিতে রাখবে। আমি খাটো করার সুপারিশ করছি Math.log10(n*n)/6|0
আর্নৌল্ড

@ আর্নল্ড আহা হ্যাঁ, আমি |0ছাঁটা শূন্যে ভুলে গেছি , সুতরাং এটি জেমির জন্য সঠিক উত্তর দেয়।
নীল

8

PostgreSQL, 61 বাইট

SELECT f||' is in the '||div(log(@a),3)||'-comma club.'FROM p

@xপরম মান x, log(x)10-ভিত্তিক লগারিদম এবং div(y, x)Y / x এর পূর্ণসংখ্যা ভাগফল গণনা করে।


সেটআপ:

CREATE TEMP TABLE p AS
SELECT * FROM (VALUES
    ('John', 100000),
    ('Jamie', 0.05),
    ('Kylie', 1549001.10),
    ('Laura', 999999999.99),
    ('Russ', 986000000),
    ('Karla', 1),
    ('Reid', 99.99),
    ('Mark', 999.99),
    ('Manson', 1000.01),
    ('Lonnie', 999999999999.00),
    ('Nelly', -123.45)
) AS p (f, a)

আউটপুট:

            ?column?            
--------------------------------
 John is in the 1-comma club.
 Jamie is in the 0-comma club.
 Kylie is in the 2-comma club.
 Laura is in the 2-comma club.
 Russ is in the 2-comma club.
 Karla is in the 0-comma club.
 Reid is in the 0-comma club.
 Mark is in the 0-comma club.
 Manson is in the 1-comma club.
 Lonnie is in the 3-comma club.
 Nelly is in the 0-comma club.
(11 rows)

একটি প্রতিযোগিতামূলক এসকিউএল উত্তরটি দেখে ভাল লাগল - ভাল হয়েছে!
টবি স্পিড

6

জেলি , 34  32 বাইট

AḞbȷL’⁶;“£ṙƬs⁾`¬ụṂ“¢<ỴȦ8£l»jµ€⁹żY

একটি ডায়াডিক লিঙ্ক (ফাংশন) যা সংখ্যার (দশমিক / পূর্ণসংখ্যার) হিসাবে ব্যাংক ব্যালেন্সের একটি তালিকা এবং স্ট্রিং হিসাবে নামের একটি তালিকা নেয় এবং স্ট্রিংগুলির একটি তালিকা প্রদান করে।

এটি অনলাইন চেষ্টা করুন! - ফুটারটিçYকেবল ফাংশনটি কল করে এবং লাইন ফিডের সাথে ফলাফলের তালিকায় যোগ দেয় যাতে পুরো প্রোগ্রাম হিসাবে চালিত হওয়ার সময় এটির দুর্দান্ত ফলাফল হয়।

কিভাবে?

AḞbȷL’⁶;“£ṙƬs⁾`¬ụṂ“¢<ỴȦ8£l»jµ€⁹żY - Main link: bankBalances, names
                             €    - for each bankBalance:
A                                 - absolute value (treat negatives and positives the same)
 Ḟ                                - floor (get rid of any pennies)
  bȷ                              - convert to base 1000
    L                             - length (number of digits in base 1000)
     ’                            - decrement by one
      ⁶;                          - concatenate a space with that   ...because -------.
        “         “       »       - compressed list of strings:                       ↓
         £ṙƬs⁾`¬ụṂ                -     " is in the"  ← cannot compress a trailing space :(
                   ¢<ỴȦ8£l        -     "-comma club."
                           j      - join that list of strings with the "number plus space"
                            µ     - monadic chain separation (call that result L)
                              ⁹   - right argument (names)
                               ż  - zip with L

4

পিএইচপি, 76 74 বাইট

// data as associative array
$d=[Poorman=>-1234,John=>100000,Jamie=>0.05,Kylie=>1549001.10,Laura=>999999999.99,Russ=>1000000000,Karla=>1,Reid=>99.99,Mark=>999.99,Manson=>1000.01,Lonnie=>999999999999.00];
// code
foreach($d as$n=>$a)printf("$n is in the %d-comma club.
",log($a*$a,1e6));

ভাগ্যক্রমে আমি ইন্টে কাস্ট করতে হবে না (যেমন আমি সিতে করতে হবে); পিএইচপি এই জন্য নিখুঁতভাবে না %d


ঘি! আমি কি এখানে প্রথম অক্ষর গণনার পরিবর্তে গণনা করব?
তিতাস

4

গণিত (86 বাইট)

সেটআপ (স্ট্রিংয়ের নাম সহ, সংখ্যার অর্থ হিসাবে):

n = {"John", "Jamie", "Kylie", "Laura", "Russ", "Karla", "Reid", "Mark", "Manson", "Lonnie", "Nelly"};
m = {100000, 0.05, 1549001.10, 999999999.99, 1000000000, 1, 99.99, 999.99, 1000.01, 999999999999.00, -123.45}

প্রচষ্টা:

MapThread[#~~" is in the "~~ToString@Max[Floor@Log[10^3,#2],0]~~"-comma club."&,{n,m}]

ম্যাথামেটিকার সমস্ত স্ট্রিং ফাংশনগুলির মধ্যে নামের মধ্যে "স্ট্রিং" অন্তর্ভুক্ত থাকে, তাই আমার মনে হয় লগগুলি সংক্ষিপ্ত। Max[...,0]বিরক্তিকর ঋণাত্মক সংখ্যা বা যারা মধ্যে -1 এবং 1 ডলার নিজের নেতিবাচক অনন্ত সাথে মোকাবিলা হয়। Negativeণাত্মক সংখ্যার লগতে কল্পিত স্টাফ অন্তর্ভুক্ত থাকে তবে ম্যাথামেটিকা ​​সহায়কভাবে এটিকে অগ্রাহ্য করে যখন কোনও গ্রহণ করার সময় Floor!


4

জাপট , 36 বাইট

এটি প্রথম ইনপুট হিসাবে দ্বিতীয় হিসাবে নাম গ্রহণ করে takes

V+`   e {w0 x4 l /3-2|0}-¬mµ club

ব্যাখ্যা

V+`   e {w0 x4 l /3-2|0}-¬mµ club
V+                                   // Second input +
  `                                  // compressed string:
      e                              // " is in the " 
        {              }             // Insert here:
         w0                          //   The larger of 0 and the first input
            x4                       //   Rounded to the 4th decimal
               l                     //   Length
                        -¬mµ club    // "-comma club"
                                     // A closing backtick is auto-inserted at the end of the program

স্টপ সংক্ষেপণের জন্য জাপট শোক লাইব্রেরি ব্যবহার করে ।

দ্বারা @ নিল অনুপ্রাণিত সমাধান

@ বুদ্ধিমানের জন্য 7 টি বাইট সংরক্ষণ করা হয়েছে

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


1
আমি মনে করি আপনি Vw0 x4 l /3-2|06 বাইটগুলি সংরক্ষণ করে মধ্যম বিভাগে কেবল করতে পারেন :-)
ETH প্রোডাকশনগুলি

1
আমি মনে করি আপনি বিপরীত ক্রমে ইনপুট নিয়ে একটি বাইট সংরক্ষণ করতে পারেন:V+`...{w0...
ETH প্রোডাকশনগুলি

3

এমএটিএল, 50 48 43 বাইট

`j' is in the 'i|kVn3/XkqV'-comma club'&hDT

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

ব্যাখ্যা

`                   % Do...While loop
  j                 % Explicitly grab the next input as a string
  ' is in the the ' % Push this string literal to the stack
  i                 % Grab the next input as a number
  |                 % Compute the absolute value
  k                 % Round towards zero
  V                 % Convert to a string
  n3/Xk             % Divide the length of the string by 3 and round up
  q                 % Subtract one
  V                 % Convert to a string
  '-comma club'     % Push this string literal to the stack
  &h                % Horizontally concatenate the entire stack
  D                 % Display the resulting string
  T                 % Push TRUE to the stack, causing an infinite loop which automatically
                    % terminates when we run out of inputs
                    % Implicit end of do...while loop

3

আর, 68 বাইট

সেটআপ:

f <- c('John', 'Jamie', 'Kylie', 'Laura', 'Russ', 'Karla', 'Reid', 'Mark', 'Manson', 'Lonnie', 'Nelly')
a <- c(100000, 0.05, 1549001.10, 999999999.99, 986000000, 1, 99.99, 999.99, 1000.01, 999999999999.00, -123.45)

সমাধান:

cat(paste0(f, " is in the ",floor(log10(abs(a))/3)),"-comma club.\n"))

অ্যাকাউন্টের পরম মানের বেস 10 লগটি নিন, গোল করে ডাউন করুন এবং নামগুলি মুদ্রণ করুন।

আমি নিশ্চিত নই যে aচরিত্রের ভেক্টর হ'ল এটি আরও ছোট হতে পারে কিনা ...


1
নেলির ক্ষেত্রে কী, যার -123.45 ডলার রয়েছে? এই log10কল NaNনেতিবাচক জন্য গুলি উত্পাদন করবে । দেখে মনে হচ্ছে log10(abs(a))কাজ করবে।
কৃষ্ণাঙ্গ

ওফস, আপনি ঠিক বলেছেন, উপরের নমুনায় নেলি অন্তর্ভুক্ত ছিল না। এবং আমি স্পেসিফিকেশনটি ভুলভাবে পড়েছি ... আমি বুঝলাম নেতিবাচক মান 0 টি কমা ক্লাব হওয়া উচিত।
জো

পরিবর্তে abs(x), ব্যবহার করুন pmax(a,1)- এটি 1 এর চেয়ে কম কিছু নেবে এবং এটি 1 করবে, নেতিবাচক সংখ্যার জন্য ভাল ফলাফল দেয়। এবং পরিবর্তে floor(log10(...)/3)আপনি ব্যবহার করতে পারেন log10(...)%/%3। আমি মনে করি এটি 66 বাইটে নেমে গেছে (এবং নেতিবাচকগুলির জন্য সঠিক)।
গ্রেগর -

1
এছাড়াও লক্ষণীয় যে এর মধ্যে একটি সম্পূর্ণ 7 বাইট হ'ল cat()এবং \n... কনসোলে স্ট্রিং সহ ভেক্টর প্রিন্ট করা যথেষ্ট ভাল বলে বিবেচিত হতে পারে (পাইথনের উত্তরগুলির মতো * আহেম *)।
গ্রেগর - 0:

এটি 3 পরে একটি অতিরিক্ত বন্ধনী আছে এটি জেমির জন্য -1 ক্লাবকে আউটপুট করে। পিএমএক্স (এ, 1) ব্যবহার করে এটি ঠিক করে।
বিএলটি

3

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

@ বুদ্ধিমানের জন্য 3 টি বাইট সংরক্ষণ করা হয়েছে

2 বাইট সংরক্ষণ করেছেন @ কায়সকে ধন্যবাদ

n=>m=>n+` is in the ${m>1?Math.log10(m)/3|0:0}-comma club.`

ডেমো


1
এর সাথে বাইট সংরক্ষণ করুন `${}`এবং আপনি এই ফাংশনটির n=>m=>...পরিবর্তে(n,m)=>...
সাইওস

2

ভিম, 72 বাইট

:%s;\v +\-=(\d+).*;\=' is in the '.(len(submatch(1))-1)/3.' comma club'

কোনওভাবেই আমার দেখানো উচিত যে পিছনে ফিরে এসেছে, তবে কীভাবে তা অনিশ্চিত। এটি কেবলমাত্র একটি প্রাথমিক রেইজেক্স উত্তর, যে আমি নিশ্চিত যে কোনও রেজেক্স ভাষা পরাজিত হতে পারে। আমি ভি ব্যবহার করতাম তবে আমি মনে করি যে ভি এর বিকল্প কমান্ডগুলি /ডিফল্টরূপে পৃথক হিসাবে ব্যবহার করে এবং কীভাবে এটি বিভাজন সম্পর্কে অভিযোগ না করা যায় তা আমি বুঝতে পারি না।

ওপির টেবিল হিসাবে ইনপুট নেয় এবং টেবিল হিসাবে মানগুলি ফিরিয়ে দেয়, তবে "এক্স কমা ক্লাবে রয়েছে" দ্বারা প্রতিস্থাপিত আর্থিক তথ্য সহ

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


আমি \-=কিছু যোগ করে ভাবেন না । এছাড়াও, আপনি যদি নিজের \v (\d*).*;
ইনপুটটির

2

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

Äï€g3/î<“-comma†Ú“«“€ˆ€†€€ “ì‚ø»

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

ব্যাখ্যা

Ä                                 # absolute value of input
 ï                                # convert to int
  €g                              # length of each
    3/                            # divided by 3
      î                           # round up
       <                          # decrement
        “-comma†Ú“«               # append string "-comma club" to each number
                   “€ˆ€†€€ “ì     # prepend string "is in the " to each number
                             ‚    # pair with second input
                              ø   # zip
                               »  # join by spaces and newlines

2

পাইথন 2, 69 বাইট

আমাদের অ্যারে সেটআপ করুন:

n = ['John', 'Jamie', 'Kylie', 'Laura', 'Russ', 'Karla', 'Reid', 'Mark', 'Manson', 'Lonnie']
a = [100000, 0.05, 1549001.10, 999999999.99, 1000000000, 1, 99.99, 999.99, 1000.01, 999999999999.00]

এবং আমাদের ফাংশনটি তখন হতে পারে:

f=lambda n,a:'%s is in %s comma club'%(n,min(3,(len(str(int(a)))/3)))

আমাদের প্রদান:

>>> [f(x,y) for x,y in zip(n,a)]
['John is in 2 comma club', 'Jamie is in 0 comma club', 'Kylie is in 2 comma club', 'Laura is in 3 comma club', 'Russ is in 3 comma club', 'Karla is in 0 comma club', 'Reid is in 0 comma club', 'Mark is in 1 comma club', 'Manson is in 1 comma club', 'Lonnie is in 3 comma club']

যদি অ্যারে প্রশ্নের অনুরূপ অনুরূপ হওয়া প্রয়োজন, তবে সমাধানটির জন্য ব্যয় 76 76 বাইট:

f=lambda n,a:'%s is in %s comma club'%(n,min(3,(len(str(int(float(a))))/3)))

2

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

$args[0]|%{$_[0]+" is in the "+(('{0:N}'-f$_[1]-split',').Count-1)+"-comma club."}

এর 2D-অ্যারে ইনপুট ধরে নেওয়া হচ্ছে

cc.ps1 @(@("John",100000),@("Jamie",0.05),@("Kylie",1549001.10),@("Laura",999999999.99),@("Russ",986000000),@("Karla",1),@("Reid",99.99),@("Mark",999.99),@("Manson",1000.01),@("Lonnie",999999999999.00),@("Nelly",-123.45))

আউটপুট হয় John is in the 1-comma club. Jamie is in the 0-comma club. Kylie is in the 2-comma club. Laura is in the 2-comma club. Russ is in the 2-comma club. Karla is in the 0-comma club. Reid is in the 0-comma club. Mark is in the 0-comma club. Manson is in the 1-comma club. Lonnie is in the 3-comma club. Nelly is in the 0-comma club.


2

হাস্কেল, 71 বাইট

n#a=n++" is in the "++(show.truncate.logBase 1e3.abs$a)++"-comma club."

একটি অপারেটর '#' সংজ্ঞা দেয় যা সঠিক উত্তর সরবরাহ করে। উদাহরণ:

*Main> "John"#100000
"John is in the 1-comma club."

দুর্ভাগ্যক্রমে, হাস্কেলের log10অন্যান্য অনেক ভাষার মতো একটি কমপ্যাক্ট ফাংশন নেই, তবে এর একটি কার্যকর logBaseফাংশন রয়েছে যার অর্থ আমাদের উত্তরটি 3 দ্বারা ভাগ করার দরকার নেই দুর্ভাগ্যবশত, logBase 1000 0.05একটি নেতিবাচক সংখ্যা, সুতরাং আমাদের ব্যবহার করা দরকার truncateচেয়ে দীর্ঘfloor এটা সুসম্পন্ন করতে।

পরীক্ষার মামলা সহ পুরো প্রোগ্রাম:

(#) :: (RealFrac n, Floating n) => [Char] -> n -> [Char]
n#a=n++" is in the "++(show.truncate.logBase 1e3.abs$a)++"-comma club."

testCases = [
 ("John",      100000),
 ("Jamie",     0.05),
 ("Kylie",     1549001.10),
 ("Laura",     999999999.99),
 ("Russ",      986000000),
 ("Karla",     1),
 ("Reid",      99.99),
 ("Mark",      999.99),
 ("Manson",    1000.01),
 ("Lonnie",    999999999999.00),
 ("Nelly",     -123.45)]

main = putStrLn $ unlines $ map (uncurry (#)) testCases

নিম্নলিখিত ফলাফল দেয়:

John is in the 1-comma club.
Jamie is in the 0-comma club.
Kylie is in the 2-comma club.
Laura is in the 2-comma club.
Russ is in the 2-comma club.
Karla is in the 0-comma club.
Reid is in the 0-comma club.
Mark is in the 0-comma club.
Manson is in the 1-comma club.
Lonnie is in the 3-comma club.
Nelly is in the 0-comma club.

1

কে, 66 বাইট

    /n is names and a is amounts
    n
    ("John";"Jamie";"Kylie";"Laura";"Russ";"Karla";"Reid";"Mark";"Manson";"Lonnie")
    a
    ("100000";"0.05";"1549001.10";"999999999.99";"1000000000";,"1";"99.99";"999.99";"1000.01";"999999999999.00")
    /the function
    {x," is in the ",($(#.q.cut[3;*"."\:y])-1)," comma club"}./:+(n;a)
    /output
    ("John is in the 1 comma club";"Jamie is in the 0 comma club";"Kylie is in the 2 comma club";"Laura is in the 2 comma club";"Russ is in the 3 comma club";"Karla is in the 0 comma club";"Reid is in the 0 comma club";"Mark is in the 0 comma club";"Manson is in the 1 comma club";"Lonnie is in the 3 comma club")

1

পাইথন 2.7 , 89 86 84 বাইট

for g,b in zip(*input()):print g,'is in the',`(len('%d'%b)+~(b<0))/3`+'-comma club.'

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

পুরো প্রোগ্রাম যা দুটি তালিকার একটি তালিকা নেয় - স্ট্রিং হিসাবে নাম, সংখ্যা হিসাবে ব্যাংক ব্যালেন্স - এবং ফলাফলগুলি স্ট্রিংগুলি মুদ্রণ করে।


1

সি #, 125 বাইট

(p,n)=>{for(int x=0;x<p.Length;x++)Console.Write(p[x]+" is in the "+(n[x]<1e3?0:n[x]<1e6?1:n[x]<1e9?2:3)+"-comma club.\n");};

অজ্ঞাতনামা ফাংশন যা ওপি'র বিন্যাসে ফলাফল মুদ্রণ করে।

পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

using System;

class CommaClub
{
    static void Main()
    {
        Action<string[], double[]> f =
        (p,n)=>{for(int x=0;x<p.Length;x++)Console.Write(p[x]+" is in the "+(n[x]<1e3?0:n[x]<1e6?1:n[x]<1e9?2:3)+"-comma club.\n");};

        // test cases:
        string[] personArr = new[] {"John", "Jamie", "Kylie", "Laura", "Russ", "Karla", "Reid", "Mark", "Manson", "Lonnie", "Nelly"};
        double[] amountArr = new[] {100000, 0.05, 1549001.10, 999999999.99, 1000000000, 1, 99.99, 999.99, 1000.01, 999999999999.00, -123.45};
        f(personArr, amountArr);
    }
}

1

পাইথন 3 ( 207 159 110 95) 86 বাইট, @ আইওয়াসেটেনবাইগ্রুকে ধন্যবাদ)

কিছুটা সেটআপ:

f = ['John', 'Jamie', 'Kylie', 'Laura', 'Russ', 'Karla', 'Reid', 'Mark', 'Manson', 'Lonnie', 'Nelly']
a = [100000, 0.05, 1549001.10, 999999999.99, 986000000, 1, 99.99, 999.99, 1000.01, 999999999999.00, -123.45]

আমার প্রচেষ্টা:

['%s is in the %d-comma club.'%(p,-(-len(str(int(abs(v))))//3)-1) for p,v in zip(f,a)]

ফলাফল:

['John is in the 1-comma club.', 'Jamie is in the 0-comma club.', 'Kylie is in the 2-comma club.', 'Laura is in the 2-comma club.', 'Russ is in the 2-comma club.', 'Karla is in the 0-comma club.', 'Reid is in the 0-comma club.', 'Mark is in the 0-comma club.', 'Manson is in the 1-comma club.', 'Lonnie is in the 3-comma club.', 'Nelly is in the 0-comma club.']

সম্পাদনা করুন: সবকিছুকে পরম মানগুলিতে রূপান্তর করা আমাকে 15 বাইট সংরক্ষণ করেছে।


1
সর্বাধিক গুরুত্বপূর্ণভাবে, এটি একটি কোড স্নিপেট, সাধারণত আমরা কেবল ফাংশন বা সম্পূর্ণ প্রোগ্রামগুলিকেই অনুমতি দিই। গল্ফিংয়ের ক্ষেত্রে, আপনি অনেকগুলি স্থান সরিয়ে ফেলতে পারেন। চেষ্টা করুন: ["%s is in the %d-comma club."%(p,v.count(','))for p,v in zip(f,a)]এছাড়াও, আপনাকে অবশ্যই একটি বাইট গণনা অন্তর্ভুক্ত করতে হবে।
কনর ও'ব্রায়ান

আপনি করতে পারেন print'\n'.join([your array])এবং আসলে মুদ্রণ আউটপুট।
এলরোনড

2
সাইটে স্বাগতম! নেতিবাচক (যেমন -123.45) একের পর এক বন্ধ (যেহেতু আপনি এটি গণনা করেন -)। তবে সংখ্যার একটি তালিকা না নিয়ে কেন সংরক্ষণ করবেন (আমি কি ভুল ব্যাখ্যা দিয়েছি?)। আপনাকে আমদানি বিবৃতি যুক্ত করতে হবে, এবং এটি যেমন একটি স্নিপেট, কোনও প্রোগ্রাম বা ফাংশন নয় (পূর্বনির্ধারিত হিসাবে রয়েছে, এবং যদি কোনও ভাল কারণ না থাকে তবে সেগুলি থেকে পরিবর্তন নিরুত্সাহিত করা হবে)।
জোনাথন অ্যালান

1
ধন্যবাদ, @ জোনাথন অ্যালান আমি বর্তমানে এটি উন্নত করার চেষ্টা করছি তাই আমাকে আমদানি গণনা করতে হবে না। আমি বুঝতে পারি পাইথনের math.ceilফাংশন সম্ভবত আমার স্কোরটিতে বেশ কিছুটা ওভারহেড যুক্ত করে।
কৃষ্ণাঙ্গ

2
আপনি প্রতিস্থাপন 9 বাইট সংরক্ষণ করতে পারবেন (-len(str(abs(v)).split('.')[0])সঙ্গে len(str(int(float(v))))। আপনার পরীক্ষার সেটে কোনও নেতিবাচক সংখ্যা নেই (উদাহরণগুলিতে, একটি আছে)। আপনি যদি পরিপূরক হতে চান, 5 টি বাইট করতে ব্যয় করুন len(str(abs(int(float(v)))))- যা কেবলমাত্র আপনার 4 বাইট সংরক্ষণ করে।
iwaseatenbyagrue

1

পার্ল 6, 107 95 বাইট

for @f {printf "%s is in the %d-comma club.\n",@f[$++],(abs(@a[$++].split(".")[0]).chars-1)/3;}

আমার গর্বিত কাজ নয়, যদি কোনও গল্ফিং কৌশল ভুলে যায় তবে আমাকে মাথা ছেড়ে দিন। সম্পাদনা: -১২ বাইট @ ভেনকে ধন্যবাদ


কেন কাছাকাছি পেরেন ^@f.elems? বিটিডব্লিউ আপনার দরকার নেই .elems, for ^@fকাজ করে। আপনার নিজের নামকরণের দরকার নেই$x , ব্যবহার $_পরিবর্তে। এবং প্রিন্টফ ব্যবহার করবেন না, ব্যবহার করুন "{"interpolation"}"
ভেন

আপনার কেন দরকার তা আমি বুঝতে পারি না। কেন যাবে না for @f? তুমি ব্যবহার করতে পার$++ এটির সাথে চলতে সূচক হিসাবে (এবং এর মধ্যে সূচি @a)।
ভেন

পিসিতে im হিসাবে তাড়াতাড়ি অসুস্থ সম্পাদনা :)
হ্যাভার্ড নাইগার্ড

1
@ $ ++ সম্পর্কে শীর্ষস্থানীয়দের জন্য ধন্যবাদ। আমার "বাস্তব" প্রোগ্রামগুলিতে আমাকে প্রচুর ঝামেলা বাঁচায়। সবে পার্ল 6 তুলেছে।
সবেমাত্র তুলেছেন

আপনি কি নিশ্চিত যে বিরক্তিগুলি বাইটগুলি সংরক্ষণ করে না?
ভেন

1

পাইথন 2, 87 বাইট

for n,a in input():print n+' is in the %dd-comma club.'%'{:20,.2f}'.format(a).count(',')

সামান্য পুরানো (90 বাইট):

for n,a in input():print n+' is in the '+`'{:20,.2f}'.format(a).count(',')`+'-comma club.'

টিপলস (নাম, পরিমাণ) এর তালিকা হিসাবে ইনপুট নেয়।

আমি স্কুলে আমার ফোনে এটি করছি তাই আমি পরে এটি পরীক্ষা করব।


1

ডিসি, 56 54 বাইট

[P[ is in the ]Pd*vdZrX-1-3/n[-comma club.]pstz0<g]sglgx

এটি স্ট্যাকটি থেকে ইনপুট নেয়, যা স্ট্যাকের শীর্ষে প্রথম নাম, প্রথম নম্বর, দ্বিতীয় নাম, দ্বিতীয় নম্বর ইত্যাদি দিয়ে প্রি-লোড হওয়া উচিত should

এখানে স্ট্যাক লোড এবং ম্যাক্রো চালানোর উদাহরণ, জি:

#!/usr/bin/dc
_123.45         [Nelly]
999999999999.00 [Lonnie]
1000.01         [Manson]
999.99          [Mark]
99.99           [Reid]
1               [Karla]
986000000       [Russ]
999999999.99    [Laura]
1549001.10      [Kylie]
0.05            [Jamie]
100000          [John]
[P[ is in the ]Pd*v1/Z1-3/n[-comma club.]pstz0<g]sglgx

যা স্বাভাবিক আউটপুট উত্পাদন করে,

John is in the 1-comma club.
Jamie is in the 0-comma club.
Kylie is in the 2-comma club.
Laura is in the 2-comma club.
Russ is in the 2-comma club.
Karla is in the 0-comma club.
Reid is in the 0-comma club.
Mark is in the 0-comma club.
Manson is in the 1-comma club.
Lonnie is in the 3-comma club.
Nelly is in the 0-comma club.

কোডটির একটি ব্যাখ্যা এখানে রইল:

[P[ is in the ]Pd*v1/Z-1-3/n[-comma club.]pstz0<g]sglgx

[                    # begin macro string
P                    # print and pop person name
[ is in the ]P       # print and pop ' is in the '
# Get absolute value of number by squaring and square root
d*v                  # d=dup, *=multiply, v=root
1/                   # 1/ truncates to integer since scale is 0
Z                    # Z=number length
1-3/n                # n=print and pop (#digits - 1)//3
[-comma club.]p      # print '-comma club.' and newline
st                   # pop '-comma club.' off stack into register t
z0<g                 # Do macro g if 0 is less than z=stack height
]                    # end macro string
sg                   # Save macro g
lgx                  # Load g and do its initial execution

দ্রষ্টব্য, 1 সম্পাদনায় আমি dZrX-(d = ডুপ, জেড = সংখ্যার দৈর্ঘ্য, আর = সোয়াপ, এক্স = ভগ্নাংশ, - = বিয়োগ) প্রতিস্থাপন করেছি ( 1 দিয়ে 1/Zবিভাজক সংখ্যা, যা শূন্যের ডিফল্ট স্কেল দিয়ে পূর্ণসংখ্যায় কাটা হয়; তারপরে জেড = সংখ্যা দৈর্ঘ্য), দুটি বাইট সংরক্ষণ করা।


1

সুইফ্ট , 166 158 145 বাইট

var c="comma club",i=0
f.map{k,v in var a=abs(v);print(k,(1000..<1000000~=a ?1:1000000..<1000000000~=a ?2:1000000000..<1000000000000~=a ?3:0),c)}

এবং এখানে অভিধান:

var f = [
    "John": 100000, "Jamie": 0.05, "Kylie" : 1549001.10,
    "Laura": 999999999.99,"Russ":1000000000,"Karla": 1,
    "Reid": 99.99,"Mark": 999.99, "Manson": 1000.01,
    "Lonnie": 999999999999.00, "Nelly": -123.45
]

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


0

Clojure, 108 বাইট

(def f ["John", "Jamie", "Kylie", "Laura", "Russ", "Karla", "Reid", "Mark", "Manson", "Lonnie", "Nelly"])
(def a ["100000", "0.05", "1549001.10", "999999999.99", "986000000", "1", "99.99", "999.99", "1000.01", "999999999999.00", "-123.45"])

(map #(str %" is in the "(quot(-(count(nth(partition-by #{\.}(drop-while #{\-}%2))0))1)3)"-comma club.")f a)

নিশ্চিত না যে ফ্লোটগুলিতে অপারেটিং অক্ষরের ক্রমগুলির চেয়ে ছোট করা হবে। নিশ্চিত নয় যে অ-কার্যকারিতা উত্তর ঠিক আছে যা উত্তরের ক্রম দেয় sequ


0

রেবোল, 118 বাইট

d: charset"0123456789"forskip s 2[c: 0 parse s/2[opt"-"any[3 d and d(++ c)]]print[s/1"is in the"join c"-comma club."]]

অ্যারে ঘোষণার সাথে অবরুদ্ধ:

s: [
    {John} {100000}
    {Jamie} {0.05}
    {Kylie} {1549001.10}
    {Laura} {999999999.99}
    {Russ} {986000000}
    {Karla} {1}
    {Reid} {99.99}
    {Mark} {999.99}
    {Manson} {1000.01}
    {Lonnie} {999999999999.00}
    {Nelly} {-123.45}
    {Baz} {1.12345678}     ;; added extra Baz test case
]

d: charset "0123456789"
forskip s 2 [
    c: 0
    parse s/2 [
        opt "-"
        any [3 d and d (++ c)]
    ]
    print [s/1 "is in the" join c "-comma club."]
]

আউটপুট:

John is in the 1-comma club.
Jamie is in the 0-comma club.
Kylie is in the 2-comma club.
Laura is in the 2-comma club.
Russ is in the 2-comma club.
Karla is in the 0-comma club.
Reid is in the 0-comma club.
Mark is in the 0-comma club.
Manson is in the 1-comma club.
Lonnie is in the 3-comma club.
Nelly is in the 0-comma club.
Baz is in the 0-comma club.

0

জাভা 8 154 141 বাইট

m.keySet().stream().map(k->k+" is in the "+(((""+Math.abs(m.get(k).longValue()))).length()-1)/3+"-comma club.").forEach(System.out::println);

Ungolfed

public static void main(String[] args) {
    Map<String, Number> m = new LinkedHashMap<String, Number>(){{
        put("John", 100000);
        put("Jamie", 0.05);
        put("Kylie", 1549001.10);
        put("Laura", 999999999.99);
        put("Russ", 1000000000);
        put("Karla", 1);
        put("Reid", 99.99);
        put("Mark", 999.99);
        put("Manson", 1000.01);
        put("Lonnie", 999999999999.00);
        put("Nelly", -123.45);
    }};
    m.keySet().stream().map(k->k+" is in the "+(((""+Math.abs(m.get(k).longValue()))).length()-1)/3+"-comma club.").forEach(System.out::println);
}

1
আপনি এর পরিবর্তে String.valueOfএবং ব্যবহার করতে পারেন (((""+Math.abs(m.get(k).longValue())).length()-1)/3)
কেভিন ক্রুইজসেন

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