Соревнование
В этом задании вы указываете исходный язык S
и целевой язык T
. Ваша задача - написать следующую программу P
на языке S
. Если в качестве входных данных указана допустимая программа Q
на языке , она выведет допустимую программу на языке, которая не требует ввода и вывода , то есть программу, примененную к исходному коду . Кроме того , вы должны представить в своем ответе нетривиальный пример программы (чем интереснее, тем лучше, хотя вы не набрали ни одного балла за это), итоговую программу и результаты . Это код-гольф, поэтому самый короткий код для побед.T
P
R
T
Q(R)
Q
R
Q
R
R
P
Другими словами, это проблема написания «универсального конструктора квин», который может создавать произвольные типы обобщенных квин.
Разъяснения
- Ваш исходный и целевой языки могут быть идентичны.
- Программа
P
должна принимать одну строку в качестве входных данных (из STDIN или эквивалентных) и выводить одну строку (в STDOUT или эквивалентные), как и каждая выходная программаR
. - Программы ввода
Q
также должны преобразовывать строку в другую строку, но их форма более гибкая: они могут быть функциями строка-строка, фрагментами кода, которые изменяют переменную с определенным именем, фрагментами, которые изменяют стек данных, если ваш целевой язык есть еще, и т. д. Вы также можете дополнительно ограничить формуQ
, указав, например, что они могут не содержать никаких комментариев. Однако вы должны иметь возможность реализовать любую вычислимую функцию строка-строка в качестве входной программыQ
, и вы должны явно указать, как они функционируют и какие дополнительные ограничения вы на них накладываете. - Программа вывода
R
действительно должна быть (обобщенной) формулой, поэтому она не должна читать какие-либо входные данные (пользовательский ввод, файлы и т. Д.), ЕслиQ
это не происходит. - Стандартные лазейки запрещены.
Пример
Предположим, я выбрал Python в качестве исходного языка, а Haskell в качестве целевого языка, и я также требую, чтобы программа ввода представляла собой однострочное определение String -> String
функции с именем f
. Если я дам программу перестановки строк
f x = reverse x
в качестве входных данных для моей программы на Python P
он выведет исходный код другой программы на Haskell R
. Эта программа печатает на STDOUT исходный код R
, но в обратном порядке. Если P
задана функция тождества
f x = x
в качестве входных данных программа вывода R
представляет собой квинну.