電話帳作成問題を調べながらやってみる

ruby

問題はこちら。

https://github.com/JunichiIto/name-index

参考サイトはこちら

yucatio@システムエンジニア
電話帳作成問題の解答 - yucatio@システムエンジニア 前回に引き続き、こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。 blog.jnito.com 電話帳作成問題 カタカ...
class NameIndex
  NAME_INDEX_HASH = {
      'ア' => %w(ア イ ウ エ オ ヴ),
      'カ' => %w(カ キ ク ケ コ ガ ギ グ ゲ ゴ),
      'サ' => %w(サ シ ス セ ソ ザ ジ ズ ゼ ゾ),
      'タ' => %w(タ チ ツ テ ト ダ ヂ ヅ デ ド),
      'ナ' => %w(ナ ニ ヌ ネ ノ),
      'ハ' => %w(ハ ヒ フ ヘ ホ バ ビ ブ ベ ボ パ ピ プ ペ ポ),
      'マ' => %w(マ ミ ム メ モ),
      'ヤ' => %w(ヤ ユ ヨ),
      'ラ' => %w(ラ リ ル レ ロ),
      'ワ' => %w(ワ ヲ ン)
  }.freeze

  def self.create_index(names)
    names.sort.group_by {|name|
      NAME_INDEX_HASH.find(['Others']) {|_, value| value.include?(name[0])}.first
    }.to_a
  end
end


names = ['キシモト', 'イトウ', 'ババ', 'カネダ', 'ワダ', 'ハマダ']

p NameIndex.create_index(names)
目次

今日の積み上げ

sort

配列の内容をソートする。sortはソートされた配列を生成して返す。

sort!

selfを破壊的にソートし、selfを返す。
namesで受け取った値を辞書[katakana]に沿って並べ替えて返す。

freeze

オブジェクトを凍結(内容の変更を禁止)する。

group_by

ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返す。

to_a

キーと値からなる 2 要素の配列を並べた配列を生成して返します。

https://docs.ruby-lang.org/ja/latest/method/Hash/i/to_a.html

おすすめテキスト

テストを書かれた伊藤さんのチェリー本で勉強しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

パソコンとネットの何でも屋さん兼農家見習い中
2021年に奥さんに腎移植して人生の価値観が大きく変わりました
何が起きても諦めずに生き抜く力が一番大切
時々ブログも書いてます

目次