Скрипт, который выводит скрипт, который печатает данный ввод

29

Напишите фрагмент кода, который принимает строку в качестве входных данных и выводит фрагмент кода на том же языке, который при запуске выдает исходную входную строку.

Он должен иметь возможность обрабатывать любую комбинацию символов AZ, az и 0-9.

Пример в Python:

import sys
print "print('" + sys.argv[1]  + "')"

Учитывая ввод testing123, он вернется print('testing123').

Поскольку это , победит самый короткий ответ в байтах.

Quartzic
источник
Это может быть функция?
полностью человек
@manatwork (S) он только что отредактировал.
NoOneIsHere
Должен ли ввод быть строкой? Или это может быть целое число?
Лохматый
Должен быть в состоянии обрабатывать как целочисленные, так и строковые входы.
Кварц
2
Можем ли мы вывести функцию в соответствии с метафайлами по умолчанию?
JAD

Ответы:

28

pl , 0 байт

Код:

Попробуйте онлайн!

Объяснение:

Пустая программа в pl - это просто программа cat, которая выводит точно так же, как и ввод.

В pl все символы ASCII по существу являются переменными, но когда переменная не существует (пока), pl предполагает, что они являются частью строки.

Аднан
источник
3
Я знал, что есть такой язык, но не мог его найти :(
Стивен
2
В том же духе, см. Cat, который является интерпретируемым языком, подобным Python. Большинство современных дистрибутивов Linux поставляются с catпереводчиком. ;)
Quuxplusone
1
Это решение также работает для ///, если вы считаете, что ввод должен быть добавлен к исходному коду программы (поскольку /// не имеет механизма ввода). /// это один из многих языков (я думаю), где буквенно-цифровые символы в начале программы просто выводятся.
Таннер Светт
6
Можете ли вы опубликовать ungolfed версию? ;)
макс. Тысяча
17

бред , 56 55 33 байта

1 байт сохранен благодаря Gravitron, и 22 байта сохранены благодаря Jo King!

--[>+<++++++],[[->.<]>+++.--.-<,]

Попробуйте онлайн!

Вывод требует интерпретатора, который оборачивается при переполнении памяти и имеет EOI = 0. У TIO есть такой переводчик.

объяснение

--[>+<++++++]инициализирует ленту с одного +.

Цикл ввода:

,[[->.<]>+++.--.-<,]
,                     take input
 [                ,]  while input is nonzero:
  [->.<]                  output `+` input times
        >+++.             output `.` (`+` + 3)
             --.          output `,` (`.` - 2)
                -<        restore `+` and move back to input

Другие решения

Каждая линия - это свое решение.

