Брудні та неповторні


26

У цьому питанні я розповім про програми як рядки, це рядки байтів, а не символи. Те, як відображається або відображається ваша програма, не є важливою для цього завдання, лише те, як вона відображається в пам'яті.

Незаймані програма є програмою , яка при запуску не помилка, проте це буде помилка , коли безперервна подстрока розміру п , де 1 N < | S | , видаляється.Sn1n<|S|

Брудна програма - навпаки, це програма яка при запуску робить помилку, однак щоразу, коли суцільна підрядка розміром n , де 1 n < | S | , видаляється, не помиляється.Sn1n<|S|

Для цього виклику помилка - це не порожній вихід на STDERR.

Ваше завдання - написати брудну програму, яка використовує якомога більше унікальних байтів. Це означає, що ви отримаєте один бал за кожен унікальний байт, який з’явиться у вашому коді, а більший бал буде кращим. Таким чином, максимальна оцінка становить 256.


Чи можливо навіть відповісти на це мовами, які містять дужки / дужки? Можна було б видалити якусь підрядку з коду, щоб не було невідповідних дужок.
JungHwan Min

@JungHwanMin Якщо мова застосовує збалансовані дужки, я б підозрював, що це буде неможливо.
Пшеничний майстер

@CatWizard так брудна програма не помиляється, коли безперервна підрядка символів (тобто не безперервний набір байтів) видаляється, правильно?
JungHwan Мін

@JungHwanMin Вибачте. Це може бути, а може і ні. Ми дбаємо лише про суцільні струни.
Пшеничний майстер

Відповіді:


18

Унар , 14 байт

123456789ABCDE

Це кодує програму brainfuck [, яка помиляється через незрівняні дужки.

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


Це оптимальне рішення, оскільки будь-яке довше рішення може бути зведене до цього рішення, яке помилки
Джо Кінг

Це також єдине рішення.
користувач202729

13

R , 3 байти

qrt

Спробуйте в Інтернеті!

Ім'я об'єкта - дійсна програма в Р.

qrt це не ім’я нічого, тому воно повертає помилку.

q є функцією виходу

qr - функція розкладання QR

rt - функція вибірки t розподілу

qt - t поширення зворотного 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

@Orphevs моя погана, неправильно прочитай виклик.
pajonk

10

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

“a”;⁽PFð+µU

Спробуйте в Інтернеті!

Перевірте це.

Намагається додати рядок з цілим числом.

Деякі з можливих підпрограм:

“a” є рядковим літералом.

“a - це той самий літеральний рядок.

- порожній рядок.

“a”; з'єднує "а" з собою.

... занадто багато, щоб їх усіх перерахувати.


1
На щастя, Jelly як і раніше дозволяє помилитися.
користувач202729

6

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

1 2

Працює в:

  • JavaScript
  • Рубін
  • R
  • Октава
  • 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, Октава, Рубі, Пітони ...
ngm

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

Спробуйте в Інтернеті!

У python "\ f" те саме, що "\ x0c" і є a формою подачі символом . Це означає, що він вказує, що принтер повинен перейти до наступного рядка.

Якщо вираз python починається або закінчується \f, в основному це ігнорується\f2 є допустимим виразом.

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

Таким чином, сам вираз не вдається із синтаксичною помилкою, оскільки є два числа, розділені пробілом. Однак будь-яке скорочення або ставить \fна початку або в кінці, де це не має значення, або створює42 що є дійсним.

(Варто зазначити, що в IDLE цей файл відкривається схожим на "42".)

Джерело пояснення подачі форми: /programming//a/26184126


3
Це було б простіше зрозуміти, якщо ви використовували фактичний код у вихідному коді без \f. Ось онлайн-посилання на спробу, з якого можна отримати попередньо відформатовану відповідь.
Пшеничний майстер

1
Я додав це як варіант для уточнення. Також дякую за пропозицію посилання.
The Matt

4

Діалог APL , 5 байт ( SBCS )

~≢0 1

Спробуйте в Інтернеті! або протестуйте всі можливі програми

Там впевнені кращі нудні відповіді, але це найкращий не нудний, який я знайшов

SBCS потрібен, оскільки, здається, Dyalog Classic завжди має вихід у STDERR, що робить його непридатним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.