Menu
Coddy logo textTech

復習 - カスタムソート

CoddyのSwiftジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 41/57。

challenge icon

チャレンジ

難しい

音楽ライブラリは、標準プロトコルを使って曲を並べ替え、重複を除去します。Song には title、artist、year、rating(1-5)があります。大文字と小文字を区別せずに title と artist(同じアーティストによる同じ曲)で Equatable と Hashable にし、Comparable では rating の高い順、次に year の新しい順、次に title のアルファベット順にしてください。また、CustomStringConvertible では Title - Artist (2019) **** の形式にし、rating の点数ごとに星を1つ表示します。

playlist(_:) を完成させてください。Set を使って重複を(最初のものを残して)除去し、sorted() で並べ替え、曲の説明を返した後、duplicates removed: 1 を返します。

提供されたコードは、title,artist,year,rating 形式の行として曲を読み込み、返された各行を出力します。

コードは Song.swift と Functions.swift に記述します。main.swift には提供された入力・出力コードが含まれており、編集できません。

自分で試してみよう

// 提供された入出力コード: そのままにしておく
var input: [String] = []
while let line = readLine() { input.append(line) }
let songs = input.map { line -> Song in
    let p = line.split(separator: ",").map(String.init)
    return Song(title: p[0], artist: p[1], year: Int(p[2])!, rating: Int(p[3])!)
}
for line in playlist(songs) { print(line) }

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド