Scrivi una Quine Suite


30

Abbiamo avuto molte sfide con le , ma molti dei formati delle quine sono simili, creiamo una varianza nelle nostre quine.

Il tuo compito è creare una selezione di programmi nella stessa lingua (almeno 2), ognuno dei quali genera il proprio codice sorgente, tuttavia nessuno di questi programmi può condividere alcun carattere.

Ad esempio, se si crea un programma utilizzando:

printf+qw(printf+qw(%s)x2)x2

Il tuo prossimo programma non può includere nessuno dei seguenti:

%()+2finpqrstwx

e così via.

Regole

  • È possibile utilizzare caratteri unicode, ma è comunque necessario segnare in byte.
  • Tutti i programmi devono soddisfare la definizione di comunità di un quine adeguato . Ciò significa che, tra le altre cose, la stringa vuota non viene considerata come un quine valido.
  • Sono vietate le scappatoie standard.
  • Le funzioni o i programmi completi sono consentiti purché soddisfino la definizione di cui sopra.
  • Le lingue indipendenti dai simboli (inclusi Lenguage e Headsecks) non sono consentite.
  • La maggior parte dei programmi vince, con il codice totale più breve come pareggio.

Dato che ci sono voti ravvicinati, deselezionerò il post sandbox per la discussione: codegolf.meta.stackexchange.com/a/16053/9365
Dom Hastings

Ho notato che i commenti sulla sandbox menzionano che sono consentiti invii di funzioni, ma la sfida non dice nulla al riguardo: stavo assumendo il contrario come predefinito per i quines.
Ørjan Johansen,

2
Correlati (tipo di sfida inversa - i tuoi quines devono prodursi a vicenda anziché a se stessi)
Nathaniel

1
Che ne dici di seguire le nuove righe? Se una delle mie quine ne stampa una, l'altra deve evitare di farlo? (Sospetto che la maggior parte delle risposte non lo faccia.)
Nathaniel,

2
@DomHastings Non sono riuscito a trovare una meta domanda, quindi ho fatto una .
Nathaniel

Risposte:


27

V , 3 , 5 quines, 46 byte

2A2A

Provalo online!

hexdump:

00000000: 3241 3241                                2A2A

Spiegazione:

2     " 2 times...
 A    " (A)ppend the following text...
  2A  "   '2A'

5­­­a5­­­a

Provalo online!

hexdump:

00000000: 35ad adad 6135 adad ad61                 5...a5...a

Spiegazione:

5---        " 5 - 3 times...
    a       " (a)ppend the following text...
     5---a  "   '5---a'

1«I1«I

Provalo online!

hexdump:

00000000: 31ab 4931 ab49                           1.I1.I

Spiegazione:

1«      " 1 + 1 times...
  I     " (I)nsert the following text...
   1«I  "   '1«I'

Ecco dove iniziano a diventare funky ...

ñi34x@-qPÉÑ~ÿ

Provalo online!

hexdump:

00000000: f169 1633 341b 7840 2d71 50c9 d17e ff    .i.34.x@-qP..~.

Spiegazione:

ñ                       " Wrap all the following in macro '"q':
 i<C-v>34               "   Insert character code 34 `"`
         <esc>          "   Return to normal mode
              x         "   Delete the character we just inserted. Now, running `@-` will be equal to running `"`
                  P     "   Paste...
               @-       "   From Register...
                 q      "   "q
                   ÉÑ   "   Insert 'Ñ' at the beginning of this line
                     ~  "   Toggle the case of the character we just inserted
                      ÿ "   Black magic

:norm é:":p

Provalo online!

hexdump:

00000000: 3a6e 6f72 6d20 e93a 223a 70              :norm .:":p

Spiegazione:

