LoginSignup
0

More than 5 years have passed since last update.

複数の整数の合計が21になる組み合わせの算出

Posted at

2~4つの整数の合計が特定の数になる数値の組み合わせを算出します。
用途はごくごく限られると思いますが、手計算で行うと地味に時間がかかるので書いてみました。
カウンタの数とwhile文のネストを変えれば変数の数の変化にも対応できます。

main.kt
fun main(args: Array<String>) {
        //元数値作成
        val aon= arrayListOf<Int>()

        var i=0
        while (i<=20){
            aon.add(20-i)
            i+=1
        }


        //組み合わせのカウンタ
        var one = 0
        var two = 0
        var thr = 0
        var fur = 0



        //格納用
        val answer_21 = arrayListOf<String>()
        val answer_20 = arrayListOf<String>()
        val answer_19 = arrayListOf<String>()



        //組み合わせ調査開始
        while(one <aon.count()){
            two = one

            while (two <aon.count()){
                thr =two

                while (thr <aon.count()){
                    fur = thr

                    while (fur<aon.count()){



                        if((aon[one]+aon[two]+aon[thr]+aon[fur])==21){

                            answer_21.add(aon[one].toString()+"_"+aon[two].toString()+"_"+aon[thr].toString()+"_"+aon[fur].toString())

                        }

                        if((aon[one]+aon[two]+aon[thr]+aon[fur])==20){

                            answer_20.add(aon[one].toString()+"_"+aon[two].toString()+"_"+aon[thr].toString()+"_"+aon[fur].toString())

                        }

                        if((aon[one]+aon[two]+aon[thr]+aon[fur])==19){

                            answer_19.add(aon[one].toString()+"_"+aon[two].toString()+"_"+aon[thr].toString()+"_"+aon[fur].toString())

                        }


                        fur +=1
                    }


                 thr +=1
                }

              two+=1
            }

            one+=1
        }


        //正解の出力
        print("21になる組み合わせは・・・")
        println(answer_21)

        print("20になる組み合わせは・・・")
        println(answer_20)

        print("19になる組み合わせは・・・")
        println(answer_19)


}


