楽透の最高と最低(javascript)


問題の説明


楽透6/45(以下「楽透」と略称する)は典型的な宝くじで、1~45の数字に6つ印刷して推測することができる.次は宝くじのランキングを決める方法です.1
ランキング当選内容16個全部一致25個番号一致34個番号一致43個番号一致52個番号一致6個(当選)その他
宝くじを購入したミンウは、当選番号の発表日を楽しみにしていた.しかし、敏宇の弟は宝くじに落書きをして、番号の一部が分からなくなった.当選番号が発表された後、敏宇は自分が購入した宝くじの当選の最高順位と最低順位を知りたいと思っています.
購入した6つの宝くじ番号が44、1、0、0、3125だとします.6つの当選番号がそれぞれ31、10、45、1、6、19の場合、当選可能な最高および最低の例は以下の通りである.
当選番号3110451619の結果、最高順位310→104110→6254の番号が一致し、3位の最低順位310→114110→7252の番号が一致した.

  • 順序のいかんにかかわらず、購入した宝くじに当選番号に該当する番号があれば、正解と認定されます.

  • 10と6の2つの知らない番号を持っていると、3位になります.
    -他にも3位を作る方法があります.しかし、私たちはそれを2位以上にすることはできません.

  • 11と7の2つの知らない番号があるとします.5位になります.
    -他にも5位を作る方法があります.しかし、彼を6位にすることは不可能だ.
  • パラメータは敏宇が購入した宝くじ番号を含む宝くじ、当選番号の宝くじである.このとき、可能な最高順位と最低順位を配列に順番に入れて戻ります.

    せいげんじょうけん


    lottosは整数配列で、長さは6です.
    lottosのすべての要素は45以下の整数です.
    0は認識できない数字を表します.
    0以外の数字はlottosで2つを超えない.
    lottosの要素が整列していない可能性があります.
    win numsは長さ6の整数配列である.
    win numsのすべての要素は1または45未満の整数です.
    win numsには同じ数字が複数含まれていません.
    win numsの要素が整列していない可能性があります.

    I/O例


    lottoswin_numsresult[44, 1, 0, 0, 31, 25][31, 10, 45, 1, 6, 19][3, 5][0, 0, 0, 0, 0, 0][38, 19, 20, 40, 15, 25][1, 6][45, 4, 35, 20, 3, 9][20, 9, 3, 45, 4, 35][1, 1]

    問題を解く

    function solution(lottos, win_nums) {
      let min = 0
      let max = 0
      let answer = []
      lottos = lottos.sort((a,b) => a-b)
      for (let i = 0; i < 6; i++) {
        if(lottos[0] === 0) {
          lottos.shift()
        }else {
          break
        }
      }
      for (let i = 0; i < lottos.length; i++){
        if (win_nums.indexOf(lottos[i]) !== -1) {
          min++
        }
      }
      max = min + 6-lottos.length
      if (max < 2) {
        answer.push(6)
    }else if(max < 7){
      answer.push(7-max)
    }if (min < 2) {
      answer.push(6)
    }else if(min < 7) {
      answer.push(7-min)
    }
      return answer;
    }

  • 購入した宝くじ番号を含む配列lottosを昇順に並べ、配列の最初の値が0でないまでshift()を複文に変換し、0を全て削除する.

  • すべてキャンセルされた0の配列は、当選番号を含む配列win_numsと比較して、同じ数字でminに加算される.
  • min0で表記されている読めない数字の和はmaxです.

  • 6から0の配列を全て外すと0の個数が得られる.

  • 5位は7-당첨내용=순위でした.

  • 問い合わせ内容が0または1の場合、6を返却します.