CCC '01 S2 - Spirals (Exact Version)

View as PDF

Submit solution

Points: 7
Time limit: 1.0s
Memory limit: 256M

Problem type
Canadian Computing Competition: 2001 Stage 1, Junior #4, Senior #2

A spiral of numbers can start and end with any positive integers less than 100. Write a program which will repeatedly accept two positive integers x and y as input, and output a list of numbers from x to y inclusive, shown in a spiral. You may assume that the end value is greater than or equal to the start value.

A spiral starts with the first number in the centre. The next number appears immediately below the first number. The spiral continues with the numbers increasing in a counter-clockwise direction until the last number is printed.

Input Specification

The first line will contain a positive integer T, the number of test cases. You may assume T \le 100.

Each of the next T lines will contain two integers, x and y. You may assume 1 \le x \le y < 100.

Output Specification

Output T spirals. Between every pair of adjacent spirals, there should be exactly one blank line.

For every spiral, each line should have the same number of characters printed. There must be at least one line with no leading whitespace and no trailing whitespace. Adjacent columns must be separated by exactly one space. Numbers in a column must be right-aligned and take up exactly the number of characters equal to the length of the largest integer in the column. Numbers that do not take up the full width should be padded with spaces. If a number is not present in a given location, spaces should be printed as a replacement.

Note: Unlike the original version of this problem, this version provides an output specification that must be matched exactly. Failure to adhere exactly to the specification will result in a Wrong Answer verdict.

Sample Input 1

1
10 27

Sample Output 1

      27 26
16 15 14 25
17 10 13 24
18 11 12 23
19 20 21 22

Sample Input 2

2
1 2
1 1

Sample Output 2

1
2

1

Comments


  • 4
    Lost_Cactus  commented on Oct. 22, 2022, 8:29 p.m.

    I love spirals!!!


  • 3
    Blackgaurdian3  commented on Jan. 3, 2022, 5:15 p.m.

    For people that are struggling with presentation errors:

    The length of every output line should be the same, accomplished by padding with whitespace either at the front or at the end.


  • 2
    Tommy_Shan  commented on Sept. 11, 2021, 2:52 a.m. edit 3

    The formatting stuff can make you crazy.

    When life gives you lemons, give life Spirals (Exact Version) back.


  • 3
    Mackrel  commented on May 26, 2020, 5:54 p.m. edit 5

    I keep getting Presentation Errors, and I have absolutely no idea where I'm going wrong. The only test I'm passing successfully is the last one. All my personal tests seem to be successful, so I really don't know what part of my code doesn't fit with the format.

    Edit: I finally figured it out! There must be a newline in-between each spiral, but NOT at the beginning or end of the entire output. Furthermore, the rules for whether a number requires padding or not depends on the highest number of digits within each individual column, not the entire spiral.

    For example, a spiral from 5-10 would look like this:

    10 9
     5 8
     6 7

    As you can see, the first column requires padding on its single-digit numbers because there is a double-digit number within the column (10), whereas the second column only has single-digit numbers, so padding is required to not exist.

    Hope this helps to sort out any confusion for future individuals!


    • 4
      BreadTurtle  commented on June 12, 2020, 6:05 a.m. edited

      There are several possibilities:

      • For columns with single digits, they are supposed to have single padding to be as compact as possible.

      • Make sure all lines have exactly the same number of character count, aka padding subject to the compact constraints (see first point).

      • There is supposed to be a newline at the very end last numerical output line.

      I hope it helps!


  • 1
    Dr_Dabbidy  commented on Dec. 20, 2019, 9:27 p.m. edit 2

    I am getting whitespace errors. I think the issue at this point is that they want a very specific formatting. One hard thing to do is when you have something as follows:

    1  
    2 3

    You still need to put the spaces above the 3 to make each row have the same number of characters.

    EDIT: I got it! One main thing I wasn't looking at was making sure each row has extra spaces/as many characters as each other row. If you are using rstrip() or something similar, make sure you are not removing the spaces that you needed for padding.


  • 2
    ScriptKitty  commented on July 16, 2018, 9:58 p.m.

    I cannot seem to figure out the correct format for the answer. Can somebody please help and give some more examples? The correct matrix for 1 to 99 would be very beneficial!

    Thanks


    • -4
      Dr_Dabbidy  commented on Dec. 20, 2019, 9:44 p.m. edit 3
      73 72 71 70 69 68 67 66 65   
      74 43 42 41 40 39 38 37 64 99
      75 44 21 20 19 18 17 36 63 98
      76 45 22  7  6  5 16 35 62 97
      77 46 23  8  1  4 15 34 61 96
      78 47 24  9  2  3 14 33 60 95
      79 48 25 10 11 12 13 32 59 94
      80 49 26 27 28 29 30 31 58 93
      81 50 51 52 53 54 55 56 57 92
      82 83 84 85 86 87 88 89 90 91

      The above is the correct format.