Skip to content

Commit 464c3ce

Browse files
rubocopness and file renaming
1 parent 6e17bb8 commit 464c3ce

11 files changed

+314
-316
lines changed

2024/ruby/lib/advent_01_hystorian_hysteria.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
require 'pry'
1+
require "pry"
22

33
class DistanceCalculator
44
def initialize(list_one, list_two)
5-
raise 'lists must be the same length' if list_one.length != list_two.length
5+
raise "lists must be the same length" if list_one.length != list_two.length
66

77
@list_one = list_one
88
@list_two = list_two

2024/ruby/lib/advent_02_red_nosed_reports.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def initialize(levels)
66
end
77

88
def initial_direction(levels)
9-
levels.length > 1 && levels[0] < levels[1] ? 'increasing' : 'decreasing'
9+
levels.length > 1 && levels[0] < levels[1] ? "increasing" : "decreasing"
1010
end
1111

1212
def safe_with_dampener?
@@ -44,7 +44,7 @@ def safe?
4444
end
4545

4646
def valid_direction?(direction, level, prev)
47-
(prev < level && direction == 'increasing') || (prev > level && direction == 'decreasing')
47+
(prev < level && direction == "increasing") || (prev > level && direction == "decreasing")
4848
end
4949

5050
def adjacent_safe?(prev, level)

2024/ruby/lib/advent_03_mull_it_over.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def uncorrupted_pieces
2525
end
2626

2727
def process_piece(str)
28-
splits = str.tr('^0123456789,', '').split(',')
28+
splits = str.tr("^0123456789,", "").split(",")
2929

3030
splits[0].to_i * splits[1].to_i
3131
end

2024/ruby/lib/advent_04_ceres_search.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class WordSearch
22
attr_reader :data, :word
33

4-
def initialize(data, word = 'XMAS')
4+
def initialize(data, word = "XMAS")
55
@data = data
66
@word = word
77
end
@@ -19,16 +19,16 @@ def count_at(row, col)
1919
end
2020

2121
def letter_at(row, col)
22-
in_bounds?(row, col) ? data[row][col] : ''
22+
in_bounds?(row, col) ? data[row][col] : ""
2323
end
2424

2525
def horizontal_word(row, col)
2626
first = col
2727
last = col + word.length - 1
2828

29-
return '' unless in_bounds?(first, last)
29+
return "" unless in_bounds?(first, last)
3030

31-
data[row][first..last] * ''
31+
data[row][first..last] * ""
3232
end
3333

3434
def horizontal?(row, col)
@@ -38,7 +38,7 @@ def horizontal?(row, col)
3838
def vertical_word(row, col)
3939
(row..row + word.length - 1).map do |pos|
4040
letter_at(pos, col)
41-
end * ''
41+
end * ""
4242
end
4343

4444
def vertical?(row, col)
@@ -48,33 +48,33 @@ def vertical?(row, col)
4848
def diagonal_top_left_word(row, col)
4949
(0..word.length - 1).map do |pos|
5050
letter_at(row - pos, col - pos)
51-
end * ''
51+
end * ""
5252
end
5353

5454
def diagonal_top_right_word(row, col)
5555
(0..word.length - 1).map do |pos|
5656
letter_at(row - pos, col + pos)
57-
end * ''
57+
end * ""
5858
end
5959

6060
def diagonal_bottom_right_word(row, col)
6161
(0..word.length - 1).map do |pos|
6262
letter_at(row + pos, col + pos)
63-
end * ''
63+
end * ""
6464
end
6565

6666
def diagonal_bottom_left_word(row, col)
6767
(0..word.length - 1).map do |pos|
6868
letter_at(row + pos, col - pos)
69-
end * ''
69+
end * ""
7070
end
7171

7272
def match?(str)
7373
[str, str.reverse].any? { |w| w == word }
7474
end
7575

7676
def cross_word_at?(row, col)
77-
cross_word = 'MAS'
77+
cross_word = "MAS"
7878

7979
diag_1 = letter_at(row - 1, col - 1) + letter_at(row, col) + letter_at(row + 1, col + 1)
8080
diag_2 = letter_at(row + 1, col - 1) + letter_at(row, col) + letter_at(row - 1, col + 1)

