Parole in codice in sequenze di numeri interi


15

introduzione

Pareidolia : dal greco antico; παρα ( para , “concorrente, a fianco”) + εἴδωλον ( eídōlon , “immagine”). La tendenza a interpretare un vago stimolo come qualcosa di noto all'osservatore, come interpretare segni su Marte come canali, vedere forme nelle nuvole o ascoltare messaggi nascosti nella musica. Fonte: Wikizionario .

Per esempio:

inserisci qui la descrizione dell'immagine

Paralogia : dal greco antico; παρα ( para , “concorrente, a fianco”) + λόγος ( lógos , “discorso, orazione, parola, ...”). La tendenza a percepire le parole in sequenze arbitrarie di personaggi, come nei programmi di golf del codice. Fonte: sì, l'ho inventato (in realtà la parola significa qualcos'altro inventato , come sottolineato da @Martin).

Per esempio:

    df4$/H)hEy_^p2\
    jtK2$)look|x1$

Sfida

Scrivi un programma che accetta un intero positivo come input, produce un intero come output e include una parola inglese come parte del codice. La relazione input-output deve corrispondere a una sequenza intera che può essere trovata in OEIS .

Regole

  • Solo parole da questo elenco consentite . Questo è certamente arbitrario, ma è essenziale che siamo tutti d'accordo su quali parole sono accettate; e al riguardo questo elenco è probabilmente buono come un altro.
  • Le parole devono essere formate concatenando almeno due nomi o istruzioni di funzioni. Se la tua lingua, ad esempio, ha una funzione chiamata, correlationnon può essere utilizzata così com'è. La concatenazione deve essere rigorosa: nessun altro simbolo dovrebbe apparire tra le parti della parola. Ad esempio, bro~kennon conta come una parola.
  • Il caso non è importante: entrambi valide vaLiDsono accettabili.
  • Le parole nelle stringhe non contano. Le lettere che compongono la parola devono essere funzioni o dichiarazioni nella lingua prescelta, cioè qualcosa che viene effettivamente eseguito . Ad esempio, il seguente codice non sarebbe consentito:, 'deoxyribonucleic'~1dove '...'è una stringa, ~scarta il contenuto precedente e 1stampa solo il numero 1.
  • Ogni lettera della parola dovrebbe essere necessaria . Ciò significa che la rimozione di una singola lettera dalla parola dovrebbe modificare la relazione input-output. Ciò include l'output di una sequenza diversa, o l'output di qualsiasi altra cosa (s), o la produzione di nessun output o la causa di un errore.
  • Qualsiasi numero intero positivo dovrebbe essere accettabile come input e dovrebbe produrre un output, ad eccezione delle restrizioni relative al tipo di dati o alla memoria.
  • Le uscite corrispondenti agli ingressi 1, 2, 3, ... devono corrispondere a una sequenza appare in OEIS . Nessun altro risultato dovrebbe essere prodotto; solo un numero intero, possibilmente con spazi vuoti finali o iniziali.
  • Input e output possono essere argomenti di funzione o stdin / stdout.

Punto

Il punteggio viene calcolato come lunghezza totale del codice meno il doppio della lunghezza della parola più lunga, in caratteri. O, equivalentemente, il numero di caratteri non più lunghi meno la lunghezza della parola più lunga.

Il punteggio più basso vince.

Esempi

Considera un linguaggio postfisso immaginario che abbia queste funzioni c:: inserisci un numero; At: computa quadrato; $: aggiungi 1.

cAtsarebbe un programma valido (suoi corrisponde uscita alla sequenza 1, 4, 9, ..., che è A000290 ), e sarebbe punteggio -3.

cAt$sarebbe anche valido (sequenza 2, 5, 10, ..., che è A002522 ), con il punteggio -2.

c$At non sarebbe valido, perché l'unica parola qui è "At" ed è prodotta da una singola funzione o istruzione.


Penso che questo dovrebbe essere un concorso di popolarità.
MCMastery,

5
@MCMastery Questo non sarebbe un buon concorso di popolarità. (La maggior parte delle sfide no.)
Alex A.

Questo è essenzialmente limitato alle lingue del golf.
ericw31415,

Risposte:


11

CJam, -20

COUNTErREVOLUTIONARIES],

Emette l'ennesimo elemento nella sequenza A010861 .

COUNTE                      e# push values of six preinitialized variables
      r                     e# read a token of input
       REVOLUTIONARIES      e# push values of 15 other preinitialized variables
                      ]     e# wrap whole stack in array
                       ,    e# get length

La rimozione di un carattere dalla parola provoca una sequenza completamente diversa A010860 . C'è una relazione piuttosto interessante tra le due sequenze: ad ogni indice n, A010860(n)è coprime A010861(n)! Ci deve essere una profonda ragione matematica dietro questo.

Provalo qui .


1
Ho scoperto un'altra curiosa relazione matematica: se sottrai la sequenza A010860 dalla sequenza A010861, il risultato sarà sempre uguale a 1 in ogni indice! Affascinante ...
Maniglia della porta

Sarà difficile da battere :-)
Luis Mendo,

