Hide

Problem I
Sine Wave

Accepted submissions to this problem will be granted a score of 100

Let us attempt to draw a sine wave using whitespace and the X character. Sine waves are usually drawn horizontally, but standard program output is ordered from top to bottom. We will therefore draw our wave vertically.

Our program shall accept two arguments:

  • N, which controls how many waves should be drawn

  • L, which controls how many lines are used to print the waves

Most programming languages have a built in function to compute the sine of a value. For example, Python has a built in math.sin function that we could leverage. Alas, the sine function takes radians, distance travelled along the perimeter of a unit circle, as input. How will we figure out the value to input for each line?

A circle is 2π radians. Since we wish to draw N waves, the total distance in radians is given by 2πN. Therefore, the distance travelled from one line to the next will be 2πNL. We can then see that for the ith line, where 0i<L, the distance travelled in radians up to that line is ri=i2πNL.

We are not done yet, as sin(x) will return a real number between 1.0 and 1.0, inclusive. We cannot print a negative number of Xs, and to make sure the wave is clearly visible, we still need an appropriate number of Xs. Let us use 40 for the full width, or peak-to-peak amplitude, of the waves. In other words, an amplitude of 20, also called semi-amplitude. Then we need to linearly transform the return value of the sine function to a real number between 0 and 40, and round that number to figure out how many X characters to print. See the table below for examples.

Sine value

Number of X characters to print

1.0

0

0.0

20

1.0

40

0.8414709848078

37

Input

Input consists of two lines. The first line contains the integer N, the number of waves to draw, where 1N10. The second line contains the integer L, the number of lines used to draw the waves, where 1L1000.

Output

Draw the sine wave as described above. Exactly one newline character (\n) should immediately follow the last X on each line. If your program outputs additional whitespace, it will be considered incorrect.

Sample Input 1 Sample Output 1
1
20
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXX
XXXX
X

X
XXXX
XXXXXXXX
XXXXXXXXXXXXXX
Sample Input 2 Sample Output 2
2
12
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXX
XXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXX
XXX
Sample Input 3 Sample Output 3
1
40
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXX
XXXXXXXX
XXXXXX
XXXX
XX
X



X
XX
XXXX
XXXXXX
XXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
Hide

Please log in to submit a solution to this problem

Log in