โจทย์หลักที่ต้องการแก้
เลขสามหลัก.filter(n => เงื่อนไข.every(ใช้ได้กับ(n)))
แก้ปัญหาย่อย
-
เลขสามหลัก
Array(1e3).fill().map((x, i) => `000${i}`.slice(-3))
-
เงื่อนไข (อยู่ในรูปแบบ [ตัวเลขที่กำหนดให้, ถูก, ตรง])
[['682', 1, 1], ['614', 0, 1], ['206', 0, 2], ['738', 0, 0], ['870', 0, 1]]
-
ใช้ได้กับ
n => ([t, e, m]) => (count => e === count((v, i) => t[i] === v) && m === count(v => t.includes(v)))(f => n.split('').filter(f).length)
รวมโค้ด!
Array(1e3).fill().map((x, i) => `000${i}`.slice(-3)).filter(n => [['682', 1, 1], ['614', 0, 1], ['206', 0, 2], ['738', 0, 0], ['870', 0, 1]].every(([t, e, m]) => (count => e === count((v, i) => t[i] === v) && m === count(v => t.includes(v)))(f => n.split('').filter(f).length)))