Кодовые слова в целочисленных последовательностях


15

Вступление

Парейдолия : от древнегреческого; παρα ( пункт «одновременно, наряду с ») + εἴδωλον ( Eidolon , «изображение»). Тенденция интерпретировать неопределенный стимул как нечто, известное наблюдателю, например, интерпретировать метки на Марсе как каналы, видеть формы в облаках или слышать скрытые сообщения в музыке. Источник: Викисловарь .

Например:

введите описание изображения здесь

Паралогия : от древнегреческого; παρα ( para , «одновременно, рядом») + λόγος ( lógos , «речь, речь, слово, ...»). Тенденция воспринимать слова в произвольных последовательностях символов, например в коде программ гольфа. Источник: да, я это придумал (на самом деле это слово означает нечто иное , как указывает @Martin).

Например:

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

Вызов

Напишите программу, которая принимает положительное целое число в качестве входных данных, производит целое число в качестве выходных данных и включает в себя английское слово как часть кода. Отношение ввода-вывода должно соответствовать целочисленной последовательности, которую можно найти в OEIS .

правила

  • Разрешены только слова из этого списка . Это по общему признанию произвольно, но важно, чтобы мы все согласились, какие слова приняты; и в этом отношении этот список, вероятно, так же хорош, как и любой другой.
  • Слова должны быть сформированы путем объединения как минимум двух имен функций или операторов. Если, например, у вашего языка есть функция, correlationон не может использоваться как есть. Конкатенация должна быть строгой: никакие другие символы не должны появляться между частями слова. Например, bro~kenне считается словом.
  • Дело неважно: и то validи другое vaLiDприемлемо.
  • Слова в строках не учитываются. Буквы, составляющие слово, должны быть функциями или утверждениями на выбранном языке, то есть чем-то, что фактически выполняется . Например, следующий код не будет разрешен:, 'deoxyribonucleic'~1где '...'строка, ~отбрасывает предыдущее содержимое и 1просто печатает число 1.
  • Каждая буква слова должна быть необходимой . Это означает, что удаление одной буквы из слова должно изменить отношение ввода-вывода. Это включает в себя вывод другой последовательности, вывод любой другой вещи, отсутствие вывода или возникновение ошибки.
  • Любое положительное целое число должно быть приемлемым в качестве входных данных и должно создавать выходные данные, за исключением ограничений типа данных или памяти.
  • Выходы соответствующих входов 1, 2, 3, ... должны соответствовать последовательностям появляющихся в OEIS . Никакой другой вывод не должен производиться; только целое число, возможно, с конечным или начальным пробелом.
  • Ввод и вывод могут быть аргументами функции или stdin / stdout.

Гол

Оценка рассчитывается как общая длина кода минус удвоенная длина самого длинного слова в символах. Или, что то же самое, количество символов не в длинных словах минус длина самого длинного слова.

Самый низкий балл побеждает.

Примеры

Рассмотрим воображаемый постфиксный язык, который имеет следующие функции c: ввод числа; At: вычислить квадрат; $: добавить 1.

cAtбудет действительной программа (ее выход соответствует последовательности 1, 4, 9, ..., что A000290 ), и это будет иметь счет -3.

cAt$будет также иметь силу (последовательность 2, 5, 10, ..., что A002522 ), со счетом -2.

c$At не будет действительным, потому что единственное слово здесь - «At» и производится единственной функцией или оператором.


Я думаю, что это должен быть конкурс популярности.
MCMastery

5
@MCMastery Это не будет хорошим конкурсом популярности. (Большинство проблем не будет.)
Алекс А.

Это по существу ограничено языками игры в гольф все же.
ericw31415

Ответы:


11

CJam, -20

COUNTErREVOLUTIONARIES],

Выводит n-й элемент в последовательности 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

Удаление символа из слова приводит к совершенно другой последовательности A010860 . Между этими двумя последовательностями существует довольно интересная взаимосвязь: для каждого индекса n A010860(n)взаимно просто A010861(n)! За этим должна быть какая-то глубокая математическая причина.

Попробуй это здесь .


1
Я обнаружил еще одно любопытное математическое соотношение: если вы вычли последовательность A010860 из последовательности A010861, результат всегда будет равен 1 для каждого индекса! Увлекательный ...
Дверная ручка

Это будет трудно победить :-)
Луис Мендо

О, верхний регистр .. Отличная идея :)
Мартин Эндер

10

CJam, -5

limpet;

A010051 : печать 0для составных чисел и 1простых чисел.

У меня ушло навсегда найти что-то, что набрало бы несколько баллов и сломалось бы при удалении любого письма. Удаление чего-либо, кроме mсообщения об ошибке, а удаление mпревращает программу в функцию идентификации.

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.

Попробуйте онлайн.


Прекрасный выбор последовательности! :-)
Луис Мендо

8

05AB1E , -4 -11

Код, отпечатки A010869 (константа 30):

ASYNcHRonouSlyI)g

Предыдущий код:

DoGS

Объяснение:

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

Печатает последовательность A010879 .


Это самая интересная последовательность на данный момент!
Луис Мендо

2
Вычеркнуто -4 все еще регулярно -4; (
ETHproductions

6

MATL , −6

INhale

Попробуйте онлайн!

Производит последовательность 1, 2, 3, ... ( A000027 )

Удаление любой буквы изменяет вывод или оставляет программу ожидающей второго ввода, который не существует, или выдает ошибку.

объяснение

Программа просто вдыхает число и, после некоторого возни, выдыхает его без изменений.

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

Объяснение?

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

Последовательность A000027

Подсознательные сообщения? Никогда.

Попробуй это здесь.


4

Джапт, -6

NuLLIFIED)r^

Выходы A004453 : nimsum из N и 12 (N XOR 12). Проверьте это онлайн!

Примечание: последовательность OEIS индексируется 0, поэтому ввод 0 приведет к первому элементу.

Как это устроено

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

Ницца! Любое объяснение, когда вы можете?
Луис Мендо

@ LuisMendo Конечно, готово. Это невероятно просто, но я не нашел ничего более сложного.
ETHproductions

@LuisMendo Обновлено. Это немного интереснее.
ETHproductions

В самом деле! Но, видимо, удаление Yпроизводит тот же результат? (если я не делаю что-то не так)
Луис Мендо

@ Луис Это лучше?
ETHproductions

3

Headsecks , оценка -4

exit

Это сопоставляется с программой Brainfuck ,+-., которая читает один символ и печатает его, вычисляя A000030 . Удаление любого персонажа, очевидно, сломает его.

Есть также marshal( ,-<>+-.), что эффективно ,-., но это не соответствует какой-либо последовательности OEIS.


2

машинный код x86, оценка -4

Hexdump кода:

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

Или в кодовой странице 437 :

SQUAShiestQXâ─¶├

Код сборки:

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

Функция, которая добавляет 1 к своему аргументу .

Удаление Aпревращает его в функцию идентичности. Удаление любого другого байта портит стек, вызывая сбой или плохое поведение вызывающей функции.

Я почти уверен, что возможно улучшить счет, но это может зависеть от интерпретации требований. Например, использование слова SQUEAMIShnessдает программу, которая увеличивает, а затем уменьшает ebpрегистр. Вызывает ли сбой любой из них сбой? Простейшая тестовая программа не использует ebpрегистр, так что, возможно, она не использует ... Чтобы избежать этого сомнения, я использовал более короткое слово.



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.