Şimdi Ara

Şu kodu nasıl daha kısa yazarım (başlangıç seviye)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
268
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Selamlar

    CodingBat sitesinden egzersiz yapıyorum ve bazı soruların cevapları yok. Bu soruyu doğru yaptım; fakat sanki biraz uzattım gibi geldi. Mutlaka kısa yolu vardır herhalde merak ettim.


    Soru

    Given 2 int arrays, a and b, each length 3, return a new array length 2 containing their middle elements.

    Example = middle_way([1, 2, 3], [4, 5, 6]) → [2, 5]


    Cevabım

    Kod

    Yığını:
    def middle_way(a, b):   mylist = []   if len(a) == 3 and len(b) == 3:     mylist.append(a[1])     mylist.append(b[1])   return mylist



    < Bu mesaj bu kişi tarafından değiştirildi The Management -- 22 Eylül 2020; 12:21:52 >



  • Kod

    Yığını:
    def middle_way(a,b): return [a[1],b[1]]

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: seyfi84

    Kod

    Yığını:
    def middle_way(a,b): return [a[1],b[1]]

    Teşekkür ettim nasıl aklıma gelmiyor bunlar yav :D zamanla olacak herhalde

  • Bence burada kısa yazmaya odaklanma. Mesela bana göre üstteki çözüm 'soruda istenen' şeye göre yanlış bir çözüm.

    Soruda senden direkt bir sayı döndürmeni ya da verdiği dizilerin elemanlarını döndürmeni istemiyor; senden verdiği şartlara göre 2 elemanlı bir dizi oluşturup bunun elemanlarını döndürmeni istiyor.

    Yani, önce yeni dizi oluştur. ("c" diyelim.) Sonra bu diziye diğerlerinin ortadaki elemanlarını ekleyip "return c[0],c[1]" diyebilirsin.

    Hatta bana sorarsan burada algoritmanı geliştirip verdiği dizilerin direk indeksiyle ekleme yapmak yerine; yani a[1], b[1] olarak belirtmek yerine a[len(a)/2], b[len(b)/2] gibi belirtebilirsin. Anlatmak istediğim şey şu; dizilerin uzunluğunu 3 verdi diye direkt 1'inci indeksi yazıp geçmeyin. İçinden şöyle düşün, sana bu uzunlukları vermeyip senden belirlemeni isteseydi ne yapardın? Olaya her zaman böyle yaklaşmak her türlü daha iyi bence. Algoritma kurmak budur. Elinizden geldiğince verileri direkt girmek yerine değişken atayın.

    len(a)/2'den kasıt da; a dizisinin uzunluğunun yarısı sana ortadaki indeksi verir. Aslında 3/2'den 1,5 oluyor da ben Python kullanmadığım için tam bilmiyorum, integer değerlerde float'ı otomatik çeviriyor bazı yerlerde, burada işe yarıyor mu bilmiyorum, olmazsa gerekli düzenlemeyi yaparsın. "Eğer dizinin uzunluğu tek sayı ise" gibi bir kontrolle hallolur. Tek sayı ise 2'ye bölüp 0,5 çıkartırsın.

    Aslında integer tipinde ortanca_a, ortanca_b gibi değişken tanımlayıp len(a)/2 ve len(b)/2'yi buralara atayıp o şekilde de gidebilirsin, hatta daha doğru olur.



    < Bu mesaj bu kişi tarafından değiştirildi Fulton -- 23 Eylül 2020; 2:11:38 >
    < Bu ileti mobil sürüm kullanılarak atıldı >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.