Słowa kodowe w ciągach liczb całkowitych

15

Wprowadzenie

Pareidolia : From Ancient Greek; παρα ( para , „concurrent, alongside”) + εἴδωλον ( eídōlon , „image”). Tendencja do interpretowania niejasnego bodźca jako czegoś znanego obserwatorowi, takiego jak interpretowanie znaków na Marsie jako kanałów, widzenie kształtów w chmurach lub słyszenie ukrytych wiadomości w muzyce. Źródło: Wikisłownik .

Na przykład:

wprowadź opis zdjęcia tutaj

Paralogia : od starożytnej Grecji; παρα ( para , „concurrent, alongside”) + λόγος ( lógos , „mowa, oracja, słowo, ...”). Tendencja do postrzegania słów w dowolnych sekwencjach znaków, na przykład w programach golfowych. Źródło: tak, wymyśliłem to (tak naprawdę słowo to oznacza coś innego , jak wskazał @Martin).

Na przykład:

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

Wyzwanie

Napisz program, który przyjmuje dodatnią liczbę całkowitą jako dane wejściowe, tworzy liczbę całkowitą jako dane wyjściowe i zawiera angielskie słowo jako część kodu. Relacja wejścia-wyjścia musi odpowiadać sekwencji liczb całkowitych, którą można znaleźć w OEIS .

Zasady

  • Dozwolone są tylko słowa z tej listy . Jest to wprawdzie arbitralne, ale istotne jest, abyśmy wszyscy uzgodnili, które słowa są akceptowane; i pod tym względem lista ta jest prawdopodobnie równie dobra jak każda inna.
  • Słowa muszą zostać utworzone przez połączenie co najmniej dwóch nazw funkcji lub instrukcji. Jeśli na przykład Twój język ma funkcję o nazwie, correlationnie można jej używać w takiej postaci, w jakiej jest. Łączenie musi być ścisłe: między częściami słowa nie powinny pojawiać się żadne inne symbole. Na przykład bro~kennie liczy się jako słowo.
  • Sprawa ma znaczenia: zarówno validi vaLiDsą dopuszczalne.
  • Słowa w łańcuchach nie liczą się. Litery, które składają się na to słowo, muszą być funkcjami lub instrukcjami w wybranym języku, czyli w rzeczywistości wykonywanym . Na przykład następujący kod nie byłby dozwolony: 'deoxyribonucleic'~1gdzie, gdzie '...'jest ciąg znaków, ~odrzuca poprzednią zawartość i 1po prostu drukuje liczbę 1.
  • Każda litera słowa powinna być niezbędna . Oznacza to, że usunięcie jednej litery ze słowa powinno zmienić relację wejścia-wyjścia. Obejmuje to wyprowadzenie innej sekwencji lub wyprowadzenie jakiejkolwiek innej rzeczy, lub nie wytworzenie żadnego wyniku lub spowodowanie błędu.
  • Każda dodatnia liczba całkowita powinna być akceptowalna jako dane wejściowe i powinna generować dane wyjściowe, z wyjątkiem ograniczeń typu danych lub ograniczeń pamięci.
  • Wyjścia do wejść odpowiadających im 1, 2, 3... powinna odpowiadać sekwencji znajdującej się w OEIS . Nie należy wytwarzać żadnej innej produkcji; tylko liczba całkowita, prawdopodobnie z końcowymi lub wiodącymi białymi spacjami.
  • Dane wejściowe i wyjściowe mogą być argumentami funkcyjnymi lub stdin / stdout.

Wynik

Wynik jest obliczany jako całkowita długość kodu minus dwukrotność najdłuższego słowa w znakach. Lub równoważnie, liczba niezbyt długich znaków minus długość najdłuższego słowa.

Najniższy wynik wygrywa.

Przykłady

Rozważ wyimaginowany język Postfiksa, który ma następujące funkcje c:: wprowadź liczbę; At: obliczyć kwadrat; $: dodaj 1.

cAtbędzie poprawny programu (odpowiada jego wyjścia do sekwencji 1, 4, 9, ..., które jest A000290 ), i że ma wynik -3.

cAt$byłoby również zastosowanie (sekwencja 2, 5, 10, ..., które jest A002522 ), o średniej -2.

c$At nie byłby prawidłowy, ponieważ jedynym tutaj słowem jest „At” i jest ono tworzone przez pojedynczą funkcję lub instrukcję.

Luis Mendo
źródło
Myślę, że powinien to być konkurs popularności.
MCMastery
5
@MCMastery To nie byłby konkurs na dobrą popularność. (Większość wyzwań nie.)
Alex A.
Jest to zasadniczo ograniczone do języków golfowych.
ericw31415

Odpowiedzi:

11

CJam, -20

COUNTErREVOLUTIONARIES],

Wysyła n-ty element w sekwencji 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