+++[>+++++<-]>[>++++>+++<<-]>>-->,[[-<.>]<+++.---<.>>,]
--[>+<++++++],[[->.<]>+++.++++++++++++++++.-------------------<,]
++++++++++[>++++++>++++>++++<<<-]>>+++>++++++>,[[-<<.>>]<.<<.>>>,]
++++++++++[>++++++>++++>++++<<<-]>++>+++>++++++>,[[-<<.>>]<.<<.>>>,]
Конор О'Брайен
источник
1
+1. Я не знаю Brainfuck, но я не могу представить, как можно решить проблему с этим.
Якоб
Вы можете сохранить 1 байт, заменяя +++++++++++++++с +++[>+++++<-]>(от Brainfuck констант )
Гравитон
@Graviton О, круто, спасибо
Конор О'Брайен
Вы не заменили это в объяснении
Разрушаемый Лимон
4
Вы не знаете Brainfuck? Я научу вас в одном комментарии! Мы начинаем на ленте 0с, с указателем на значение. +увеличивает значение, -уменьшает значение, >перемещает указатель вправо, <перемещает указатель влево, ,считывает ввод с указателя как символ ASCII, .выводит значение указателя как символ ASCII, [запускает цикл и ]переходит к соответствующему, [если значение указателя не является 0. Я плохо объясняю, но это так просто, Брейнфак. И хороший гольф Конор!
Захари
13

Морнингтон Полумесяц , 27640 байт

Take Northern Line to Moorgate
Take Circle Line to Moorgate
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Barbican
Take Circle Line to Victoria
Take Circle Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Bayswater
Take District Line to Barons Court
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Cannon Street
Take Circle Line to Moorgate
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Mile End
Take District Line to Barking
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Bakerloo Line to Paddington
Take Circle Line to Royal Oak
Take Circle Line to Tower Hill
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Bank
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Liverpool Street
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take District Line to Gunnersbury
Take District Line to Upminster
Take District Line to East Ham
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Sloane Square
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take Circle Line to Cannon Street
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to East Ham
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Plaistow
Take District Line to Mile End
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Barking
Take District Line to Bank
Take District Line to Barking
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Liverpool Street
Take Circle Line to Bank
Take Circle Line to Liverpool Street
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take District Line to Barking
Take District Line to Bank
Take District Line to Barking
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Dagenham East
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Victoria
Take Circle Line to Bank
Take Circle Line to Victoria
Take Circle Line to Hammersmith
Take District Line to Mile End
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Upminster
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take District Line to Elm Park
Take District Line to Bank
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Bank
Take Central Line to Northolt
Take Central Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Barons Court
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Wimbledon
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Mile End
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Bakerloo Line to Waterloo
Take Northern Line to Bank
Take Circle Line to Bank
Take Central Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Paddington
Take Circle Line to Bank
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Victoria
Take Circle Line to Wood Lane
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take Circle Line to Paddington
Take Circle Line to Victoria
Take Circle Line to Victoria
Take Victoria Line to Euston
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Paddington
Take Circle Line to Bank
Take Central Line to Northolt
Take Central Line to Bank
Take District Line to Southfields
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Ravenscourt Park
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Upminster
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Bank
Take Northern Line to Old Street
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Mile End
Take Central Line to Theydon Bois
Take Central Line to Mile End
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Old Street
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Acton Town
Take Piccadilly Line to Cockfosters
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Bank
Take District Line to Elm Park
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to East Ham
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take District Line to Elm Park
Take District Line to Bank
Take Central Line to Chancery Lane
Take Central Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Bank
Take District Line to Plaistow
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Bank
Take Circle Line to Farringdon
Take Circle Line to Bank
Take Circle Line to Bank
Take Central Line to Mile End
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Brent Cross
Take Northern Line to Bank
Take Circle Line to Bank
Take Central Line to Mile End
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Bank
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Farringdon
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Farringdon
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Southfields
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take District Line to Elm Park
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to Elm Park
Take District Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Royal Oak
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to Barons Court
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Royal Oak
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take District Line to Southfields
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to East Ham
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take District Line to East Ham
Take District Line to Bank
Take District Line to Barking
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to West Ham
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take District Line to Barons Court
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Victoria
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take District Line to Barking
Take District Line to Paddington
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to Barking
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Central Line to Chancery Lane
Take Central Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take District Line to Barking
Take District Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take District Line to Plaistow
Take District Line to Bank
Take Circle Line to Moorgate
Take Circle Line to Hammersmith
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Bank
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Aldgate
Take Circle Line to Temple
Take Circle Line to Hammersmith
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Bank
Take Circle Line to Westminster
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Tower Hill
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Temple
Take Circle Line to Bank
Take Circle Line to Bayswater
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bayswater
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Embankment
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Angel
Take Northern Line to Bank
Take Central Line to Marble Arch
Take Central Line to Bank
Take Circle Line to Bank
Take Circle Line to Westminster
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Mile End
Take Central Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Tower Hill
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Embankment
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Piccadilly Line to Bounds Green
Take Piccadilly Line to Hammersmith
Take Circle Line to Embankment
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take District Line to Acton Town
Take District Line to Acton Town
Take Piccadilly Line to Bounds Green
Take Piccadilly Line to Holborn
Take Central Line to Holborn
Take Central Line to Bank
Take Circle Line to Hammersmith
Take District Line to West Ham
Take District Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Aldgate
Take Metropolitan Line to Chalfont & Latimer
Take Metropolitan Line to King's Cross St. Pancras
Take Victoria Line to Seven Sisters
Take Victoria Line to Euston
Take Victoria Line to Euston
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Stepney Green
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Stepney Green
Take Hammersmith & City Line to Moorgate
Take Circle Line to Moorgate
Take Metropolitan Line to Chalfont & Latimer
Take Metropolitan Line to Moorgate
Take Circle Line to Moorgate
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Piccadilly Line to Russell Square
Take Piccadilly Line to Russell Square
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Bank
Take District Line to East Ham
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take District Line to East Ham
Take District Line to Tower Hill
Take Circle Line to Bank
Take District Line to West Ham
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Angel
Take Northern Line to Bank
Take Circle Line to Moorgate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Bank
Take Northern Line to Morden
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Embankment
Take Northern Line to Kennington
Take Northern Line to Bank
Take Circle Line to Bank
Take Central Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Liverpool Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Metropolitan Line to Croxley
Take Metropolitan Line to Aldgate
Take Circle Line to Aldgate
Take Circle Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to West Brompton
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Acton Town
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Acton Town
Take District Line to Acton Town
Take Piccadilly Line to Hounslow Central
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Mile End
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

Попробуйте онлайн!

объяснение

Во-первых, быстрое освежение в Морнингтон Кресент:

  • каждая станция может содержать строку произвольной длины или bigint
  • есть также аккумулятор, который также содержит строку или bigint
  • все станции начинаются с собственного имени в качестве значения
  • в начале, аккумулятор содержит вход вашей программы
  • каждый раз, когда вы идете на станцию, значение станции и аккумулятор меняются местами
  • некоторые станции особенные и отменяют это поведение
  • линия, которую вы используете, чтобы добраться до станции, не имеет значения
  • Вы начинаете в Морнингтон Кресент
  • чтобы закончить программу, вы тоже едете в Морнингтон Кресент
  • в конце значение аккумулятора печатается

Поскольку печатать строки сложно (см. Программу Мартина Эндера «Привет, мир!» ), Нам понадобится простой шаблон, который можно использовать для вывода общих строк. Поскольку длина сгенерированных программ не имеет значения, я остановился на этом:

Take Northern Line to Bank
Take Northern Line to Bank
Take District Line to Paddington

Нам нужно будет сгенерировать каждый символ отдельно и объединить их, поскольку подход подстроки, используемый Мартином, намного сложнее реализовать в общем случае. Паддингтон - это станция, которая выполняет конкатенацию строк. Когда вы прибываете в Паддингтон, происходит следующее:

accumulator, paddington = paddington + accumulator, accumulator

Это поведение используется для инициализации Паддингтона пустой строкой, которая считается входной.

Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Euston
Take Victoria Line to Euston
Take Northern Line to Bank

Перейдите к Seven Sisters, которая устанавливает аккумулятор на 7, и сохраните его в банке. Банк - единственный способ копировать ценности - Хаммерсмит является единственной копией стоимости Банка.

Take District Line to Hammersmith
Take District Line to Cannon Street
Take District Line to Hammersmith
Take District Line to Cannon Street
Take District Line to Bank

Разделите 7 на 7, чтобы получить 1, делитель всех значений ASCII, которые мы должны поддерживать.

Take District Line to Hammersmith
Take District Line to Upminster

Для каждого персонажа начните с копирования 1 в Upminster.

Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Upminster

Добавьте больше по мере необходимости.

Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Bank
Take District Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Bakerloo Line to Paddington
Take Bakerloo Line to Paddington
Take Bakerloo Line to Charing Cross
Take Northern Line to Embankment

Завершите, перейдя в Upminster только один раз, чтобы сохранить новое значение в аккумуляторе, а не сохранять его снова. Отнесите его в Charing Cross, чтобы превратить значение ASCII в символ и добавить его к строке. Последние две строки здесь, потому что я неправильно прочитал спецификацию, поэтому я остановлюсь здесь и сначала проиграю в программе.

NieDzejkob
источник
(отказ от ответственности: я только что выучил этот язык) О том же подходе, о котором я могу думать (7/7 = 1). Но почему бы вам не установить Upminister только один раз в начале программы?
user202729
@ user202729 Как это будет работать? / Забавный факт: повторяющиеся Take District Line to Upminsterлинии вычисляют последовательность
Фибоначчи
Похоже, я неправильно понял спецификацию . Но это именно то, что там написано ... кто-то должен отредактировать вики.
user202729
7

Древесный уголь, 1 байт

θ

По умолчанию строка символов ASCII .. ~просто печатает сама, так что остается только напечатать ввод.

Нил
источник
Я собирался добавить этот же ответ. :-)
Чарли
@CarlosAlejo Ну, это не так, как если бы был другой ответ ...
Нил
2
Ну, есть : P
ASCII-только
@ ASCII-только Touché!
Нил
6

