Menu
Coddy logo textTech

복습 - 쿠폰 코드

Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 16번째.

challenge icon

챌린지

중급

Coupon 클래스를 완성하세요. 팩토리 Coupon.parse(code)는 백분율이 뒤따르는 SAVE(SAVE10) 또는 금액이 뒤따르는 OFF(OFF5)를 허용하며, 그 외의 코드는 nil을 반환합니다. 상수 MAX_PERCENT(50)를 초과하는 백분율은 50으로 줄입니다. 팩토리가 생성하는 모든 쿠폰은 클래스 인스턴스 변수에 집계되며 Coupon.issued로 읽을 수 있습니다. new를 private으로 만드세요. apply(total)은 할인된 합계를 반환하며, 그 값은 절대로 0보다 작아지지 않습니다. to_s는 SAVE10 (10% off) 또는 OFF5 (5.00 off)를 반환합니다.

제공된 코드는 첫 번째 줄에서 주문 합계를 읽고, 그다음 각 줄에서 하나의 코드를 읽습니다. SAVE10 (10% off): 90.00 또는 invalid code HELLO를 출력하고, 마지막으로 issued: 2를 출력합니다.

코드는 coupon.rb에 작성하세요. main.rb에는 제공된 입력/출력 코드가 들어 있으며 수정할 수 없습니다.

직접 해보기

require_relative 'coupon'

# 제공된 입력/출력 코드: 그대로 유지하세요
input = []
while (line = gets)
  input << line.chomp
end
total = input[0].to_f
input.drop(1).each do |code|
  coupon = Coupon.parse(code)
  if coupon
    puts format("%s: %.2f", coupon, coupon.apply(total))
  else
    puts "invalid code #{code}"
  end
end
puts "issued: #{Coupon.issued}"

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 Ruby 컴파일러