Der frühere US-Verteidigungsminister Donald Rumsfeld ist berühmt den Ausdruck "bekannte Bekannte" bekannt gemacht. Hier werden wir seine Bemerkungen in einer vierzeiligen Strophe zusammenfassen.
Speziell diesen Text ausgeben:
known knowns
known unknowns
unknown knowns
unknown unknowns
Die Known unKnowns
Groß- und Kleinschreibung spielt keine Rolle (z. B. ist in Ordnung), und eine einzelne nachgestellte Zeile ist zulässig, andere Formatierungsänderungen sind jedoch nicht zulässig. Das bedeutet ein einzelnes Leerzeichen zwischen den Wörtern und entweder LF
(59 Byte) oderCR/LF
(62 Byte) zwischen den Zeilen.
Regeln
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standard-Schlupflöcher sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
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
quelle
quelle
Antworten:
Python 2 ,
5452 Bytes-2 Bytes dank xnor
Probieren Sie es online!
Das Ergebnis von
/
und%
ist,[[2, 2], [2, 0], [0, 2], [0, 0]]
dass es sich um die Startindizes handelt, wobei dasun
Wann entfernt2
wird und die Zeichenfolge unverändert bleibt, wenn0
quelle
k
sein'unknowns'
, können Sie mit korrigierenk[i/3:7]
und zwei Bytes speichern.Vim
2825 BytesDies ist meine erste Antwort von Vim. Golftipps sind willkommen.
Vielen Dank an Lynn für das Schreiben des Python-Skripts , um diese fantastische Animation zu erstellen.
Dies kann auch von V Try it Online ausgeführt werden!
Auch 25:
quelle
2iunknown ␛rsYPw2x2YP2xj.
oder eine geringfügige Abweichung2iunknown ␛rsYPw2x2YPⓋjlx
(Ⓥ = Strg-V).Bash, 36 Bytes
andere Lösungen
36
37
38
41
45
Wenn führende Zeilenumbrüche und zusätzlicher Speicherplatz 31 Byte akzeptiert wurden:
quelle
05AB1E ,
1312 BytesGespeichert 1 Byte dank Erik die Outgolfer (avoid Schluss string)
Probieren Sie es online!
Erläuterung
quelle
“Š¢—‚“
->„Š¢—‚
CJam (
2625 Bytes)Online-Demo
Kartesisches Produkt von sich
["known" "unknown"]
selbst, dann wird jedes Element mit dem Raum verbunden und mits
einer neuen Zeile versehen.Vielen Dank an Erik für die Ein-Byte-Speicherung.
quelle
R ,
525150 BytesProbieren Sie es online!
Überraschend kurze Substitutions- und Druckbefehle machen dies zu einer wirklich wettbewerbsfähigen R-Antwort in einer String- Herausforderung!
Auch wenn es super langweilig ist.Etwas interessanter und mit einem Byte, das dank J.Doe gespeichert wurde !Dank dieser Antwort ein weiteres Byte gespeichert, auch von J.Doe!
quelle
Haskell ,
60585351 BytesProbieren Sie es online!
Gibt eine Liste von Zeilen aus, wie sie kürzlich zulässig waren. Vielen Dank an @firefrorefiddle für den Hinweis.
-2 bytes dank cole .
58-Byte-Version:
Probieren Sie es online! Ergibt eine einzelne Zeichenfolge.
quelle
unlines
weil "Eine Liste mit vier Zeichenfolgen wäre in Ordnung, da dadurch immer noch der Abstand zwischen Wörtern erhalten bleibt." (Kommentar zur ursprünglichen Frage).C # (.NET Core) , 54 Byte
Probieren Sie es online!
quelle
Retina ,
3332 BytesProbieren Sie es online! Bearbeiten: 1 Byte dank @ovs gespeichert. Erläuterung: Dies ist fast der triviale Ansatz, einen Platzhalter für zu verwenden
known
, mit der Ausnahme, dass ich ihn hier einfach vor jedem Leerzeichen oders
einfüge, wodurch3 bis4 Bytes eingespart werden.quelle
|s
mehr den Ansatz: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8//…PHP,
55 5147 Bytesversuche es online
quelle
<?=
ist die kürzeste Option.Retina ,
3332 Bytes1 Byte mit einem Zwischendruckverfahren von Leo gespeichert.
Probieren Sie es online!
Erläuterung
Schaltet die nicht vorhandene (dh leere) Eingabe in die Zeichenfolge in der zweiten Zeile. Das scheint ziemlich seltsam, aber diese Zeichen sind Codes für das Material, das zwischen zwei Instanzen von
known[s]
in den ersten beiden Zeilen des Ergebnisses liegt. Leerzeichen und Zeilenvorschub sind nur sie selbst und sindu
es auchun
.Jetzt fügen wir
knowns
an jeder Stelle (dh am Anfang, Ende und zwischen jedem Zeichenpaar) ein.Wir entschlüsseln die
u
.Dann entfernen wir die
s
s vor Leerzeichen, dh die in der ersten Hälfte jeder Zeile, und geben das Ergebnis aus.un
Zum Schluss stellen wir beide Zeilen voran und drucken das Ergebnis erneut.Dies übertrifft den trivialen Ansatz, nur einen Platzhalter für
known
4 Bytes zu verwenden, jedoch nicht Neils effizientere Implementierung dieses Ansatzes.quelle
Shakespeare Programming Language ,
10211012993 Bytes-19 Bytes dank Joe King!
Probieren Sie es online!
quelle
the sum of
Perl 6 , 45 Bytes
Versuch es
Erweitert
Das
[X](…)
Teil erzeugtDann mit
X~
auf sie die inneren Listen zu einer Str (wegen der coerces&infix:«~»
Operator), der dabei einen Raum zwischen den Werten hinzufügt.Dann wird jeder mit einem verbunden
s
quelle
Haskell,
5752 BytesProbieren Sie es online!
quelle
APL (Dyalog) ,
644735 BytesProbieren Sie es online!
Wie?
k←'known'
-k
ist"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- äußeres Produkt mit sich selbst{⍺,' ',⍵,'s'}
- mit der Funktion, die die Argumente als formatiert{⍺} {⍵}s
,
- Die Produkttabelle in Vektor zerschlagen⍪
- In Spalten trennenquelle
Java 8,
5655 Bytes-1 Byte dank @SuperChafouin .
Erläuterung:
Probieren Sie es hier aus.
quelle
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 BytesVielen Dank an @Justin Mariner für das Golfen mit einem Byte!
Probieren Sie es online!
quelle
%1$s
und loswerdeni
: Versuchen Sie es online!Schale , 14 Bytes
Probieren Sie es online!
Erläuterung
quelle
6502 Maschinencode (C64), 48 Bytes
Online-Demo
Verwendungszweck:
sys49152
Wie es funktioniert
Der Trick besteht hier darin, einen "Schleifenzähler" für 8 Iterationen zu verwenden, wobei die Bits 7 bis 1 des Anfangswerts
1
fürunknown(s)
und0
fürknown(s)
eine Iteration sind. Dieser Zähler wird nach jeder Iteration nach links verschoben (wobei das Bit ganz links in das Übertragsflag verschoben wird ), und das Bit0
ist anfangs1
so, dass wir wissen, dass wir fertig sind, sobald das letzte Bit herausgeschoben wurde. In der ersten Iterationknown
wird gedruckt, weil beim Aufrufen des Programms das Übertragsflag gelöscht wird.In jeder Iteration wird das Ende der Zeichenfolge zwischen
<space>
und umgeschaltets<newline>
.Hier ist die kommentierte Auflistung der Demontage:
quelle
Perl 5 , 33 Bytes
Disclaimer : Ich war nicht klar , dass die Verstrebung Expansion innerhalb der möglich war ,
<...>
Operator (gelernt dank @ Grimy ‚s Antwort !) Und die clevere Erweiterung Trick von @ mit NahuelFouilleul ‘ s erstaunlich bash Antwort , ich war in der Lage , diese Lösung zu bauen. Ich werde dies auf Anfrage gerne entfernen.Probieren Sie es online!
Perl 5 , 42 Bytes
41 Byte Code + 1 für
-p
.Probieren Sie es online!
Perl 5 , 45 Bytes
Ich habe versucht, eine Alternative zu finden, konnte sie aber nicht kürzer machen ... Ich dachte, sie war anders genug, um es trotzdem zu rechtfertigen, sie hinzuzufügen.
Probieren Sie es online!
quelle
Haskell,
71665654 BytesDanke an @Leo für -3 Bytes!
Hinweis: In den Kommentaren der Frage besagte der Befehl, dass das Zurückgeben einer Liste von Zeichenfolgen in Ordnung ist
Probieren Sie es hier aus.
quelle
fmap
an kann auf gekürzt werdenmap(' ':)
:)f=
.Gelee , 15 Bytes
Probieren Sie es online!
quelle
Ruby,
5350 Bytesquelle
\n
durch einen wörtlichen Zeilenumbruch.Batch, 66 Bytes
Alternative Antwort, auch 66 Bytes:
quelle
Haxe, 71 Bytes
Probieren Sie es online!
quelle
C (gcc) ,
7066 BytesDanke an @ l4m2 für -4 Bytes!
Probieren Sie es online!
quelle
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
anstelle voni%2?" ":"s\n"
PowerShell ,
4644 BytesProbieren Sie es online!
(Fast) einfacher Stringwechsel. Verwendet Neils Ansatz zum Trimmen von zwei Bytes. Vielen Dank an Martin für den Hinweis.
Leider ist es
dreimalfünfmal drei Bytes kürzer als die interessantere produktübergreifende Methode :PowerShell ,
4947 BytesProbieren Sie es online!
quelle
T-SQL,
5654 BytesSQL unterstützt Zeilenumbrüche in Zeichenfolgenliteralen und ähnelt damit einigen anderen bereits veröffentlichten Sprachen.
EDIT : Etwas länger ( 82 Bytes ), aber etwas schlauer:
BEARBEITEN 2 : Mein Favorit bisher, mit einem Cross-Self-Join aus einer abgeleiteten Tabelle ( 79 Bytes ):
EDIT 3 : Das Ersetzungszeichen wurde von
'x'
in geändert1
, wodurch ich die Anführungszeichen entfernen und 2 Bytes sparen kann, daREPLACE
eine implizite Konvertierung in einen String erfolgt.quelle
ReRegex , 38 Bytes
Probieren Sie es online!
quelle
a/known / z/s\n/aazaunazunaazunaunaz
scheint für 36 Bytes zu funktionieren.Javascript
66 54 5350 BytesGeschichte
quelle
replace
ein Byte gespeichert .0
s entfernte und verwendete.replace(/ |s/g,'known$&')
(was jetzt nur 3 Bytes spart).