Created
September 22, 2024 00:26
-
-
Save gouf/74b7de7896f31a7940e63b9a6eb8f87d to your computer and use it in GitHub Desktop.
別解; Paiza 問題集「クラスの作成」 : https://paiza.jp/works/mondai/class_primer/class_primer__make_class
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment