Это остановит? (Менты)


94

Это нить полицейских. Нить грабителей здесь .

Ваша задача состоит в том, чтобы создать программу, которая будет работать вечно, не останавливая 1 , если только она не получает определенный ввод или ввод 2 . Если он получает этот вход, он должен завершиться за конечное время 3 . Это , поэтому самый короткий ответ, который не был взломан грабителем в течение одной недели после публикации выигрышей. По прошествии недели отметьте свой ответ как безопасный и покажите вводимые данные (а > ! spoiler quote). Если грабитель взломает ваше представление, отметьте его как взломанное и покажите ввод с задержкой (в a > ! spoiler quote).

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

Пожалуйста, сделайте ваши входные данные детерминированными и единообразными по всем прогонам. Смотрите эту мета-пост для деталей.

Пожалуйста, не «внедряйте RSA» или что-либо еще значащее для грабителей. Используйте непонятные языки и функции, не скучное шифрование и хеширование. Я не могу навязать это с помощью правил, но вы можете ожидать резких понижений, если все, что вы делаете, это sha(input) === "abcd1234".


1 Предполагая, что компьютер не выключается, не ломается, не поглощается солнцем, не перегревается при тепловой смерти вселенной и не истекает время ожидания TIO 60 с.

2 Программа должна остановиться хотя бы на одном входе. Пока он зацикливается на одном входе и останавливается на другом, он работает.

3 Это должно быть <60 секунд, чтобы код мог быть протестирован на TIO.


Ищете необработанные материалы?

fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>


1
@ LuisMendo, предполагая, что бесконечная память в порядке
programmer5000

1
@ programmer5000 Спасибо за разъяснения. Вы должны включить все это в текст вызова. Отвечающие не должны читать все комментарии
Луис Мендо

6
Можем ли мы ограничить ввод, скажем, целым числом? Грабитель может передать какой-нибудь некорректный или ошибочный ввод, чтобы немедленно завершить программу. Мне нужно было бы либо выполнить тщательную проверку ввода, либо использовать язык, который может отлавливать произвольные ошибки.
xnor

3
@xnor Думаю, тебе нужно проверить ввод.
Стивен

1
@StepHen Это работает, если искаженный ввод все еще может быть проанализирован интерпретатором. Если я ввожу недопустимую строку, Rошибки сразу же, даже не входя в функцию взломать. Я бы сказал, что это не считается завершением функции.
JAD

Ответы:


55

Malbolge, 128 байт, взломанный KBRON111

