Fabuła
Widziałeś ten post z 9gag ? Może masz ochotę tworzyć własne zdania. Ale wtedy zdajesz sobie sprawę, że możesz po prostu zagrać w golfa w ciągu pół godziny i nigdy nie będziesz musiał sobie z tym poradzić.
Złożenie
Twój program otrzyma ciąg wejściowy, który zwróci z dodanymi znakami cudzysłowu, jak wyjaśniono poniżej. Standardowe luki są zabronione. Wyjście jako lista wierszy jest dozwolone. Dozwolone są końcowe spacje i puste linie, które nie przerywają wydruku.
Zasady wprowadzania
- Dane wejściowe zawierają tylko drukowalne znaki ASCII.
- Dane wejściowe mogą zawierać spacje. Słowa są z nimi określone.
- Gwarantujemy, że po jednym miejscu nigdy nie będzie następnej przestrzeni.
- Przypadek braku danych wejściowych lub pustego łańcucha nie ma znaczenia.
Reguły produkcji
Jeśli podano jedno słowo, program musi zwrócić ciąg znaków między cudzysłowami.
Jeśli ciąg wejściowy zawiera 2 lub więcej słów, najpierw zwraca początkowe wejście, ale pierwsze słowo jest w cudzysłowie. Następnie w następnym wierszu zwraca początkowe wejście, ale z drugim słowem w cudzysłowie. I tak dalej dla pozostałych słów.
Ogólnie rzecz biorąc, program musi zwrócić tyle wierszy, ile jest słów na wejściu.
Przykłady:
test -> "test"
This is codegolf -> "This" is codegolf
This "is" codegolf
This is "codegolf"
This is a significantly longer, but not the longest testcase -> "This" is a significantly longer, but not the longest testcase
This "is" a significantly longer, but not the longest testcase
This is "a" significantly longer, but not the longest testcase
This is a "significantly" longer, but not the longest testcase
This is a significantly "longer," but not the longest testcase
This is a significantly longer, "but" not the longest testcase
This is a significantly longer, but "not" the longest testcase
This is a significantly longer, but not "the" longest testcase
This is a significantly longer, but not the "longest" testcase
This is a significantly longer, but not the longest "testcase"
Here is an another one -> "Here" is an another one
Here "is" an another one
Here is "an" another one
Here is an "another" one
Here is an another "one"
To jest golf golfowy , więc wygrywa odpowiedź najmniej bajtowa!
"
znaków?''
,‘’
lub“”
, zamiast""
?Odpowiedzi:
vim, 38 bajtów
Wypróbuj online!
Wymaga wtyczki vim-surround .
Jeśli dane wejściowe nie zawierają
"
znaków, można to zrobić w 19 bajtach :W tym przypadku rejestrujemy makro rekurencyjne (
qq ... @qq@q
), które otacza słowo cudzysłowami (ysW"
), powiela wiersz (Yp
), usuwa znaki cudzysłowu (ds"
) i przechodzi do następnego słowa (W
) przed wywołaniem się rekurencyjnie. Po zakończeniu są dwie linie zewnętrzne, które są usuwane za pomocądk
.Pełne rozwiązanie po prostu owija to
:s/"/<C-d>/g
na początku, który zastępuje istniejące"
znaki niedrukowalnymi, a:%s/<C-d>/"/g
na końcu, co zastępuje zamianę.źródło
Haskell, 65 bajtów
Zwraca listę linii.
Wypróbuj online!
źródło
\n
są za spacje, zachowują się niepoprawnie, gdy są obecne.~
. „Dane wejściowe mogą zawierać spacje” - nie „białe znaki”.Retina 0.8.2 , 17 bajtów
Wypróbuj online! Link zawiera pakiet testowy. Wyjaśnienie:
Rozwiń każdą spację, powielając wiersz, a następnie wstawiając cudzysłowy.
Napraw pierwszą i ostatnią linię.
źródło
Galaretka ,
1514 bajtówWypróbuj online!
W jaki sposób?
źródło
JavaScript (ES6),
43 42 4138 bajtówZaoszczędzono 3 bajty dzięki @mazzy
Korzysta z niestandardowych, ale szeroko obsługiwanych
RegExp.leftContext
iRegExp.rightContext
. To wiele różnych cytatów ...Wypróbuj online!
źródło
This is a significantly "longer,"...
/(\S+)/g
działałoby?Java,
235 183132 bajty-52 bajtów poprzez nadużywanie różnych rzeczy (dostęp statyczny, lista vs. tablica, drukowanie zamiast zwracania itp. Dzięki @ValueInk!)
-51 bajtów przez beung leniwy i pozwalanie @KevinCruijssen na wykonanie pracy dla mnie
Wypróbuj online
źródło
java.util.Arrays.copyOfRange
. Jeśli używaszjava.util.List
, możesz używać gosubList
krócej i drukować do STDOUT zamiast budować tablicę. Mam 193 bajty z tymi pomysłami, a także nadużywam słowa kluczowego var.String.join
się zs.join
tych dodatkowych ostrzeżenia IDE (-10 bajtów).Mam nadzieję, że pierwsza próba golfa nie jest straszna i mam nadzieję, że nie łamie zasad
Kotlin,
105112147117 bajtów / znakówWypróbuj online!
źródło
05AB1E , 14 bajtów
Wypróbuj online!
+1 bajt (i działa w przypadku krawędzi) dzięki Emignie. -1 bajt dzięki Kevin!
źródło
ð¡
do obsługi danych wejściowych, takich jaktest
.»
.JavaScript,
91977578 bajtówWyświetla listę wierszy jako tablicę JavaScript. Ostatni wpis ma końcową spację dozwoloną w pytaniu. Kod testowy zapisuje każdy wpis do konsoli w osobnym wierszu dla celów demonstracyjnych.
Dzięki Shaggy za 19 bajtów off i brak spacji wiodących - gdy operator rozkładania jest używany do pustej tablicy do inicjalizacji literału tablicy, żadne szczeliny nie są tworzone w tablicy wytwarzanej przez operatora rozkładania:
(Wersja 91-bajtowa miała wiodące miejsce w pierwszym wierszu, wersja 97-bajtowa zajęła 6 bajtów).
źródło
f
funkcję. W przeciwnym razie zweryfikowane. Dobra robota!Python 3 ,
79,69, 65 bajtówWypróbuj online!
Ogolono 10 bajtów dzięki xnor. A teraz jest to 65 bajtów według rozwiązania Erika Outgolfera. Program kończy się na IndexError, ale jest w porządku.
źródło
print(*l)
w Pythonie 3 zamiastprint(" ".join(l))
.w
doinput().split()
, przypisz go doinput()
, a następnie wwhile
pętli przypiszm
dow.split()
, co spowoduje utworzenie nowej listy przy każdej iteracji w celu uniknięcia problemów z odnośnikami, a następnie ustawm[i]
na'"%s"'%m[i]
iprint(*m)
.Java 8,
72716762 bajtówWypróbuj online.
Wyjaśnienie:
Wyjaśnienie Regex:
źródło
Ruby z
-an
53 bajtamiFlagi
-an
są odczytywane w każdej linii i dzielone na$F
.Wypróbuj online!
źródło
Ruby , 98 znaków.
Pierwsze zgłoszenie w historii. Można to zdecydowanie skrócić. Chciałem tylko szybko uzyskać odpowiedź.
Wypróbuj online!
źródło
s.split
jako zmiennej i edycji indeksu, który ma zawierać cudzysłowy, zamiast używania zbyt szczegółowych informacjieach_with_index.map
. Możesz także przesłać anonimową lambdę bez nazywania jej, a dołączenie można zastąpić*
operatorem. Spowoduje to zmniejszenie liczby bajtów do 64 bajtów.Perl 6 ,
4340 bajtówWypróbuj online!
Matches all possible words, then joins each list by quotes. This could be one byte shorter if we could output lines in reverse order.
Wyjaśnienie:
źródło
Reflections, 229 bytes
Test it!
I "quickly" "golfed" this in a "funny" "golfing" language.
Looking at all that whitespace, it could probably be shorter.
źródło
Haskell, 64 bytes
Try it online!
Outputs a list of strings. Based on nimi's answer.
źródło
\n
or"
.Stax, 10 bytes
Run and debug it
Unpacked, ungolfed, and commented, it looks like this.
Run this one
źródło
C (gcc),
136133 bytesAs C's tokenizing functions would mess up the string on future reads, I instead calculate the number and offsets for each word and then finish when the total number of iterations of the outer loop matches the number of words.
Try it online!
źródło
"\""+!!(i-++j)
fori-++j?"":"\""
saves you a byte.PowerShell,
604036 bytes-20 bytes inspired by Arnauld
Try it online!
The result has one extra space and one empty line in the tail.
Powershell, no regexp, 60 bytes
Try it online!
Less golfed:
źródło
The input only contains printable ASCII characters.
, 2.The input may contain spaces
. Tabs and other whitespace is not printable ASCII, is not it? :)JavaScript, 62 bytes
Thanks @Shaggy for golfing off 10 bytes
Explanation
źródło
Java (JDK), 104 bytes
Try it online!
źródło
R,
9476 bytes-18 bytes thanks to Giuseppe
Try it online!
Thanks to digEmAll for setting up the TIO properly. It takes in e.g.
This is codegolf
and outputs correctlyIt uses a matrix format with the sentence repeated
n
times; then we only need to change the diagonal entries. Note that usually, in R code-golf, strings are read in withscan(,"")
, but any string can be used instead of the empty string as thewhat
(orw
) parameter.Explanation of old ungolfed version:
źródło
scan
??""
, we can reduce to 68 bytes usingsQuote
.This is my first code golf. hopefully its not shit.
EDIT: got it down to 54 bytes with a better regular expression.
**EDIT 2: per suggestions, fixed a bug and made it shorter **
JavaScript (V8), 46 bytes
Try it online!
źródło
C# (Visual C# Interactive Compiler) with
/u:System.Text.RegularExpressions.Regex
flag,5940 bytesPort of my Java 8 answer, so look there for an explanation.-19 bytes by porting @Arnauld's regex, since the
$`
and$'
are supported in C# .NET.Try it online.
źródło
Elm Using recursion,
132,130,121,111,10099 bytesGolfed down 9 bytes thanks to Kevin Cruijssen technique and another 22 bytes were cracked by ASCII-only. Turned to non-tail recursion during the golf.
Try it online
85 bytes after exposing
String
functions to the current scopeUngolfed version (Using tail recursion)
Try ungolfed
źródło
Japt,
1412 bytesTry it
2 bytes saved thanks to Oliver.
źródło
PowerShell,
7065 bytesTry it online!
Has test suite in trial. Has 1 leading space on first row, and 1 trailing space on last row. Attempting to refactor.
źródło
Charcoal, 19 bytes
Try it online! Link is to verbose version of code. Note: Trailing space. Explanation:
źródło
Attache, 34 bytes
Try it online! Anonymous function returning a list of lines.
Explanation
źródło
C# (Visual C# Interactive Compiler), 123 bytes
I wonder if can this be shortened with regular expressions.
Try it online!
źródło