Codewörter in ganzzahligen Folgen


15

Einführung

Pareidolia : Aus dem Altgriechischen; παρα ( para , "nebeneinander") + εἴδωλον ( eídōlon , "Bild"). Die Tendenz, einen vagen Reiz als etwas zu interpretieren, das dem Betrachter bekannt ist, z. B. Markierungen auf dem Mars als Kanäle zu interpretieren, Formen in Wolken zu sehen oder versteckte Botschaften in der Musik zu hören. Quelle: Wiktionary .

Beispielsweise:

Bildbeschreibung hier eingeben

Paralogia : Aus dem Altgriechischen; παρα ( para , "nebeneinander") + λόγος ( lógos , "Rede, Rede, Wort, ..."). Die Tendenz, Wörter in willkürlichen Folgen von Zeichen wahrzunehmen, beispielsweise in Code-Golf-Programmen. Quelle: Ja, das habe ich erfunden (eigentlich bedeutet das Wort etwas anderes erfunden , wie von @Martin hervorgehoben).

Beispielsweise:

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

Herausforderung

Schreiben Sie ein Programm, das eine positive Ganzzahl als Eingabe, eine Ganzzahl als Ausgabe und ein englisches Wort als Teil des Codes verwendet. Die Eingabe-Ausgabe-Beziehung muss einer Ganzzahlsequenz entsprechen, die in OEIS zu finden ist .

Regeln

  • Nur Wörter aus dieser Liste erlaubt. Dies ist zwar willkürlich, aber es ist wichtig, dass wir uns alle darüber einig sind, welche Wörter akzeptiert werden. und in dieser Hinsicht ist diese Liste wahrscheinlich so gut wie jede andere.
  • Wörter müssen durch Verketten von mindestens zwei Funktionsnamen oder Anweisungen gebildet werden. Wenn Ihre Sprache zum Beispiel eine Funktion namens correlationhat, kann sie nicht so verwendet werden, wie sie ist. Die Verkettung muss streng sein: Zwischen den Wortteilen dürfen keine weiteren Symbole stehen. Zum Beispiel bro~kenwürde nicht als ein Wort zählen.
  • Der Fall ist unwichtig: beides validund vaLiDist akzeptabel.
  • Wörter innerhalb von Strings zählen nicht. Die Buchstaben, aus denen das Wort besteht, müssen Funktionen oder Aussagen in der Sprache der Wahl sein, dh etwas, das tatsächlich ausgeführt wird . Zum Beispiel würde der folgende Code nicht zulässig: 'deoxyribonucleic'~1, wo '...'ein String ist , ~verwirft den vorherigen Inhalt und 1gerade druckt Nummer 1.
  • Jeder Buchstabe des Wortes sollte notwendig sein . Das bedeutet, dass das Entfernen eines einzelnen Buchstabens aus dem Wort die Eingabe-Ausgabe-Beziehung ändern sollte. Dies beinhaltet die Ausgabe einer anderen Sequenz oder die Ausgabe von anderen Dingen oder die Ausgabe ohne Ausgabe oder die Verursachung eines Fehlers.
  • Jede positive Ganzzahl sollte als Eingabe zulässig sein und eine Ausgabe erzeugen, mit Ausnahme von Datentyp- oder Speicherbeschränkungen.
  • Die Ausgänge an Eingängen entsprechen 1, 2, 3, ... sollten zu einer Sequenz in erscheinen entsprechen OEIS . Es sollte keine andere Ausgabe erzeugt werden. Nur eine ganze Zahl, möglicherweise mit nachgestelltem oder führendem Leerzeichen.
  • Ein- und Ausgabe können Funktionsargumente oder stdin / stdout sein.

Ergebnis

Die Punktzahl wird als Gesamtcodelänge minus der doppelten Länge des längsten Wortes in Zeichen berechnet. Oder gleichbedeutend mit der Anzahl der Zeichen, die nicht zum längsten Wort gehören, abzüglich der Länge des längsten Wortes.

Die niedrigste Punktzahl gewinnt.

Beispiele

Stellen Sie sich eine imaginäre Postfix-Sprache mit folgenden Funktionen vor:: Geben Sie ceine Zahl ein; At: Quadrat berechnen; $: addiere 1.

cAtein gültiges Programm wäre (die Reihenfolge ihrer Ausgabe entspricht 1, 4, 9, ..., das ist A000290 ), und es wäre Score -3.

cAt$wäre auch gültig ist (Sequenz 2, 5, 10, ..., das ist A002522 ), mit Score -2.

c$At wäre nicht gültig, da das einzige Wort hier "At" ist und von einer einzelnen Funktion oder Anweisung erzeugt wird.


Ich denke, das sollte ein Beliebtheitswettbewerb sein.
MCMastery

5
@MCMastery Dies würde keinen guten Beliebtheitswettbewerb ergeben. (Die meisten Herausforderungen würden nicht.)
Alex A.

