Primes mit einer Wendung

13

Hinweis: Dies ist stark von dieser Frage inspiriert .

Aufgabe:

Ihre Aufgabe ist es, das nth Prim zu generieren , wenn sich jeder Charakter Ihres Programms nmehrmals an Ort und Stelle wiederholt .

Angenommen, Ihr Programm lautet:

Derp

Jedes Zeichen dort wird einmal wiederholt, daher sollte es ausgegeben werden 2.

Wenn jedes Zeichen wie folgt dupliziert wird:

DDeerrpp

Dies sollte die 2. Primzahl erzeugen 3.

Technische Daten:

  • Ihr Programm darf keine Eingabe akzeptieren und die jeweilige Primzahl ausgeben.
  • Ihr Programm muss für alle Primzahlen funktionieren, sofern genügend Zeit und Speicher vorhanden sind.
  • Führende und nachfolgende Zeilenumbrüche sind in Ordnung.
  • Die Ausgabe muss in der Standardbasis der Sprache erfolgen. Wenn es keine Standardbasis gibt, ist jede Basis in Ordnung.

Das ist , also gewinnt der kürzeste Code in Bytes.

Clismique
quelle
6
Funktioniert Ihr Programm für alle Primzahlen, wenn genügend Zeit und Speicher vorhanden sind? meine ich kann zB int nicht in c benutzen?
Dennis

Antworten:

21

Gelee , 13 Bytes

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

Probieren Sie es online! oder führen Sie die ersten zehn Programme aus .

Hintergrund

Jelly hat verschiedene Arten von String-Literalen. alle fangen mit a an . Wenn das Literal mehrere enthält , wird ein Zeichenfolgenarray zurückgegeben das die Zeichenfolgen voneinander trennt.

Zum Beispiel “abc“def”Ausbeuten ['abc', 'def'].

Abhängig vom letzten Zeichen des Literales (eines davon ”«»‘’, wo «es derzeit nicht implementiert ist) kann man zwischen den verschiedenen Arten von Literalen wählen. Für erhalten wir die Codepunkte in Jellys Codepage anstelle der entsprechenden Unicode-Zeichen.

Zum Beispiel “abc“def‘Ausbeuten [[97, 98, 99], [100, 101, 102]].

Die Literale in den ersten drei Programmen entsprechen den folgenden Codepunktarrays.

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

Wie es funktioniert ( 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
quelle
1
Dies ist definitiv erklärungsbedürftig ... und je nachdem, wie es aufgebaut ist, ist es möglicherweise die einzige Sprache, die dies kann?
Value Ink
6
Was wie? Das geht einfach viel zu schnell.
Clismique
@ValueInk Ich habe meine Antwort bearbeitet.
Dennis
21

GS2 ( Festschreiben 67fea47 ), 6 3 Bytes

dnR

Wie es funktioniert

Wie die meisten Befehle ist GS2 düberlastet. Am Anfang befindet sich eine leere Liste (die Eingabe oder das Fehlen davon) auf dem Stapel, also dberechnet sie ihre Summe. Nach der ersten Iteration befindet sich eine 0 auf dem Stapel und dberechnet seine Parität (auch 0 ). Unabhängig davon, wie oft wir uns wiederholen d, ist das Ergebnis immer eine einzelne 0 .

Der nächste Teil ist unkompliziert. Der Befehl nfüllt den oberen Bereich des Stapels und gibt die nächste Primzahl aus. Das n k- fache Wiederholen berechnet also das k prime.

Schließlich wendet der Befehl einfach str am oberen Rand des Stapels an, wodurch eine Zahl in ihre Zeichenfolgendarstellung konvertiert wird und Zeichenfolgen nicht beeinflusst werden. Unabhängig davon, wie oft wir uns wiederholen R, ist das Ergebnis die Zeichenfolgendarstellung des k prime.

Dennis
quelle
2
was in aller Welt!?
Downrep_nation
3
Nicht wiederbeleben
Digitales Trauma