Primes con una svolta


13

Nota: questo è fortemente ispirato a questa domanda .

Compito:

Il tuo compito è generare il nprimo, quando ogni personaggio del tuo programma viene ripetuto più nvolte sul posto.

Supponiamo che il tuo programma sia:

Derp

Ogni personaggio lì dentro viene ripetuto una volta, quindi dovrebbe essere generato 2.

Quando ogni personaggio è duplicato sul posto, in questo modo:

DDeerrpp

Questo dovrebbe generare il 2o primo, che è 3.

Specifiche:

  • Il programma non deve accettare input e produrre i rispettivi primi.
  • Il tuo programma deve funzionare per tutti i numeri primi, dati abbastanza tempo e memoria.
  • Le nuove linee guida e finali vanno bene.
  • L'output deve essere nella base predefinita della lingua: se non è presente alcuna impostazione predefinita, qualsiasi base va bene.

Questo è , quindi vince il codice più breve in byte.


6
Il tuo programma deve funzionare per tutti i numeri primi, con tempo e memoria sufficienti. significa che non posso usare, ad esempio, int in C?
Dennis,

Risposte:


21

Gelatina , 13 byte

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

Provalo online! o esegui i primi dieci programmi .

sfondo

Jelly ha diversi tipi di letterali stringa; tutti iniziano con a . Se il valore letterale ne contiene più di uno , viene restituita una matrice di stringhe che separa le stringhe l'una dall'altra.

Ad esempio, i “abc“def”rendimenti ['abc', 'def'].

A seconda dell'ultimo carattere del letterale (uno qualsiasi ”«»‘’, dove non «è attualmente implementato), si può scegliere tra i diversi tipi di letterali. Per , otteniamo i punti di codice nella codepage di Jelly invece dei corrispondenti caratteri Unicode.

Ad esempio, i “abc“def‘rendimenti [[97, 98, 99], [100, 101, 102]].

I valori letterali nei primi tre programmi corrispondono ai seguenti array di punti di codice.

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

Come funziona ( 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
Questo ha sicuramente bisogno di una spiegazione ... e a seconda di come è strutturato, potrebbe essere l'unica lingua in grado di farlo?
Value Ink

6
Cosa come? È semplicemente troppo veloce.
clismique,

@ValueInk Ho modificato la mia risposta.
Dennis,

21

GS2 ( commit 67fea47 ), 6 3 byte

dnR

Come funziona

Come la maggior parte dei comandi, GS2 dè sovraccarico. Inizialmente, c'è una lista vuota (l'input o la sua mancanza) nello stack, quindi dcalcola la sua somma. Dopo la prima iterazione, c'è uno 0 nello stack e dcalcola la sua parità (anche 0 ). Pertanto, indipendentemente da quante volte ripetiamo d, il risultato sarà sempre un singolo 0 .

La parte successiva è semplice. Il comandon apre la parte superiore dello stack e invia il numero primo successivo. Pertanto, ripetendo n k volte si calcola k Prime.

Infine, il comando si applica semplicemente str all'inizio dello stack, che converte un numero nella sua rappresentazione di stringa e non influisce sulle stringhe. Pertanto, indipendentemente da quante volte ripetiamo R, il risultato sarà la rappresentazione in forma di stringa di k Prime.


2
che diavolo !?
downrep_nation

3
Non rianimare
Digital Trauma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.