Ваша задача - поменять порядок prints
выполнения некоторых .
Спецификации:
Ваш код будет в этой форме:
//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code
Вам придется print
(или echo
, или write
, или эквивалентно) эти строки от четвертого до первого.
Вы
print
сами решаете, какие строки вашей программы должны соответствовать строкам, но они должны быть смежными ;Каждая строка может содержать только одну строку
print
и не может превышать 60 байт ;Так как это конкурс на популярность , будьте креативны и не пишите просто
goto
или простоfor(i){if(i=4)print"Line1";if(i=3)...}
Ответ, получивший наибольшее количество голосов за 2 недели, побеждает.
Ваш вывод ДОЛЖЕН быть
Line4 Line3 Line2 Line1
ИЛИLine4Line3Line2Line1
ИЛИLine4\nLine3\nLine2\nLine1
(где\n
есть новая строка), и он должен генерироваться только путем их выполнения вprints
обратном порядке.
Удачного кодирования!
ОБНОВЛЕНИЕ: Конкурс окончен! Спасибо вам всем :)
Ответы:
Коммодор 64 Бейсик
источник
PHP
Злоупотребление приоритетом ... :-)
источник
print
может использоваться как выражение, как и в perl, возвращаемое значение которого всегда1
.!1
возвращаетbool(false)
, который при вводе в виде строки возвращает пустую строку. Более правильным ограничением для PHP может быть требованиеecho
вместоprint
; Выше действительно только одно утверждение.print ("Line 1". !print ("Line2". !print ("Line 3". !print "Line4")));
- все, что находится справа от оператора печати, является его частью.print
вызывается первым, он не заканчивает вычисление того, что нужно для печати, пока внутренние (нижние) значенияprint
уже не были вызваны и полностью не оценены. И!
s просто скрыть 1, которые напечатали бы в противном случае. Отлично, @bwoebi!С
Неопределенное поведение - самый захватывающий вид поведения!
Фактический вывод может варьироваться в зависимости от вашего компилятора, компоновщика, операционной системы и процессора :)
источник
Ява
Используя отражение
Выход:
Объяснение, почему это работает, можно найти здесь .
источник
C (и вроде Python)
Новая версия, с использованием макроса, чтобы идеально соответствовать формату вопроса. После комментария Quincunx я добавил,
return
чтобы сделать его лучше.Он также работает в Python, но печатает в правильном порядке.
Оригинальная версия - после подстановки макроса они практически одинаковы:
источник
#define } 0))));
(я не знаю точно, как работают макросы в C). Таким образом, вы можете просто использовать операторы print в методе main, и ничего больше.}
, но вы можете определитьreturn
, что я сейчас и сделал. Теперь это почти полиглот -print
синтаксис работает на нескольких языках сценариев,#define
часто является комментарием, ноmain(){..}
не работает ни на одном языке, который я мог найти.print
заменить"\n",printf(
?ES6 (в обратном режиме;)
Ничего себе, похоже, что разработчики ECMAScript имели какое-то невероятное предвидение, когда они сделали режим «назад» частью спецификации:
Вывод (оценка, действительно):
Обратите внимание, что это точно запрошенная форма, с незначительной обратной оптимизацией, чтобы соответствовать синтаксису режима . Также обратите внимание, что этот режим поддерживается только в последних версиях Firefox на данный момент .
Конечное примечание: на самом деле, нет обратного режима. Но это все еще действительный скрипт, который работает в Firefox (скопируйте все это). : D
ES6 "слабый режим"
БОНУС : Вот обновленная версия, которая не использует режим «назад», но использует недавно указанный «слабый режим», где механизм JS будет просто пытаться угадать, что должен делать код, независимо от соблюдения какого-либо указанного синтаксиса JS ( в основном антитеза строгого режима)
Обратите внимание, что « слабый режим » в настоящее время доступен только в Firefox> = 34.; P
источник
С
источник
Рубин
Изменить: В качестве альтернативы
источник
ruby
хорошо с блоками кода? pastebin.com/LDWpxKx8method_missing
Хотя я думаю, что это сама по себе Ruby-ish.PHP
Я знаю, это безумие ...
источник
goto
Haskell
Это почти идиоматичный Haskell, так как теперь программа выглядит как композиция функций справа налево. Если бы функция не была напечатана, но что-то, что возвращало бы (полезное) значение, объявление оператора было бы ненужным, и код был бы тем, что вы увидите в библиотеках.
источник
(<<) = flip (>>)
<*
и*>
.<*
аппликативный оператор отличается от этого<<
:a <* b
эквивалентенdo x<-a;b;return x
, то есть он запускаетa
эффект первымPerl
источник
HTML + CSS
CSS:
Смотрите jsFiddle .
Изменить:
чтобы лучше соответствовать правилам, вот вариант в XML, который на самом деле использует
print
.где style.css должен быть
HTML без CSS
И, черт возьми, вот этот без CSS.
Скрипки .
источник
p {float:right;}
div {float:left}
.C ++
(Локальные переменные уничтожаются в обратном порядке объявления.)
C ++ 11
(Почти то же самое, но вместо этого используются лямбда-выражения и элемент данных массива.)
источник
std::function
, и я пытался избавиться от него. Теперь мне не нужно, потому что вы получили это!Haskell
источник
Javascript
источник
1,2,3,4
как тайм-ауты также работает для меня. (Однако я не знаю, стандартизировано ли это поведение в ECMAScript.)setTimeout
стандартизирован в HTML5 / таймеры, а не в ES. Также указывается минимальное время ожидания 4 мс :-)С
Попытка сделать вызов подсказкам в вопросе настолько творческим насколько возможно:
источник
BF
Предполагает обертывание клеток.
Почему это работает
Первая и последняя строки составляют цикл, который повторяется четыре раза (counter =
cell0
).Внутри цикла есть переменная counter (
cell1
), которая увеличивается при каждом запуске.Каждая строка проверяет, равно ли уменьшение на четыре, три, два или одну ноль. Поэтому при первом запуске счетчик равен единице, и выполняется последняя строка, при втором запуске выполняется третья строка и т. Д.
В
(line 1)
шоу , где вы должны сделать текст , который печатается. Стрелки в петлях выделяютcell2
для этой цели.[-]
Очищаетcell2
после использования его.источник
удар
В память о уважаемых SleepSort и SleepAdd , представляю вам ... SleepReverse :
источник
$1
и$2
:function print(){(sleep $((4-$2));echo "$1 $2";)&}; print Line 1
Ява
Это все в правильное время ... ;-)
источник
Python 3
источник
удар
А вот и двусторонний скрипт:
источник
tac
существует! Хаха спасибо.Обыкновенный Лисп № 1
Легко написать
ngorp
макрос, который выполняет свои формы в обратном порядке:Обыкновенный Лисп № 2
Вот тот, который принимает проблему буквально; код из вопроса появляется в программе без изменений:
источник
PHP
Другой
eval
вариант:источник
F #
Только что создал пользовательский оператор, который выполняет функции в обратном порядке.
источник
(?) f g x
читает примерно так(?)(f, g, x)
, как нетf(g(x))
Go (Голанг)
Попробуйте это: http://play.golang.org/p/fjsJLwOFn2
источник
python3
Может быть на 6 байтов короче, удалив все пробелы в последней строке.
источник
Javascript
C ++ 11
источник
std::reverse
иstd::for_each
, просто используйтеwhile (! functors.empty()) { functors.back()(); functors.pop_back(); }
партия
источник
C #
Вместо прямого вызова метода Run я создаю динамический метод, который содержит копию байт-кода IL в Run, за исключением того, что операнды кода операции загрузки меняются местами. Что заставляет новый метод отображать строки в обратном порядке.
источник
питон
еще одно решение с использованием
eval()
это не очень сложно, но легко понять.
источник