Napisz fragment kodu, który pobiera ciąg wejściowy i wysyła fragment kodu w tym samym języku, który po uruchomieniu wyświetli początkowy ciąg wejściowy.
Musi być w stanie obsłużyć dowolną kombinację znaków AZ, az i 0-9.
Przykład w Pythonie:
import sys
print "print('" + sys.argv[1] + "')"
Biorąc pod uwagę wejście testing123
, wróci print('testing123')
.
Ponieważ jest to gra w golfa , wygra najkrótsza odpowiedź w bajtach.
code-golf
code-generation
Kwarcowy
źródło
źródło
Odpowiedzi:
pl , 0 bajtów
Kod:
Wypróbuj online!
Wyjaśnienie:
Pusty program w pl jest po prostu programem cat, wyświetlającym dokładnie to samo co wejście.
W pl wszystkie znaki ASCII są zasadniczo zmienne, ale gdy zmienna jeszcze nie istnieje (jeszcze), pl zakłada, że są one częścią ciągu.
źródło
cat
tłumaczem. ;)pieprzenie mózgu ,
565533 bajtów1 bajt zapisany dzięki Gravitron, a 22 bajty zapisane dzięki Jo King!
Wypróbuj online!
Wyjście wymaga interpretera, który otacza niedomiar pamięci i ma EOI = 0. TIO ma takiego tłumacza.
Wyjaśnienie
--[>+<++++++]
inicjuje taśmę pojedynczym+
.Pętla wejściowa:
Inne rozwiązania
Każda linia jest własnym rozwiązaniem.
źródło
+++++++++++++++
z+++[>+++++<-]>
(Z stałych brainfuck )0
, ze wskaźnikiem do wartości.+
zwiększa wartość,-
zmniejsza wartość,>
przesuwa wskaźnik w prawo,<
przesuwa wskaźnik w lewo,,
odczytuje dane wejściowe wskaźnika jako znak ASCII,.
wysyła wartość wskaźnika jako znak ASCII,[
uruchamia pętlę i]
przeskakuje do odpowiedniego,[
jeśli wartość wskaźnika nie jest0
. Nie potrafię tego wytłumaczyć, ale tak łatwo jest Brainfuck. I ładny golf Conor!Mornington Crescent , 27640 bajtów
Wypróbuj online!
Wyjaśnienie
Po pierwsze, szybkie odświeżenie w Mornington Crescent:
Ponieważ drukowanie ciągów jest trudne (patrz program „Hello, World!” Martina Endera Mornington Crescent ), potrzebujemy prostego szablonu, którego można użyć do generowania ciągów ogólnych. Ponieważ długość generowanych programów nie ma znaczenia, zdecydowałem się na to:
Będziemy musieli wygenerować każdą postać osobno i połączyć je, ponieważ podejście substringowe stosowane przez Martina jest znacznie trudniejsze do wdrożenia w ogólnym przypadku. Paddington to stacja, która wykonuje konkatenację łańcuchów. Po przybyciu do Paddington dzieje się, co następuje:
To zachowanie służy do inicjalizacji Paddington do pustego łańcucha, który przyjmuje się za dane wejściowe.
Idź do Seven Sisters, która ustawia akumulator na 7, i przechowuj go w banku. Bank jest jedynym sposobem kopiowania wartości - Hammersmith jest tylko do odczytu kopią wartości Banku.
Podziel 7 przez 7, aby otrzymać 1, dzielnik wszystkich wartości ASCII, które musimy wspierać.
Dla każdej postaci zacznij od skopiowania 1 do Upminstera.
Dodaj więcej, jeśli to konieczne.
Zakończ, przechodząc do Upminster tylko raz, aby zachować nową wartość w akumulatorze, zamiast ją ponownie przechowywać. Zabierz go do Charing Cross, aby zmienić wartość ASCII w znak i dołączyć ją do łańcucha. Istnieją dwie ostatnie linie, ponieważ źle odczytałem specyfikację, więc zatrzymam się tutaj i zacznę grać w golfa.
źródło
Take District Line to Upminster
linie obliczają sekwencję FibonacciegoGalaretka , 1 bajt
Woo wbudowane!
Polecenie wbudowane
Ṿ
unevals wejście.Wypróbuj online!
Bardziej interesujący:
Łączy ciąg wejściowy „” ”.
Wypróbuj online!
źródło
”“;
za -1.Węgiel, 1 bajt
Domyślnie ciąg znaków ASCII
..
~
po prostu drukuje się, więc pozostaje tylko wydrukować dane wejściowe.źródło
C (gcc) ,
89875856 bajtówZaoszczędziłem dwa bajty dzięki Jakobowi!
Wypróbuj online!
źródło
puts
w drukowanym programie, aby zapisać 2 bajty, prawda? Czy jest to problem, że dodaje nową linię?Japt , 2 bajty
Wypróbuj online!
i
jest funkcją, która wstawia określony ciąg pod określonym indeksem do danych wejściowych.Q
jest zmienną, która domyślnie przyjmuje znak cudzysłowu"
, a ponieważ nie podano żadnego indeksu, domyślnie jest to0
. Końcowym wynikiem jest znak cudzysłowu wstawiany na początku łańcucha, który Japt automatycznie kończy podczas uruchamiania.Działa to na ciągach zawierających cokolwiek oprócz
"
,{
lub\
, choć oczywiście ciąg znaków składa się z znaków alfanumerycznych, więc nie ma to znaczenia.źródło
Python 2 , 22 bajty
Wypróbuj online!
źródło
print'print'+`input()`
.input
w Python 2 jest równoważne zeval(raw_input())
. Musi więc być wyrażeniem pytonicznym, aby działało.MATLAB / oktawa , 15 bajtów
Wypróbuj online!
Całkowicie przeoczyłem fakt, że program musi obsługiwać tylko znaki alfanumeryczne, a co ważniejsze nie musi obsługiwać znaków spacji. Oznacza to, że możemy użyć składni „polecenia”, która zużywa znacznie mniej bajtów.
MATLAB, 27 bajtów
Dla kompletności, oto wersja, która może obsłużyć dowolne dane wejściowe:
Definiuje anonimową funkcję pobierającą ciąg znaków
t
i konwertuje go do programu. Co ciekawe, nie działa to w Octave, która wydaje się mieć różne pomysły na to, comat2str
należy zrobić.źródło
@(t)['disp ',mat2str(t)]
powinien działać ...?mat2str
dodaje cudzysłowy, które nie są konieczne w składni komend. Miałem składnię funkcji połączoną zmat2str
obsługą spacji na wejściu, ale przy ponownym odczytaniu wyzwania nie jest to właściwie konieczne, zmniejszając liczbę bajtów prawie o połowę. Dzięki!Befunge-98 (FBBI) ,
211612 bajtów-5 bajtów dzięki NieDzejkob
-4 bajtów dzięki Jo King
Wypróbuj online!
Wyjścia
't,'e,'s,'t,@
dla wejściatest
W jaki sposób?
Początkowo wskaźnik przesuwa się na wschód:
Jeśli nie ma już więcej danych wejściowych,
~
odwraca kierunek wskaźnika:źródło
Emojicode , 88 bajtów
Wypróbuj online!
Wkład:
Wydajność:
Wyjście skryptu:
źródło
QBIC , 7 bajtów
Wyjaśnienie
Przykładowy przebieg
Dane wyjściowe to literał łańcuchowy zawierający dane wejściowe, poprzedzony
PRINT
poleceniem.źródło
Partia 11 bajtów
Jestem pewien, że jest daleko, aby go zmniejszyć, ale to jest dość małe.
Podział:
Po angielsku:
Użytkownik jest proszony o wprowadzenie wiodącej frazy
echo
. Następnie użytkownik może wpisać cokolwiek, a program kończy działanie (np.;echo hello world!
). Pozostaje nam program, który po uruchomieniu wyświetlihello world!
.Tak, białe znaki powinny tam być
źródło
echo
fragment nie byłby wysyłany echem do konsoli, a nie programowy wynik?echo
na standardowym wyjściu. W rzeczywistości (zakładam, że jeśli dane wejściowe pochodzą z pliku lub potoku, zobaczysz tylko monit. Czy tego rodzaju wyniki są dozwolone?V, 2 bajty
W Vimie przechodzi
i
do trybu wstawiania i umożliwia wstawianie tekstu. W takim przypadku po prostu wstawiai
przed tekstem wejściowym (aby utworzyć drugi program). V jest kompatybilny z Vimem, ale dodaje niejawny<esc>
koniec programu, więc nie muszę się tym martwić.źródło
PowerShell, 9 bajtów
pojedyncze lub podwójne cudzysłowy w PowerShell mogą być używane do przechowywania ciągów, ale tylko podwójne cudzysłowy pozwalają na zmienną interpretację.
z wejściem
foo
tego wyjdzie,'foo'
który jest prawidłowym programem PowerShell, który wyprowadzafoo
źródło
Sześciennie 87 bajtów
Wypróbuj online!
Port mojej odpowiedzi tutaj . Istniało już wyzwanie, aby pobrać dane wejściowe i wyjściowe Kod sześcienny, który wytworzył ten sygnał wejściowy, a ja miałem odpowiedź w Cubical, więc ... zysk?
źródło
%6
S i@6
S; można je teraz wywoływać niejawnie. (Możesz to również zrobić w odpowiedzi na wątek cubitatora.)D,
9289 bajtówWypróbuj online!
źródło
Python 2 , 17 bajtów
Wypróbuj online!
źródło
1
'1'
do funkcji, to poprawnie wyprowadzaprint'1'
SOGL V0.12 , 2 bajty
Wypróbuj tutaj! (oczekuje wejścia na stosie, więc
,
dodano go dla ułatwienia użytkowania)$
pcha”
,+
łączy to po wejściu na stosie.źródło
"
.Perl 6 , 19 bajtów
Spróbuj
Powinno to działać dla każdego wejścia Unicode w NFC
źródło
8 ,
3437 bajtówKod
Przykład
źródło
PHP , 12 bajtów
Wypróbuj online!
Należy go uruchomić z wiersza poleceń z danymi wejściowymi jako argumentem parametru. I tak, po prostu wyprowadza ciąg wejściowy - ale to jest poprawne PHP: wszystko poza
<?php
?>
ogranicznikami jest przetwarzane nieprzetworzone.Oto skrypt wygenerowany przez dane wejściowe „test123” w akcji jako demonstracja: Wypróbuj online!
źródło
<?php
, pamiętaj;)MATL , 2 bajty
Wypróbuj online!
Po prostu owija ciąg znaków w cudzysłów, używając
&D
, która jest odpowiednikiem MATLAB-mat2str
a MATLAB- a, funkcji stworzonej specjalnie do tworzenia czegoś, co, gdyeval
d da pierwotną macierz (lub w tym przypadku ciąg).Wynikowy „program” jest po prostu łańcuchem wejściowym zawiniętym w cudzysłów, który jest w ten sposób wypychany na stos i domyślnie wyświetlany.
źródło
eacal , 38 bajtów
Wypróbuj online!
Po prostu dołącza ciąg
put string
do ciągu pamięci, a następnie dołącza argument, który jest drukowany.źródło
Partia, 14 bajtów
Działa również dla znaków specjalnych, jeśli są one cytowane za pomocą
"
s zamiast^
.źródło
@echo.@echo.%*
byłoby bardziej poprawne? Dane wejściowe mogą być potencjalnie puste..
ponieważ nigdy nie jest pusty, i użyłem(
drugiego, ponieważ jest to bardziej niezawodne niż.
, ale i tak dzięki za sugestie!@echo.
lolLy , 14 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
05AB1E , 3 bajty
Wypróbuj online!
Wejście surround z cudzysłowami.
-1 @Adnan.
źródło
Brain-Flak ,
9268 bajtów-22 bajtów dzięki Wheat Wizard
Obejmuje +2 za
-cr
Wypróbuj online!
źródło
Pyth ,
21 bajtWypróbuj online!
Po prostu wysyła dane wejściowe. Wymaga ciągów w cudzysłowach.
-1 bajt dzięki KarlKastor
źródło
+\"
? (\x
char literal + implicitQ
)+N
Marchewka , 1 bajt
Jak to działa
Alternatywą, również przy 1 bajcie, jest:
Działa to tak samo jak powyżej, ale pobiera tylko pierwszy wiersz danych wejściowych. Patrząc na dane wejściowe, zawsze będzie
[A-Za-z0-9]
to w porządku.źródło
01
?