CK 005|フルコースを走っていない選手(javascript)



質問する


🔗 完走していない選手
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.

せいげんじょうけん

  • マラソンに出場する選手は1人以上10万人以下.
  • 完了長さは参加者長1より小さい.
  • 参加者の名前は20文字を超えない.
  • の参加者には同名の人がいる可能性があります.
  • 私が書いたコード

    function solution(participant, completion) {
        participant.sort();
        completion.sort()
        
        for(let i in participant) {
            if(participant[i] !== completion[i]) return participant[i]
        }
        return participant[-1]
    }
    
    まず,参加者の配列と完了配列を並べ替える.
    同じインデックスに存在する名前が異なる場合(参加者が未完了の参加者であるため)、参加者が返されます.
    繰り返し文が終了すると、上記のプロシージャに戻り値がない場合、参加者が最後の位置を並べた参加者の名前が返されます.(彼らも完走していない参加者なので)

    他人の解答

    var solution=(_,$)=>_.find(_=>!$[_]--,$.map(_=>$[_]=($[_]|0)+1))
    分からない文法が多くて、理解しにくいです...
    var solution=(participant,completion)=>participant.find(name=>!completion[name]--,completion.map(name=>completion[name]=(completion[name]|0)+1))
    コメントの解釈から、上記の文法で動作するように、完走した人の並びを「名前:完走した人の並びが現れる回数」とマッピングし、地図に参加者の名前を入れ、探すたびに回数を減らし、回数0の参加者を探し出す.