Statistics

Problem Statement for "Solar"

Problem Statement

We are designing a solar collector. Our design is a 6 x 6 x 6 cube, with one side being transparent to admit sunlight, and the opposite side coated with cells that collect energy. Our problem is that we need two 1 x 1 square beams running from the base to the roof to support the structure, and they block the sunlight from getting between the window and the collector.

During the course of a year, sunlight passes through the window at all possible angles. Create a class Solar that contains a method dark that will be given the location x1,y1 of one beam and the location x2,y2 of the other beam and will calculate what fraction of the collector never receives direct sunlight.

We can solve this problem by considering only a cross-section parallel to the base of the structure. Let the line segment y=0,0<=x<=6 be the window, and y=6,0<=x<=6 be the collector. In this view, each beam is a square with its sides given by xi, yi, xi+1, yi+1.

Definition

Class:
Solar
Method:
dark
Parameters:
int, int, int, int
Returns:
String
Method signature:
String dark(int x1, int y1, int x2, int y2)
(be sure your method is public)

Notes

  • The answer must be returned in reduced form with no blanks or leading zeroes
  • The two beams may be in the same place. In this case there is really only one beam.
  • Diagonally adjacent beams touch each other, leaving no gap.(Example 0)
  • Return the 3 character string "0/1" if the entire collector can receive light

Constraints

  • x1,y1,x2,y2 all are between 0 and 5 inclusive

