Tüfek sayılar oldukça basit tanımı ancak bazı ilginç yapısıyla bir dizi vardır. Doğal sayılarla başla:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
Şimdi tüm sayıları 2'ye bölünebilen endekslerde al , onları çiftler halinde gruplandır ve sayıları her çiftte değiştir:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
^ ^ ^ ^ ^ ^ ^
<---> <---> <-----> <----
1, 4, 3, 2, 5, 8, 7, 6, 9, 12, 11, 10, 13, 16, ...
Şimdi aynısını 3 ile bölünebilen endekslerle yapın :
1, 4, 3, 2, 5, 8, 7, 6, 9, 12, 11, 10, 13, 16, ...
^ ^ ^ ^
<------> <--------->
1, 4, 8, 2, 5, 3, 7, 6, 10, 12, 11, 9, 13, 16, ...
Ve sonra 4 , 5 , 6 vb. İçin:
1, 4, 8, 2, 5, 3, 7, 6, 10, 12, 11, 9, 13, 16, ...
1, 4, 8, 6, 5, 3, 7, 2, 10, 12, 11, 14, 13, 16, ...
1, 4, 8, 6, 12, 3, 7, 2, 10, 5, 11, 14, 13, 16, ...
1, 4, 8, 6, 12, 14, 7, 2, 10, 5, 11, 3, 13, 16, ...
...
Sonra k tür adımlar, ilk k + 1 numaraları düzeltilecektir. Böylece, Shotgun sayılarının sonsuz sırasını, k'nın sonsuzluğa gitmesine izin verme sınırı olarak tanımlayabiliriz . İlk 66 sayı:
1, 4, 8, 6, 12, 14, 16, 9, 18, 20, 24, 26, 28, 22, 39, 15, 36, 35, 40, 38, 57, 34, 48, 49, 51, 44,
46, 33, 60, 77, 64, 32, 75, 56, 81, 68, 76, 58, 100, 55, 84, 111, 88, 62, 125, 70, 96, 91, 98, 95,
134, 72, 108, 82, 141, 80, 140, 92, 120, 156, 124, 94, 121, 52, 152, 145, ...
Eğlenceli gerçek: Sadece doğal sayılara izin verilerek elde edilmesine rağmen, bu dizi hiçbir asal içermez.
Meydan okuma
Bir tamsayı verildiğinde n > 0
, n
th Shotgun numarasını bulun . STDIN (veya en yakın alternatif), komut satırı argümanı veya işlev argümanı yoluyla giriş alarak bir program veya işlev yazabilir ve çıktısını geri döndürebilir veya STDOUT'a (veya en yakın alternatife) yazdırabilirsiniz.
Bu kod golf, yani en kısa gönderme (bayt cinsinden) kazanır.
Liderler
Bu düşündüğümden daha fazla cevap alıyor, aynı dilde rekabet eden birkaç insan. Yani burada hem düzenli bir lider tablosu hem de kazananların dile göre bir genel bakışını oluşturmak için bir Stack Snippet.
Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:
# Language Name, N bytes
Gönderinizin N
büyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:
# Ruby, <s>104</s> <s>101</s> 96 bytes
10
, 21
, 25
ve 30
örneğin, ya görünmez.
k
yinelemede, k
dizideki th elemanı 2k
th. pozisyonuna geçirilir ve incinasyona kadar tekrar dokunulmaz 2k
, bu sırada 4k
th. Asal bir sıra gelene kadar aktarılmaz, tabiri caizse, bütün asallar ileri karıştırılır. Ancak masum kurbanların listesini, yalnızca yinelemede 2 aktarılacak olan ilk elemanı ve her bir yinelemeyi yazdırarak kolayca yapabiliriz. Liste şu şekilde: 2, 3, 5, 7, 10, 11, 13, 21, 17, 19, 30, 23, 27, 25, 29, 31, 45, 42, 37, 54, 41, 43, 65, ...