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.