... Üzgünüm, patlamış mısır yok, sadece POPCNT.
Kısa Yazın programı veya fonksiyonu bir dizi alır n
ve çıkış 0 ila 2 arasında tüm tamsayıları n 1, bir artan düzende - sayıların ikili gösterimi 1 bit sayısı (popcount). Kopyaya izin verilmiyor.
Aynı popcount değerine sahip sayıların sırası uygulama tanımlıdır.
Örneğin n = 3
, tüm bu çıktılar geçerlidir:
0, 1, 2, 4, 3, 5, 6, 7
[0, 4, 1, 2, 5, 3, 6, 7]
0 4 2 1 6 5 3 7
Giriş ve çıkış formatı, kodu daha da golf oynamak için dil özelliklerinin kullanılmasına izin vermek için uygulama tanımlıdır. Çıktıda birkaç kısıtlama vardır:
- Sayılar ondalık biçimde yazılmalıdır.
Çıktı, sayılar arasında makul bir ayırıcı içermelidir (sondaki ayırıcıya izin verilir, ancak öndeki değil).
Hat besleme (
\n
), sekme (\t
), uzay,,
,.
,;
,|
,-
,_
,/
oldukça makul ayırıcı vardır. Güzel baskı için ek alanlara aldırmam, ancak ayırıcı olarak harf veya rakam kullanmayın.- Sayılar ve ayırıcılar ile çevrili olabilir
[ ]
,{ }
ya da herhangi bir dizi veya liste gösterimde. - Yukarıda belirtilmeyen başka bir şey yazdırmayın.
Bonus
Çözümünüz anında sayı üretebiliyorsa puanınızı 0,5 ile çarpın . Bu bonusun ruhu, eğer baskı çözümünüzü doğrudan bir jeneratöre dönüştürecek olursanız, jeneratör yalnızca en fazla O (n) bellek kullanır; burada n, yukarıda tanımlandığı gibi bit sayısıdır. (Çözümünüzü jeneratöre dönüştürmeniz gerekmez). Ben n <= 28 empoze ederken, tüm sayıları saklamak için gerekli bellek hala üssel olarak büyür ve saf bir sıralama çözümü n = 28 en az 4 GB bellek hog olacaktır unutmayın.
Lütfen bu bonusu talep etmeden önce çözümünüzün nasıl çalıştığına dair basit bir açıklama ekleyin.