:norm       " Run the following commands as if typed:
      é:    "   insert ':'. Somehow also does black magic and resets the value of '":`
        ":p "   Paste the last ex command to be run ('norm é:":p')

Questa risposta è piena di magia nera. Le quine 1 e 4 non sono nuove, ma le altre 3 non sono mai state trovate prima, quindi più della metà di queste quine sono state scoperte oggi.


8
Il terzo programma è la pesca a traina. "Sei un normie :p"
mbomb007,

4
@ mbomb007 ObbligatorioREEEEEE--
Urna di polpo magico

17

Gelatina , 2 3 4 5 quines, 14 18 81 65 59 56 326 265 247 229 216 byte

3 byte

”ṘṘ

Provalo online!

Quine standard. ”Ṙè l'unico personaggio letterale per . stampa la rappresentazione in forma di stringa, quindi la stringa viene implicitamente stampata.

4 byte

⁾⁾ḤḤ

Provalo online!

inizia una stringa di due caratteri letterale e raddoppia il suo argomento. Con un input di stringa, viene mappato su ciascun carattere. Agendo così sui ⁾Ḥrendimenti delle stringhe ⁾⁾ḤḤ, il codice sorgente.

11 byte

ȮṾṖƊ}“ȮṾṖƊ}

Provalo online!

Sul lato destro, “ȮṾṖƊ}è la stringa letterale per ȮṾṖƊ}. Il carattere di chiusura della stringa viene aggiunto tacitamente a EOF.

A sinistra della stringa letterale, si Ɗavvolge ȮṾṖin una singola monade e la }trasforma in una diade che usa l'argomento giusto, la stringa letterale. Ȯstampa la stringa ( ȮṾṖƊ}), crea una rappresentazione di stringa della stringa ( “ȮṾṖƊ}”) e rimuove il carattere. La stringa “ȮṾṖƊ}viene lasciata dopo la monade e viene implicitamente stampata.

38 49 36 byte

32,52,52,7884,106,64,44,7884 44Ọj@,Ọ

Provalo online!

La prima volta che ho mai usato uno spazio nel golf Jelly.

L'elenco di numeri all'inizio contiene ordil resto dei caratteri nel codice. Dopo di che:

jṛ44Ọ$,Ọ
j           Join this list with...
 ṛ          right argument. Avoiding using ¤ so I can use it in the next program.
  44Ọ       chr(44)==',': [106, ',', ...]
     $      Causes Ọ to act on 44 before j acts on it.
      ,     Pair this list with...
       Ọ    chr of each number in the list. Yields jṛ44Ọ$,Ọ

270 198 180 162 byte

⁽¢_;⁽⁽¤;⁽¡_;⁽⁽¡;⁽¡¤;⁽$+;⁽⁽y;⁽Ẹ$;⁽⁺$;⁽AƑ;⁽?€;⁽b⁽;⁽¢¡;⁽_⁽;⁽¡¡;⁽¤ị;⁽ØJ;⁽µṭ;⁽€⁽;⁽¡S;⁽;⁽;⁽¡ʠ;⁽¤ị;⁽ØJ;⁽¤F;⁽ḊṄ;⁽ȧF
¢_⁽¤¡_⁽¡¡¤$+⁽yẸ$⁺$AƑ?€b⁽¢¡_⁽¡¡¤ịØJµṭ€⁽¡S;⁽¡ʠ¤ịØJ¤FḊṄȧF

Provalo online!

Utilizza 250 numeri e indici di base nella tabella codici Jelly. Salvato 72 byte modificando l'algoritmo. Stavo usando ogni numero per indicizzare nella code page di Jelly, ma ora sto convertendo nuovamente l'intero in base 250, quindi indicizzando nella code page di Jelly, praticamente dimezzando il numero di letterali di cui ho bisogno nella prima riga. Ciò riduce anche il numero di caratteri unici necessari, ma non riesco a pensare a un modo per fare più quines.

Ho usato quelli ⁾“”che creano letterali stringa e ØJche creano stringhe da numeri. Non riesco a pensare ad altri modi di creare stringhe. Ho ancora la cifra 9e ‘’disponibile, quindi se c'è un altro modo di creare stringhe da numeri potrebbe essere possibile fare un altro quine.


13

Haskell , 3 quines, 1119 byte

Quine 1, 51 byte

Un'azione anonima IOche stampa direttamente su stdout.

putStr`mappend`print`id`"putStr`mappend`print`id`"

Provalo online!

Quine 2, 265 byte

La funzione faccetta un argomento fittizio e restituisce una stringa.

f	c=[b=<<g]!!0++show	g;b	c=[[[show	9!!0,show	1!!0..]!!6..]!!c];g=[93,0,90,52,82,89,52,51,51,94,84,24,24,39,34,34,106,95,102,110,0,94,50,89,0,90,52,82,82,82,106,95,102,110,0,48,24,24,39,35,106,95,102,110,0,40,24,24,39,37,37,84,24,24,45,37,37,84,24,24,90,84,50,94,52]

Provalo online!

Quine 3, 803 byte

Tutto dopo il LANGUAGEpragma è una funzione anyema che prende un argomento fittizio e restituisce una stringa.

{-#LANGUAGE CPP#-}(\q(_:_:_:_:_:_:_:_:z)y(#)_->(y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x)$y(:)#y(:)$ \x->x)z)'\''__TIME__(\(?)v k x->v$k?x)$ \(&)(%)v->v&'{'&'-'&'#'&'L'&'A'&'N'&'G'&'U'&'A'&'G'&'E'&' '&'C'&'P'&'P'&'#'&'-'&'}'&'('%'\\'&'q'&'('&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'_'&':'&'z'&')'&'y'&'('&'#'&')'&'_'&'-'&'>'&'('&'y'&'('%'\\'&'k'&' '&'x'&'-'&'>'%'\''&'&'%'\''&':'&'q'&':'&'k'&':'&'q'&':'&'x'&')'&'#'&'y'&'('%'\\'&'k'&' '&'x'&'-'&'>'%'\''&'%'%'\''&':'&'q'&':'%'\''%'\\'%'\\'%'\''&':'&'k'&':'&'q'&':'&'x'&')'&'$'&'y'&'('&':'&')'&'#'&'y'&'('&':'&')'&'$'&' '%'\\'&'x'&'-'&'>'&'x'&')'&'z'&')'%'\''%'\\'%'\''%'\''&'_'&'_'&'T'&'I'&'M'&'E'&'_'&'_'&'('%'\\'&'('&'?'&')'&'v'&' '&'k'&' '&'x'&'-'&'>'&'v'&'$'&'k'&'?'&'x'&')'&'$'&' '%'\\'&'('&'&'&')'&'('&'%'&')'&'v'&'-'&'>'&'v'

Provalo online!

Personaggi

Quine 1:


"S`adeimnprtu

Quine 2:

	!+,.0123456789;<=[]bcfghosw

Quine 3:

 #$%&'()-:>?ACEGILMNPTU\_kqvxyz{}

Come funziona

Quine 1

putStr`mappend`print`id`"putStr`mappend`print`id`"

Quine 1 è una versione modificata del mio recente Golf, una risposta quine (con miglioramenti di H.PWiz):

  • Poiché non sono necessari programmi completi, main=è stato rimosso.
  • <>e $sono stati sostituiti dai loro quasi sinonimi mappende id.