C (gcc) , 89 87 58 56 байт

Сохранено два байта благодаря Якобу!

main(a,c)char**c;{printf("main(){puts(\"%s\");}",c[1]);}

Попробуйте онлайн!

Конор О'Брайен
источник
«Он должен быть в состоянии обрабатывать любую комбинацию символов AZ, az и 0-9». Вы могли бы хотеть пойти со стратегией побега в конце концов.
Якоб
@Jakob да, я только что прочитал это: /, спасибо
Конор О'Брайен
Я также только что закончил писать регулярное выражение escaper для решения Java, когда прочитал это. Облом.
Якоб
@ Jakob Да, то же самое для меня, но с eacal. RIP
Конор О'Брайен
Вы можете использовать putsв печатной программе, чтобы сохранить 2 байта, верно? Или проблема в том, что он добавляет новую строку?
Якоб
5

Japt , 2 байта

iQ

Попробуйте онлайн!

iявляется функцией, которая вставляет указанную строку с указанным индексом во входные данные. Qпеременная, которая по умолчанию заключена в кавычку ", и, поскольку индекс не указан, по умолчанию используется значение 0. Конечным результатом является кавычка, вставленная в начало строки, которую Japt автоматически завершает при запуске.

Это работает со строками, содержащими все, кроме ", {или \, хотя, конечно, строка гарантированно состоит из буквенно-цифровых символов, так что это не имеет значения.

