Były Sekretarz Obrony USA, Donald Rumsfeld, słynnie spopularyzował frazę „znane znane”. Tutaj podzielimy jego uwagi na czteroliniową zwrotkę.
W szczególności wyślij ten tekst:
known knowns
known unknowns
unknown knowns
unknown unknowns
Wielkość liter nie ma znaczenia (na przykład Known unKnowns
jest w porządku), a pojedyncza nowa linia jest akceptowalna, ale żadne inne zmiany formatowania są niedozwolone. Oznacza to pojedynczą spację między słowami i LF
(59 bajtów) lub CR/LF
(62 bajty) między wierszami.
Zasady
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
code-golf
string
kolmogorov-complexity
code-golf
sequence
binary
base-conversion
binary-matrix
code-golf
string
classification
code-golf
tips
python
code-golf
combinatorics
binary
subsequence
restricted-time
code-golf
number
number-theory
code-golf
math
number
complex-numbers
code-golf
string
code-golf
string
code-golf
string
random
game
king-of-the-hill
python
code-golf
number
sequence
code-golf
number
sequence
code-golf
code-golf
math
number
array-manipulation
code-golf
array-manipulation
decision-problem
code-golf
string
code-golf
sequence
integer
AdmBorkBork
źródło
źródło
Odpowiedzi:
Python 2 ,
5452 bajty-2 bajty dzięki xnor
Wypróbuj online!
Wyniki z
/
i%
będą[[2, 2], [2, 0], [0, 2], [0, 0]]
indeksami początkowymi, usuwającymiun
kiedy2
, zachowując ciąg niezmieniony kiedy0
źródło
k
być'unknowns'
można skorygować zek[i/3:7]
i zapisać dwa bajty.Vim
2825 bajtówTo jest moja pierwsza odpowiedź Vima, wszelkie wskazówki dotyczące gry w golfa są mile widziane.
Dziękuję Lynn za napisanie skryptu Pythona do stworzenia tej fantastycznej animacji.
Może to również być uruchomione przez V Wypróbuj online!
Również 25:
źródło
2iunknown ␛rsYPw2x2YP2xj.
lub niewielką wariację2iunknown ␛rsYPw2x2YPⓋjlx
(Ⓥ = Ctrl-V).bash, 36 bajtów
inne rozwiązania
36
37
38
41
45
jeśli wiodący znak nowej linii i dodatkowe miejsce zostały zaakceptowane 31 bajtów:
źródło
05AB1E ,
1312 bajtówZapisano 1 bajt dzięki Erikowi Outgolferowi (unikaj zamykania łańcucha)
Wypróbuj online!
Wyjaśnienie
źródło
“Š¢—‚“
->„Š¢—‚
CJam (
2625 bajtów)Demo online
Kartezjański produkt
["known" "unknown"]
sam z siebie, a następnie każdy element łączy się spacją i sufiksem oraz nowyms
znakiem.Dzięki Erik za jednobajtowe oszczędności.
źródło
R ,
525150 bajtówWypróbuj online!
Zaskakująco krótkie polecenia zastępowania i drukowania sprawiają, że jest to naprawdę konkurencyjna odpowiedź R w wyzwaniu strunowym !
Nawet jeśli to jest super nudne.Teraz jest nieco bardziej interesujący i dzięki bajtowi zapisanemu dzięki J.Doe !Zapisano kolejny bajt dzięki tej odpowiedzi, również autorstwa J.Doe!
źródło
Haskell ,
60585351 bajtówWypróbuj online!
Daje listę linii, co ostatnio było dozwolone. Dzięki @firefrorefiddle za wskazanie.
-2 bajty dzięki Cole .
Wersja 58-bajtowa:
Wypróbuj online! Daje pojedynczy ciąg.
źródło
unlines
ponieważ „Lista czterech ciągów byłaby OK, ponieważ nadal zachowuje się odstęp między słowami;” (Komentarz do pierwotnego pytania).C # (.NET Core) , 54 bajty
Wypróbuj online!
źródło
Retina ,
3332 bajtyWypróbuj online! Edycja: Zapisano 1 bajt dzięki @ovs. Objaśnienie: Jest to prawie trywialne podejście do używania symbolu zastępczego
known
, z wyjątkiem tego, że po prostu wstawiam go przed każdą spacją lubs
, co oszczędza34 bajty.źródło
|s
podejścia: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8//…PHP,
55 5147 bajtówspróbuj online
źródło
<?=
jest najkrótszą opcją.Retina ,
3332 bajtyZaoszczędzono 1 bajt przy użyciu pośredniego podejścia do drukowania od Leo.
Wypróbuj online!
Wyjaśnienie
Zamienia nieistniejące (tj. Puste) dane wejściowe na ciąg znaków w drugim wierszu. Ten wydaje się dość dziwny, ale te znaki są kodami rzeczy, które przechodzą między dwoma wystąpieniami
known[s]
w pierwszych dwóch wierszach wyniku. Przestrzeń i wysuwu wiersza są tylko siebie iu
jestun
.Teraz wstawiamy
knowns
na każdej pozycji (tj. Na początku, na końcu i między każdą parą znaków).Dekodujemy
u
.Następnie pozbywamy się
s
przed spacjami, tj. W pierwszej połowie każdej linii, i wypisujemy wynik.I w końcu przechodzimy
un
do obu linii i ponownie drukujemy wynik.To przewyższa trywialne podejście polegające na użyciu symbolu zastępczego
known
przez 4 bajty, ale nie na bardziej efektywnej implementacji tego podejścia przez Neila .źródło
Język programowania Szekspira ,
10211012993 bajtów-19 bajtów dzięki Joe Kingowi!
Wypróbuj online!
źródło
the sum of
Perl 6 , 45 bajtów
Spróbuj
Rozszerzony
[X](…)
Część generujeNastępnie użycie
X~
na nim wymusza wewnętrzne listy na Str (z powodu&infix:«~»
operatora), co powoduje dodanie odstępu między wartościami.Następnie do każdego dołącza się
s
źródło
Haskell,
5752 bajtówWypróbuj online!
źródło
APL (Dyalog) ,
644735 bajtówWypróbuj online!
W jaki sposób?
k←'known'
-k
jest"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- produkt zewnętrzny ze sobą{⍺,' ',⍵,'s'}
- z funkcją, która formatuje argumenty jako{⍺} {⍵}s
,
- rozbić tabelę produktów na wektor⍪
- oddzielne od kolumnźródło
Java 8,
5655 bajtów-1 bajt dzięki @SuperChafouin .
Wyjaśnienie:
Wypróbuj tutaj.
źródło
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 bajtówDzięki @Justin Mariner za grę w golfa jeden bajt!
Wypróbuj online!
źródło
%1$s
i pozbędziesz sięi
: Wypróbuj online!Łuska , 14 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Kod maszynowy 6502 (C64), 48 bajtów
Demo online
Stosowanie:
sys49152
Jak to działa
Sztuczka polega na użyciu „licznika pętli” dla 8 iteracji, w których bity od 7 do 1 wartości początkowej są
1
dlaunknown(s)
i0
dlaknown(s)
jednej iteracji. Ten licznik jest przesuwany w lewo po każdej iteracji (przesunięcie najbardziej wysuniętego w lewo bitu do flagi przenoszenia), a bit0
jest początkowo,1
więc wiemy, że skończyliśmy, gdy ostatni bit został przesunięty. W pierwszej iteracjiknown
jest drukowana, ponieważ podczas wywoływania programu flaga przenoszenia jest czysta.W każdej iteracji koniec łańcucha jest przełączany między
<space>
is<newline>
.Oto skomentowana lista dezasemblacji:
źródło
Perl 5 , 33 bajtów
Disclaimer : Nie wiedziałem, że ekspansja klamra było możliwe w ramach
<...>
operatora (nauczył dzięki @ Grimy „s odpowiedź !) I za pomocą sprytnego rozszerzenia trick @ NahuelFouilleul ” s niesamowite bash odpowiedź , byłem w stanie zbudować takie rozwiązanie. Z przyjemnością usunę to na ich prośbę.Wypróbuj online!
Perl 5 , 42 bajtów
41 bajtów kodu + 1 dla
-p
.Wypróbuj online!
Perl 5 , 45 bajtów
Próbowałem wymyślić alternatywę, ale nie mogłem jej skrócić ... Myślałem, że jest na tyle inny, że i tak uzasadnia dodanie.
Wypróbuj online!
źródło
Haskell,
71665654 bajtówDzięki @Leo za -3 bajty!
Uwaga: w komentarzach do pytania operator stwierdził, że zwracanie listy ciągów jest w porządku
Wypróbuj tutaj.
źródło
fmap
można skrócić domap(' ':)
:)f=
.Galaretka , 15 bajtów
Wypróbuj online!
źródło
Rubin,
5350 bajtówźródło
\n
na dosłowny znak nowej linii.Partia, 66 bajtów
Alternatywna odpowiedź, również 66 bajtów:
źródło
Haxe, 71 bajtów
Wypróbuj online!
źródło
C (gcc) ,
7066 bajtówDzięki @ l4m2 za -4 bajty!
Wypróbuj online!
źródło
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
zamiasti%2?" ":"s\n"
PowerShell ,
4644 bajtówWypróbuj online!
(Prawie) prosta zamiana łańcucha. Wykorzystuje podejście Neila do przycinania dwóch bajtów. Dzięki Martinowi za zwrócenie na to uwagi.
Niestety jest krótszy niż bardziej interesująca metoda krzyżowania produktów o
trzypięćtrzy bajty:PowerShell ,
4947 bajtówWypróbuj online!
źródło
T-SQL,
5654 bajtówSQL obsługuje podział wierszy wewnątrz literałów łańcuchowych, tak podobny do niektórych innych już opublikowanych języków.
EDYCJA : Nieco dłuższa ( 82 bajty ), ale nieco sprytniejsza:
EDYCJA 2 : Mój ulubiony do tej pory, używając łączenia krzyżowego z tabeli pochodnej ( 79 bajtów ):
EDYCJA 3 : Zmieniłem znak zastępujący z
'x'
na1
, co pozwala mi usunąć otaczające go cudzysłowy i zapisać 2 bajty, ponieważREPLACE
dokonuje niejawnej konwersji na ciąg.źródło
ReRegex , 38 bajtów
Wypróbuj online!
źródło
a/known / z/s\n/aazaunazunaazunaunaz
wydaje się, że działa przez 36 bajtów.JavaScript
66 54 5350 bajtówHistoria
źródło
replace
oszczędza jeden bajt.0
s i użycie.replace(/ |s/g,'known$&')
(co teraz oszczędza tylko 3 bajty).