Rakamları farklı sayıları bulma

Rastgele bir aralıktaki rakamları farklı tüm sayıları belirleyen bir fonksiyon nasıl yazarız ?

1 Beğeni

Acaba aşağıdaki kod işinizi görür mü?

def f(start, end, step):
    for i in range(start, end, step):
        if len(str(i)) > 1:
            for j in str(i):
                if str(i).count(j) > 1:
                    break
            else:
                yield i
        else:
            yield i
                
                
for i in f(9, 24, 1):
    print(i)

Sonuç:

9
10
12
13
14
15
16
17
18
19
20
21
23
2 Beğeni

teşekkür ederim işimi gördü

farklı bir bakışda benden olsun

def rakamlarıfarklı(ilk,son):
    liste=[]
    for i in range(ilk,son+1):
        if len(set(str(i)))==len(str(i)):
            liste.append(i)
    return len(liste)
print(rakamlarıfarklı(29,178))
3 Beğeni
import itertools as it
import operator as op

f = lambda start, end: filter(lambda i: not any(it.starmap(op.eq, it.combinations(str(i), 2))), range(start, end))

print(list(f(98, 125)))

Point-free versiyonu:

import functools as ft
import itertools as it
import operator as op

def compose(f, g): return lambda *args, **kwargs: f(g(*args, **kwargs))
def flip(f): return lambda x, y: f(y, x)

g = compose(ft.partial(filter, compose(op.not_, compose(any, compose(ft.partial(it.starmap, op.eq), compose(ft.partial(flip(it.combinations), 2), str))))), range)

print(list(g(98, 125)))

Kırmızı ile altını çizdiğim satırda ne yaptık da rakamları birbirinden farklı sayıları listeye ekleyebiliyoruz? Bu satırı açabilir miyiz? Teşk.