Usunięcie znaku ze słowa powoduje zupełnie inną sekwencję A010860 . Istnieje dość interesująca zależność między dwiema sekwencjami: przy każdym indeksie n A010860(n)jest chronione prawem autorskim A010861(n)! Musi istnieć jakiś głęboki matematyczny powód.

Wypróbuj tutaj .

lirtosiast
źródło
1
Odkryłem inny ciekawy związek matematyczny: jeśli odejmiesz sekwencję A010860 od sekwencji A010861, wynik zawsze będzie równy 1 przy każdym indeksie! Fascynujące ...
Klamka
Ten będzie trudny do pokonania :-)
Luis Mendo
Och, wielkie litery .. Świetny pomysł :)
Martin Ender
10

CJam, -5

limpet;

A010051 : drukuje 0liczby zespolone i 1liczby pierwsze.

Odwiecznie zajęło mi znalezienie czegoś, co zdobyłoby kilka punktów i złamałoby się przy usuwaniu jakiegokolwiek listu. Usunięcie czegokolwiek oprócz mzgłasza błąd, a usunięcie mzamienia program w funkcję tożsamości.

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.

Wypróbuj online.

Martin Ender
źródło
Piękny wybór sekwencji! :-)
Luis Mendo
8

05AB1E , -4 -11

Kod, drukuje A010869 (stała 30):

ASYNcHRonouSlyI)g

Poprzedni kod:

DoGS

Wyjaśnienie:

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

Drukuje sekwencję A010879 .

Adnan
źródło
To najciekawsza jak dotąd sekwencja!
Luis Mendo,
2
Przekreślone -4 jest nadal regularne -4; (
ETHprodukcje
6

MATL , −6

INhale

Wypróbuj online!

Produkuje sekwencja 1, 2, 3, ... ( A000027 )

Usunięcie dowolnej litery zmienia dane wyjściowe lub pozostawia program oczekujący drugiego wejścia, które nie istnieje, lub powoduje błąd.

Wyjaśnienie

Program po prostu wdycha pewną liczbę i po kilku zabawach wydycha ją bez zmian.

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
Luis Mendo
źródło
5

Pyth, 1

*QhSatan0000
   Satan

Wyjaśnienie?

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

Sekwencja A000027

Wiadomości podprogowe? Nigdy.

Wypróbuj tutaj.

niebieski
źródło
4

Japt, -6

NuLLIFIED)r^

Wyjścia A004453 : nimsum N i 12 (N XOR 12).Przetestuj online!

Uwaga: sekwencja OEIS ma indeks 0, więc wprowadzenie 0 spowoduje powstanie pierwszego elementu.

Jak to działa

        // 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.
ETHprodukcje
źródło
Ładny! Jakieś wyjaśnienie, kiedy możesz?
Luis Mendo,
@LuisMendo Sure, gotowe. To niezwykle proste, ale nie znalazłem jeszcze nic bardziej złożonego.
ETHproductions
@LuisMendo Zaktualizowano. Ten jest trochę bardziej interesujący.
ETHproductions
W rzeczy samej! Ale najwyraźniej usunięcie Yprodukuje ten sam wynik? (chyba że robię coś złego)
Luis Mendo,
@Luis Czy to lepiej?
ETHprodukcje
3

Zagłówki , wynik -4

exit

Spowoduje to mapowanie do programu Brainfuck ,+-., który odczytuje pojedynczy znak i drukuje go, obliczając A000030 . Usunięcie jakiejkolwiek postaci z pewnością ją złamie.

Istnieje również marshal( ,-<>+-.), który jest skuteczny ,-., ale nie odpowiada żadnej sekwencji OEIS.

Lynn
źródło
2

kod maszynowy x86, wynik -4

Hexdump kodu:

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

Lub na stronie kodowej 437 :

SQUAShiestQXâ─¶├

Kod zestawu:

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

Funkcja, która dodaje 1 do argumentu .

Usuwanie A zamienia go w funkcję tożsamości. Usunięcie wszystkich innych bajtów zakłóca stos, powodując awarię lub nieprawidłowe działanie funkcji wywołującej.

Jestem prawie pewien, że można poprawić wynik, ale może to zależeć od interpretacji wymagań. Na przykład użycie słowa SQUEAMIShnessdaje program, który zwiększa, a następnie zmniejsza ebprejestr. Czy usunięcie któregokolwiek z nich powoduje awarię? Najprostszy program testowy nie używa ebprejestru, więc może nie ... Aby uniknąć tej wątpliwości, użyłem krótszego słowa.

anatolig
źródło
1

Ruby, ocena 3

puts gets.partition''

Oblicza to sekwencję tożsamości A000027 . Dane wyjściowe są otoczone białymi znakami; Mam nadzieję, że to w porządku.

Lynn
źródło
Tak, białe znaki są w porządku
Luis Mendo
1

Matematyka ++, wynik -2

?*sine

Implementuje A000004 .

SuperJedi224
źródło