코바늘 패턴 분석 및 Ruby 클래스 설계
코바늘 원형 패턴을 Ruby 클래스로 구현하기 위해 먼저 기존 패턴의 규칙을 면밀히 분석했습니다. 패턴은 sc (짧은뜨기)와 inc (늘림)과 같은 약어를 사용하며, 각 단(R{n}:)은 시작과 끝에 해당 단의 총 코수(괄호 안 숫자)를 명시합니다. 분석 결과, 총 코수는 6 + 6 * (R - 1)이라는 수식을 따르는 것을 확인했습니다. 또한, [... ] x{n} 형식으로 반복되는 구문이 있음을 파악했습니다.
CirclePatternGenerator 클래스 초기 구현
초기 CirclePatternGenerator 클래스는 row_count를 입력받아 각 단의 패턴 문자열을 생성하도록 설계되었습니다. row_title과 stitch_count는 위에서 파악한 규칙을 기반으로 구현되었으며, instructions 메서드를 중심으로 패턴 생성 로직을 발전시켰습니다.
패턴 지시사항 상세 분석 및 구현
각 단의 지시사항을 분석한 결과, 늘림(increases)은 2단부터 6개로 고정되며, 짧은뜨기(single crochets)는 2단 이후 단마다 6개씩 증가하는 경향을 보였습니다. 이 과정에서 몇 가지 예외 케이스를 발견했습니다:
-
1단 예외 처리: 1단은 “6sc in magic ring”이라는 특별한 지시사항을 가지므로,
first_row?가드 절을 통해 별도로 처리했습니다. -
2단 예외 처리: 2단은 “[inc] x6”으로 짧은뜨기 없이 늘림만으로 구성되므로,
second_row?가드 절을 추가하여 처리했습니다.
일반적인 단(3단 이후)의 경우, 늘림 사이의 짧은뜨기 개수는 R - 2로 계산되는 sc_count 메서드를 활용했습니다. 또한, 짧은뜨기가 1개일 때 “1sc” 대신 “sc”로 표시되도록 sc_pattern 헬퍼 메서드를 추가하여 가독성을 높였습니다.
홀수 단 및 짝수 단 로직 구현
-
홀수 단:
[#{sc_pattern(sc_count)}, inc] x6패턴을 따르도록odd_row_instructions메서드를 구현했습니다. -
짝수 단: 짝수 단은
sc_count가 절반으로 나뉘어 단의 시작과 끝에 배치되고, 반복 구문은 5번만 실행되는 특징을 가집니다. 이를 반영하여even_row_instructions메서드 내에서split_pattern을 계산하고"#{split_pattern}, inc, [#{sc_pattern(sc_count)}, inc] x5, #{split_pattern}"형태로 패턴을 구성했습니다.
이러한 단계별 구현과 RSpec 테스트를 통한 검증을 통해, 지정된 단 수에 따라 정확한 코바늘 원형 패턴을 생성하는 CirclePatternGenerator 클래스를 성공적으로 완성했습니다.