□に1から9の数を1回ずつ入れて式を完成させましょう。
twitterで見つけた問題を解いた。
小学校にクイズあった pic.twitter.com/r4dQFRvjCk
— うなぎいぬ Amadeus Ver.2.31 (@unagiinu1092) 2018年10月13日
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
let p = console.log const getPermutation = arr => { const generatePermutation = (perm, pre, post, n) => { var elem, i, rest, len if (n > 0) { for (i = 0, len = post.length; i < len; ++i) { rest = post.slice(0) elem = rest.splice(i, 1) generatePermutation(perm, pre.concat(elem), rest, n - 1) } } else { perm.push(pre) } } const perm = [] generatePermutation(perm, [], arr, arr.length) return perm } const isNoDuplication = (a, b, c, d, e, f, g, h, i) => { const arr = [] arr.push(a) arr.push(b) arr.push(c) arr.push(d) arr.push(e) arr.push(f) arr.push(g) arr.push(h) arr.push(i) const arr2 = arr.filter(function (x, i, self) { return self.indexOf(x) === i }) return arr2.length === 9 } const func = (a, b, c, d, e, f, g, h, i) => { const left = (((((a * b) / c) * d) / e) * f) + g - h return left === i } const ret = getPermutation([1, 2, 3, 4, 5, 6, 7, 8, 9]) for (r of ret) { if (func( r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9] ) && isNoDuplication( r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9] )) { p(r) } } |
順列組み合わせの生成はこのQiitaを使わせてもらった
JavaScriptによる順列組み合わせの生成