Oh, maiuscolo .. Ottima idea :)
Martin Ender,

10

CJam, -5

limpet;

A010051 : stampe 0per numeri compositi e numeri 1primi.

Mi ci è voluta un'eternità per trovare qualcosa che segnasse alcuni punti e si spezzasse alla rimozione di qualsiasi lettera. La rimozione di qualsiasi cosa tranne che mgenera un errore e la rimozione mtrasforma il programma nella funzione di identità.

li  e# Read input and convert to integer.
mp  e# Check for primality.
et  e# Get current datetime as a list.
;   e# Discard the datetime again.

Provalo online.


Bella scelta di sequenza! :-)
Luis Mendo,

8

05AB1E , -4 -11

Codice, stampe A010869 (costante 30):

ASYNcHRonouSlyI)g

Codice precedente:

DoGS

Spiegazione:

D     # Duplicate top of the stack
 o    # Pop a, push 2**a
  G   # For N in range(1, 2**a):
   S  # Push all chars seperate from the top of the stack

Stampa la sequenza A010879 .


Questa è la sequenza più interessante finora!
Luis Mendo,

2
Cancellato -4 è ancora regolare -4; (
ETHproductions

6

MATL , −6

INhale

Provalo online!

Produce sequenza 1, 2, 3, ... ( A000027 )

La rimozione di qualsiasi lettera modifica l'output o lascia il programma in attesa di un secondo input che non esiste o produce un errore.

Spiegazione

Il programma inala semplicemente un numero e, dopo averlo armeggiato, lo espira invariato.

I    % produces number 3
N    % number of elements in stack: produces number 1
h    % concatenates horizontally into array [3, 1]
a    % true if any element is nonzero. So it gives true (or equivalently 1)
l    % produces number 1
e    % triggers implicit input and reshapes into a 1x1 array. So it leaves input unchanged

5

Pyth, 1

*QhSatan0000
   Satan

Spiegazione?

       n00   - 0 != 0 (0) 
      a   0  - abs(^-0) (0, Required so it doesn't print out a random 0)
     t       - ^-1 (-1, required or will output 0 all the time)
    a      0 - abs(^-0) (1, Required so counts in right direction, would also print out a random 0)
   S         - 1-indexed range ([1], required so next command works properly)
  h          - Get the head (if `S` missed, will out 2)
*Q           - Multiply by Q

1, 2, 3, 4, 5 ...

Sequenza A000027

Messaggi subliminali? Mai.

Provalo qui.


4

Japt, -6

NuLLIFIED)r^

Uscite A004453 : nimsum di N e 12 (N XOR 12). Provalo online!

Nota: la sequenza OEIS è indicizzata 0, quindi un input di 0 comporterà il primo elemento.

Come funziona

        // Implicit: N = array of inputs
Nu      // Push the following things to N:
LLIF    // 100, 100, 64, 15,
IED     // 64 again, 14, and 13.
)r^     // Reduce by XORing (using ^ between each pair)
        // The reduction goes as follows: U, U^100, U, U^64, U^79, U^15, U^1, U^12.

Bello! Qualche spiegazione, quando puoi?
Luis Mendo,

@LuisMendo Certo, fatto. È incredibilmente semplice, ma non ho ancora trovato nulla di più complesso.
ETHproductions

@LuisMendo Aggiornato. Questo è un po 'più interessante.
ETHproductions

Infatti! Ma apparentemente la rimozione di Yproduce lo stesso output? (a meno che non stia facendo qualcosa di sbagliato)
Luis Mendo il

@ Luis È meglio?
ETHproductions

3

Headsecks , punteggio −4

exit

Questo si associa al programma Brainfuck ,+-., che legge un singolo carattere e lo stampa, calcolando A000030 . La rimozione di qualsiasi personaggio lo romperà ovviamente.

C'è anche marshal( ,-<>+-.), che è effettivamente ,-., ma che non corrisponde a nessuna sequenza OEIS.


2

codice macchina x86, punteggio -4

Hexdump del codice:

53 51 55 41 53 68 69 65 73 74 51 58 83 c4 14 c3

Oppure, nella tabella codici 437 :

SQUAShiestQXâ─¶├

Codice dell'Assemblea:

push ebx
push ecx
push ebp
inc ecx
push ebx
push 0x74736569
push ecx
pop eax
add esp, 0x14
ret

Una funzione che aggiunge 1 al suo argomento .

La rimozione lo Atrasforma in una funzione di identità. La rimozione di qualsiasi altro byte incasina lo stack, causando un arresto anomalo o un comportamento errato della funzione chiamante.

Sono abbastanza sicuro che sia possibile migliorare il punteggio, ma può dipendere dall'interpretazione dei requisiti. Ad esempio, l'uso della parola SQUEAMIShnessfornisce un programma, che aumenta e quindi diminuisce il ebpregistro. La rimozione di uno di questi provoca un arresto anomalo? Un programma di test più semplice non utilizza il ebpregistro, quindi forse non lo fa ... Per evitare questo dubbio, ho usato una parola più breve.



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.