Codewars #■□ Pattern □■ : Wave

Task:

Complete the pattern, using the special character

■ □
In this kata, we draw some histogram of the sound performance of ups and downs.

Rules:

parameter waves The value of sound waves, an array of number, all number in array >=0.
return a string, ■ represents the sound waves, and □ represents the blank part, draw the histogram from bottom to top.

Example:

draw([1,2,3,4])

□□□■
□□■■
□■■■
■■■■

draw([1,2,3,3,2,1])

□□■■□□
□■■■■□
■■■■■■

draw([1,2,3,3,2,1,1,2,3,4,5,6,7])

□□□□□□□□□□□□■
□□□□□□□□□□□■■
□□□□□□□□□□■■■
□□□□□□□□□■■■■
□□■■□□□□■■■■■
□■■■■□□■■■■■■
■■■■■■■■■■■■■


draw([5,3,1,2,4,6,5,4,2,3,5,2,1])

□□□□□■□□□□□□□
■□□□□■■□□□■□□
■□□□■■■■□□■□□
■■□□■■■■□■■□□
■■□■■■■■■■■■□
■■■■■■■■■■■■■

draw([1,0,1,0,1,0,1,0])

■□■□■□■□

下面为具体的实现代码

std::string draw(std::vector waves)
{
    std::string s;
    //求waves里的最大值
    auto max_iter = std::max_element(waves.begin(), waves.end());
    int max=*max_iter;
    for(int i=max;i>0;--i)
    {
      for(int j:waves)
      {
        if(j>=i)
        {
          s.append ("■");
        }else{
          s.append ("□");
        }
      }
      if(i>1)
        s.append("\n");
    }
    return s;
}

你可能感兴趣的:(Codewars #■□ Pattern □■ : Wave)