(=&r:#o=~l4jz7g5vttbrpp^nllZjhhVfddRb`O;:('JYX#VV~jS{Ql>jMKK9IGcFaD_X]\[ZYXWVsN6L4J\[kYEhVBeScba%_M]]~IYG3Eyx5432+rpp-n+l)j'h%B0

Веселиться!

(Да, я выучил Мальболге только для этого. Да, потребовалось абсурдно много времени, чтобы наконец заработать. И да, оно того стоило.)

Завернут, так что вы можете увидеть его во всей полноте "славы"

(=&r:#o=~l4jz7g5vttbrpp^nllZjhhV
fddRb`O;:('JYX#VV~jS{Ql>jMKK9IGc
FaD_X]\[ZYXWVsN6L4J\[kYEhVBeScba
%_M]]~IYG3Eyx5432+rpp-n+l)j'h%B0

Я использовал этот интерпретатор, чтобы проверить его; Я не уверен, имеет ли это значение, но я решил указать на всякий случай.


2
Это интерпретатор, который использует TIO.
Деннис


26
Ты - дебил. Мальболге подлый.
Draco18s

1
Я проштампован ... Самое дальнее, что я получил: из 13 входов до остановки только первое и третье имеют какое-либо влияние. После тщательной обратной инженерии, я обнаружил , что первый вход должен быть 6и третьим является одним из четырех: !, #, /и -. Но комбинация, кажется, не останавливает ситуацию. Я выложил это здесь, возможно, кто-то умнее найдет решение. Если кто-то захочет, я опубликую завтра, как я получил эти входы. РЕДАКТИРОВАТЬ: Теперь, когда я думаю об этом, моя программа, которую я написал с целью обратного проектирования, это может иметь ошибку, и первый ввод может быть что-то еще, чем 6. Третий персонаж все еще стоит.
Гжегож Пулавски


23

JavaScript (ES6), 17 байт, взломан

x=>{for(;x==x;);}

На TIO, поскольку я не знаю, как сделать readline для Node.js на TIO, просто вставьте ввод в вызов функции. Это очевидно для любого, кто знает это, и не для любого, кто не знает.

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

Ответ:

Ответ NaN, так как в JavaScript NaN != NaN.


2
Трещины . Хорошее использование странной языковой!
programmer5000

3
Вы держите пари :) Мне нравится, как вы были настолько уверены, что это то, что я выбрал, что вы отредактировали это для меня: P
Стивен

12
NaN == NaNложно во многих языках, кроме JavaScript. Я бы не назвал это «странной странностью».
Наюки

9
я верю, NaN != NaNчто это особенность чисел с плавающей запятой
подземный

1
@undergroundmonorail: это правильно. Отношение между двумя числами с плавающей точкой IEEE может быть выше, равно, ниже или неупорядочено . Результат сравнения является неупорядоченным, если один или оба операнда имеют вид NaN. (Бинарная плавающая точка IEEE 754 имеет много битовых комбинаций NaN : все, что имеет экспоненту все единицы и ненулевая мантисса, является NaN, независимо от знакового бита. Существуют некоторые правила, для которых то, что входит в «полезную нагрузку» NaN, и для распространения этого с помощью операций типа +или max(), но большинству людей все равно: P)
Питер Кордес

14

JS (ES6), 67 байт ( треснувший )

(x,y)=>{while(x!==y||Object.is(x, y)||!isFinite(x)||!isFinite(y));}

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

Я ценю любые отзывы, это одно из моих первых сообщений

(+0, -0) Да, у JS есть отрицательный 0



Теперь я понимаю, что мне не нужно проверять, если xи yконечно, но я не буду редактировать, так как он был уже взломан. Может быть 38 байтов
Хуан Тонина

10

Python 3.4, (40 байт) взломан

def f(x):
  while(x==x or not x==x):pass

4
Добро пожаловать в PPCG!
Мартин Эндер


12
Я чувствую, что вы должны были хранить x==xв переменной с именем to_be, чтобы вы могли сделать ссылку Гамлета.
Питер Кордес

@PeterCordes Но это сделало бы ответ безотказным
pppery

@ppperry: да, я заметил это после того, как посмотрел на трещину. : P
Питер Кордес

9

Javascript (НЕ node.js)

x=>{while(x+"h");}

Желаемое представление не использует бросок.

Подсказка для желаемой трещины:

Желаемое представление не перезаписать .toString(), или использовать Set()либо.

Желаемая трещина:

Object.create(null)


Правильная взломанная ссылка (не моя, просто ссылка на ответ Дома Гастинга)
Стивен,

Трещины № 2 Трещины без использования throw(но все равно выдает ошибку)
Грант Дэвис,

Снова взломанный без использования throw, на этот раз я верю в реальность, потому что Грант Дэвис не работал для меня. Все еще TypeErrorс.
Хаумед Рахмани

2
Вы можете сделать x=>{try{for(;x+"h";)}catch(e){for(;;)}}так, чтобы любые ошибки приводили к бесконечному циклу, поэтому пропущенные ошибки функции прототипа (или любые ошибки) приводят к бесконечному циклу.
Грант Дэвис

1
Этот работает только в браузере, хотя не уверен, почему это так: D
jadkik94

8

C (gcc) , 75 байт, треснувший

#include<stdio.h>
int main(){char c[9];while(1){scanf("%8s",c);printf(c);}}

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

Я никогда не писал в полицейских-грабителей раньше. Надеюсь, это не слишком очевидно.

Решение:

Ввод "% s" делает это segfault. Есть несколько других, которые можно использовать; все они являются printfспецификаторами, такими как «% n».
Это классическая printfуязвимость. Проще говоря, строка формата поступает прямо из пользовательского ввода, поэтому любые printfспецификаторы проходят небезопасно.



8

JavaScript (в браузере), 79 байт взломан

x=>{try{for(;x||x!=null||x!=void 0||x===null||x===void 0;);}catch(e){for(;;);}}

Вы должны запустить его в недавнем браузере (например, последняя версия Firefox ESR, последняя версия Firefox, последняя версия Chromium). Запуск в старых браузерах (например, Netscape 2, IE 4) не учитывается.

Примечание: остановлено браузером из-за тайм-аута, не считайте остановку здесь.

Всегда будьте осторожны, не ломайте свой браузер при тестировании этих кодов и счастливого ограбления ^ _ ^

document.all


Могу ли я использовать setTimeout?
Евгений Новиков

@ ЕвгенийНовиков Вы можете вызвать эту функцию с любым параметром. Но, похоже, использование в setTimeoutкачестве параметра не работает.
TSH

идея сделать, var key=(()=>{setTimeout(args);return null})()а потомcrackme(key)
Евгений Новиков

похоже на измену
Евгений Новиков



6

Шелуха , 5 байт, треснувший

↑ε∞←ø

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

Немного объяснения, так как этот язык все еще довольно новый:

←øполучает первый элемент пустого списка: он возвращает значение, которое может принимать любой тип, будь то конкретный тип или функция, которая затем будет применена к входным данным. создает бесконечный список, составленный из копий предыдущего результата (который в большинстве случаев будет означать список бесконечных нулей). ↑εберет элементы из этого списка до тех пор, пока они «маленькие», т.е. их абсолютное значение равно ≤1; на бесконечном списке нулей это никогда не остановится.


@Veedrac, который был фактически моим намеченным решением
Лев

Ну, тогда трещины!
Ведрак


5

Рубин , 31 байт ( взломано Эриком Думинилом )

0until(3.send(gets)==5rescue p)

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

Обратите внимание, что это должно быть выполнено в среде, в которой нет завершающего символа новой строки в результате gets, иначе невозможно остановить его (я думаю), поскольку что-либо, заканчивающееся символом новой строки, приведет к ошибке и попадет в режим спасения.



Хороший, кстати! Ни один метод не 3.methodsвозвращает 5и не выходит из цикла.
Эрик

Штопать! Я также нашел решение самостоятельно, но я был слишком сосредоточен на том, чтобы сделать его равным, 5чтобы думать, что правильный ответ будет включать в себя функцию, которую он выполнял ...
Value Ink


5

Баш 4.2, 14 байт ( взломан )

Давайте попробуем это снова.

let ${1,,}
yes

Это не работает на TIO, который использует Bash 4.3. Ввод осуществляется через аргументы командной строки.

В Linux и с установленным gcc Bash 4.2.53 можно загрузить и собрать следующим образом.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j

Трещины. В основном закончили тем, что читали источник.
Ведрак

4

Сетчатка , 78 байт ( взломана ) ( взломана с помощью предполагаемого решения )

^
1
+`^1(1+)
$1¶$&
s`(?<=^|¶)(1+)(?=¶)(?!.*¶\1+$)

¶(?!1+$)

^(1+)¶\1$

+`1
11

Было довольно весело писать, надеюсь, что это весело, чтобы взломать

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

Трещины с помощью непреднамеренного решения и предполагаемого решения в течение минуты друг от друга. Один размещен первым, один прокомментирован первым.

Предполагаемое решение:

11111 или унарное представление n-1, где n - любое совершенное число




Итак, чья трещина имеет значение? (Сначала я опубликовал трещину, но сначала прокомментировал mbomb007)
Kritixi Lithos

@ Cowsquack Оба
программист5000

4

Node.js, 23 байта ( взломан )

var crackme =
i=>{while({[i]:NaN}){}}

Решение Гранта Дэвиса

{__proto__:null}

Мое решение

{"toString":process.exit}



@GrantDavis хорошая работа) Ваше решение работает и в браузере. Я думал окружить его try-catch, но отказался от этой идеи, чтобы сделать красивый код.
Евгений Новиков

4

Java 8, 99 байт, Cracked

s->{try{Integer i=Integer.parseInt(s),c=i+32767;i+=32767;for(;i!=c;);}catch(Throwable t){for(;;);}}

Это лямбда типа Consumer<String>.

Ungolfed:

s -> {
    try {
        Integer i = Integer.parseInt(s), c = i + Short.MAX_VALUE;
        i += Short.MAX_VALUE;
        while (i != c) ;
    } catch (Throwable t) {
        while (true) ;
    }
}

Попробуйте онлайн! (обратите внимание, что тестовая программа будет аварийно завершать работу при пустом вводе, но сама лямбда не будет!) (также используйте «аргументы», а не «ввод» в TIO, поскольку тестовая программа использует аргументы, а не STDIN)

Предполагаемый ответ:

-32767; Это работает, потому что Java хранит два целочисленных типа, intи Integer. Integerэто объект, который оборачивает int. Кроме того , Java сохраняет кэш Integerс , что боксировать -127через 127. В !=оператор проверяет идентичность, так что через какой - то не-бокс и авто-бокс любое число , xгде x + 32767находится в [-127, 127]будет в конечном итоге тот же Integerобъект из кэша, и , таким образом , i != cбудет ложным.



4

Bash 4.2, 10 байт ( треснувший )

let $1
yes

Это не работает на TIO, который использует Bash 4.3. Ввод осуществляется через аргументы командной строки.

В Linux и с установленным gcc Bash 4.2.53 можно загрузить и собрать следующим образом.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j

1
Трещины. Вы крутили меня в кругах, думая, что это было связано со снарядами, и связывали меня с исправленной версией: P. Считайте непреднамеренную трещину мелкой местью;).
Veedrac

