Грязный и уникальный

26

В этом вопросе я расскажу о программах в виде строк, это строки байтов, а не символов. То, как ваша результирующая программа отображается или отображается, не важно для этой задачи, важно только то, как она отображается в памяти.

Нетронутые программа является программой , которая при запуске не ошибка, однако это будет ошибка , когда непрерывная подстрока размера п , где 1 N < | S | , устранен.Sn1n<|S|

Грязная программа противоположна, это программа которая при запуске выдает ошибку, однако всякий раз, когда непрерывная подстрока размера n , где 1 n < | S | , удаляется, это не ошибка.Sn1n<|S|

Для этой задачи ошибка является непустым выводом в STDERR.

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

Мастер пшеницы
источник
Можно ли даже ответить на это на языках, которые включают скобки / скобки? Можно было бы удалить некоторую подстроку из кода, чтобы были несовпадающие скобки.
JungHwan Мин
@JungHwanMin Если язык использует сбалансированные скобки, я бы заподозрил, что это невозможно.
Пшеничный волшебник
@ CatWizard, поэтому грязная программа не выдает ошибку при удалении непрерывной подстроки символов (т.е. не непрерывного набора байтов), верно?
JungHwan Мин
@JungHwanMin Извините. Это может или не может. Мы заботимся только о непрерывных струнах.
Пшеничный волшебник

Ответы:

18

Одинарный , 14 байт

123456789ABCDE

Это кодирует программу brainfuck [, ошибки которой возникают из-за несоответствующих скобок.

Удаление байты приведут >, <, +, -, ., ,или пустую программа, которые являются действительной программой Brainfuck.

Деннис
источник
Это оптимальное решение, поскольку любое более длинное решение может быть сведено к этому решению, ошибки которого
Джо Кинг,
Это тоже единственное решение.
user202729
13

R , 3 байта

qrt

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

Имя объекта является допустимой программой на R.

qrt не является именем чего-либо, поэтому возвращает ошибку.

q это функция выхода

qr является функцией разложения QR

rt является функцией выборки распределения t

qt является распределением обратного CDF

t это транспонированная функция

НГМ
источник
2
@pajonk, но "r" - это непрерывная подстрока. Удаление, которое оставляет "qt"
Орфев
3
В R есть ровно одна грязная программа длины 3, и это все! (единственный сингл символьные действительные программы 0-9cqtCDFIT, поэтому любая программа должна начинаться с cm, qf, qr, qt, tsили Im. Длина три возможности qrf, qrm, qrt, qtsи tsdи только один из них нечисто (остальные могут не быть продлен либо сделать их Filthy так как нет ни одной функции rm*, rf*, ts*, sd*)
JDL
@ Орпевс мой плохой, неправильно прочитал вызов.
Пайонк
10

Желе , 4 5 6 7 8 10 11 байт

“a”;⁽PFð+µU

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

Проверьте это.

Пытается добавить строку с целым числом.

Некоторые из возможных подпрограмм:

“a” является строковым литералом.

“a это тот же строковый литерал.

пустая строка

“a”; соединяет «а» с собой.

... слишком много, чтобы перечислить их всех.

dylnan
источник
1
К счастью, желе все еще позволяет вам ошибаться.
user202729
6

Полиглот, 3 байта

1 2

Работает в:

  • JavaScript
  • Рубин
  • р
  • октава
  • GHCi
  • Юлия

В JavaScript выдает SyntaxError: неожиданный токен: числовой литерал или аналогичную ошибку.

Все остальные строки являются допустимыми числовыми литералами ( 1 , 2 или 12 ).


В GHCi это кидает

<interactive>:1:1: error:
     Non type-variable argument in the constraint: Num (t1 -> t2)
      (Use FlexibleContexts to permit this)
     When checking the inferred type
        it :: forall t1 t2. (Num t1, Num (t1 -> t2)) => t2

Это происходит потому , что он пытается применить 1к 2как функции, однако она не может. Когда какая-то часть этого удаляется, она просто становится числовым литералом.

Арнаулд
источник
Полиглот: R, Октава, Рубин, Питоны ...
НГМ
1
@ngm GHCi также, однако `2` ошибки в python.
Пшеничный волшебник
Я подозревал, что это было очень общим. Я превратил это в вики сообщества, так что не стесняйтесь редактировать со всеми языками, для которых это работает!
Арно
5

Python 2 , 2 байта

Неожиданный символ после символа продолжения строки

\0

\сопровождаемый любым из 123456789 #
Попробуйте онлайн!

Неверное восьмеричное число

08

0сопровождаемый любым из 89
Попробуйте онлайн!

Неожиданный отступ

 0

или \tсопровождаемый любым из 123456789\
Попробуйте онлайн!

прут
источник
5

Python 2/3 , 3 байта

4\f2

ИЛИ

4\x0c2

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

В питоне "\ f" совпадает с "\ x0c" и является символом перевода формы . Это означает, что принтер указывает перейти на следующую строку.

Если выражение python начинается или заканчивается \f, оно в основном игнорируется, так \f2же как и допустимое выражение.

4И 2может быть любое число 0-9. Однако, чтобы первый байт был 0действителен только в Python 2.7.15, так как 02было сделано официальное заявление о 2.

Таким образом, само выражение завершается с ошибкой синтаксиса, потому что есть два числа, разделенные пробелом. Однако любое сокращение либо помещает \fв начало или конец, где это не имеет значения, либо создает 42допустимое.

(Стоит отметить, что в режиме IDLE этот файл открывается в виде «42».)

Источник объяснения фида форм: /programming//a/26184126

Мэтт
источник
3
Это было бы легче понять, если бы вы использовали реальный код в исходном коде без \f. Вот онлайн-ссылка "Попробуйте", по которой вы можете получить предварительно отформатированный ответ.
Пшеничный волшебник
1
Я добавил это как вариант для разъяснения. Также спасибо за предложение по ссылке.
Мэтт
4

Dyalog APL , 5 байтов ( SBCS )

~≢0 1

Попробуйте онлайн! или протестируйте все возможные программы

Там наверняка есть лучшие скучные ответы, но это лучший не скучный, который я нашел

SBCS требуется, поскольку Dyalog Classic, кажется, всегда имеет вывод в STDERR, что делает его непригодным для использования.

dzaima
источник