Mots de code dans des séquences entières


15

introduction

Pareidolia : du grec ancien; παρα ( para , «simultané, à côté») + εἴδωλον ( eídōlon , «image»). La tendance à interpréter un stimulus vague comme quelque chose de connu de l'observateur, comme interpréter des marques sur Mars comme des canaux, voir des formes dans les nuages ​​ou entendre des messages cachés dans la musique. Source: Wiktionnaire .

Par exemple:

entrez la description de l'image ici

Paralogia : du grec ancien; παρα ( para , «simultané, à côté») + λόγος ( lógos , «discours, discours, mot, ...»). La tendance à percevoir les mots dans des séquences arbitraires de caractères, comme dans les programmes de golf à code. Source: oui, je l'ai inventé (en fait, le mot signifie autre chose , comme l'a souligné @Martin).

Par exemple:

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

Défi

Écrivez un programme qui prend un entier positif en entrée, produit un entier en sortie et inclut un mot anglais dans le code. La relation entrée-sortie doit correspondre à une séquence entière qui peut être trouvée dans OEIS .

Règles

  • Seuls les mots de cette liste sont autorisés. C'est certes arbitraire, mais il est essentiel que nous nous mettions tous d'accord sur les mots acceptés; et à cet égard, cette liste est probablement aussi bonne que toute autre.
  • Les mots doivent être formés en concaténant au moins deux noms ou instructions de fonction. Si votre langue par exemple a une fonction appelée, correlationelle ne peut pas être utilisée telle quelle. La concaténation doit être stricte: aucun autre symbole ne doit apparaître entre les parties du mot. Par exemple, bro~kenne compterait pas comme un mot.
  • Le cas est sans importance: les deux validet vaLiDsont acceptables.
  • Les mots dans les chaînes ne comptent pas. Les lettres qui composent le mot doivent être des fonctions ou des instructions dans la langue de choix, c'est-à-dire quelque chose qui est réellement exécuté . Par exemple, le code suivant ne serait pas autorisé:, 'deoxyribonucleic'~1'...'est une chaîne, ~supprime le contenu précédent et 1imprime simplement le numéro 1.
  • Chaque lettre du mot devrait être nécessaire . Cela signifie que la suppression d'une seule lettre du mot devrait modifier la relation entrée-sortie. Cela inclut la sortie d'une séquence différente, ou la sortie de toute autre chose (s), ou la production d'aucune sortie, ou provoquant une erreur.
  • Tout entier positif doit être acceptable comme entrée et doit produire une sortie, à l'exception des restrictions de type de données ou de mémoire.
  • Les sorties correspondant aux entrées 1, 2, 3... doivent correspondre à une séquence apparaissant dans OEIS . Aucune autre sortie ne doit être produite; uniquement un nombre entier, éventuellement avec un espace de fin ou de début.
  • L'entrée et la sortie peuvent être des arguments de fonction ou stdin / stdout.

But

Le score est calculé comme la longueur totale du code moins le double de la longueur du mot le plus long, en caractères. Ou de manière équivalente, le nombre de caractères de mot non long le moins la longueur du mot le plus long.

Le score le plus bas l'emporte.

Exemples

Considérons un langage de suffixe imaginaire qui a ces fonctions c:: saisir un nombre; At: calcul carré; $: ajoutez 1.

cAtserait un programme valide (ses correspond de sortie à la séquence 1, 4, 9, ..., qui est A000290 ), et il aurait moyenne à -3.

cAt$serait également valable (séquence 2, 5, 10, ..., qui est A002522 ), avec un score de -2.

c$At ne serait pas valide, car le seul mot ici est "At" et est produit par une seule fonction ou instruction.


Je pense que cela devrait être un concours de popularité.
MCMastery

5
@MCMastery Cela ne ferait pas un bon concours de popularité. (La plupart des défis ne le seraient pas.)
Alex A.

Cependant, cela est essentiellement limité aux langues de golf.
ericw31415

Réponses:


11

CJam, -20