2024/ruby/spec/advent_01_spec.rb renamed to 2024/ruby/spec/advent_01_hystorian_hysteria_spec.rb

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,60 @@
1-
require 'spec_helper'
2-
require 'advent_01_hystorian_hysteria'
1+
require "spec_helper"
2+
require "advent_01_hystorian_hysteria"
33

4-
describe 'DistanceCalculator' do
4+
describe "DistanceCalculator" do
55
let(:data) do
6-
File.readlines('./spec/fixtures/advent-01.txt').each do |line|
7-
line.chomp.gsub(/\s+/, ' ')
6+
File.readlines("./spec/fixtures/advent-01.txt").each do |line|
7+
line.chomp.gsub(/\s+/, " ")
88
end
99
end
1010

1111
let(:list_one) do
12-
data.map { |line| line.split(' ')[0].to_i }
12+
data.map { |line| line.split(" ")[0].to_i }
1313
end
1414

1515
let(:list_two) do
16-
data.map { |line| line.split(' ')[1].to_i }
16+
data.map { |line| line.split(" ")[1].to_i }
1717
end
1818

19-
it 'calculates distance' do
19+
it "calculates distance" do
2020
calc = DistanceCalculator.new([], [])
2121

2222
result = calc.distance(1, 3)
2323

2424
expect(result).to be(2)
2525
end
2626

27-
it 'calculates total distance' do
27+
it "calculates total distance" do
2828
calc = DistanceCalculator.new(list_one, list_two)
2929

3030
expect(calc.total_distance).to eq(2_166_959)
3131
end
3232

33-
it 'calculates similarity distance with matching number' do
33+
it "calculates similarity distance with matching number" do
3434
a = [3, 4, 2, 1, 3, 3]
3535
b = [4, 3, 5, 3, 9, 3]
3636
calc = DistanceCalculator.new(a, b)
3737

3838
expect(calc.similarity(4)).to eq(4)
3939
end
4040

41-
it 'calculates similarity distance with multiple matches' do
41+
it "calculates similarity distance with multiple matches" do
4242
a = [3, 4, 2, 1, 3, 3]
4343
b = [4, 3, 5, 3, 9, 3]
4444
calc = DistanceCalculator.new(a, b)
4545

4646
expect(calc.similarity(3)).to eq(9)
4747
end
4848

49-
it 'calculates similarity distance with missing number' do
49+
it "calculates similarity distance with missing number" do
5050
a = [3, 4, 2, 1, 3, 3]
5151
b = [4, 3, 5, 3, 9, 3]
5252
calc = DistanceCalculator.new(a, b)
5353

5454
expect(calc.similarity(2)).to eq(0)
5555
end
5656

57-
it 'calculates total similarity distance' do
57+
it "calculates total similarity distance" do
5858
calc = DistanceCalculator.new(list_one, list_two)
5959

6060
expect(calc.total_similarity_score).to eq(23_741_109)

2024/ruby/spec/advent_02_spec.rb renamed to 2024/ruby/spec/advent_02_red_nosed_reports_spec.rb

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,81 @@
1-
require 'spec_helper'
2-
require 'pry'
3-
require 'advent_02_red_nosed_reports'
1+
require "spec_helper"
2+
require "advent_02_red_nosed_reports"
43

5-
describe 'Report' do
6-
context 'with safe increasing levels' do
4+
describe "Report" do
5+
context "with safe increasing levels" do
76
let(:levels) { [5, 6, 7, 8, 9, 10] }
87

9-
it 'is safe' do
8+
it "is safe" do
109
report = Report.new(levels)
1110

1211
expect(report.safe?).to be(true)
1312
end
1413
end
1514

16-
context 'with safe decreasing levels' do
15+
context "with safe decreasing levels" do
1716
let(:levels) { [5, 4, 3, 2, 1] }
1817

19-
it 'is safe' do
18+
it "is safe" do
2019
report = Report.new(levels)
2120

2221
expect(report.safe?).to be(true)
2322
end
2423
end
2524

26-
context 'with mixed levels' do
25+
context "with mixed levels" do
2726
let(:levels) { [5, 4, 6] }
2827