Хех, не совсем то, что я собирался. Я разместил закаленную версию, если вы хотите попробовать.
Деннис

3

Ява: 1760 ( треснувший )

Я чувствую, что это слишком плохо для игры в гольф, поэтому я просто запутал имена переменных и сделал их «грязными». На самом деле это настолько подло, что я собираюсь публиковать подсказки со временем, просто чтобы я мог видеть, что они взломаны.

Подсказка 1: это имеет теоретически бесконечные действительные входные данные, но есть один, который является наиболее «правильным»


public class Main {

	public static void main(String[] a) {
		try {
			while (a.length < 2) {
				int i = 0;
			}
			boolean invalid = 1 < 0;
			char l = '_';
			char h = '-';
			char[] DATATWO = a[0].toCharArray();
			char[] DATATOW = a[1].toCharArray();
			int length = DATATOW.length;
			if (DATATWO.length != length) {
				invalid = 1 > 0;
			}
			int transmissionStartIndex = 0;
			for (int i = 0; i < length; i++) {
				if (DATATWO[i] == l && DATATOW[i] == l) {
					transmissionStartIndex = i;
					break;
				}
			}
			int DATAONE = 0, reg = 0;
			boolean read = 1 < 0, full = 0 < 1;
			int bytes_read = 0;
			for (int i = transmissionStartIndex; i < length; i++) {
				if (DATATOW[i] == l && DATATOW[i + 1] == h) {
					bytes_read++;

					if (bytes_read == 8) {
						read = DATATWO[i] == h;
					} else if (bytes_read == 9) {
						invalid = (DATATWO[i] == h || invalid);
						System.out.println(invalid);
					} else if (bytes_read == 18) {
						System.out.println(invalid);
						invalid = (DATATWO[i] == h || invalid);
						if (invalid) {
							System.out.println("i36 " + DATATWO[i] + " " + h);
						}
						full = 1 > 0;
					} else if (bytes_read < 8) {
						DATAONE += (DATATWO[i] == h ? 1 : 0) << (7 - bytes_read);
					} else if (bytes_read < 18) {
						reg += (DATATWO[i] == h ? 1 : 0) << (8 - (bytes_read - 9));
					} else if (bytes_read > 18) {
						invalid = 1 > 0;
					}
					System.out.println(a[0]);
					System.out.println(new String(new char[i]).replace("\0", " ") + "|");
					System.out.println(a[1]);
				}
			}

			while (!(Integer.toHexString(DATAONE).equals("0x2b") && (read)
					&& Integer.toHexString(reg).equals("0xa6"))) {

				System.out.println(System.currentTimeMillis());
				try {
					Thread.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}

		} catch (Exception e) {
			while (true) {
			}
		}

	}
}

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


Кажется, работают два пустых аргумента
Okx

Кроме того, возражаете добавить ссылку Tio? Я думаю, все, что вам нужно сделать, это изменить main на Main
Okx

1
Трещины , кроме ошибки.
user3033745

Cracked - ошибка не зависит от версии.
Okx

3

Braingolf , 18 байт Трещины

1+[#£-0!e>:$_1>|]

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

Liiiitle немного сложнее, чем предыдущий, я начну писать настоящий после этого

Ответ 163


Чувак, это, наверное, единственное выжившее подчинение атм. Примечание: iне работает.
Эрик Outgolfer

Предупреждение: на самом деле это 19 байт ( £). А почему не -1работает? Это сложно.
Эрик Аутгольфер

@EriktheOutgolfer Это 17 символов и 18 байтов.
полностью человек

@totallyhuman Я клянусь, что прочитал «19 байтов UTF-8, 18 символов» (пользовательский сценарий включен) ...
Эрик Outgolfer


3

JavaScript (ES7), 41 байт ( взломан и взломан )

Редактировать: исправлено, чтобы предотвратить его падение при отсутствии ввода вообще (спасибо @totallyhuman за то, что заметил)


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

(x=0)=>{for(;~x/x.length**3!=-2962963;);}

Предполагаемое решение:

«8e7» (число в научной записи передается в виде строки).
Потому что: ~ «8e7» / «8e7» .length ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963


2
Никакие входные данные не работают на этом тоже, но я не хочу потрудиться взломать это так ... Если только это - предполагаемое решение. : P
полностью человек

@totallyhuman Ну, это не намеченное решение. :-)
Арно


2
Обновление:
Евгений Новиков

3

Bash + Utils (взломанный Деннисом), 74 байта

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

cp /bin/tar .
env -i PATH=$PWD I=$? /bin/bash -r -c "$1"
while :;do :;done

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

Преднамеренная трещина

tar -cf --checkpoint=1 --checkpoint-action=exec="/bin/kill $I" .



@ Денис Ницца! Я разместил свой предполагаемый треск, который был немного сложнее.
Сизиф

3

Mathematica, 36 26 байт ( взломан )

#0[#;$IterationLimit=∞]&

Очень короткий цикл, #0[#;∞]который будет продолжать работать снова и снова, пока не сломает ваше ядро ​​... (Это $IterationLimitпросто для того, чтобы вы навсегда застряли на большинстве входов).

Попробуйте это на Wolfram Sandbox! - если вы застряли в бесконечном цикле, вы можете подождать до истечения времени ожидания или нажать квадратный значок «отменить оценку» слева от названия блокнота (unnamed).

ПРИМЕЧАНИЕ : эта функция меняет ваши $IterationLimitнастройки.




3

C #, 118 байт ( треснувший )

using System;_=>{while(1>0){try{if(Nullable.GetUnderlyingType(Type.GetType(Console.ReadLine()))!=null)break;}catch{}}}

Я не ожидаю, что это продлится слишком долго, но это более неловко, чем кажется.

В основном, любое полное имя Nullable классов работает, но это неудобно выяснять, как это выглядит ниже:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Самый простой способ найти эту строку - это сделать typeof(int?).FullName.



3

C, 140 байт ( треснувший )

n,i;f(){float x,y,z;for(scanf("%d %d",&n,&z,x=y=0);~((int)x-(int)(1/sqrt(y*2)));x*=(1.5-y*x*x))y=(x=z)/2,i=n-((*(int*)&x)/2),x=*(float*)&i;}

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

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



3

JavaScript (ES7), 73 байта ( взломан !)

q=>{r=(n,i=0)=>i>1e3?n:r(n*16807%(2**31-1),i+1);while(r(q)!=627804986){}}

Нежелательные решения: грубая сила. Желаемая трещина включает в себя математику.

Обратите внимание, что существует много решений (4194304) по модулю.



3

бред , 170 байт взломано!

>>,>,>,>,>,[-----------<-<+<--<--->>>>]<++<<+<++[----->+<]>[----------------->+++++++<]>[----->>+<<]>>[-<->]<[--->++++++<]>[--->+<]+>-[-----------------<+>]<[-->-<]>+[+-]

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


Добро пожаловать на сайт! Вы можете сэкономить 11 байт, удалив символы новой строки из вашего кода.
Пшеничный волшебник

Я забыл, что это был код гольф, спасибо!
Джерри


Действительное решение! Я считаю, что их довольно много. Для любого, кто решает / перебор, подразумевается [az].
Джерри

Для каждых 4 символов, есть ровно 1 значение последнего символа, заставляющее программу останавливаться. Поэтому существует 256 ^ 4 = 4294967296 решений, предполагающих, что вы можете вступить nulв бред. Кстати, вы можете удалить два первых >сохранения 2 байта.
user202729

3

JavaScript ES6 (Node.js> = 6,0) , 326 байт (безопасно)

((v,e=require('events').EventEmitter.prototype,l=_=>{while(1);},P=Proxy,p=process)=>(p.kill=p.exit,e.listeners=new P(e.listeners,{apply:(t,c,a)=>a[0]=='exit'?[]:t.apply(c,a)}),e.removeAllListeners=new P(e.removeAllListeners,{apply:(t,c,a)=>a[0]=='exit'?c:t.apply(c,a)}),p.on('exit',l),i=>{try{v(i)}catch(o){}l()}))(s=>eval(s))

Гораздо проще, чем моя другая задача , я больше не пытаюсь запутать подход к решению, что сэкономило мне много байтов. На этот раз process.kill()не сработает.

"delete process._events.exit;process.exit()"

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


Ого! Хорошая работа!
programmer5000

Похоже, вы победитель, хотя я ожидал гораздо более короткого кода, хе-хе
Пийин

3

Swift 3, 14 байт ( треснувший )

while !false{}

Чтобы решить эту проблему, поместите свой код до или после этого утверждения.