ETHproductions
источник
4

Python 2 , 22 байта

print'print%r'%input()

Попробуйте онлайн!

totallyhuman
источник
2
Альтернативное 22-байтовое решение есть print'print'+`input()`.
notjagan
Это не сработает. inputв Python 2 эквивалентно eval(raw_input()). Так что это должно быть питоническое выражение, чтобы оно работало.
Zizouz212
Да, это разрешено. --- Позвольте мне найти подходящую мету ... - Ага, нашел ее.
полностью человек
4
21 байт
LyricLy
4

MATLAB / Octave , 15 байт

@(t)['disp ',t]

Попробуйте онлайн!

Я полностью упустил из виду тот факт, что программе нужно обрабатывать только буквенно-цифровые символы или, что важно, не нужно обрабатывать символы пробела. Это означает, что мы можем использовать синтаксис «команда», который использует значительно меньше байтов.

MATLAB, 27 байт

Для полноты, вот версия, которая может обрабатывать произвольный ввод:

@(t)['disp(',mat2str(t),41]

Определяет анонимную функцию, принимающую строку t, и преобразует ее в программу. Любопытно, что это не работает в Октаве, которая, кажется, имеет разные представления о том, что mat2strследует делать.

Sanchises
источник
Я не могу проверить это, но я думаю: @(t)['disp ',mat2str(t)]должно работать ...?
Стьюи Гриффин
@StewieGriffin Это не работает, потому что mat2strдобавляет кавычки, которые не нужны в командном синтаксисе. У меня был объединенный синтаксис функции mat2strдля обработки пробелов во входных данных, но при перечитывании задачи это на самом деле не нужно, сокращая количество пользователей почти вдвое. Благодарность!
Sanchises
Я думал, что кавычки необходимы, если на входе были пробелы, но я могу ошибаться. Я не заметил, что ввод был только буквенно-цифровой ...
Stewie Griffin
Как это (ungolfed).
Стьюи Гриффин
@ StewieGriffin Вы правы, я неправильно оценил, как работает синтаксис команды. Тем не менее, командный синтаксис полон сюрпризов: попробуйте онлайн!
Санчиз
3

Befunge-98 (FBBI) , 21 16 12 байт

-5 байт благодаря NieDzejkob
-4 байт благодаря Джо Кинг

#,~'',,',,'@

Попробуйте онлайн!

Выходы 't,'e,'s,'t,@для входаtest

Как?

Первоначально указатель перемещается на восток:

#,           # skips the next instruction
  ~          push a byte of input
   '',       push ' and print it
      ,      print the byte of input
       ',,   push , and print it 
          '@ push @ to the stack

Если больше нет ввода, ~изменяет направление указателя:

 ,           print @
#            skip nothing
           @ terminate
овс
источник
2

QBIC , 7 байтов

?@?@`+;

объяснение

?           PRINT on the screen
 @  `       a literal
  ?@         question mark and at
     +;     and append the input

Пробный прогон

Command line: lala
?@lala

