Кодові слова в цілих послідовностях


15

Вступ

Парейдолія : з давньогрецької; παρα ( абзац , «одночасний, поряд») + εἴδωλον ( eídōlon , «зображення»). Тенденція трактувати розпливчастий стимул як щось відоме спостерігачеві, наприклад, інтерпретувати знаки на Марсі як канали, бачити фігури в хмарах або чути приховані повідомлення в музиці. Джерело: Wiktionary .

Наприклад:

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

Паралогія : З давньогрецької; παρα ( абзац , «одночасний, поряд») + λόγος ( 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

Піт, 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

Japt, -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продукує той самий вихід? (якщо я не роблю щось не так)
Луїс Мендо

@Luis Це краще?
ETHproductions

3

Навушники , оцінка −4

exit

Це відображається на програму Brainfuck ,+-., яка зчитує один символ і роздруковує його, обчислюючи A000030 . Видалення будь-якого символу очевидно порушить його.

Є також marshal( ,-<>+-.), що ефективно ,-., але це не відповідає жодній послідовності OEIS.


2

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

Шестнадцятковий код:

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.