^"
>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p:1: error: declaration expected
Спробуйте в Інтернеті !: Befunge-93 , C
Завдяки randomdude999 за те, що для роботи імені файлів потрібні відповідні лапки.
Потрібно зберегти під назвою файлу ^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, де \n
знаходиться новий рядок. Через це TIO для C не працює точно так, як було призначено. Тестовано для роботи на Lubuntu.
Пояснення (C):
Програма не може компілювати, і tcc радісно виводить ім’я файлу як частину повідомлення про помилку. На основі початку коду можна отримати кілька помилок компіляції. ^
на початку дає нам declaration expected
, що є коротким і не містить таких проблемних символів "
. З іншого боку, розробники gcc і clang дуже песимістичні, і вони вирішили вивести відразу кілька помилок, що не дуже приємно, тому ми не використовуємо їх компілятори.
Пояснення (Befunge-93):
Befunge зручна для quines тим, що його код також може використовуватися як символьні дані, завдяки "
команді, яка перемикає рядковий режим. На початку ми виконуємо кілька марних операцій стеку, потім видаємо p
команду (put), яка розміщує символ NUL у (0, 1). Потім ми відображаємо вказівник інструкцій зліва і починаємо читати все як рядок. Це потрібно зробити ліворуч, через характер LIFO стека. Після обгортання та досягнення "
символу знову, рядок закінчується. Зауважте, що символ NUL замінив на$
символу, створюючи розмежувач посередині через рядок. Потім натискаємо 3 числа на стек і перестрибуємо через NUL (адже він, на жаль, висить інтерпретатора, коли запускається як інструкція). Тут повинна бути виконана статична частина повідомлення про помилку. Більшість його символів не мають жодного оперу, але p
команда споживає три аргументи (отже, чому ми натиснули 3 числа, інакше частина рядка буде з'їдена тут), а :
& 1
символи висувають до стека 4 значення, якими ми протидіємо з інструкцією a p
та $
(pop та discard). Потім виконується деяка арифметика для натискання кодів ASCII для, ^"\n>#001p#"
і, нарешті, цикл виводить усі значення на стеку як символи, поки не знайде символ NUL і не припиниться.