Выходными данными является строковый литерал, содержащий входные данные, которым предшествует PRINTкоманда.

steenbergh
источник
2

Пакет 11 байтов

Я уверен, что есть, чтобы получить его меньше, но это довольно мало.

set/p=echo 

Разбивка:

set             ::Define new variable
   /p           ::Create prompt
     =          ::Define a variable in prompt
      echo      ::Prompt begins with 'echo '

По-английски:

У пользователя запрашивается ввод с ведущей фразой echo. Затем пользователь может ввести что угодно, и программа завершается (например,; echo hello world!). Это оставляет нас с программой, которая при запуске будет выводить hello world!.

Да, пробел должен быть там

Гравитон
источник
Я не знаю партии (а это давным-давно), но это выглядит неправильно. Не будет ли echoчасть текста выводиться на консоль, а не на вывод программы?
Якоб
@Jakob, конечно же, нет, по сути, это функционально эквивалентно примеру с Python, приведенному в исходном тесте.
Гравитон
К сожалению, я имел в виду, что я сомневаюсь, что программа выводит текст, который вводит пользователь. Это, вероятно, просто отражается на консоли, верно?
Якоб
@Jakob Right, что эквивалентно печати. В примере печатается функция печати, в то время как мой выводит функцию эха.
Гравитон
Хорошо, но пример печатает всю программу в стандартном формате. Ваша программа печатает только echo в стандартном формате. На самом деле, (я предполагаю), если ввод поступает из файла или канала, все, что вы увидите, это приглашение. Разрешен ли такой вывод?
Якоб
2

V, 2 байта

ii

В Vim iпереключается в режим вставки и позволяет вставлять текст. В этом случае он просто вставляет iперед входной текст (чтобы создать вторую программу). V совместим с Vim, но добавляет неявный <esc>конец программы, поэтому мне не нужно беспокоиться об этом здесь.

nmjcman101
источник
2

PowerShell, 9 байт

"'$args'"

одиночные или двойные кавычки в powershell могут использоваться для хранения строк, но только двойные кавычки допускают расширение переменных.

с вводом fooэтого будет выводить, 'foo'которая является действительной программой PowerShell, которая выводитfoo

colsw
источник
2

Кубически 87 байтов

U3D1R3L1F3B1U1D3~:7+1(-1@3(-1%1)6:1+3111@6%1-31111+004@6:1+11111%6:1+45@6:1-1%6~:7+1)6 

Попробуйте онлайн!

Порт моего ответа здесь . Уже существовала проблема с вводом и выводом кубического кода, который произвел этот ввод, и у меня был ответ на Кубически, так что ... прибыль?

Камил Дракари
источник
Сохранить несколько байтов - убрать аргументы из %6s и @6s; теперь они могут быть вызваны неявно. (Вы также можете сделать это в своем ответе на ветке кубификатора.)
MD XF
2

Python 2 , 17 байт

'print%r'.__mod__

Попробуйте онлайн!

овс
источник
Это терпит неудачу для1
NoOneIsHere
2
@NoOneIsЗдесь, задача требует принять строку в качестве ввода. Если вы переходите '1'к функции, она правильно выводитprint'1'
ovs
Ой, простите. Я этого не заметил.
NoOneIsHere
1

SOGL V0.12 , 2 байта

$+

Попробуй здесь! (ожидает ввода в стеке, поэтому ,добавлено для простоты использования)

$толкает , +присоединяет это после ввода в стек.

