Skip to content

Commit 4b73b55

Browse files
committed
Lesson 2 - PermCheck (from scratch)
1 parent fe8f3b7 commit 4b73b55

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

perm_check.rb

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,39 @@
11
def perm_check(a)
2-
sorted_a = a.sort
2+
seen = {}
33

4-
sorted_a.each_index do |i|
5-
return 0 if sorted_a[i] != i+1
4+
max = a.max
5+
a.each do |v|
6+
seen[v] = true
67
end
78

8-
return 1
9+
seen.size == max && max == a.size ? 1 : 0
10+
11+
# alternative solution
12+
#
13+
# seen = {}
14+
#
15+
# a.each do |v|
16+
# seen[v] = true
17+
# end
18+
#
19+
# a.size.times do |n|
20+
# return 0 if seen[n+1].nil?
21+
# end
22+
# 1
923
end
1024

1125
require 'minitest/autorun'
1226

1327
class Tests < MiniTest::Unit::TestCase
14-
def test_example_one
15-
assert_equal 1, perm_check([4,1,3,2])
28+
def test_example_input
29+
assert_equal 1, perm_check([4, 1, 3, 2])
30+
end
31+
32+
def test_no_perm
33+
assert_equal 0, perm_check([4, 1, 3])
1634
end
1735

18-
def test_example_two
19-
assert_equal 0, perm_check([4,1,3])
36+
def test_same_numbers
37+
assert_equal 0, perm_check([1, 1, 2])
2038
end
2139
end

0 commit comments

Comments
 (0)