Tracks
/
jq
jq
/
Exercises
/
Raindrops
Raindrops

Raindrops

Easy

Instructions

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 one number is a factor of another is to use the 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".

jq Tips

The if-then-else expression will be helpful in this exercise.

One thing to note: the version of jq used in this track is 1.6. In this version, the else clause is required.

An example:

8, 12
| if . < 10
    then "\(.) is less than ten"
    else "\(.) is more than ten"
  end

outputs

"8 is less than ten"
"12 is more than ten"

But

8, 12
| if . < 10 then "\(.) is less than ten" end

outputs

jq: error: syntax error, unexpected end (Unix shell quoting issues?) at <top-level>, line 2:
| if . < 10 then "\(.) is less than ten" end
jq: error: Possibly unterminated 'if' statement at <top-level>, line 2:
| if . < 10 then "\(.) is less than ten" end
jq: 2 compile errors
Last updated 29 March 2023
Edit via GitHub The link opens in a new window or tab
jq Exercism

Ready to start Raindrops?

Sign up to Exercism to learn and master jq with 12 concepts, 46 exercises, and real human mentoring, all for free.