Questo libera i personaggi vitali =<>e l'operatore utile $per le altre quine.

Quine 2

f	c=[b=<<g]!!0++show	g;b	c=[[[show	9!!0,show	1!!0..]!!6..]!!c];g=[93,0,......]

Quine 2 utilizza metodi in qualche modo simili per programmare 2 della mia recente risposta Quines reciprocamente esclusivi , ma adattati per restringersi direttamente e soprattutto per evitare di usare letterali di caratteri, necessari per Quine 3. Entrambi sono raggiunti con l'aiuto della showfunzione, che per pura fortuna non ha ancora usato nessuno dei suoi personaggi.

Questo quine utilizza le schede anziché gli spazi, ma ho usato gli spazi sottostanti per la leggibilità.

  • gsono i dati di quine, come un elenco di numeri interi alla fine del codice. Ogni numero rappresenta un carattere dal resto del codice.
    • I numeri vengono spostati di 9, quindi quella scheda è 0. Ciò rende la codifica un po 'più breve consentendo alle lettere minuscole per la funzione e ai nomi delle variabili di adattarsi a 2 cifre.
  • b c=[[[show 9!!0,show 1!!0..]!!6..]!!c] è una funzione per convertire un numero in un carattere (in realtà una stringa di un carattere).
    • [[show 9!!0,show 1!!0..]!!6..]è un intervallo di caratteri che inizia con un carattere di tabulazione, in cui è indicizzato !!c.
    • Il carattere di tabulazione si è prodotto indicizzando in un altro intervallo [show 9!!0,show 1!!0..], inizia con i caratteri numerici '9'e '1'e saltare in incrementi di 8.
    • I caratteri delle cifre vengono prodotti indicizzandoli nella showstringa della cifra corrispondente.
  • f c=[b=<<g]!!0++show gè la funzione principale. cè un argomento fittizio.
    • b=<<gusa =<<per convertire ogni numero nel gsuo carattere. (L'uso di =<<piuttosto che ad es. mapÈ il motivo bper cui deve racchiudere il suo carattere restituito in un elenco.)
    • show gfornisce la rappresentazione in formato stringa gdell'elenco e ++concatena le stringhe.
    • Poiché =<<ha una precedenza inferiore rispetto a ++, è necessario un certo bracketing. Per evitare di usare ()(riservato per quine 3), [...]!!0indicizza in un elenco con un elemento.

Quine 3

In base alla progettazione degli altri quines, quine 3 ha ancora accesso a parentesi, espressioni lambda, valori letterali dei caratteri e al costruttore stringa / elenco :. Questo sarà sufficiente per costruire una funzione che antepone il codice del quine a una stringa.

Sfortunatamente, ysono state usate tutte le vocali minuscole (tranne qualche volta ), senza lasciare utili funzioni incorporate alfanumeriche. Inoltre se ne []""sono andati. Questo non lascia un modo normale per costruire una stringa vuota per iniziare a fingere il codice.

Tuttavia, quasi tutte le lettere maiuscole sono ancora disponibili, quindi è possibile un LANGUAGEpragma per ottenere un'estensione della lingua. Ancora una volta, per pura fortuna, CPP(abilita il preprocessore C) è l'unica estensione del linguaggio chiamata con solo lettere maiuscole. E le macro CPP hanno spesso nomi in maiuscolo.

Quindi, per ottenere la stringa vuota essenziale, il quine abilita CPP, usa la __TIME__macro per ottenere una costante di stringa del modulo "??:??:??"(convenientemente garantito per avere sempre la stessa lunghezza), e corrispondenze di pattern su di essa.

{-#LANGUAGE CPP#-}(\q(_:_:_:_:_:_:_:_:z)y(#)_->(y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x)$y(:)#y(:)$ \x->x)z)'\''__TIME__(\(?)v k x->v$k?x)$ \(&)(%)v->v&'{'&'-'&......

Dopo il pragma del linguaggio, il quine è costituito da un'espressione lambda che lega i suoi parametri a questi quattro argomenti (lasciando un parametro fittizio finale _da applicare in seguito):

  • qvincolato a '\'', dando un singolo carattere di citazione;
  • _:_:_:_:_:_:_:_:zlegato a __TIME__, come una stringa simile "??:??:??", creando così zuna stringa vuota;
  • yassociato a (\(?)v k x->v$k?x), un combinatore lambda utilizzato per aiutare a convertire i dati di quine dal modulo associato a sinistra ("foldl") in associato a destra ("foldr");
  • L'operatore è (#)legato a \(&)(%)v->v&'{'&'-'&..., i dati di quine stessi.

I dati di Quine sono forniti in una forma di codifica Church, un'espressione lambda con parametri (&)(%)v.

  • Applicando l'espressione di determinati valori per istanziare (&), (%)e v, questa codifica può essere utilizzato per costruire il codice di base del quine o ricostruire la rappresentazione dei dati quine stessa.
  • Secondo la regola di fissità predefinita di Haskell, &e %diventa operatori associativi di sinistra all'interno della lambda. In questo modo i parametri dei caratteri si combinano con l' vinizio iniziale da sinistra.
  • Per la maggior parte dei personaggi k, esiste un corrispondente &'k'.
  • Quando kè 'o \, che deve essere evaso all'interno dei letterali dei caratteri, la codifica è invece %'\k'.

Poiché la codifica dei dati è associativa sinistra, ma le stringhe sono costruite in modo associativo destro, il combinatore y = (\(?)v k x->v$k?x)viene introdotto per colmare la mancata corrispondenza.

  • y(...)è destinato a costruire funzioni adatte per l'utilizzo come dati (&)e (%)operatori di Quine .
  • vè una funzione da stringhe a stringhe (i dati di quine data vsono esempi).
  • kè un carattere, xuna stringa e ?un operatore che li combina in una nuova stringa. (Per il codice principale (?)=(:),. Per ricostruire effettivamente la rappresentazione dei dati quine, è più complicato.)
  • Quindi y(?)v k = \x->v$k?xè un'altra funzione dalle stringhe alle stringhe.
  • Come esempio di come questo cambi associatività, se (&)=y(:):

    (v&k1&k2&k3) x
    = (((v&k1)&k2)&k3) x
    = y(:)(y(:)(y(:)v k1)k2)k3 x
    = y(:)(y(:)v k1)k2 (k3:x)
    = y(:)v k1 (k2:(k3:x))
    = v (k1:(k2:(k3:x)))
    = v (k1:k2:k3:x)

Più in generale, quando (#)è la funzione di dati quine e f1,f2sono funzioni che combinano caratteri con stringhe:

(y(f1)#y(f2)$v) x
= (...(y(f1)(y(f1)v '{') '-')...) x
= v(f1 '{' (f1 '-' (... x)))

applicando la funzione di dati di Quine con (&)=y(f1)e (%)=y(f2), e questo utilizza il valore prescritto f1e f2per combinare i caratteri di dati di Quine con x, quindi passa la stringa risultante a v.

Il corpo della principale espressione lambda mette tutto insieme:

(y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x)$y(:)#y(:)$ \x->x)z
  • '&':q:k:q:xper un carattere kantepone &'k'alla stringa x, mentre '%':q:'\\':k:q:xantepone %'\k', che sono i loro moduli di dati quine originali.
  • Quindi y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:xsono i parametri giusti per ricostruire la rappresentazione dei dati Quine, anteposti alla finale z(la stringa vuota) e quindi passati alla seguente funzione.
  • y(:)#y(:) sono i parametri giusti per anteporre il codice core del quine a una stringa, senza altre modifiche.
  • Alla fine non \x->xarriva a fare nulla con il quine costruito, che viene restituito.

9

Perl 6 , 3 quines, 274 byte

Quine 1, 52 byte

my&d={S{\d}=$_};say
d
Q{my&d={S{\d}=$_};say
d
Q{4}}

Provalo online!

Quine 2, 102 byte

printf	|(q[printf	|(q[@]xx	2	Z~|(q[printf	|(q[!3]]Xx	qw[1	0]))]xx	2	Z~|(q[printf	|(q[!3]]Xx	qw[1	0]))

Provalo online!

Quine 3, 120 byte

<'.EVAL'.UC,' GIVEN ',「「PRINT "<'.EVAL'.UC,' GIVEN ',「「".UC,.UC,"」」>.LC",".EVAL.EVAL".UC」」>.lc.EVAL.EVAL

Provalo online!

Verifica di insiemi distinti di byte

Ci sono state molte manovre per ottenere quel terzo quinto. Perl 6 ha 4 modalità di uscita (che io sappia), say, put, printe printf. Entrambi saye putoutput newline, poiché non posso usare entrambi. put, print, printfTutti contengono pe t. Possiamo aggirare parzialmente questo problema usando EVALla maiuscola PRINT. Da lì, non penso che sia possibile ottenere 4 quine ... (anche se forse qualcosa del genere shell "echo 'quine'"potrebbe funzionare)

Possiamo quindi aggirare i problemi di spaziatura usando diversi tipi di spazi bianchi per separare operatori, spazi, tabulazioni e nuove righe.

spiegazioni:

Quine 1:

my&d={        };         # Declare a function d which 
      S{\d}=$_           # Which substitutes a digit with the string again
                say      # Print with a newline
d                        # The function
Q{my&d={S{\d}=$_};say    # Applied to the string with the program
d
Q{4}}                    # With a digit where the it should be inserted again

Quine 2:

Questo è un quine nel formato printf |(q[printf q[%s]]xx 2), cioè formatta una copia della stringa in sé. Tuttavia non possiamo usarlo sdato che è stato usato nelle precedenti quine say. Quindi usiamo l'operatore stringa OR ( ~|) su @e !3, per produrre la %sparte, ma non possiamo farlo sia per la stringa di formato che per la stringa da inserire, quindi abbiamo a che fare Z~con la stringa aggiuntiva e una stringa vuota, anche se quindi non possiamo usare ,per separare i due, quindi facciamo Xx qw[1 0]una stringa moltiplicata per 1 e 0.

printf |(                                  )      # Print with formatting
         q[...]       # The string of the program
               xx 2   # Duplicated
                    Z~| (                 )     # String or'd with
                         q[...]                 # A copy to insert the %s
                                Xx              # String multiplied to
                                   qw[1 0]      # itself and an empty string

Quine 3:

Questa è una quinta EVAL che fa del suo meglio per rendere tutto maiuscolo per evitare conflitti con le altre quine. Ciò comporta un sacco di EVALs così come un bel po ' lce la ucconversione tra i casi.

<...>.lc.EVAL        # Evaluate the lowercase version of the string which results in
.EVAL  given  「print "<'.eval'.uc,' given ',「「".uc,.uc,"」」>.lc",".eval.eval".uc」
             .EVAL   # Evaluate again 

.EVAL  given  「...」   # Set the string to $_ and pass it to .EVAL
print "<'.eval'.uc,' given ',「「".uc       # Print the first half of the quine uppercased
                                   ,.uc   # Print the string uppercased
                                       ,"」」>.lc"  # Print the .lc part lowercased
                                                ,".eval.eval".uc # Print the EVAL part uppercased

9

MathGolf , 4 5 6 quines, 193.535 byte

9 byte

ÿ'ÿ⌐_'ÿ⌐_

Provalo online!

45 byte

û]∙ûxôû¬ûûûûû╡¬ûô╡û╡xûxxû¬ô]∙xô¬ûûû╡¬ô╡╡xxx¬ô

Provalo online!

49 byte

ùa6æù\a\ù+6┼ù\ùùùùù\ù§\+ùΣ\Σa6æ\a\+6┼\ùùùù\§\+Σ\Σ

Provalo online!

99 byte

"""▐ ⌠▌ ⌠▌ ⌠▌ ⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠"`~

Provalo online!

4488 byte

♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((♠((((((((((((((((((((((((((((((((((((((((((((DÄß─·ö♠,♦M-$*DÄß─ö7($$$qq$Äq╘

Provalo online!

188.845 byte

Non riesco davvero a collegarmi a questo, quindi ecco un programma Perl 6 che genera l'attuale quine

Verifica del carattere distintivo

Posso sicuramente spremere un altro quine da questo, anche se penso di aver esaurito i modi per spingere le stringhe direttamente nello stack, quindi dovrò ricorrere a metodi più strani. Anche i metodi più strani in arrivo mentre provo per un sesto quinto. In alcuni casi i quines potrebbero essere più brevi, ma sto riducendo i byte usati in preparazione.

Ok, potrei tecnicamente essere in grado di fare un altro quine, dal momento che ho ancora alcuni operatori di cui ho bisogno (push stringa, stringa di incremento, duplicazione, mappatura, popping), è il loop che ci restringe. L' {}sono gli unici operatori che possono possono indicare un blocco di codice di lunghezza arbitraria, e ho realmente bisogno di loro nel 6 ° Quine. Potrei usare alcuni degli altri blocchi di codice, ma sono limitati e dubito che le sezioni di loop saranno così brevi, dato che stiamo esaurendo gli operatori facili.

Ok, alcune spiegazioni tardive:

Tutti i quines hanno quasi la stessa struttura:

  • Inserire una stringa o un elenco di stringhe o un elenco di caratteri nello stack.
  • Combina tutto in un unico elenco
  • Duplica l'elenco
  • Mappa sulla copia, stampa / spingendo i caratteri utilizzati per ottenere i caratteri originali
  • Stampa l'elenco originale di caratteri come stringa

Quine 1:

Questo è fondamentalmente lo stesso di quello che ho pubblicato nella normale domanda quine.

ÿ'ÿ⌐_'ÿ⌐_
ÿ            Push the next 4 bytes as a string
 'ÿ⌐_        Stack ["'ÿ⌐_"]
     'ÿ      Push the byte ÿ (I realise I could have used this in a later quine)
       ⌐     Rotate the ÿ to the bottom of the stack : ["ÿ", "'ÿ⌐_"]
        _    Duplicate top of stack: ["ÿ", "'ÿ⌐_", "'ÿ⌐_"]
             Implicitly print stack joined together : ÿ'ÿ⌐_'ÿ⌐_

Quine 2

û                Push the next 2 bytes as a string
 ]∙              Stack: ["]∙û"]
   û  û...      Repeat this for the rest of the code
           ]              Wrap the stack in an array : [["]∙","xô"...]]
            ∙             Triplicate                 : [[..],[..],[..]]
             x            Reverse the top array
              ô           Loop over the array, executing the next 6 instructions
                          Stack: [[..],[..],str]
               ¬          Rotate the stack : [str,[..],[..]]
                ûûû╡      Push the string "ûû" and discard the left character
                    ¬     Rotate the "û" to the bottom : ["û",str,[..],[..]]
                          This produces the initialisation part
                     ô    Loop over the array with the next 6 characters again
                      ╡╡xxx¬      Basically discard the string
                            ô     Flatten the last copy of the array onto the stack
                                  Implicitly output the code

Quine 3:

ùa6æù\a\ù+6┼ù\ùùùùù\ù§\+ùΣ\Σa6æ\a\+6┼\ùùùù\§\+Σ\Σ
ù...          Push the next 3 bytes as a string
              You know how this goes
    a         Wrap the top element in an array
     6æ       Repeat the next 4 instructions 6 times
       \      Swap the two top items
        a     Wrap the top item in an array
         \    Swap back
          +   Combine the two arrays
              This puts all the strings into a single array
           6            Push a 6
            ┼           Push the element two items down (the array)
             \          Swap with the 6 (this basically duplicates the array)
              ùùùù      Push "ùùù"
                  \§    Swap and get the 6th character (wrapping)
                    \   Swap with array : ["ù", [..]]
                     +  Prepend to array (implicitly mapping)
                      Σ\Σ     Join both the lists to strings and output

Quine 4:

"""▐ ⌠▌ ⌠▌ ⌠▌ ⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠"`~
""             Push the empty string
  "..."        Push some code : ['','...']
       `       Copy the top two elements of the stack : ['','...','','...']
        ~      Evaluate the top element as code : ['','...','']
▐              Prepend the empty string to the code
  ⌠            Push a space and increment by 2 to get a quote
   ▌           Prepend to the array
     ⌠▌ ⌠▌ ⌠   Repeat three more times, leaving the last on top : ['', '""...','"']
              ⌠⌠...       Push a space and increment until it reaches a '`'
                    ⌠⌠... Repeat for the '~' : ['','"""...','"','`','~']
                          Implicitly output

Quine 5:

♠              Push 256
 ((...         Decrement until it reaches the correct byte representing the code
               Repeat for each character of the code
      DÄ       Repeat the next instruction 14 times
        ß      Wrap the top 4 elements in an array
         ─     Flatten the resulting monstrosity
          ·    Triplicate the array
           ö   Map the next 7 instructions over the array
                      Stack : [[..],[..],num]
            ♠         Push 128
             ,        Reverse subtraction : [[..],[..],128-num
              ♦M-$    Push the ( character
                  *   Repeat it 128-num times
                   DÄß─         Gather that up in an array and flatten again
                       ö        Map the next 6 instructions
                        7($$$qq
                    7($$$q    Print a ♠, without newline
                              q   Print the brackets without newline
                                  Stack : [[..],[..]]
                               $     Map the number to their values in the code page
                                Äq   Map print over each element
                                  ╘  Discard the last element of the stack

Quine 6:

Il motivo di questa Quine è così molto più lungo rispetto agli altri è che incrementa le stringhe utilizza rappresentazioni Unicode, che fa davvero schifo per l'alcuni dei personaggi nel codice, soprattutto quando stiamo cercando di creare il personaggio nel codice, che si gonfia il codice di oltre 8000 caratteri, che quindi gonfia la parte della rappresentazione di una quantità molto grande.

⌂         Push an * character
 ))...    Increment until we reach the right character + 8
      ♫{ }            Repeat 10000 times
        α             Wrap the top two elements in an array
          ♫{     }    Then repeat 10000 times
            m{{}}     Shallowly flatten the array
                  h∞<     Double the array
                     m{          Map the doubled array to
                       ïí½<¿{    If it is the first half of the array
                             ⌂⌂  Push two asterisks
                               )))...    Increment into a '⌂' (there are something like 8000 )s here, with a couple of ! to help
                                     @   Rotate the top three elements
                                         Stack : ["⌂",char,"*"]
                                      0{     α4<{}=}←  Repeat while the asterisk is not the char
                                        ⌂⌡)   Push a )
                                           @  Rotate it under the char
                                            ) Increment the asterisk
                                                     ;;   Pop the extra copies of the character
                                                       }{  Else
                                                         ⌡⌡⌡⌡}   Subtract 8 from the character
                                                              }{}  End map and flatten array
                                                                   Print implicitly

Quest'ultimo quinto sarebbe ridotto in modo significativo se MathGolf fosse coerente sul fatto che le stringhe usassero o meno la tabella codici nativa.


Sono stupito dalla tua ingegnosità, mi piacerebbe alcune spiegazioni su come sei riuscito a inventarle. Il primo che riconosco dalla sfida originale di Quine, ma per il resto sembra che abbiano impiegato un'eternità a venire.
max

@maxb Sto lavorando a un sesto quinto e posterò delle spiegazioni una volta che lo pubblicherò o mi arrenderò. tra l'altro, i comandi chr / ord e caratteri incrementali sembrano incoerenti. Il primo utilizza la tabella codici, dove il secondo utilizza il tipico Unicode (che è ciò che sta facendo il sesto quine così a lungo)
Jo King

Mi sono reso conto che un po 'di tempo dopo averlo implementato, l'ho usato solo chr/ordper uno di loro, avrei dovuto usare entrambi la tabella codici invece che penso.
max

6

Python 2, 2 quines, 434 353 349 446 byte

Questo era principalmente solo per vedere se potevo farlo in Python.

30 byte (inclusa una nuova riga finale):

z='z=%r;print z%%z';print z%z

e 416 byte, senza newline finale:

exec"696d706f7274207379730a793d222222696d706f7274207379730a793d7b7d0a7379732e7374646f75742e777269746528276578656322272b792e666f726d6174282722272a332b792b2722272a33292e656e636f6465282268657822292b27222e6465636f64652822686578222927292222220a7379732e7374646f75742e777269746528276578656322272b792e666f726d6174282722272a332b792b2722272a33292e656e636f6465282268657822292b27222e6465636f6465282268657822292729".decode("hex")

(Golfato 81 byte grazie a Lynn ma aggiunto un carico dovuto alla cura della newline.)

Spiegazione

Il primo è solo il quine standard di Python , ma modificato per non usarlo _. Dato che questo è Python 2, inoltre non usa (o ).

Il secondo rifletté. La stringa lunga viene codificata usando il hexcodec (garantendo così che conterrà solo 0- 9e a- f) e decodifica come

import sys
y="""import sys
y={}
sys.stdout.write('exec"'+y.format('"'*3+y+'"'*3).encode("hex")+'".decode("hex")')"""
sys.stdout.write('exec"'+y.format('"'*3+y+'"'*3).encode("hex")+'".decode("hex")')

Questo utilizza trucchi per ottenere il proprio codice sorgente, quindi codificarlo utilizzando hex_codece quindi stamparlo circondato exec"".decode("hex"), utilizzando sys.stdout.writeper evitare di stampare una nuova riga. L'esecuzione di questo codice genera il secondo quine, che è il modo in cui l'ho generato.

Sospetto che più di due sia impossibile in Python, anche se mi piacerebbe vederlo se sbaglio!

Se non ti dispiace eval quines

Ørjan Johansen ha suggerito quanto segue per il secondo quine pre-codificato

y="""import sys
sys.stdout.write('exec"'+('y='+'"'*3+y+'"'*3+';exec y').encode("hex")+'".decode("hex")')""";exec y

che segnerebbe 30 + 248 = 278 byte per il seguente output:

exec"793d222222696d706f7274207379730a7379732e7374646f75742e777269746528276578656322272b2827793d272b2722272a332b792b2722272a332b273b65786563207927292e656e636f6465282268657822292b27222e6465636f64652822686578222927292222223b657865632079".decode("hex")

L'uso execin questo modo non è un imbroglio secondo le corrette regole di PPCG ma mi sembra in qualche modo economico (elegante e intelligente, ma comunque economico), perché alcuni caratteri vengono utilizzati sia come codice che come dati. (Anche se la mia versione utilizza exec, il codice e i dati sono separati.) Quindi terrò il mio punteggio a 446.


1
"hex"funziona invece "hex_codec", il che dovrebbe farti risparmiare qualche byte!
Lynn,

1
Perché non aggiungi semplicemente una riga vuota alla fine del primo quin se le nuove righe finali contano ...?
mbomb007,

1
Come questo . Capisco che questo è un trucco abbastanza standard nei linguaggi con exec / eval.
Ørjan Johansen,

1
Perché non riutilizzare lo stesso formato del primo quine? Come questo?
Jo King,

2
print '<tab>',non aggiunge uno spazio alla fine. Usando questo puoi 85 byte al di fuori del suggerimento di Jo King: tio.run/…
ovs

5

Japt , 2 3 quines, 106 172 byte

La prima è una versione piuttosto dettagliata della mia risposta N char quine .

[91,57,49,100,185,44,85,44,186,57,51,100,185,44,186,49,48,100,185,44,186,85,109,100,185,172,93,172]
[91d¹,U,º93d¹,º10d¹,ºUmd¹¬]¬

Provalo qui .

Il secondo quine è il più grande quine di ETHProduction , che è un quine di buon livello per Japt.

"iQ ²"iQ ²

Provalo qui .

Il terzo utilizza ``XORing e char-code per archiviare i dati.

T=`f=fR;Zff-R-ReX%`;`T=\``+T+Tc^#

Provalo qui .

Dato che ()'sono ancora disponibili, potrebbe essere possibile spremere un altro quino.


1
Io davvero, davvero voglio cercare di golf la prima, ma so che, con un paio di birre a bordo, non appena provo a cambiare un singolo carattere, il mio cervello esploderà! Dannati quines!
Shaggy,

@Shaggy Prendere la linea di fondo ed eseguirla ti "'[+U+']+R+(Umd)¬"q mcdà la prima linea per aggiornamenti rapidi, se questo è di aiuto.
Nit

Ho anche rifattorizzato la prima soluzione per avere più simboli core disponibili, potrebbe essere praticamente possibile aggiungere un altro quine ora.
Nit

Aspetta, ora il tuo punteggio è più alto!
Shaggy,

@Shaggy Intenzionalmente, sto cercando di fare spazio per un altro quine, non per renderlo più breve.
Nit

4

Gol> <> , 2 3 quines, 17 28 27 26 byte

6 byte

"r2ssH

Provalo online!

11 10 9 byte

'3d*Wo{|;

Provalo online!

11 byte

Eh`#Ma0piS0

Provalo online!

Gol> <> ha tre modi per stampare qualsiasi carattere:

  • o Pop un valore e stampa come carattere
  • H Fai scoppiare tutto, stampa come carattere e fermati
  • S"..." Stampa stringa letterale senza influire affatto sulla pila

Ma non sono riuscito a trovare un modo per scrivere un quine usando S"..."come unico metodo di output, quindi ho trovato i due precedenti, usando i due tipi di letterali stringa.

Il terzo (da Jo King) utilizza il pcomando per creare il "in S"al volo, che a sua volta di stampare tutto tranne lo zero alla fine. Quindi Ehstampa lo zero ed esce.

Ora che abbiamo usato tutti i comandi di output E il pcomando, credo che sia impossibile creare un altro quine (a meno che qualcuno non ne S"ottenga senza p).


Che ne dici di questo per S"..."?
Jo King,

3

Rubino , 2 quines, 27 + 44 = 71 byte

$><<<<2*2<<2
$><<<<2*2<<2
2

Provalo online!

s=%q{s=%q{S};s[?S]=s;puts s};s[?S]=s;puts s

Provalo online!

Sono principalmente limitato dai metodi di output, qui. Esistono diversi modi per manipolare le stringhe, ma a parte $><<tutti i metodi di output utilizzabili sembrano incrociarsi troppo. Penso che potrebbe esserci una via d'uscita evalma è difficile dover nidificare più manipolazioni di stringhe di diverso tipo.


3

Javascript ES6, 2 quines, 43 + 22 = 65 byte

Quine 1:

(function f(){return[,f,'))'].join('(')}())

Quine 2:

g=z=>"g="+g+";g``";g``

È possibile salvare alcuni byte non invocando le funzioni e quindi utilizzando un modello letterale nel secondo.
Shaggy,

2
Quindi JavaScript outgolfs japt
dylnan,

@dylnan Non finché non aggiunge un terzo quinto.
Nit

@Shaggy hey, grazie per il tuo contributo, ma sono confuso - un quine non dovrebbe essere un programma completo? Se può essere una funzione, deve stampare solo se stesso? Quindi sarebbe g=z=>"g="+gun quine JS valido?
Pedro A

1
@No vedrò cosa posso fare: P quando commenta Dylnan, anche Japt aveva solo 2 quines
Pedro A

3

> <> , 2 quines, 8 + 16 = 24 byte

8 byte

#o<}-1:"

Provalo online!

Tratto da questa risposta .


16 byte

'r3d*d8*7+e0p>>|

Provalo online!

Questo si basa sulla 'r3d*>o<quine, tranne oe <non può essere utilizzato, in modo da ho sostituito <con |e creato dinamicamente o(111 = 8 * 13 + 7) e posi dove la seconda >è.


2 quines è il limite

Sfortunatamente, siamo limitati dal numero di comandi di output. nnon è utile perché genera solo numeri, quindi odeve essere eseguito in qualsiasi quine. L'unico modo per creare dinamicamente oè con p. Quindi un quine può usare oe un altro può crearlo con p, ma non può esserci un terzo quine.

Potrebbe essere possibile lasciare un terzo quin lascia il codice sorgente nello stack se questo conta.


2

Java 10, 2 quines, 1448 1248 byte

1350 1122 byte

\u0076\u002D\u003E\u007B\u0076\u0061\u0072\u0020\u0072\u003D\u0022\u0076\u002D\u003E\u007B\u0076\u0061\u0072\u0020\u0072\u003D\u0025\u0063\u0025\u0073\u0025\u0031\u0024\u0063\u003B\u0072\u002E\u0066\u006F\u0072\u006D\u0061\u0074\u0028\u0072\u002C\u0033\u0034\u002C\u0072\u002C\u0039\u0032\u0029\u002E\u0063\u0068\u0061\u0072\u0073\u0028\u0029\u002E\u0066\u006F\u0072\u0045\u0061\u0063\u0068\u0028\u0063\u002D\u003E\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066\u0028\u0025\u0031\u0024\u0063\u0025\u0063\u0025\u0033\u0024\u0063\u0075\u0025\u0025\u0030\u0034\u0058\u0025\u0031\u0024\u0063\u002C\u0063\u0029\u0029\u003B\u007D\u0022\u003B\u0072\u002E\u0066\u006F\u0072\u006D\u0061\u0074\u0028\u0072\u002C\u0033\u0034\u002C\u0072\u002C\u0039\u0032\u0029\u002E\u0063\u0068\u0061\u0072\u0073\u0028\u0029\u002E\u0066\u006F\u0072\u0045\u0061\u0063\u0068\u0028\u0063\u002D\u003E\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066\u0028\u0022\u005C\u005C\u0075\u0025\u0030\u0034\u0058\u0022\u002C\u0063\u0029\u0029\u003B\u007D

Provalo online.

Equivalente a:

v->{var r="v->{var r=%c%s%1$c;r.format(r,34,r,92).chars().forEach(c->System.out.printf(%1$c%c%3$cu%%04X%1$c,c));}";r.format(r,34,r,92).chars().forEach(c->System.out.printf("\\u%04X",c));}

Spiegazione:

v->{                   // Method with empty unused parameter and no return-type
  var r="v->{var r=%c%s%1$c;r.format(r,34,r,92).chars().forEach(c->System.out.printf(%1$c%c%3$cu%%04X%1$c,c));}";
                       //  Unformatted source code
  r.format(r,34,r,92)  //  Formatted quine
   .chars()            //  Loop over the characters as integers
   .forEach(c->System.out.printf("\\u%04X",c));}
                       //   Print "\u" with hexadecimal value of these characters

126 byte

v->{int i='}'-'[';var s="v->{int i='}'-'[';var s=%c%s%c;System.console().printf(s,i,s,i);}";System.console().printf(s,i,s,i);}

System.console()restituirà nullquando non viene fornito nessuno, quindi TIO restituisce a NullPointerExceptionin questo caso .

Per provare che è un quine funzionante, sostituiscilo System.console()con System.out: Provalo online.

Spiegazione:

v->{              // Method with empty unused parameter and no return-type
  int i='}'-'[';  //  Integer `i` = 34 (unicode value for double-quote)
  var s="v->{int i='}'-'[';var s=%c%s%c;System.console().printf(s,i,s,i);}";
                  //  Unformatted source code
  System.console().printf(s,i,s,i);}
                  //  Print formatted quine

Spiegazione generale:

In Java un solito viene fatto in questo modo:

  • Il String scontiene il codice sorgente non formattato.
  • %sè usato per inserire questa stringa in se stessa con s.format(...).
  • %c, %1$cE la 34vengono utilizzati per formattare le virgolette.
  • s.format(s,34,s) mette tutto insieme.

Nel qual caso la funzione lambda quine più corta in Java 10 sarebbe questa ( 82 byte ):

v->{var s="v->{var s=%c%s%1$c;return s.format(s,34,s);}";return s.format(s,34,s);}

Provalo online.

Poiché l'unico modo per avere due quines in Java è utilizzare la versione unicode con \uHEXA, che viene convertita in caratteri durante la compilazione, non sono in grado di utilizzare i caratteri 0123456789ABCDEF\unella versione non unicode. Quindi, la versione più piccola non unicode utilizzerà System.console()invece di returno System.out(entrambi contenenti una 'u') e utilizzerà '}'-'['e due volte %cinvece di 34e %1$c.

Alcune cose da notare sulla versione unicode:

  • Sto usando apposta %04Xinvece di %04x(per maiuscole esadecimali anziché minuscole).
  • Sto usando 92, %ce %3$cper formattare le barre.
  • L'uso di una maiuscola \Uanziché di una minuscola \unon è apparentemente consentito, altrimenti avrei usato solo returnnella versione non unicode più corta.
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.