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)))