Многие люди знают, что такое истина в программировании. Но настало время, чтобы мы взлетели на ступеньку выше. Представляем, расширенную машину правды! Расширенная машина истинности принимает в качестве входных данных две вещи: целое число n
и непустую строку s
. Это выводит s
n
времена с дополнительным конечным пробелом. Однако, если n
он равен 0
, вы должны выводить s
до тех пор, пока программа не будет остановлена вручную, то есть она никогда не должна завершаться.
Кроме того, если n
это отрицательное число, то строка должна быть обращена. Например, с s=hello
и n=-1
, вывод будет olleh
.
Стандартные методы ввода, любой вид вывода, если он может обрабатывать бесконечно. Если у вас есть ответ, который не обрабатывает бесконечность, не стесняйтесь опубликовать его, если он интересен или на языке, который не может обрабатывать бесконечный вывод.
Тестовые случаи
n, s, output
5, "hello world", "hello worldhello worldhello worldhello worldhello world"
0, "PPCG", "PPCGPPCGPPCGPPCG..."
-2, "truThY", "YhTurtYhTurt"
2000, "o", "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
Это код-гольф , поэтому выигрывает самый короткий код!
Вот оригинальный пост Песочницы. В него были внесены изменения. Спасибо @ComradeSparklePony за создание идеи этого вызова
источник
-n
вместоabs n
.PHP> = 7.1, 67 байт
Версия с
list(,$x,$y)
вместо[,$x,$y]
Попробуйте онлайн!источник
MATL , 37 байт
Попробуйте онлайн!
Объяснение:
источник
Python 3, 71 байт
Попробуйте онлайн!
Переменная
k
гарантирует, что цикл всегда запускается хотя бы один раз. Это означает, что еслиn=0
, тоn
будет отрицательным на следующей итерации цикла, поэтому цикл будет продолжаться вечно.источник
Matlab, 87 байт
Моя первая попытка код-гольфа! Любые предложения по игре в гольф приветствуются.
источник
05AB1E ,
171614 байтовПопробуйте онлайн!
Объяснение:
Сохранено 2 байта благодаря @EriktheOutgolfer
источник
'-å
на0‹
и0Q
с_
.Cubix , 41
Сорок четыре45байтовПринимает вход как
<N> <String>
Попробуйте онлайн!
Cubified:
Смотреть это работает
В коде по-прежнему есть количество неактивных операций, из которых я мог бы вытащить еще несколько байтов, но хотел бы поднять это, прежде чем я сломаю его.
Основная процедура
I
получить счетчик от входаA
взять оставшуюся часть ввода в виде символов;p?
убрать пробел, поднять число и проверить егоpsuqB$)
если счетчик отрицателен, переверните стек. Это включает обработку входного номера и маркера EOI (-1). Увеличьте счетчик.;p;ouqu
если счетчик равен нулю, удалите счетчик и маркер EOI и запустите бесконечный цикл вывода.(
если положительное значение уменьшить счетчик<<q?/o()u
выходной цикл. Это будет выводить каждый символ стека, пока не будет достигнут маркер EOI (-1).... _ ... ?wq!
в конце маркера EOI обойдите куб и отразитесь обратно?
, поменяйте полосу движения, опустите маркер EOI вниз и проверьте счетчик.@
если ноль, остановить?u(
если положительный разворот и уменьшение, то в конце концов вы попадаете в начало цикла? ... <)
если отрицательный, обойдите куб в другую сторону, перенаправьте в начало цикла, передавая приращение./)<
если отрицательный прирост и переход к выходному контуруисточник
JavaScript (ES6), 79 байт
Отрывок:
источник
!n&&
бесконечном цикле. Тем не менее, это в конечном итоге ударит по StackOverflow?it should never terminate.
JavaScript (ES6),
98949183 байта-4, -5 байт благодаря Арджуну
-3 байта благодаря Рику Хичкоку
Начал иначе, чем ответ Java , но быстро стал очень похожим после игры в гольф. Оповещение бесконечно, но если вы хотите, чтобы оно выглядело хорошо, переключитесь на
console.log
.l=alert;
иalert
длина записи одинакова, но если вы переключитесь наconsole.log
нее, она будет короче, чтобы переопределить ее.источник
while(!n)l(s)
вместоif(!n)for(;;)l(s)
.[...s].reverse()
вместоs.split''.reverse()
l(s.repeat(Math.abs(n)))
for
наконец, вместо цикла.QBIC , 36 байт
Здесь много всего, и у QBIC / QBasic просто нет синтаксиса для элегантной обработки таких условий.
Объяснение:
источник
Java (OpenJDK 8) , 137 байт
Попробуйте онлайн!
источник
ул , 30 байт
Попробуйте онлайн!
объяснение
источник
C (gcc) ,
115112109107104 байтаПопробуйте онлайн!
C (gcc) , 115 байтов (134 с
#include<string.h>
перед)Попробуйте онлайн!
источник
Сетчатка , 49 байт
Формат ввода: принимает строку, за которой следует новая строка с последующим номером.
Попробуйте онлайн!
Объяснение:
/¶-/&
Запускает эту линию , только если число является отрицательным.V
это обратная стадия, и она переворачивает^.+
, что соответствует строке (.
соответствует каждому символу, кроме символов новой строки)./¶0/&
Запускает эту линию , только если число равно 0.//+>
Запускает бесконечный цикл, который печатает рабочую строку после каждой итерации.G0
берет строку и сбрасывает номер; он делает это бесконечно, печатая каждый раз.Это отмечает код, который сгенерирует строку; программа оценивает строку как код Retina после.
(.+)¶-*(\d+)
сопоставляет всю строку и помещает строку в группу захвата 1 и число в группу захвата 2..-$2+>K
`$1
генерирует код Retina для запуска:.
отключает неявный вывод (в противном случае строка будет напечатана n + 1 раз),-$2+
устанавливает цикл повторения это повторяется для {захвата группы 2} раз. Минус в начале превращает число в отрицательное число, так как это отключает функцию сходимости в цикле, которая остановит его после 1-й итерации.>
устанавливает этот цикл для печати после каждой итерации. Остальная часть кода просто для печати строки.источник
Perl 6 , 44 байта
Попробуйте онлайн!
Блок анонимного кода, который принимает число и строку и возвращает (возможно, бесконечный) список
источник