Напишите фрагмент кода, который принимает строку в качестве входных данных и выводит фрагмент кода на том же языке, который при запуске выдает исходную входную строку.
Он должен иметь возможность обрабатывать любую комбинацию символов AZ, az и 0-9.
Пример в Python:
import sys
print "print('" + sys.argv[1] + "')"
Учитывая ввод testing123
, он вернется print('testing123')
.
Поскольку это код-гольф , победит самый короткий ответ в байтах.
code-golf
code-generation
Quartzic
источник
источник
Ответы:
pl , 0 байт
Код:
Попробуйте онлайн!
Объяснение:
Пустая программа в pl - это просто программа cat, которая выводит точно так же, как и ввод.
В pl все символы ASCII по существу являются переменными, но когда переменная не существует (пока), pl предполагает, что они являются частью строки.
источник
cat
переводчиком. ;)бред ,
565533 байта1 байт сохранен благодаря Gravitron, и 22 байта сохранены благодаря Jo King!
Попробуйте онлайн!
Вывод требует интерпретатора, который оборачивается при переполнении памяти и имеет EOI = 0. У TIO есть такой переводчик.
объяснение
--[>+<++++++]
инициализирует ленту с одного+
.Цикл ввода:
Другие решения
Каждая линия - это свое решение.
источник
+++++++++++++++
с+++[>+++++<-]>
(от Brainfuck констант )0
с, с указателем на значение.+
увеличивает значение,-
уменьшает значение,>
перемещает указатель вправо,<
перемещает указатель влево,,
считывает ввод с указателя как символ ASCII,.
выводит значение указателя как символ ASCII,[
запускает цикл и]
переходит к соответствующему,[
если значение указателя не является0
. Я плохо объясняю, но это так просто, Брейнфак. И хороший гольф Конор!Морнингтон Полумесяц , 27640 байт
Попробуйте онлайн!
объяснение
Во-первых, быстрое освежение в Морнингтон Кресент:
Поскольку печатать строки сложно (см. Программу Мартина Эндера «Привет, мир!» ), Нам понадобится простой шаблон, который можно использовать для вывода общих строк. Поскольку длина сгенерированных программ не имеет значения, я остановился на этом:
Нам нужно будет сгенерировать каждый символ отдельно и объединить их, поскольку подход подстроки, используемый Мартином, намного сложнее реализовать в общем случае. Паддингтон - это станция, которая выполняет конкатенацию строк. Когда вы прибываете в Паддингтон, происходит следующее:
Это поведение используется для инициализации Паддингтона пустой строкой, которая считается входной.
Перейдите к Seven Sisters, которая устанавливает аккумулятор на 7, и сохраните его в банке. Банк - единственный способ копировать ценности - Хаммерсмит является единственной копией стоимости Банка.
Разделите 7 на 7, чтобы получить 1, делитель всех значений ASCII, которые мы должны поддерживать.
Для каждого персонажа начните с копирования 1 в Upminster.
Добавьте больше по мере необходимости.
Завершите, перейдя в Upminster только один раз, чтобы сохранить новое значение в аккумуляторе, а не сохранять его снова. Отнесите его в Charing Cross, чтобы превратить значение ASCII в символ и добавить его к строке. Последние две строки здесь, потому что я неправильно прочитал спецификацию, поэтому я остановлюсь здесь и сначала проиграю в программе.
источник
Take District Line to Upminster
линии вычисляют последовательностьЖеле , 1 байт
Ву встроенные!
Встроенный
Ṿ
unevals вход.Попробуйте онлайн!
Более интересный:
Присоединяет строку «» к входу.
Попробуйте онлайн!
источник
”“;
за -1.Древесный уголь, 1 байт
По умолчанию строка символов ASCII
..
~
просто печатает сама, так что остается только напечатать ввод.источник
C (gcc) ,
89875856 байтСохранено два байта благодаря Якобу!
Попробуйте онлайн!
источник
puts
в печатной программе, чтобы сохранить 2 байта, верно? Или проблема в том, что он добавляет новую строку?Japt , 2 байта
Попробуйте онлайн!
i
является функцией, которая вставляет указанную строку с указанным индексом во входные данные.Q
переменная, которая по умолчанию заключена в кавычку"
, и, поскольку индекс не указан, по умолчанию используется значение0
. Конечным результатом является кавычка, вставленная в начало строки, которую Japt автоматически завершает при запуске.Это работает со строками, содержащими все, кроме
"
,{
или\
, хотя, конечно, строка гарантированно состоит из буквенно-цифровых символов, так что это не имеет значения.источник
Python 2 , 22 байта
Попробуйте онлайн!
источник
print'print'+`input()`
.input
в Python 2 эквивалентноeval(raw_input())
. Так что это должно быть питоническое выражение, чтобы оно работало.MATLAB / Octave , 15 байт
Попробуйте онлайн!
Я полностью упустил из виду тот факт, что программе нужно обрабатывать только буквенно-цифровые символы или, что важно, не нужно обрабатывать символы пробела. Это означает, что мы можем использовать синтаксис «команда», который использует значительно меньше байтов.
MATLAB, 27 байт
Для полноты, вот версия, которая может обрабатывать произвольный ввод:
Определяет анонимную функцию, принимающую строку
t
, и преобразует ее в программу. Любопытно, что это не работает в Октаве, которая, кажется, имеет разные представления о том, чтоmat2str
следует делать.источник
@(t)['disp ',mat2str(t)]
должно работать ...?mat2str
добавляет кавычки, которые не нужны в командном синтаксисе. У меня был объединенный синтаксис функцииmat2str
для обработки пробелов во входных данных, но при перечитывании задачи это на самом деле не нужно, сокращая количество пользователей почти вдвое. Благодарность!Befunge-98 (FBBI) ,
211612 байт-5 байт благодаря NieDzejkob
-4 байт благодаря Джо Кинг
Попробуйте онлайн!
Выходы
't,'e,'s,'t,@
для входаtest
Как?
Первоначально указатель перемещается на восток:
Если больше нет ввода,
~
изменяет направление указателя:источник
Эмоджикод , 88 байт
Попробуйте онлайн!
Входные данные:
Выход:
Выход скрипта:
источник
QBIC , 7 байтов
объяснение
Пробный прогон
Выходными данными является строковый литерал, содержащий входные данные, которым предшествует
PRINT
команда.источник
Пакет 11 байтов
Я уверен, что есть, чтобы получить его меньше, но это довольно мало.
Разбивка:
По-английски:
У пользователя запрашивается ввод с ведущей фразой
echo
. Затем пользователь может ввести что угодно, и программа завершается (например,;echo hello world!
). Это оставляет нас с программой, которая при запуске будет выводитьhello world!
.Да, пробел должен быть там
источник
echo
часть текста выводиться на консоль, а не на вывод программы?echo
в стандартном формате. На самом деле, (я предполагаю), если ввод поступает из файла или канала, все, что вы увидите, это приглашение. Разрешен ли такой вывод?V, 2 байта
В Vim
i
переключается в режим вставки и позволяет вставлять текст. В этом случае он просто вставляетi
перед входной текст (чтобы создать вторую программу). V совместим с Vim, но добавляет неявный<esc>
конец программы, поэтому мне не нужно беспокоиться об этом здесь.источник
PowerShell, 9 байт
одиночные или двойные кавычки в powershell могут использоваться для хранения строк, но только двойные кавычки допускают расширение переменных.
с вводом
foo
этого будет выводить,'foo'
которая является действительной программой PowerShell, которая выводитfoo
источник
Кубически 87 байтов
Попробуйте онлайн!
Порт моего ответа здесь . Уже существовала проблема с вводом и выводом кубического кода, который произвел этот ввод, и у меня был ответ на Кубически, так что ... прибыль?
источник
%6
s и@6
s; теперь они могут быть вызваны неявно. (Вы также можете сделать это в своем ответе на ветке кубификатора.)D
9289 байтПопробуйте онлайн!
источник
Python 2 , 17 байт
Попробуйте онлайн!
источник
1
'1'
к функции, она правильно выводитprint'1'
SOGL V0.12 , 2 байта
Попробуй здесь! (ожидает ввода в стеке, поэтому
,
добавлено для простоты использования)$
толкает”
,+
присоединяет это после ввода в стек.источник
"
.Perl 6 , 19 байт
Попытайся
Это должно работать для любого ввода Unicode в NFC
источник
8 ,
3437 байтКод
пример
источник
PHP , 12 байт
Попробуйте онлайн!
Это должно быть запущено из командной строки с вводом в качестве аргумента параметра. И да, он просто выводит входную строку - но это действительно PHP: все, что находится вне
<?php
?>
разделителей, выводится без обработки.Вот сценарий, созданный вводом «testing123» в действии в качестве демонстрации: попробуйте онлайн!
источник
<?php
заметьте, это не будет работать правильно, если входная строка содержит ;)MATL , 2 байта
Попробуйте онлайн!
Просто оберните строку в кавычки, используя
&D
, что является MATL-эквивалентом MATLABmat2str
, функцию, специально созданную для создания чего-то, что, когдаeval
d, даст исходную матрицу (или, в данном случае, строку).Результирующая «программа» - это просто входная строка, заключенная в кавычки, которая таким образом помещается в стек и отображается неявно.
источник
eacal , 38 байт
Попробуйте онлайн!
Просто добавляет строку в строку
put string
памяти, затем добавляет аргумент, который выводится на печать.источник
Пакетный, 14 байтов
Работает и для специальных символов, если они заключены в кавычки, используя
"
вместо s^
.источник
@echo.@echo.%*
будет правильнее? Ввод может быть потенциально пустым..
потому что оно никогда не пустое, и я использовал(
для второго случая, потому что это надежнее, чем.
, но все равно спасибо за предложения!@echo.
S LOLLy , 14 байтов
Попробуйте онлайн!
объяснение
источник
05AB1E , 3 байта
Попробуйте онлайн!
Объемный ввод с кавычками.
-1 @ Аднан.
источник
Brain-Flak ,
9268 байтов-22 байта благодаря Wheat Wizard
Включает +2 для
-cr
Попробуйте онлайн!
источник
Pyth ,
21 байтПопробуйте онлайн!
Просто выводит вход. Требуются строки в кавычках.
-1 байт благодаря KarlKastor
источник
+\"
? (\x
символ буквальный + неявныйQ
)+N
Морковь , 1 байт
Как это работает
Альтернатива, также в 1 байт:
Это работает так же, как и выше, но занимает только первую строку ввода. Видя, что вход будет только когда-либо,
[A-Za-z0-9]
это нормально.источник
01
?