## DEV Community

Brittany

Posted on • Updated on

# Codewar Challenges

Today I worked on three coding challenges, while I KNOW there are easier ways to do all of these, I was happy to find a solution nonetheless. Feel free to comment on the best ways to accomplish these challenges.

# Challenge 1

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.

For example,

``````createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
# => returns "(123) 456-7890"
``````

# My Solution

``````def createPhoneNumber(numbers)
one = numbers[0]
two = numbers[1]
three = numbers[2]
four = numbers[3]
five = numbers[4]
six = numbers[5]
seven = numbers[6]
eight = numbers[7]
nine = numbers[8]
ten = numbers[9]

"(#{one}#{two}#{three}) #{four}#{five}#{six}-#{seven}#{eight}#{nine}#{ten}"

end
``````

# Challenge 2

An isogram is a word that has no repeating letters, consecutive or non-consecutive. Implement a function that determines whether a string that contains only letters is an isogram. Assume the empty string is an isogram. Ignore letter case.

For example,

``````is_isogram("Dermatoglyphics" ) == true
is_isogram("aba" ) == false
is_isogram("moOse" ) == false # -- ignore letter case
``````

# My Solution

``````def is_isogram(string)
s = string.downcase
("a".."z").all?{|c| s.count(c) <= 1}

end
``````

# Challenge 3

You probably know the "like" system from Facebook and other pages. People can "like" blog posts, pictures or other items. We want to create the text that should be displayed next to such an item. Implement a function likes :: [String] -> String, which must take in input array, containing the names of people who like an item. It must return the display text as shown in the examples:

``````likes [] // must be "no one likes this"
likes ["Peter"] // must be "Peter likes this"
likes ["Jacob", "Alex"] // must be "Jacob and Alex like this"
likes ["Max", "John", "Mark"] // must be "Max, John and Mark like this"
likes ["Alex", "Jacob", "Mark", "Max"] // must be "Alex, Jacob and 2 others like this"
``````

# My Solution

``````def likes(names)
if names.empty?
return "no one likes this"
elsif names.length == 1
return names[0] + " likes this"
elsif names.length == 2
return names[0] + " and " + names[1] + " like this"
elsif names.length == 3
return names[0] + ", " + names[1] + " and " + names[2] + " like this"
else names.length > 3
total = names.length - 2
return names[0] + ", " + names[1] + " and " + total.to_s + " others like this"
end
end
``````

As I learn more, I plan to keep doing coding challenges. I will post more as I do them and hopefully we can learn from each other.