Podczas korzystania ze znaczników, podobnie jak w sieci SE, wcięcie czterech spacji przed wierszem tekstu oznacza go jako część bloku kodu, jak mam nadzieję, wiesz. Jeśli nie, oto przykład (z .
reprezentacją spacji):
.... Kod
.... Więcej kodów
prowadzi do
Code
More code
Problem polega na tym, że po skopiowaniu i wklejeniu kodu do odpowiedzi należy ręcznie wciąć każdy wiersz. Jest to szczególnie trudne w przypadku pracy z nie golfowym kodem, ponieważ prawdopodobnie jest już wcięty i może powodować zamieszanie. Możesz po prostu wybrać kod i nacisnąć Ctrl + K
, jak się okazuje. Godziny mojego życia zmarnowane bez żadnego powodu ...
Zatem twoim celem jest, biorąc pod uwagę dane wejściowe, zwrócić go z czterema spacjami przed każdą linią. Aby zaoszczędzić czas na wklejanie i kopiowanie, musisz przetwarzać cały tekst jako pojedynczy ciąg znaków (o ile Twój język może go parsować). Jeśli twój język nie jest w stanie przetworzyć znaku (np. Nowego wiersza) w łańcuchach, możesz założyć, że jest on oznaczony / zmieniony za pomocą innej metody obsługiwanej przez ten język; jednak dane wyjściowe muszą wysyłać każdy wiersz w osobnym wierszu (więc nie należy przekazywać czegoś podobnego ....foo\n....bar
).
Standardowe luki są niedozwolone. Ponieważ jest to gra w golfa , wygrywa najkrótsza odpowiedź w bajtach. Powodzenia!
źródło
Ctrl + K
Odpowiedzi:
V , 4 bajty
Wypróbuj online!
(Zwróć uwagę na spację końcową)
V jest kodowany w Latin1, gdzie jest to kodowane w następujący sposób:
Wyjaśnienie
Oto rozwiązanie, które ma również 4 bajty w UTF-8!
źródło
4ñ>G
Kredka , 7 bajtów
Wypróbuj online!
Wyjaśnienie
Crayon to język oparty na stosie, zaprojektowany do tworzenia sztuki ASCII. Jest wciąż na wczesnym etapie rozwoju, ale wie wystarczająco dużo, aby ukończyć to wyzwanie z dość małą liczbą bajtów:
Narysowanie niełamliwej przestrzeni jest konieczne, ponieważ Crayon automatycznie przycina wydruk do prostokąta, więc bez NBSP po prostu wydrukowałby oryginalne wejście.
źródło
Siatkówka , 8 bajtów
Wypróbuj online!
W drugiej linii są cztery spacje. Rozwiązania alternatywne użyć jednej
m`^
lub%1`
lub1%`
na pierwszej linii. Wszystkie pasują do pozycji na początku każdej linii i zastępują ją czterema spacjami.źródło
Cheddar, 31 bajtów
Naprawdę po prostu, ale napisałem, ponieważ pokazuje nowe operatory funkcjonalne.
(" ":+)
jest taki sam jakA -> " " + A
. (tj.+
op jako funkcja" "
związana z LHS).Myślę, że nawet nie potrzebuje wyjaśnienia
źródło
:
, spowodowałoby problemy?:
:
ma dopasowania?
, parser zdecyduje się potraktować go jako funkcjonalną operację. Wciąż wymaga to opakowania funkcjonalnego w pareny, ale tak:+)
@
znaczyPython ,
4439 bajtówPrzekreślony & nbsp; 44 & nbsp; nie ma już 44 :)
-5 bajtów dzięki ovs (unikaj dequeue z prepend)
Wypróbuj online!
źródło
lambda s:' '*4+s.replace('\n','\n ')
za 39 bajtówlambda s:' '*4+s.replace('\n','\n ')[1:]
40 (co nie działa) czy coś innego?lambda s:' '*4+s.replace('\n','\n<4 spaces>')
TIOJavaScript, 26 bajtów
Dzięki @Conor O'Brien za grę w golfa poza 8 bajtami
Zamień na wyrażenie regularne na / g zastępuje wszystkie wystąpienia. m sprawia, że regex traktuje każdą linię osobno na początek ciągu ^.
Wypróbuj online!
źródło
asdf
powtarzania w kółko.x=>x.replace(/^|\n/g,"$& ")
wiersz i kolejne wiersze za jednym razemPython 2,
8745 bajtówDane wejściowe są traktowane jako
'Line1\nLine2\nLine3...'
(konieczne są oferty)Dzięki @WheatWizard za pomysł, który pomógł mi w golfie 42 bajty.
źródło
Ctrl + K
, prawdziwymi powodami tego wyzwania były ... mniej niż zwykła zagadka.^
``.Galaretka , 8 bajtów
Wypróbuj online!
W jaki sposób?
Inne 8-bajtowe warianty to:
Ỵṭ€⁶Yµ4¡
(4 powtórzenia podziału na nowe wiersze, zaznacz jedną spację);⁶ḤḤ;ЀỴY
(dwukrotne podwojenie jest jak pomnożenie przez 4,Ѐ
mapy nad odpowiednim argumentem, dzięki czemu możemy konkatenować zamiast halsowania);i inne ich zmiany.
źródło
Emacs, 5 słów kluczowych, 5 bajtów
W co najmniej jednym z najczęściej używanych kodowania do wprowadzania za pomocą klawiatury, każdy z tych keychords jest pojedynczy bajt:
18 68 b4 18 09
. Wpisy Emacsa są zwykle bardzo obciążone na słowa-klucze, ponieważ każdy znak ASCII, który można wydrukować, jest sam w sobie, chyba że jest to kolejny znak polecenia wieloznakowego (co oznacza, że do wydawania poleceń można używać tylko słów kluczowych).Nie jestem pewien, jak to się ma do Vima (w przeciwieństwie do V). Ale Vim jest dość powszechnie używany w PPCG, więc pomyślałem, że druga strona wojen edytorskich zasługuje na swój czas w centrum uwagi.
Zakłada się, że operacje we / wy są wykonywane przez bufor (odpowiednik normalnych konwencji we / wy dla vima) lub pobierane z pliku i wyprowadzane na ekran (co dochodzi do tego samego). Jeśli zamiast tego wykonujesz operacje wejścia / wyjścia za pośrednictwem regionu, co jest naturalne w przypadku niektórych form programu, możesz usunąć dwa pierwsze znaki, uzyskując wynik 3 bajtów; nie sądzę jednak, aby było to zgodne z zasadami PPCG.
Wyjaśnienie
Ostatnie użyte tutaj wbudowanie jest oczywiście niezwykle przydatne w tym wyzwaniu; reszta to tylko struktura.
źródło
PowerShell,
2928 bajtów-1 Dzięki fergusq, użycie rzeczywistej nowej linii zamiast `n
pobiera dane
"$args"
wejściowe jako ciąg znaków (rzutuje się za pomocą „s”)-split
s na nowej linii, a następnie wykonuje pętlę (%{}
), dodając cztery spacje (" "*4
) i wiersz ($_
), a następnie generuje je niejawnie.źródło
Pyth, 10 bajtów
Spróbuj!
Jeśli wprowadzanie jako listy linii byłoby dozwolone, mógłbym to zrobić w 7 bajtach:
Spróbuj tego
dłuższe rozwiązania:
12 bajtów:
12 bajtów:
13 bajtów:
źródło
jbm*4\ .z
d
. W każdym razie twoja 10 bajtowa odpowiedź jest tym, o co mi chodziłoRöda , 21 bajtów
Wypróbuj online!
To anonimowa funkcja. Dane wejściowe są pobierane ze strumienia.
Wyjaśnienie:
źródło
identity()
po prostu pobiera wszystkie wartości z STDIN?identity
pobiera wartości ze strumienia wejściowego i wypycha je do strumienia wyjściowego. Jest identyczny zpush(x) for x
.Perl 5 , 11 + 1 = 12 bajtów
11 bajtów kodu +
-p
flaga.Wypróbuj online!
Po raz pierwszy wyjaśnienia będą krótkie: wyrażenie regularne zastępuje każdy początek wiersza (w
^
połączeniu z/m
modyfikatorem) czterema spacjami - końcem.źródło
Perl 6 , 11 bajtów
Spróbuj
Rozszerzony:
źródło
sed ,
16109 bajtówWypróbuj online!
Edycje
Zmniejszony rozmiar rozwiązania z 16 do 10 bajtów dzięki Kritixi Lithos .
-1 bajt dzięki seshoumara .
źródło
-r
flagi (1 bajt), dzięki czemu możesz usunąć odwrotne ukośniki przed nawiasami.s/.*/ &/
(usuń nawiasy i wymienić\1
z&
)*
.s:^: :
dla 9 bajtów.Java 7, 58 bajtów
Wyjaśnienie:
Wypróbuj tutaj.
źródło
replaceAll
.replace
i.replaceAll
zastąpi wszystkie wystąpienia szukanego ciągu przez zastąpienie..replace
jest używany do dosłownych ciągów.replaceAll
znaków i wyrażeń regularnych. Ponieważ\n
nie jest wyrażeniem regularnym,.replace
można go bez problemu zastąpić wszystkie nowe wiersze znakiem nowego wiersza + cztery spacje, które można również sprawdzić w podanym przeze mnie linku „Wypróbuj linię”.Brain-Flak ,
109103 bajtów-6 dzięki Wheat Wizard
Obejmuje +1 dla
-c
Wypróbuj online!
źródło
PHP, 43 bajty
źródło
Skumulowane , 13 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Oktawa, 17 bajtów
Wypróbuj online!
źródło
MATL , 12 bajtów
Dane wejściowe to ciąg znaków z nowymi wierszami. Aby wprowadzić to, musisz połączyć znak 10 między normalnymi znakami, aby reprezentować znak nowej linii (nawiasy kwadratowe są konkatenacją):
Wypróbuj w MATL online!
Wyjaśnienie
źródło
PHP, 16
biegać z
php -R <code>
.-R
uruchamia podany kod dla każdej linii wejściowej i$argn
podaje bieżącą linię wejściową. To po prostu drukuje każdą linię z dodatkowymi czterema spacjami przed nią.źródło
V , 3 bajty (niekonkurujące)
Ta odpowiedź korzysta z funkcji, którą planowałem dodać już od jakiegoś czasu, ale właśnie zacząłem dodawać dzisiaj. To sprawia, że ta odpowiedź nie konkuruje i jest nieważna z powodu wygranej. Ale nadal fajnie jest pochwalić się taką przydatną / konkurencyjną funkcją!
Wypróbuj online!
Wyjaśnienie:
źródło
Vim, 6 keystrokes
Assumes that the cursor is on the beginning of the file, as if you opened the file from from the command line via
vim filename
.With a vim configured to use 4 spaces for indentation it would be 2 keystrokes:
>G
.źródło
ZZ
at the end. Usually vim submissions are fine just outputting to the buffer rather than to a file.ZZ
then.Japt,
76 bytesSaved 1 byte thanks to @ETHproductions
Try it online!
Explanation:
źródło
S²²
would work as well in place ofSp4
, not that it saves you anything in this case. Speaking of which, I think you can just domiS²²R
to remove theR
flag (basicallymiS²²
, but split at newlines beforehand and join with newlines afterward)UberGenes, 62 bytes
I had to enter this challenge with UberGenes, as a very similar program (that only inserted one space) was one of the first programs I ever wrote in the language, and it seemed like it would be easy to modify for this purpose.
How it works:
źródło
CJam, 11 bytes
Thanks to @Challenger5 for a correction
Try it online!
Explanation
źródło
abc\n\ndef
. It returns....abc\n....def
because%
discards empty elements. You want to use/
to split instead, because it keeps the empty elements.J-uby,
1716 BytesExplanation
This directly translates to (in Ruby):
źródło
Actually, 16 bytes
Try it online!
Explanation:
źródło
C,
6665 bytesTry it online!
źródło
s;char*l;f(){while(getline(&l,&s,stdin)+1)printf("____%s",l);}
which 62 bytes<stdio.h>
(because of thestdin
).