// from stackoverflow.com/a/54623726/849891
def hamming
(n
: Int
): Seq
[BigInt
] = { def next
(x
: Int, factor
: Int, v
: BigInt
): BigInt
= { Iterator.from(x).map(BigInt(_)).dropWhile(factor * _ <= v).take(1).next()
}
Iterator.
iterate((1,
1,
1, BigInt
(1),
1)) { case (i, j, k, v, count
) => val m
= Seq
(2 * a,
3 * b,
5 * c
).
min
(a.intValue(), b.intValue(), c.intValue(), m, count + 1)
}
.takeWhile(_._5 <= n)
.map(_._4)
.toSeq
}
val list
= List
() ++ hamming
(100) println(list.take(20))
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoJICAvLyBmcm9tIHN0YWNrb3ZlcmZsb3cuY29tL2EvNTQ2MjM3MjYvODQ5ODkxCgkgIAoJZGVmIGhhbW1pbmcobjogSW50KTogU2VxW0JpZ0ludF0gPSB7CiAgICBkZWYgbmV4dCh4OiBJbnQsIGZhY3RvcjogSW50LCB2OiBCaWdJbnQpOiBCaWdJbnQgPSB7CiAgICAgIEl0ZXJhdG9yLmZyb20oeCkubWFwKEJpZ0ludChfKSkuZHJvcFdoaWxlKGZhY3RvciAqIF8gPD0gdikudGFrZSgxKS5uZXh0KCkKICAgIH0KCiAgICBJdGVyYXRvci5pdGVyYXRlKCgxLCAxLCAxLCBCaWdJbnQoMSksIDEpKSB7IGNhc2UgKGksIGosIGssIHYsIGNvdW50KSA9PgogICAgICB2YWwgYSA9IG5leHQoaSwgMiwgdikKICAgICAgdmFsIGIgPSBuZXh0KGosIDMsIHYpCiAgICAgIHZhbCBjID0gbmV4dChrLCA1LCB2KQogICAgICB2YWwgbSA9IFNlcSgyICogYSwgMyAqIGIsIDUgKiBjKS5taW4KCiAgICAgIChhLmludFZhbHVlKCksIGIuaW50VmFsdWUoKSwgYy5pbnRWYWx1ZSgpLCBtLCBjb3VudCArIDEpCiAgICB9CiAgICAgIC50YWtlV2hpbGUoXy5fNSA8PSBuKQogICAgICAubWFwKF8uXzQpCiAgICAgIC50b1NlcQogICB9CgoJdmFsIGxpc3QgPSBMaXN0KCkgKysgaGFtbWluZygxMDApCglwcmludGxuKGxpc3QudGFrZSgyMCkpCn0=
List(1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26)