dzaima
источник
Вы можете использовать `" для ".
NoOneIsHere
@ NoOneIsHere, да, это имеет смысл .. Использовал его везде, кроме тех случаев, где это наиболее полезно .-.
Дзайма
1

Perl 6 , 19 байт

say "say "~get.perl

Попытайся

Это должно работать для любого ввода Unicode в NFC

Брэд Гилберт b2gills
источник
Вы можете удалить пространство?
NoOneIsHere
@NoOneIsHere Удаление любого пробела приведет к ошибке двух членов в строке. Perl 6 имеет значительные пробелы, но он важен только в том смысле, что он либо должен быть там, либо не должен быть там. (есть способы отказаться от обоих, хотя)
Брэд Гилберт b2gills
1

8 , 34 37 байт

Код

: f >s "\"" tuck s:+ s:+ " ." s:+ . ;

пример

ok> "Print 42" f
"Print 42" .
ok> "Print 42" .
Print 42
Chaos Manor
источник
1

PHP , 12 байт

<?=$argv[1];

Попробуйте онлайн!

Это должно быть запущено из командной строки с вводом в качестве аргумента параметра. И да, он просто выводит входную строку - но это действительно PHP: все, что находится вне <?php ?>разделителей, выводится без обработки.

Вот сценарий, созданный вводом «testing123» в действии в качестве демонстрации: попробуйте онлайн!

WebSmithery
источник
1
<?phpзаметьте, это не будет работать правильно, если входная строка содержит ;)
Andrea
@ Андреа Прочтите вопрос: «Он должен быть в состоянии обрабатывать любую комбинацию символов AZ, az и 0-9». То есть <<php '- неверный ввод ...
WebSmithery
1
Оу, это слишком просто :(
Андреа
1

MATL , 2 байта

&D

Попробуйте онлайн!

Просто оберните строку в кавычки, используя &D, что является MATL-эквивалентом MATLAB mat2str, функцию, специально созданную для создания чего-то, что, когда evald, даст исходную матрицу (или, в данном случае, строку).

Результирующая «программа» - это просто входная строка, заключенная в кавычки, которая таким образом помещается в стек и отображается неявно.

Sanchises
источник
1

eacal , 38 байт

strap string put string 
put strap arg

Попробуйте онлайн!

Просто добавляет строку в строку put stringпамяти, затем добавляет аргумент, который выводится на печать.

Конор О'Брайен
источник
1

Пакетный, 14 байтов

@echo @echo(%*

Работает и для специальных символов, если они заключены в кавычки, используя "вместо s ^.

Нил
источник
Возможно, @echo.@echo.%*будет правильнее? Ввод может быть потенциально пустым.
Конор О'Брайен
@ ConorO'Brien Ну, мне не нужно первое, .потому что оно никогда не пустое, и я использовал (для второго случая, потому что это надежнее, чем ., но все равно спасибо за предложения!
Нил
нп! Мне просто нравится симметрия между @echo.S LOL
Конор О'Брайен
1

Ly , 14 байтов

"\""&i"\"&o"&o

Попробуйте онлайн!

объяснение

"\""&i"\"&o"&o

"\""           # push `"`
    &i         # take input
      "\"&o"   # push `"&o`
            &o # output stack
               # test -> "test"&o
               # "test"&o = push "test" and output stack
LyricLy
источник
1

Brain-Flak , 92 68 байтов

-22 байта благодаря Wheat Wizard

Включает +2 для -cr

{<>(((((()()()()()){}){}){})())<>{({}[()])<>((({}[()])()))<>}{}}<>

Попробуйте онлайн!

# For every character
{

   # Put ")(" on the off stack
   <>(((((()()()()()){}){}){})())<>

   # for 0 to the ASCII value of this character
   {({}[()])

      # Replace the ")" with "(" and add "))"
      <>((({}[()])()))<>

   # End for
   }{}

# end for and switch to the off stack for printing (in reverse order because of -r)
}<>
Райли
источник
1

Pyth , 2 1 байт

z

Попробуйте онлайн!

Просто выводит вход. Требуются строки в кавычках.

-1 байт благодаря KarlKastor

NoOneIsHere
источник
Вы можете просто сделать +\"? ( \xсимвол буквальный + неявный Q)
ETHproductions
@ETHproductions Еще лучше,+N
NoOneIsHere
Хорошо, я не очень хорошо
знаю Pyth
1

Морковь , 1 байт

#

Как это работает

# //Takes the input and places it onto the string stack
  //This is then output implicitly

{input} //The next program then consists of the input string
        //This is then placed directly onto the string stack
        //Then output implicitly

Альтернатива, также в 1 байт:

$

Это работает так же, как и выше, но занимает только первую строку ввода. Видя, что вход будет только когда-либо, [A-Za-z0-9]это нормально.

TheLethalCoder
источник
Учитывая, что в спецификации только утверждается, что вам нужно обрабатывать AZ, az и 0-9, разве это не конкурирует?
Jkelm
@jkelm Должно быть, я пропустил эту часть, тогда да, это конкурирует.
TheLethalCoder
Будет ли это работать для ввода 01?
спагетто
@ quartata Я верю в это, прошло уже много времени с тех пор, как я использовал морковь.
TheLethalCoder