21になる組み合わせは・・・[20_1_0_0, 19_2_0_0, 19_1_1_0, 18_3_0_0, 18_2_1_0, 18_1_1_1, 17_4_0_0, 17_3_1_0, 17_2_2_0, 17_2_1_1, 16_5_0_0, 16_4_1_0, 16_3_2_0, 16_3_1_1, 16_2_2_1, 15_6_0_0, 15_5_1_0, 15_4_2_0, 15_4_1_1, 15_3_3_0, 15_3_2_1, 15_2_2_2, 14_7_0_0, 14_6_1_0, 14_5_2_0, 14_5_1_1, 14_4_3_0, 14_4_2_1, 14_3_3_1, 14_3_2_2, 13_8_0_0, 13_7_1_0, 13_6_2_0, 13_6_1_1, 13_5_3_0, 13_5_2_1, 13_4_4_0, 13_4_3_1, 13_4_2_2, 13_3_3_2, 12_9_0_0, 12_8_1_0, 12_7_2_0, 12_7_1_1, 12_6_3_0, 12_6_2_1, 12_5_4_0, 12_5_3_1, 12_5_2_2, 12_4_4_1, 12_4_3_2, 12_3_3_3, 11_10_0_0, 11_9_1_0, 11_8_2_0, 11_8_1_1, 11_7_3_0, 11_7_2_1, 11_6_4_0, 11_6_3_1, 11_6_2_2, 11_5_5_0, 11_5_4_1, 11_5_3_2, 11_4_4_2, 11_4_3_3, 10_10_1_0, 10_9_2_0, 10_9_1_1, 10_8_3_0, 10_8_2_1, 10_7_4_0, 10_7_3_1, 10_7_2_2, 10_6_5_0, 10_6_4_1, 10_6_3_2, 10_5_5_1, 10_5_4_2, 10_5_3_3, 10_4_4_3, 9_9_3_0, 9_9_2_1, 9_8_4_0, 9_8_3_1, 9_8_2_2, 9_7_5_0, 9_7_4_1, 9_7_3_2, 9_6_6_0, 9_6_5_1, 9_6_4_2, 9_6_3_3, 9_5_5_2, 9_5_4_3, 9_4_4_4, 8_8_5_0, 8_8_4_1, 8_8_3_2, 8_7_6_0, 8_7_5_1, 8_7_4_2, 8_7_3_3, 8_6_6_1, 8_6_5_2, 8_6_4_3, 8_5_5_3, 8_5_4_4, 7_7_7_0, 7_7_6_1, 7_7_5_2, 7_7_4_3, 7_6_6_2, 7_6_5_3, 7_6_4_4, 7_5_5_4, 6_6_6_3, 6_6_5_4, 6_5_5_5]
20になる組み合わせは・・・[20_0_0_0, 19_1_0_0, 18_2_0_0, 18_1_1_0, 17_3_0_0, 17_2_1_0, 17_1_1_1, 16_4_0_0, 16_3_1_0, 16_2_2_0, 16_2_1_1, 15_5_0_0, 15_4_1_0, 15_3_2_0, 15_3_1_1, 15_2_2_1, 14_6_0_0, 14_5_1_0, 14_4_2_0, 14_4_1_1, 14_3_3_0, 14_3_2_1, 14_2_2_2, 13_7_0_0, 13_6_1_0, 13_5_2_0, 13_5_1_1, 13_4_3_0, 13_4_2_1, 13_3_3_1, 13_3_2_2, 12_8_0_0, 12_7_1_0, 12_6_2_0, 12_6_1_1, 12_5_3_0, 12_5_2_1, 12_4_4_0, 12_4_3_1, 12_4_2_2, 12_3_3_2, 11_9_0_0, 11_8_1_0, 11_7_2_0, 11_7_1_1, 11_6_3_0, 11_6_2_1, 11_5_4_0, 11_5_3_1, 11_5_2_2, 11_4_4_1, 11_4_3_2, 11_3_3_3, 10_10_0_0, 10_9_1_0, 10_8_2_0, 10_8_1_1, 10_7_3_0, 10_7_2_1, 10_6_4_0, 10_6_3_1, 10_6_2_2, 10_5_5_0, 10_5_4_1, 10_5_3_2, 10_4_4_2, 10_4_3_3, 9_9_2_0, 9_9_1_1, 9_8_3_0, 9_8_2_1, 9_7_4_0, 9_7_3_1, 9_7_2_2, 9_6_5_0, 9_6_4_1, 9_6_3_2, 9_5_5_1, 9_5_4_2, 9_5_3_3, 9_4_4_3, 8_8_4_0, 8_8_3_1, 8_8_2_2, 8_7_5_0, 8_7_4_1, 8_7_3_2, 8_6_6_0, 8_6_5_1, 8_6_4_2, 8_6_3_3, 8_5_5_2, 8_5_4_3, 8_4_4_4, 7_7_6_0, 7_7_5_1, 7_7_4_2, 7_7_3_3, 7_6_6_1, 7_6_5_2, 7_6_4_3, 7_5_5_3, 7_5_4_4, 6_6_6_2, 6_6_5_3, 6_6_4_4, 6_5_5_4, 5_5_5_5]
19になる組み合わせは・・・[19_0_0_0, 18_1_0_0, 17_2_0_0, 17_1_1_0, 16_3_0_0, 16_2_1_0, 16_1_1_1, 15_4_0_0, 15_3_1_0, 15_2_2_0, 15_2_1_1, 14_5_0_0, 14_4_1_0, 14_3_2_0, 14_3_1_1, 14_2_2_1, 13_6_0_0, 13_5_1_0, 13_4_2_0, 13_4_1_1, 13_3_3_0, 13_3_2_1, 13_2_2_2, 12_7_0_0, 12_6_1_0, 12_5_2_0, 12_5_1_1, 12_4_3_0, 12_4_2_1, 12_3_3_1, 12_3_2_2, 11_8_0_0, 11_7_1_0, 11_6_2_0, 11_6_1_1, 11_5_3_0, 11_5_2_1, 11_4_4_0, 11_4_3_1, 11_4_2_2, 11_3_3_2, 10_9_0_0, 10_8_1_0, 10_7_2_0, 10_7_1_1, 10_6_3_0, 10_6_2_1, 10_5_4_0, 10_5_3_1, 10_5_2_2, 10_4_4_1, 10_4_3_2, 10_3_3_3, 9_9_1_0, 9_8_2_0, 9_8_1_1, 9_7_3_0, 9_7_2_1, 9_6_4_0, 9_6_3_1, 9_6_2_2, 9_5_5_0, 9_5_4_1, 9_5_3_2, 9_4_4_2, 9_4_3_3, 8_8_3_0, 8_8_2_1, 8_7_4_0, 8_7_3_1, 8_7_2_2, 8_6_5_0, 8_6_4_1, 8_6_3_2, 8_5_5_1, 8_5_4_2, 8_5_3_3, 8_4_4_3, 7_7_5_0, 7_7_4_1, 7_7_3_2, 7_6_6_0, 7_6_5_1, 7_6_4_2, 7_6_3_3, 7_5_5_2, 7_5_4_3, 7_4_4_4, 6_6_6_1, 6_6_5_2, 6_6_4_3, 6_5_5_3, 6_5_4_4, 5_5_5_4]

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0