Liczby pierwsze z niespodzianką

13

Uwaga: jest to mocno inspirowane tym pytaniem .

Zadanie:

Twoim zadaniem jest wygenerowanie npierwszej liczby, gdy każda postać twojego programu jest powtarzana nrazy.

Powiedzmy, że twój program to:

Derp

Każda tamta postać jest powtarzana raz, więc powinna zostać wypisana 2.

Kiedy każda postać jest zduplikowana w miejscu, tak:

DDeerrpp

To powinno wygenerować drugą liczbę pierwszą, czyli 3.

Okular:

  • Twój program nie może przyjmować żadnych danych wejściowych i wyświetla odpowiednią liczbę pierwszą.
  • Twój program musi działać dla wszystkich liczb pierwszych, mając wystarczającą ilość czasu i pamięci.
  • Wiodące i końcowe znaki nowej linii są w porządku.
  • Dane wyjściowe muszą być w domyślnej podstawie języka - jeśli nie ma wartości domyślnej, każda podstawa jest w porządku.

To jest , więc wygrywa najkrótszy kod w bajtach.

clismique
źródło
6
Czy Twój program musi działać dla wszystkich liczb pierwszych, mając wystarczającą ilość czasu i pamięci. oznacza, że ​​nie mogę użyć np. int w C?
Dennis

Odpowiedzi:

21

Galaretka , 13 bajtów

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

Wypróbuj online! lub uruchom pierwsze dziesięć programów .

tło

Galaretka ma kilka różnych rodzajów literałów łańcuchowych; wszystkie zaczynają się od . Jeśli literał zawiera więcej niż jeden , zwracana jest tablica ciągów, która oddziela ciągi od siebie.

Na przykład “abc“def”daje ['abc', 'def'].

W zależności od ostatniego znaku literału (dowolnego z tych ”«»‘’, w których «obecnie nie jest zaimplementowany), można wybierać między różnymi rodzajami literałów. Ponieważ otrzymujemy punkty kodowe na stronie kodowej Jelly zamiast odpowiednich znaków Unicode.

Na przykład “abc“def‘daje [[97, 98, 99], [100, 101, 102]].

Literały w pierwszych trzech programach odpowiadają następującym tablicom punktów kodowych.

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

Jak to działa ( 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.
Dennis
źródło
1
To zdecydowanie wymaga wyjaśnienia ... a w zależności od tego, jak to jest ułożone, może to być jedyny język, który może to zrobić?
Wartość tuszu
6
Co ... jak? To jest po prostu zbyt szybkie.
clismique
@ValueInk Zredagowałem swoją odpowiedź.
Dennis
21

GS2 ( zatwierdzenie 67fea47 ), 6 3 bajty

dnR

Jak to działa

Jak większość poleceń, GS2 dsą przeciążone. Początkowo na stosie jest pusta lista (dane wejściowe lub ich brak), więc doblicza się ich sumę. Po pierwszej iteracji na stosie znajduje się 0 i dobliczana jest parzystość (również 0 ). Tak więc, bez względu na to, ile razy będziemy powtarzać d, wynik będzie zawsze pojedynczym 0 .

Następna część jest prosta. Polecenie nwyskakuje u góry stosu i wypycha następną liczbę pierwszą. Zatem powtarzanie n k razy oblicza k główny.

Wreszcie, polecenie po prostu stosuje str do góry stosu, co konwertuje liczbę na jego reprezentację łańcuchów i nie wpływa na łańcuchy. Tak więc, bez względu na to, ile razy będziemy powtarzać R, wynikiem będzie reprezentacja ciągu k główny.

Dennis
źródło
2
co do licha !?
downrep_nation
3
Nie reanimować
cyfrowy uraz