Bükümlü Asallar


13

Not: Bu, bu sorudan büyük ölçüde ilham almıştır .

Görev:

Göreviniz n, programınızın her karakteri nyerinde tekrar edildiğinde th prime oluşturmaktır .

Diyelim ki programınız:

Derp

Oradaki her karakter bir kez tekrarlanır, bu yüzden çıktı almalıdır 2.

Her karakter yerine kopyalandığında, şöyle:

DDeerrpp

Bu, 2. üssü üretmelidir 3.

Özellikleri:

  • Programınız girdi kabul etmemeli ve ilgili asal çıktıyı almalıdır.
  • Programınız, yeterli zaman ve bellek verildiğinde tüm hazırlıklar için çalışmalıdır.
  • Öncü ve sondaki yeni satırlar iyi.
  • Çıktı, dilin varsayılan tabanında olmalıdır - varsayılan yoksa, herhangi bir taban uygundur.

Bu , bayt en kısa kod kazanır.


6
Mu Programınız tüm asal, verilen yeterli zaman ve bellek için çalışmalıdır. demek istiyorum, örneğin, C int?
— Dennis

Yanıtlar:


21

Jöle , 13 bayt

“Ŀo‘’FQỌµḟ;¹V

Çevrimiçi deneyin! veya ilk on programı çalıştırın .

Arka fon

Jelly, birkaç farklı dize değişmezine sahiptir; hepsi bir ile başlar “. Değişmez birden fazla içeriyorsa “, bir dize dizisi döndürülür ve “dizeleri birbirinden ayırır.

Örneğin, “abc“def”verim ['abc', 'def'].

(Herhangi bir edebi son karakterine bağlı olarak ”«»‘’nerede, «şu anda uygulanmayan edilir), bir değişmezleri farklı türleri arasında seçim yapabilirsiniz. Çünkü ‘, kod noktalarını ilgili Unicode karakterleri yerine Jelly'in kod sayfasında alırız .

Örneğin, “abc“def‘verim [[97, 98, 99], [100, 101, 102]].

İlk üç programdaki değişmez değerler aşağıdaki kod noktası dizilerine karşılık gelir.

“Ŀo‘           -> [199, 111]
““ĿĿoo‘        -> [[], [199, 199, 111, 111]]
“““ĿĿĿooo‘     -> [[], [], [199, 199, 199, 111, 111, 111]]

Nasıl çalışır ( n = 3 )

“““ĿĿĿooo‘‘‘’’’FFFQQQỌỌỌµµµḟḟḟ;;;¹¹¹VVV  Main link. Implicit argument: 0

“““ĿĿĿooo‘                               Yield the 2D array
                                         [[], [], [199, 199, 199, 111, 111, 111]].
          ‘‘                             Increment twice, yielding
                                         [[], [], [201, 201, 201, 113, 113, 113]].
            ’’’                          Decrement thrice, yielding
                                         [[], [], [198, 198, 198, 110, 110, 110]].
               F                         Flatten, yielding
                                         [198, 198, 198, 110, 110, 110].
                FF                       Twice more. Does nothing.
                  Q                      Unique; yield [198, 110].
                   QQ                    Twice more. Does nothing.
                     Ọ                   Unordinal; convert the Unicode code points
                                         198 and 110 to 'Æ' and 'n'.
                      ỌỌ                 Twice more. Does nothing.
                        µµµ              Begin three monadic chains, all with
                                         argument s := "Æn".
                           ḟ             Filter-false; remove the characters of s
                                         from s, yielding "".
                            ḟḟ           Twice more. Does nothing.
                              ;;;¹       Concatenate with s three times, yielding
                                         "ÆnÆnÆn".
                                  ¹¹     Identity function. Does nothing.
                                    V    Eval the resulting Jelly code, i.e.,
                                         call the next-prime atom thrice, with
                                         initial implicit argument 0.
                                     VV  Eval two more times. This is a no-op
                                         on integers.

1
Bu kesinlikle bir açıklamaya ihtiyaç duyuyor ... ve nasıl düzenlendiğine bağlı olarak, bunu yapabilen tek dil olabilir mi?
— Değer Mürekkep

6
Ne nasıl? Bu çok hızlı.
— clismique

@ValueInk Cevabımı düzenledim.
— Dennis

21

GS2 ( taahhüt 67fea47 ), 6 3 bayt

dnR

Nasıl çalışır

Çoğu komut gibi GS2 dde aşırı yüklüdür . Başlangıçta, yığın üzerinde boş bir liste (giriş veya eksiklik) vardır, bu nedenle dtoplamını hesaplar. İlk yinelemeden sonra, yığın üzerinde 0 vardır dve paritesini hesaplar (ayrıca 0 ). Böylece, kaç kez tekrarlasak da d, sonuç her zaman tek 0 olur .

Bir sonraki bölüm basittir. Komut n, yığının üstünü açar ve bir sonraki asal sayıyı iter. Böylece, n k zamanlarının tekrarlanması k önemli.

Son olarak, komut , bir sayıyı dize temsiline dönüştüren ve dizeleri etkilemeyen yığının en üstüne str uygular . Böylece, kaç kez tekrarladığımız önemli değil R, sonuç k önemli.


2
dünyada ne var?
— downrep_nation

3
Canlandırma
— Dijital Travma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.