SORU: Verilen dizi içindeki tekler kendi aralarında çifler kendi aralarında sıralanıyor.
Sıralama şartları şunlar tekler küçükten büyüğe sıralanacak
Çiftler ise karalerine göre küçükten büyüğe sıralanacak
ÖRNEK:[7,-3,4,5,0,2,-8,6,1] ise çıktısı [-3, 1, 0, 5, 2, 4, 6, -8, 7]
Farklı çözümleri merakla bekliyorum
Kendi aralarında sıralanan bu sayılar çıktıda niye aynı liste içerisinde bulunuyor, tek ve çift sayıları beraberken neye göre sıralayacağız?
Demek isteğimi daha net açıklamaya çalışıyım
Örneğin elimde [7,5,3,6,8,10] listesi var teklerin dizi içinde bulunduğu konuma ancak tek geliyor.Çiftlerinkinede çift ve küçükten büyüğe sıralıyoruz verilen kurallar dahilinde ve çıktı [3,5,7,6,8,10] oluyor
Bir kaç örnek daha yazayım sözel olarak ifade edememiş olabilir ama örnekten anlaşılır diye düşünüyorum
[-4,3,1,2] çıktısı [2,1,3,-4]
[5,-7,0,-3,6,2] çıktı [-7,-3,0,5,2,6]
f = lambda i: (lambda odds, evens: [next(odds) if j%2 else next(evens) for j in i]) \
(
*(lambda odds, evens: map(iter, (sorted(odds), sorted(evens, key=abs))))
(
filter(lambda n: n%2, i),
filter(lambda n: not n%2, i)
)
)
1 Beğeni
def sıralama(array):
tekler=[]
çiftler=[]
for i in array:
if i %2==1:
tekler.append(i)
else:
çiftler.append(i)
tekler.sort()
çiftler.sort(key=lambda x:x**2)
for i in range(len(array)):
if array[i]%2==1:
array[i]=tekler[0]
tekler.pop(0)
else:
array[i]=çiftler[0]
çiftler.pop(0)
return array