1234567891011121314151617181920212223242526272829303132333435 |
- #!/usr/bin/ruby
- # Daniel "Trizen" Șuteu
- # Date: 06 July 2021
- # https://github.com/trizen
- # Generate numbers with prime digits and with a given digit-sum (in a given base).
- # See also:
- # https://rosettacode.org/wiki/Numbers_with_prime_digits_whose_sum_is_13
- func generate_from_prefix(digitsum, p, base, digits, t=p) {
- var seq = [p]
- for d in (digits) {
- t+d <= digitsum || return seq
- seq << __FUNC__(digitsum, p*base + d, base, digits, t+d)...
- }
- return seq
- }
- func numbers_with_digitsum(digitsum, base = 10, digits = (base-1 -> primes)) {
- digits.map { generate_from_prefix(digitsum, _, base, digits)... }\
- .grep { .sumdigits(base) == digitsum }\
- .sort
- }
- say numbers_with_digitsum(13)
- __END__
- [337, 355, 373, 535, 553, 733, 2227, 2272, 2335, 2353, 2533, 2722, 3235, 3253, 3325, 3352, 3523, 3532, 5233, 5323, 5332, 7222, 22225, 22252, 22333, 22522, 23233, 23323, 23332, 25222, 32233, 32323, 32332, 33223, 33232, 33322, 52222, 222223, 222232, 222322, 223222, 232222, 322222]
|