  • Ваше решение должно:
    • сохранить это утверждение без изменений, не изменяя его код
    • на самом деле пусть это утверждение работает
      • Просто комментируйте, звоните fatalError()и т. Д., Прежде чем это не засчитывается.
    • изменить поведение этого оператора, чтобы предотвратить его зацикливание навсегда
  • Решение не включает сбой программы.

Я не знаю Swift, но я думаю, что добавление таймера перед этим кодом для выхода через несколько секунд будет соответствовать критериям.

@ Yimin Хе, умный, но это не меняет семантику этого утверждения, что я действительно искал, когда сказал «изменяет поведение этого утверждения»
Александр

Вы уверены, что решение работает? Переводчик кричит ambiguous semanticsна меня.
Даниэль

@Dopapp, вот что я думал, произойдет в моей предыдущей попытке. По какой-то причине законно переопределять новые инфиксные операторы с теми же сигнатурами типов, что и у уже существующих, но попытка сделать то же самое с унарным оператором приводит к ошибке неоднозначности времени компиляции. Это намеренно, и я уверен, что у меня есть рабочее решение
Александр


2

cQuents , 2 байта ( трещины 1 ) ( трещины 2 )

:A

Обратите внимание, что это быстро достигнет предела выхода 128 КиБ на TIO, что приведет к его остановке, но при локальном запуске он будет зацикливаться вечно, за исключением входа, который его нарушает. Найти этот вход должно быть довольно легко. До тех пор, пока вы не сделаете, :Aбудете продолжать торчать свой треугольный язык на вас.

Заметьте также, что это должно быть просто, Aно я нарушил неявные режимы прошлой ночью. На старых версиях интерпретатора Aбудет работать нормально.

Трещины:

Пустой ввод / перевод строки на ввод является допустимой трещиной. Однако, за исключением того, что, передав несколько (разделенных пробелами) входных данных в программу, вы прекратите его (если вы дадите 2) или выведите ошибку (если вы дадите 3 или более).

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


Трещины? (Ошибки с пустым вводом)
Луис Мендо


@ взломщики да, это действительный треск. Я передам свой голос тому, кто найдет трещину с непустым вводом.
Стивен

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