Can I have your number?
Write a function that accepts an array of 10 integers (between 0 and 9), that returns a string of those numbers in the form of a phone number.
The returned format must be correct in order to complete this challenge.
Don't forget the space after the closing parentheses!
Today's challenge comes from user xDranik on Codewars
Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!
Want to propose a challenge for a future post? Email yo+challenge@dev.to with your suggestions!
Top comments (26)
I think this challenge description is very country specific, as every country has a different way of formatting these.
I agree with the other commentors that we need an example in the post to make it easier to understand! Especially with all the different ways telephone numbers are handled country to country.
Luckily the linked Codewars page has an example!
JavaScript
Live demo on CodePen (with an alternative version in one line).
Why the one line solution?
No real reason. Both do the same, the first one is more verbose and easier to understand. I deleted the one-line one to avoid any confusion.
Nim
Well I think I've found my new language I want to learn.
Could you provide an example? The length and format tends to differ in different countries.
In Costa Rice, for example, it might be 8 or 11 numbers long; as in
8765-4321
, or, with the country code,(+506) 8765-4321
. Either way it’s not 10 characters.Thanks!
That's not the first time a challenge is not well explained. You need to grab the whole problem description here to let people give possible solutions. I like these challenges but need a good and clear description of the problem, why don't connect to codewars directly?
The special variable
$"
is used to separate arrays interpolated in double quotes. By default, it contains a space, but we need the numbers to be adjacent, so we set it locally (i.e. in a dynamic scope) to an empty string.Another possible short solution is
The substitution replaces each digit in the template string with the corresponding element of the
@_
array which keeps the list of the subroutine arguments./g
means "global", it's needed to replace all the digits, not just the first one. The/r
means "return" - normally, a substitution changes the bound left-hand side value, but with/r
, it just returns the value.Nice, basically what I got.
sprintf
works as well.The regex solution was pretty interesting. Thanks for the explanation!
python3
Erlang: (in the REPL)
Or you can use io_lib:format and assign the result to a variable instead.
Checking for valid input is fairly trivial, but the Erlang convention is to assume that something this far into the system is okay, and correct for the error by dying and letting the supervisor deal with it.
Python
anyone's skin crawling?