COUNTErREVOLUTIONARIES],

Sort le nième élément dans la séquence 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 suppression d'un caractère du mot entraîne une séquence complètement différente A010860 . Il existe une relation assez intéressante entre les deux séquences: à chaque indice n, A010860(n)est coprime à A010861(n)! Il doit y avoir une raison mathématique profonde derrière cela.

Essayez-le ici .


1
J'ai découvert une autre relation mathématique curieuse: si vous soustrayez la séquence A010860 de la séquence A010861, le résultat est toujours égal à 1 à chaque index! Fascinant ...
Poignée de porte

Celui-ci va être difficile à battre :-)
Luis Mendo

Oh, majuscules .. Excellente idée :)
Martin Ender

10

CJam, -5

limpet;

A010051 : imprime 0pour les nombres composites et 1pour les nombres premiers.

Il m'a fallu une éternité pour trouver quelque chose qui a marqué quelques points et qui se briserait à la suppression de toute lettre. Supprimer quoi que ce soit, sauf mune erreur, et la suppression mtransforme le programme en fonction d'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.

Essayez-le en ligne.


Beau choix de séquence! :-)
Luis Mendo

8

05AB1E , -4 -11

Code, imprime A010869 (constante 30):

ASYNcHRonouSlyI)g

Code précédent:

DoGS

Explication:

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

Imprime la séquence A010879 .


C'est la séquence la plus intéressante à ce jour!
Luis Mendo

2
Barré -4 est toujours régulier -4; (
ETHproductions

6

MATL , −6

INhale

Essayez-le en ligne!

Produit séquence 1, 2, 3, ... ( A000027 )

La suppression d'une lettre modifie la sortie, ou laisse le programme attendre une deuxième entrée qui n'existe pas, ou produit une erreur.

Explication

Le programme inhale simplement un certain nombre et, après quelques tripotages, l'exhale inchangé.

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

Explication?

       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 ...

Séquence A000027

Messages subliminaux? Jamais.

Essayez-le ici.


4

Japt, -6

NuLLIFIED)r^

Sorties A004453 : nimsum de N et 12 (N XOR 12). Testez-le en ligne!

Remarque: la séquence OEIS est indexée sur 0, donc une entrée de 0 entraînera le premier élément.

Comment ça fonctionne

        // 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.

Agréable! Une explication, quand vous le pouvez?
Luis Mendo

@LuisMendo Bien sûr, c'est fait. C'est incroyablement simple, mais je n'ai encore rien trouvé de plus complexe.
ETHproductions

@LuisMendo Mis à jour. Celui-ci est un peu plus intéressant.
ETHproductions

En effet! Mais en supprimant apparemment le Yproduit la même sortie? (sauf si je fais quelque chose de mal)
Luis Mendo

@Luis Est-ce mieux?
ETHproductions

3

Headsecks , score −4

exit

Cela correspond au programme Brainfuck ,+-., qui lit un seul caractère et l'imprime, calculant A000030 . Supprimer n'importe quel personnage le cassera évidemment.

Il y a aussi marshal( ,-<>+-.), ce qui est efficace ,-., mais cela ne correspond à aucune séquence OEIS.


2

code machine x86, score -4

Hexdump du code:

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

Ou, dans la page de codes 437 :

SQUAShiestQXâ─¶├

Code d'assemblage:

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

Une fonction qui ajoute 1 à son argument .

Le retirer le Atransforme en fonction d'identité. La suppression de tout autre octet gâche la pile, provoquant un plantage ou un mauvais comportement de la fonction appelante.

Je suis sûr qu'il est possible d'améliorer le score, mais cela peut dépendre de l'interprétation des exigences. Par exemple, l'utilisation du mot SQUEAMIShnessdonne un programme qui augmente puis diminue le ebpregistre. La suppression de l'un de ces éléments provoque-t-elle un crash? Un programme de test le plus simple n'utilise pas le ebpregistre, alors peut-être que non ... Pour éviter ce doute, j'ai utilisé un mot plus court.



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.