Tell my friends to which "comma club" they belong
JavaScript (ES6), 80 bytes
a=>a.map(([s,n])=>s+` is in the ${n.toFixed(n<0?3:4).length/3-2|0}-comma club.`)
Takes an array of [friend, amount] arrays and returns an array of "friend is in the n-comma club." strings. Works by adding extra trailing zeros so that the length is 6-8 for the 0-comma club, 9-11 for the 1-comma club, 12-15 for the 2-comma club etc.
https://jsfiddle.net/cau40vmk/1/
PostgreSQL, 61 bytes
SELECT f||' is in the '||div(log(@a),3)||'-comma club.'FROM p
@x
is the absolute value of x
, log(x)
is base-10 logarithm and div(y, x)
computes the integer quotient of y/x.
Setup:
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)
Output:
?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)
Jelly, 34 32 bytes
AḞbȷL’⁶;“£ṙƬs⁾`¬ụṂ“¢<ỴȦ8£l»jµ€⁹żY
A dyadic link (function) which takes a list of bank balances as numbers (decimals / integers) and a list of names as strings and returns a list of strings.
Try it online! - the footer çY
simply calls the function and joins the resulting list with line feeds so it has nice output when run as a full program.
How?
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