Dies ist jedoch im Wesentlichen auf Golfsprachen beschränkt.
ericw31415

Antworten:


11

CJam, -20

COUNTErREVOLUTIONARIES],

Gibt das n-te Element in der Sequenz A010861 aus .

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

Das Entfernen eines Zeichens aus dem Wort führt zu einer völlig anderen Sequenz A010860 . Es gibt eine interessante Beziehung zwischen den beiden Sequenzen: Bei jedem Index n A010860(n)ist coprime to A010861(n)! Es muss einen tiefen mathematischen Grund dafür geben.

Probieren Sie es hier aus .


1
Ich habe eine weitere merkwürdige mathematische Beziehung entdeckt: Wenn Sie die Sequenz A010860 von der Sequenz A010861 subtrahieren, ist das Ergebnis bei jedem Index immer gleich 1! Faszinierend ...
Türklinke

Dies wird schwer zu schlagen sein :-)
Luis Mendo

Oh, Großbuchstaben ... Tolle Idee :)
Martin Ender

10

CJam, -5

limpet;

A010051 : Druckt0 für zusammengesetzte Zahlen und 1für Primzahlen.

Es dauerte ewig, bis ich etwas gefunden hatte, das ein paar Punkte erzielte und beim Entfernen eines Buchstabens kaputt ging. Wenn Sie etwas anderes als " mWirft" entfernen, wird ein Fehler ausgegebenm das Programm wird es zur Identitätsfunktion.

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.

Probieren Sie es online aus.


Schöne Sequenzwahl! :-)
Luis Mendo

8

05AB1E , -4 -11

Code, druckt A010869 (Konstante 30):

ASYNcHRonouSlyI)g

Vorheriger Code:

DoGS

Erläuterung:

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

Druckt die A010879 - Sequenz.


Das ist die bisher interessanteste Sequenz!
Luis Mendo


6

MATL , -6

INhale

Probieren Sie es online!

Produziert Sequenz 1, 2, 3, ... ( A000027 )

Wenn Sie einen Buchstaben entfernen, wird die Ausgabe geändert, oder das Programm erwartet eine zweite Eingabe, die nicht vorhanden ist, oder es wird ein Fehler ausgegeben.

Erläuterung

Das Programm atmet einfach eine Zahl ein und nach einigem Hin und Her atmet es unverändert aus.

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

Erläuterung?

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

Sequenz A000027

Unterschwellige Botschaften? Noch nie.

Probieren Sie es hier aus.


4

Japt, -6

NuLLIFIED)r^

Ausgänge A004453 : Summe von N und 12 (N XOR 12). Testen Sie es online!

Hinweis: Die OEIS-Sequenz ist 0-indiziert, sodass eine Eingabe von 0 zum ersten Element führt.

Wie es funktioniert

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

Nett! Irgendeine Erklärung, wann du kannst?
Luis Mendo

@ LuisMendo Sicher, fertig. Es ist unglaublich einfach, aber ich habe noch nichts Komplexeres gefunden.
ETHproductions

@ LuisMendo aktualisiert. Das ist etwas interessanter.
ETHproductions

Tatsächlich! Aber anscheinend Yerzeugt das Entfernen des die gleiche Ausgabe? (es sei denn, ich mache etwas falsch)
Luis Mendo

@ Luis Ist das besser?
ETHproductions

3

Headsecks , Score -4

exit

Dies ist dem Brainfuck-Programm zugeordnet ,+-., das ein einzelnes Zeichen liest und es druckt und A000030 berechnet . Wenn Sie ein Zeichen entfernen, wird es offensichtlich zerstört.

Es gibt auch marshal( ,-<>+-.), was effektiv ist ,-., aber das entspricht keiner OEIS-Sequenz.


2

x86-Maschinencode, Punktzahl -4

Hexdump des Codes:

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

Oder in Codepage 437 :

SQUAShiestQXâ─¶├

Assembler-Code:

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

Eine Funktion, die ihrem Argument eine 1 hinzufügt .

Entfernen A wird es zu einer Identitätsfunktion. Wenn Sie ein anderes Byte entfernen, wird der Stapel durcheinander gebracht, was entweder zu einem Absturz oder zu einem schlechten Verhalten der aufrufenden Funktion führt.

Ich bin mir ziemlich sicher, dass es möglich ist, die Punktzahl zu verbessern, aber es kann von der Interpretation der Anforderungen abhängen. Wenn Sie zum Beispiel das Wort verwenden, erhalten Sie SQUEAMIShnessein Programm, das das ebpRegister vergrößert und dann verkleinert . Verursacht das Entfernen einer dieser Komponenten einen Absturz? Ein einfachstes Testprogramm verwendet das ebpRegister nicht, also vielleicht auch nicht ... Um diesen Zweifel zu vermeiden, habe ich ein kürzeres Wort verwendet.



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.