File tree Expand file tree Collapse file tree 6 files changed +125
-0
lines changed Expand file tree Collapse file tree 6 files changed +125
-0
lines changed Original file line number Diff line number Diff line change 1+ # [ Staircase] ( https://www.hackerrank.com/challenges/staircase )  
2+ 
3+ Difficulty: #easy
4+ Category: #warmup
5+ 
6+ Staircase detail
7+ This is a staircase of size $ n = 4 $:
8+ 
9+ ``` text 
10+    # 
11+   ## 
12+  ### 
13+ #### 
14+ ``` 
15+ 
16+ Its base and height are both equal to n. It is drawn using # symbols
17+ and spaces. The last line is not preceded by any spaces.
18+ 
19+ Write a program that prints a staircase of size n.
20+ 
21+ ## Function Description  
22+ 
23+ Complete the staircase function in the editor below.
24+ 
25+ staircase has the following parameter(s):
26+ 
27+ *  int n: an integer
28+ 
29+ ## Print  
30+ 
31+ Print a staircase as described above.
32+ 
33+ ## Input Format  
34+ 
35+ A single integer, , denoting the size of the staircase.
36+ 
37+ Constraints
38+ 
39+ $ 0 < n \leq 100 $
40+ 
41+ ## Output Format  
42+ 
43+ Print a staircase of size n using # symbols and spaces.
44+ 
45+ Note: The last line must have  spaces in it.
46+ 
47+ ## Sample Input  
48+ 
49+ ``` text 
50+ 6 
51+ ``` 
52+ 
53+ ## Sample Output  
54+ 
55+ ``` text 
56+      # 
57+     ## 
58+    ### 
59+   #### 
60+  ##### 
61+ ###### 
62+ ``` 
63+ 
64+ ## Explanation  
65+ 
66+ The staircase is right-aligned, composed of # symbols and spaces,
67+ and has a height and width of $ n = 6 $.
Original file line number Diff line number Diff line change @@ -4,3 +4,4 @@ pub mod compare_triplets;
44pub  mod  a_very_big_sum; 
55pub  mod  diagonal_difference; 
66pub  mod  plus_minus; 
7+ pub  mod  staircase; 
Original file line number Diff line number Diff line change 1+ // @link Problem definition [[docs/hackerrank/warmup/staircase.md]] 
2+ 
3+ pub  fn  staircase_string ( n :  i32 )  -> String  { 
4+   let  mut  result:  Vec < String >  = Vec :: new ( ) ; 
5+ 
6+   for  i in  1 ..=n { 
7+     let  spaces = " " . repeat ( ( n - i)  as  usize ) ; 
8+     let  hashes = "#" . repeat ( i as  usize ) ; 
9+ 
10+     result. push ( format ! ( "{}{}" ,  spaces,  hashes) ) ; 
11+   } 
12+ 
13+   result. join ( "\n " ) 
14+ } 
15+ 
16+ pub  fn  staircase ( n :  i32 )  { 
17+   println ! ( "{}" ,  staircase_string( n) ) ; 
18+ } 
Original file line number Diff line number Diff line change 1+ [
2+   {
3+     "title" : " Example" 
4+     "input" : 6 ,
5+     "expected" : "      #\n     ##\n    ###\n   ####\n  #####\n ######" 
6+   }
7+ ]
Original file line number Diff line number Diff line change @@ -4,3 +4,4 @@ pub mod compare_triplets;
44pub  mod  a_very_big_sum; 
55pub  mod  diagonal_difference; 
66pub  mod  plus_minus; 
7+ pub  mod  staircase; 
Original file line number Diff line number Diff line change 1+ use  exercises:: hackerrank:: warmup:: staircase:: { staircase,  staircase_string} ; 
2+ use  once_cell:: sync:: Lazy ; 
3+ use  serde:: Deserialize ; 
4+ 
5+ use  crate :: common; 
6+ use  common:: utils:: load_json; 
7+ 
8+ #[ cfg( test) ]  
9+ mod  tests { 
10+   use  super :: * ; 
11+ 
12+   #[ derive( Debug ,  Deserialize ) ]  
13+   struct  AveryBigSumTestCase  { 
14+       input :  i32 , 
15+       expected :  String 
16+   } 
17+ 
18+   static  TEST_DATA :  Lazy < Vec < AveryBigSumTestCase > >  =
19+     Lazy :: new ( || load_json ( "tests/data/hackerrank/warmup/staircase.testcases.json" ) ) ; 
20+ 
21+   #[ test]  
22+   fn  test_staircase ( )  { 
23+     println ! ( "Testing hackerrank::warmup::staircase::staircase()" ) ; 
24+ 
25+     for  test_case in  TEST_DATA . iter ( )  { 
26+       let  result = staircase_string ( test_case. input ) ; 
27+       staircase ( test_case. input ) ; 
28+       assert_eq ! ( result,  test_case. expected) ; 
29+     } 
30+   } 
31+ } 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments