Соревнование
В этом задании вы указываете исходный язык S и целевой язык T . Ваша задача - написать следующую программу Pна языке S. Если в качестве входных данных указана допустимая программа Qна языке , она выведет допустимую программу на языке, которая не требует ввода и вывода , то есть программу, примененную к исходному коду . Кроме того , вы должны представить в своем ответе нетривиальный пример программы (чем интереснее, тем лучше, хотя вы не набрали ни одного балла за это), итоговую программу и результаты . Это код-гольф, поэтому самый короткий код для побед.TPRTQ(R)QRQRRP
Другими словами, это проблема написания «универсального конструктора квин», который может создавать произвольные типы обобщенных квин.
Разъяснения
- Ваш исходный и целевой языки могут быть идентичны.
- Программа
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представляет собой квинну.