Şimdi Ara

0-50 arası Evil Numbers listeleyen kod yazınız

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
6
Cevap
0
Favori
144
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Konu başlığı mecburen İngilizce cunku Evil Numbers'ın resmi Türkçe karşılığını bulamadım. Fakat Wikipedia'da makalesi var:
    https://en.wikipedia.org/wiki/Evil_number
    ve açıklaması
    'an evil number is a non-negative integer that has an even number of 1s in its binary expansion' ikilik gösteriminde çift sayıda 1 içeren tüm pozitif tam sayılar evil number olarak adlandırılır. 0-50 arası Evil Number'ları 0, 3, 5, 6, 9, 10, 12, 15, 17, 18, 20, 23, 24, 27, 29, 30, 33, 34, 36, 39, 40, 43, 45, 46, 48 veren kod yazınız.

    Not: Ödev sorusu değildir. Konu egzersiz ve söyleşi amaçlıdır.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 22 Eylül 2020; 14:11:14 >
    < Bu ileti mini sürüm kullanılarak atıldı >



  • Kod

    Yığını:
    Enumerable.Range(0,50).Select(z=>(z,Convert.ToString(z, 2))).Where(z=>z.Item2.Count(t=>t=='1')==2).ToList().ForEach(z=>Console.WriteLine(z.z));
  • Gökşen PASLI G kullanıcısına yanıt
    Derlerken error CS8306: Tuple element name 'z' is inferred. Please use language version 7.1 or greater to access an element by its inferred name hatası verdi.

    Derleyici olarak mono-5.18.0.225 'daki csc'yi kullanıyorum. Sanırım mono'yu güncellemem gerekecek.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Kod

    Yığını:
    [0 if bin(i).count('1')%2 else print(i) for i in range(50)]
  • hynx kullanıcısına yanıt

    Raku çözümüm. if ve döngü kulanmadan daha kısa da çözülebilir.

    Kod

    Yığını:
    .say if $_.base(2).comb.grep(* eq 1).elems %% 2 for 0..50
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.