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+ return 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