29-
it 'is not safe' do
28+
it "is not safe" do
3029
report = Report.new(levels)
3130

3231
expect(report.safe?).to be(false)
3332
end
3433
end
3534

36-
context 'with bad adjacent levels' do
35+
context "with bad adjacent levels" do
3736
let(:levels) { [1, 2, 4, 8, 9] }
3837

39-
it 'is not safe' do
38+
it "is not safe" do
4039
report = Report.new(levels)
4140

4241
expect(report.safe?).to be(false)
4342
end
4443
end
4544

46-
context 'with sample data' do
45+
context "with sample data" do
4746
let(:data) do
48-
File.readlines('spec/fixtures/advent-02-sample.txt').map do |e|
49-
e.chomp.split(' ').map(&:to_i)
47+
File.readlines("spec/fixtures/advent-02-sample.txt").map do |e|
48+
e.chomp.split(" ").map(&:to_i)
5049
end
5150
end
5251

53-
it 'calculates how many are safe' do
52+
it "calculates how many are safe" do
5453
safe = data.select { |levels| Report.new(levels).safe? }
5554

5655
expect(safe.length).to be(2)
5756
end
5857

59-
it 'calculates how many are safe with a dampener of 1' do
58+
it "calculates how many are safe with a dampener of 1" do
6059
safe = data.select { |levels| Report.new(levels).safe_with_dampener? }
6160

6261
expect(safe.length).to be(4)
6362
end
6463
end
6564

66-
context 'with puzzle data' do
65+
context "with puzzle data" do
6766
let(:data) do
68-
File.readlines('spec/fixtures/advent-02.txt').map do |e|
69-
e.chomp.split(' ').map(&:to_i)
67+
File.readlines("spec/fixtures/advent-02.txt").map do |e|
68+
e.chomp.split(" ").map(&:to_i)
7069
end
7170
end
7271

73-
it 'calculates how many are safe' do
72+
it "calculates how many are safe" do
7473
safe = data.select { |levels| Report.new(levels).safe? }
7574

7675
expect(safe.length).to be(660)
7776
end
7877

79-
it 'calculates how many are safe with a dampener of 1' do
78+
it "calculates how many are safe with a dampener of 1" do
8079
safe = data.select { |levels| Report.new(levels).safe_with_dampener? }
8180

8281
expect(safe.length).to be(689)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
require "spec_helper"
2+
require "advent_03_mull_it_over"
3+
4+
describe "Muller" do
5+
context "with uncorrupted pieces" do
6+
let(:data) { File.read("./spec/fixtures/advent-03-sample-ii.txt").chomp }
7+
8+
it "parses uncorrupted pieces" do
9+
muller = Muller.new(data)
10+
11+
expect(muller.uncorrupted_pieces).to eq(["mul(2,4)", "mul(8,5)"])
12+
end
13+
14+
it "mulls uncorrupted data" do
15+
muller = Muller.new(data)
16+
17+
expect(muller.uncorrupted_mull).to eq(48)
18+
end
19+
end
20+
21+
context "with sample data" do
22+
let(:data) { File.read("./spec/fixtures/advent-03-sample.txt").chomp }
23+
24+
it "parses the pieces" do
25+
muller = Muller.new(data)
26+
27+
expect(muller.pieces).to eq(["mul(2,4)", "mul(5,5)", "mul(11,8)", "mul(8,5)"])
28+
end
29+
30+
it "mulls the data" do
31+
muller = Muller.new(data)
32+
33+
expect(muller.mull).to eq(161)
34+
end
35+
end
36+
37+
context "with puzzle data" do
38+
let(:data) { File.read("./spec/fixtures/advent-03.txt").chomp }
39+
40+
it "mulls the data" do
41+
muller = Muller.new(data)
42+
43+
expect(muller.mull).to eq(165_225_049)
44+
end
45+
46+
it "mulls uncorrupted data" do
47+
muller = Muller.new(data)
48+
49+
expect(muller.uncorrupted_mull).to eq(108_830_766)
50+
end
51+
end
52+
end

2024/ruby/spec/advent_03_spec.rb

Lines changed: 0 additions & 53 deletions
This file was deleted.

0 commit comments

Comments
 (0)