Examples

  1. 4

    4

    5

    3

    Returns: "1/5"

    (The coordinate grid is shown. 'X' indicates a 1 x 1 beam.) 6 +-+-+-+-+-+-+ Collector | | | | | | | 5 |-+-+-+-+-+-| | | | | |X| | 4 |-+-+-+-+-+-| | | | | | |X| 3 |-+-+-+-+-+-| | | | | | | | 2 |-+-+-+-+-+-| | | | | | | | 1 |-+-+-+-+-+-| | | | | | | | 0 +-+-+-+-+-+-+ Window 0 1 2 3 4 5 6 The collector is at y=6. The window is at y=0. The left-most X is the beam which completely fills the area 4<=x<=5,4<=y<=5. For this configuration, light can reach the left part of the collector. The farthest to the right that it can reach is when light enters at the lower left corner and just misses the top left corner of the leftmost beam; this ray of light has a slope of 5/4 so it strikes the collector at x=24/5. Thus 6 - 24/5 is always dark. This is 1/5 of the collector wall so your program should return "1/5"

  2. 1

    5

    4

    4

    Returns: "1/6"

    6 +-+-+-+-+-+-+ Collector | |X| | | | | 5 |-+-+-+-+-+-| | | | | |X| | 4 |-+-+-+-+-+-| | | | | | | | 3 |-+-+-+-+-+-| | | | | | | | 2 |-+-+-+-+-+-| | | | | | | | 1 |-+-+-+-+-+-| | | | | | | | 0 +-+-+-+-+-+-+ Window 0 1 2 3 4 5 6 Light can go to the left of the leftmost beam, and can also go through the gap between the 2 beams and to the right of the right beam. The left area is obviously 1 unit. The right area covers the segment (24/5, 6). The middle covers the segment (2,24/5). The union of the three segments covers 5 units. So 1/6 of the collector is always dark.

  3. 0

    3

    1

    3

    Returns: "0/1"

  4. 0

    0

    3

    4

    Returns: "1/30"

  5. 1

    1

    3

    4

    Returns: "7/120"

  6. 2

    3

    3

    4

    Returns: "1/10"

  7. 0

    0

    1

    4

    Returns: "1/30"

  8. 0

    2

    3

    5

    Returns: "1/6"

  9. 0

    4

    2

    5

    Returns: "1/6"

  10. 1

    4

    3

    5

    Returns: "1/6"

  11. 3

    5

    5

    5

    Returns: "1/3"

  12. 0

    0

    0

    0

    Returns: "0/1"

  13. 0

    0

    5

    4

    Returns: "1/30"

  14. 1

    4

    1

    4

    Returns: "0/1"

  15. 2

    3

    1

    4

    Returns: "1/20"

  16. 1

    4

    2

    4

    Returns: "1/5"

  17. 1

    4

    1

    4

    Returns: "0/1"

  18. 1

    5

    1

    5

    Returns: "1/6"

  19. 0

    0

    0

    5

    Returns: "1/6"

  20. 0

    0

    1

    4

    Returns: "1/30"

  21. 0

    0

    1

    5

    Returns: "1/6"

  22. 0

    0

    2

    4

    Returns: "1/30"

  23. 0

    0

    2

    5

    Returns: "1/6"

  24. 0

    0

    3

    4

    Returns: "1/30"

  25. 0

    0

    3

    5

    Returns: "1/6"

  26. 0

    0

    4

    4

    Returns: "1/30"

  27. 0

    0

    4

    5

    Returns: "1/6"

  28. 0

    0

    5

    4

    Returns: "1/30"

  29. 0

    0

    5

    5

    Returns: "1/6"

  30. 0

    1

    0

    5

    Returns: "1/6"

  31. 0

    1

    1

    4

    Returns: "1/30"

  32. 0

    1

    1

    5

    Returns: "1/6"

  33. 0

    1

    2

    4

    Returns: "1/40"

  34. 0

    1

    2

    5

    Returns: "1/6"

  35. 0

    1

    3

    4

    Returns: "1/60"

  36. 0

    1

    3

    5

    Returns: "1/6"

  37. 0

    1

    4

    4

    Returns: "1/120"

  38. 0

    1

    4

    5

    Returns: "1/6"

  39. 0

    1

    5

    5

    Returns: "1/6"

  40. 0

    2

    0

    5

    Returns: "1/6"

  41. 0

    2

    1

    4

    Returns: "1/30"

  42. 0

    2

    1

    5

    Returns: "1/6"

  43. 0

    2

    2

    4

    Returns: "1/90"

  44. 0

    2

    2

    5

    Returns: "1/6"

  45. 0

    2

    3

    5

    Returns: "1/6"

  46. 0

    2

    4

    5

    Returns: "1/6"

  47. 0

    2

    5

    5

    Returns: "1/6"

  48. 0

    3

    0

    5

    Returns: "1/6"

  49. 0

    3

    1

    4

    Returns: "1/5"

  50. 0

    3

    1

    5

    Returns: "1/6"

  51. 0

    3

    2

    5

    Returns: "1/6"

  52. 0

    3

    3

    5

    Returns: "1/6"

  53. 0

    3

    4

    5

    Returns: "1/6"

  54. 0

    3

    5

    5

    Returns: "1/6"

  55. 0

    4

    0

    5

    Returns: "1/6"

  56. 0

    4

    1

    4

    Returns: "1/5"

  57. 0

    4

    1

    5

    Returns: "1/3"

  58. 0

    4

    2

    5

    Returns: "1/6"

  59. 0

    4

    3

    5

    Returns: "1/6"

  60. 0

    4

    4

    5

    Returns: "1/6"

  61. 0

    4

    5

    5

    Returns: "1/6"

  62. 0

    5

    0

    5

    Returns: "1/6"

  63. 0

    5

    1

    5

    Returns: "1/3"

  64. 0

    5

    2

    5

    Returns: "1/3"

  65. 0

    5

    3

    5

    Returns: "1/3"

  66. 0

    5

    4

    5

    Returns: "1/3"

  67. 0

    5

    5

    5

    Returns: "1/3"

  68. 1

    0

    1

    5

    Returns: "1/6"

  69. 1

    0

    2

    5

    Returns: "1/6"

  70. 1

    0

    3

    5

    Returns: "1/6"

  71. 1

    0

    4

    5

    Returns: "1/6"

  72. 1

    0

    5

    5

    Returns: "1/6"

  73. 1

    1

    1

    5

    Returns: "1/6"

  74. 1

    1

    2

    5

    Returns: "1/6"

  75. 1

    1

    3

    4

    Returns: "7/120"

  76. 1

    1

    3

    5

    Returns: "1/6"

  77. 1

    1

    4

    4

    Returns: "1/20"

  78. 1

    1

    4

    5

    Returns: "1/6"

  79. 1

    1

    5

    4

    Returns: "1/24"

  80. 1

    1

    5

    5

    Returns: "1/6"

  81. 1

    2

    1

    5

    Returns: "1/6"

  82. 1

    2

    2

    4

    Returns: "1/15"

  83. 1

    2

    2

    5

    Returns: "1/6"

  84. 1

    2

    3

    4

    Returns: "2/45"

  85. 1

    2

    3

    5

    Returns: "1/6"

  86. 1

    2

    4

    4

    Returns: "1/45"

  87. 1

    2

    4

    5

    Returns: "1/6"

  88. 1

    2

    5

    5

    Returns: "1/6"

  89. 1

    3

    1

    5

    Returns: "1/6"

  90. 1

    3

    2

    4

    Returns: "3/20"

  91. 1

    3

    2

    5

    Returns: "1/6"

  92. 1

    3

    3

    4

    Returns: "1/60"

  93. 1

    3

    3

    5

    Returns: "1/6"

  94. 1

    3

    4

    5

    Returns: "1/6"

  95. 1

    3

    5

    5

    Returns: "1/6"

  96. 1

    4

    1

    5

    Returns: "1/6"

  97. 1

    4

    2

    4

    Returns: "1/5"

  98. 1

    4

    2

    5

    Returns: "3/10"

  99. 1

    4

    3

    5

    Returns: "1/6"

  100. 1

    4

    4

    5

    Returns: "1/6"

  101. 1

    4

    5

    5

    Returns: "1/6"

  102. 1

    5

    1

    5

    Returns: "1/6"

  103. 1

    5

    2

    5

    Returns: "1/3"

  104. 1

    5

    3

    5

    Returns: "1/3"

  105. 1

    5

    4

    5

    Returns: "1/3"

  106. 1

    5

    5

    5

    Returns: "1/3"

  107. 2

    0

    2

    5

    Returns: "1/6"

  108. 2

    0

    3

    5

    Returns: "1/6"

  109. 2

    0

    4

    5

    Returns: "1/6"

  110. 2

    0

    5

    5

    Returns: "1/6"

  111. 2

    1

    2

    5

    Returns: "1/6"

  112. 2

    1

    3

    5

    Returns: "1/6"

  113. 2

    1

    4

    5

    Returns: "1/6"

  114. 2

    1

    5

    5

    Returns: "1/6"

  115. 2

    2

    2

    5

    Returns: "1/6"

  116. 2

    2

    3

    5

    Returns: "1/6"

  117. 2

    2

    4

    4

    Returns: "7/90"

  118. 2

    2

    4

    5

    Returns: "1/6"

  119. 2

    2

    5

    4

    Returns: "1/18"

  120. 2

    2

    5

    5

    Returns: "1/6"

  121. 2

    3

    2

    5

    Returns: "1/6"

  122. 2

    3

    3

    4

    Returns: "1/10"

  123. 2

    3

    3

    5

    Returns: "1/6"

  124. 2

    3

    4

    4

    Returns: "1/20"

  125. 2

    3

    4

    5

    Returns: "1/6"

  126. 2

    3

    5

    5

    Returns: "1/6"

  127. 2

    4

    2

    5

    Returns: "1/6"

  128. 2

    4

    3

    4

    Returns: "1/5"

  129. 2

    4

    3

    5

    Returns: "4/15"

  130. 2

    4

    4

    5

    Returns: "1/6"

  131. 2

    4

    5

    5

    Returns: "1/6"

  132. 2

    5

    2

    5

    Returns: "1/6"

  133. 2

    5

    3

    5

    Returns: "1/3"

  134. 2

    5

    4

    5

    Returns: "1/3"

  135. 2

    5

    5

    5

    Returns: "1/3"

  136. 3

    0

    3

    5

    Returns: "1/6"

  137. 3

    0

    4

    5

    Returns: "1/6"

  138. 3

    0

    5

    5

    Returns: "1/6"

  139. 3

    1

    3

    5

    Returns: "1/6"

  140. 3

    1

    4

    5

    Returns: "1/6"

  141. 3

    1

    5

    5

    Returns: "1/6"

  142. 3

    2

    3

    5

    Returns: "1/6"

  143. 3

    2

    4

    5

    Returns: "1/6"

  144. 3

    2

    5

    5

    Returns: "1/6"

  145. 3

    3

    3

    5

    Returns: "1/6"

  146. 3

    3

    4

    4

    Returns: "1/20"

  147. 3

    3

    4

    5

    Returns: "1/6"

  148. 3

    3

    5

    4

    Returns: "1/12"

  149. 3

    3

    5

    5

    Returns: "1/6"

  150. 3

    4

    3

    5

    Returns: "1/6"

  151. 3

    4

    4

    4

    Returns: "1/5"

  152. 3

    4

    4

    5

    Returns: "7/30"

  153. 3

    4

    5

    5

    Returns: "1/6"

  154. 3

    5

    3

    5

    Returns: "1/6"

  155. 3

    5

    4

    5

    Returns: "1/3"

  156. 3

    5

    5

    5

    Returns: "1/3"

  157. 4

    0

    4

    5

    Returns: "1/6"

  158. 4

    0

    5

    5

    Returns: "1/6"

  159. 4

    1

    4

    5

    Returns: "1/6"

  160. 4

    1

    5

    5

    Returns: "1/6"

  161. 4

    2

    4

    5

    Returns: "1/6"

  162. 4

    2

    5

    5

    Returns: "1/6"

  163. 4

    3

    4

    5

    Returns: "1/6"

  164. 4

    3

    5

    5

    Returns: "1/6"

  165. 4

    4

    4

    5

    Returns: "1/6"

  166. 4

    4

    5

    4

    Returns: "1/5"

  167. 4

    4

    5

    5

    Returns: "1/5"

  168. 4

    5

    4

    5

    Returns: "1/6"

  169. 4

    5

    5

    5

    Returns: "1/3"

  170. 5

    0

    5

    5

    Returns: "1/6"

  171. 5

    1

    5

    5

    Returns: "1/6"

  172. 5

    2

    5

    5

    Returns: "1/6"

  173. 5

    3

    5

    5

    Returns: "1/6"

  174. 5

    4

    5

    5

    Returns: "1/6"

  175. 5

    5

    5

    5

    Returns: "1/6"

  176. 4

    4

    5

    2

    Returns: "1/30"


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: