Skip to content

Commit fe88c70

Browse files
committed
armstrong-numbers: finish implementation
- fix conflicts - implement generator
1 parent 0620959 commit fe88c70

File tree

5 files changed

+36
-35
lines changed

5 files changed

+36
-35
lines changed

config.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,14 @@
5757
"unlocked_by": null,
5858
"difficulty": 2,
5959
"topics": [
60-
"arrays",
61-
"sequences",
62-
"strings",
63-
"regular_expressions"
60+
"arrays"
6461
]
6562
},
6663
{
6764
"slug": "armstrong-numbers",
6865
"uuid": "77c5c7e6-265a-4f1a-9bc4-851f8f825420",
6966
"core": false,
70-
"unlocked_by": "isogram",
67+
"unlocked_by": "series",
7168
"difficulty": 3,
7269
"topics": [
7370
"math"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
require 'generator/exercise_case'
2+
3+
class ArmstrongNumbersCase < Generator::ExerciseCase
4+
5+
def workload
6+
assert_or_refute(expected, call_armstrong)
7+
end
8+
9+
def call_armstrong
10+
"ArmstrongNumbers.include?(#{underscore(input['number'])})"
11+
end
12+
end

exercises/armstrong-numbers/.meta/solutions/armstrong_numbers.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class ArmstrongNumbers
2-
def self.is_valid?(number)
2+
def self.include?(number)
33
exponent = number.digits.size
44

55
number.digits.sum { |digit| digit**exponent } == number

exercises/armstrong-numbers/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ To include color from the command line:
3333

3434
ruby -r minitest/pride armstrong_numbers_test.rb
3535

36+
3637
## Source
3738

3839
Wikipedia [https://en.wikipedia.org/wiki/Narcissistic_number](https://en.wikipedia.org/wiki/Narcissistic_number)
Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,50 @@
11
require 'minitest/autorun'
22
require_relative 'armstrong_numbers'
33

4+
# Common test data version: 1.1.0 b3c2522
45
class ArmstrongNumbersTest < Minitest::Test
5-
def test_one_digit_numbers_are_armstrong_numbers
6-
assert ArmstrongNumbers.is_valid?(1)
7-
assert ArmstrongNumbers.is_valid?(6)
8-
assert ArmstrongNumbers.is_valid?(9)
6+
def test_zero_is_an_armstrong_number
7+
# skip
8+
assert ArmstrongNumbers.include?(0)
99
end
1010

11-
def test_two_digit_numbers_aren_t_armstrong_numbers
11+
def test_single_digit_numbers_are_armstrong_numbers
1212
skip
13-
refute ArmstrongNumbers.is_valid?(11)
14-
refute ArmstrongNumbers.is_valid?(89)
15-
refute ArmstrongNumbers.is_valid?(44)
13+
assert ArmstrongNumbers.include?(5)
1614
end
1715

18-
def test_three_digit_numbers_that_are_armstrong_numbers
16+
def test_there_are_no_2_digit_armstrong_numbers
1917
skip
20-
assert ArmstrongNumbers.is_valid?(153)
21-
assert ArmstrongNumbers.is_valid?(370)
18+
refute ArmstrongNumbers.include?(10)
2219
end
2320

24-
def test_three_digit_numbers_that_aren_t_armstrong_numbers
21+
def test_three_digit_number_that_is_an_armstrong_number
2522
skip
26-
refute ArmstrongNumbers.is_valid?(555)
27-
refute ArmstrongNumbers.is_valid?(662)
23+
assert ArmstrongNumbers.include?(153)
2824
end
2925

30-
def test_four_digit_number_that_is_armstrong_number
26+
def test_three_digit_number_that_is_not_an_armstrong_number
3127
skip
32-
assert ArmstrongNumbers.is_valid?(1_634)
28+
refute ArmstrongNumbers.include?(100)
3329
end
3430

35-
def test_four_digit_number_that_is_not_armstrong_number
31+
def test_four_digit_number_that_is_an_armstrong_number
3632
skip
37-
refute ArmstrongNumbers.is_valid?(9_989)
33+
assert ArmstrongNumbers.include?(9_474)
3834
end
3935

40-
def test_seven_digit_number_that_is_armstrong_number
36+
def test_four_digit_number_that_is_not_an_armstrong_number
4137
skip
42-
assert ArmstrongNumbers.is_valid?(9_926_315)
38+
refute ArmstrongNumbers.include?(9_475)
4339
end
4440

45-
def test_seven_digit_number_that_is_not_armstrong_number
41+
def test_seven_digit_number_that_is_an_armstrong_number
4642
skip
47-
refute ArmstrongNumbers.is_valid?(2_369_989)
43+
assert ArmstrongNumbers.include?(9_926_315)
4844
end
4945

50-
def test_ten_digit_number_that_is_armstrong_number
46+
def test_seven_digit_number_that_is_not_an_armstrong_number
5147
skip
52-
assert ArmstrongNumbers.is_valid?(4_679_307_774)
53-
end
54-
55-
def test_fourteen_digit_number_that_is_armstrong_number
56-
skip
57-
assert ArmstrongNumbers.is_valid?(28_116_440_335_967)
48+
refute ArmstrongNumbers.include?(9_926_314)
5849
end
5950
end

0 commit comments

Comments
 (0)