관리 메뉴

A seeker after truth

exercism raindrops solution 본문

Algorithm/문제풀이

exercism raindrops solution

dr.meteor 2020. 1. 24. 19:05

P)

Your task is to convert a number into a string that contains raindrop sounds corresponding to certain potential factors. A factor is a number that evenly divides into another number, leaving no remainder. The simplest way to test if a one number is a factor of another is to use the [modulo operation](https://en.wikipedia.org/wiki/Modulo_operation).

 

The rules of `raindrops` are that if a given number:

 

- has 3 as a factor, add 'Pling' to the result.

- has 5 as a factor, add 'Plang' to the result.

- has 7 as a factor, add 'Plong' to the result.

- _does not_ have any of 3, 5, or 7 as a factor, the result should be the digits of the number.

 

## Examples

 

- 28 has 7 as a factor, but not 3 or 5, so the result would be "Plong".

- 30 has both 3 and 5 as factors, but not 7, so the result would be "PlingPlang".

- 34 is not factored by 3, 5, or 7, so the result would be "34".

 

 

sol1)

drops = ((3,'Pling'), (5,'Plang'), (7,'Plong'))
def convert(n):
	"""Converts a number to a string according to the raindrop sounds."""
	speak = [s for f, s in drops if n % f == 0]
	return "".join(speak) if speak else str(n)