Skip to content

Instantly share code, notes, and snippets.

@gouf
Created September 22, 2024 00:26
Show Gist options
  • Save gouf/74b7de7896f31a7940e63b9a6eb8f87d to your computer and use it in GitHub Desktop.
Save gouf/74b7de7896f31a7940e63b9a6eb8f87d to your computer and use it in GitHub Desktop.

Revisions

  1. gouf created this gist Sep 22, 2024.
    81 changes: 81 additions & 0 deletions make_class.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,81 @@
    class Employee
    attr_reader :record_id, :employee_number, :name

    def initialize(record_id, employee_number, name)
    @record_id = record_id.to_i
    @employee_number = employee_number.to_i
    @name = name.to_s
    end
    end

    class Employees
    def initialize
    @employees = []
    end

    def make(record_id, employee_number, name)
    @employees << Employee.new(record_id, employee_number, name)
    end

    def get_num(record_id)
    @employees.find { |employee| employee.record_id.eql?(record_id.to_i) }&.employee_number
    end

    def get_name(record_id)
    @employees.find { |employee| employee.record_id.eql?(record_id.to_i) }&.name
    end
    end

    employees = Employees.new

    # 入力例1
    # input =
    # <<~INPUT.lines.map(&:strip).join("\n")
    # make 1 nana
    # getnum 1
    # getname 1
    # INPUT

    # 入力例2
    input =
    <<~INPUT.lines.map(&:strip).join("\n")
    make 2742 mako
    getnum 1
    make 2782 taisei
    getname 2
    make 31 megumi
    getname 1
    getname 3
    INPUT

    count = 1
    count_of_make = []
    input.lines.each do |line|
    method_name, _employee_number, _name = line.split

    if method_name.eql?('make')
    count_of_make << count
    count += 1
    end
    end

    printable_results = []
    input.lines.each do |line|
    # 取り得る値:
    # make employee_number name
    # getnum record_id
    # getname record_id
    method_name, employee_number, name = line.split
    record_id = employee_number # あとの処理でどちらかの意味に変わる

    if method_name.eql?('make')
    record_id = count_of_make.shift
    employees.make(record_id, employee_number, name)
    elsif method_name.eql?('getnum')
    printable_results << employees.get_num(record_id)
    elsif method_name.eql?('getname')
    printable_results << employees.get_name(record_id)
    end
    end

    puts printable_results