You don't need the arbitrary join(':') after reverse() since sort() coerces the nested arrays to strings for you. That means you can avoid having to split again later.
I think you can even shorten (if I'm not mistaken) your solution by reducing one .map down and doing like me the surrounding in your first call to the .map method!
Should such a .surround method exist in String.prototype? I have came accross several cases where I would need it like in a WYSIWYG editor. But I don't want to risk proposing such a method to the community haha!
19 yo student *and* a full-time developer.
Building with Rails currently, exploring new frontiers.
I enjoy functional programming, Linux, FOSS, refactoring and mentoring :)
Not much of a challenge, I'm afraid. Pretty straight forward split, split, join, sort and join again. A one liner in most modern languages, I suspect.
In c# it would look like this:
#!/usr/bin/perlusewarnings;usestrict;usefeatureqw{ say };my$in='Fred:Corwill;Wilfred:Corwill;Barney:Tornbull;Betty:Tornbull;Bjon:Tornbull;Raphael:Corwill;Alfred:Corwill';sayjoin"",map"($_->[1], $_->[0])",sort{$a->[1]cmp$b->[1]||$a->[0]cmp$b->[0]}map[split/:/],split/;/,uc$in;
Lets do it:
It's pretty straightforward:
split(';')gets us allName:Surname.map(n=>n.split(':').reverse().join(':'))reverses them to beSurname:Name.sort()sorts them alphabetically.map(n=>(${n.split(':')[0]}, ${n.split(':')[1]}).toUpperCase())reformats every name (uppercase it, place parentheses and commas).join(''), which transforms the name array to an output stringHere is the output:
Same but different:
You don't need the arbitrary
join(':')afterreverse()sincesort()coerces the nested arrays to strings for you. That means you can avoid having to split again later.But Amin is right:
That's way shorter! Thanks a lot for the input
I see we got a similar solution you and I!
I think you can even shorten (if I'm not mistaken) your solution by reducing one
.mapdown and doing like me the surrounding in your first call to the.mapmethod!Should such a
.surroundmethod exist inString.prototype? I have came accross several cases where I would need it like in a WYSIWYG editor. But I don't want to risk proposing such a method to the community haha!Good take btw!
Rust:
My take at the challenge written in Elm
Source-Code
Unit test source-code
Not much of a challenge, I'm afraid. Pretty straight forward split, split, join, sort and join again. A one liner in most modern languages, I suspect.
In c# it would look like this:
Perl solution:
Anyone who says rex is too clever clearly hasn't bumped into bit-shifting code-golf lol
Rex is a very appropriate amount of cleverness 😉
Clever use of the regex split. I like it!