L'ancien secrétaire américain à la Défense, Donald Rumsfeld, a popularisé l'expression "connu, connu". Nous allons ici distiller ses remarques dans une strophe de quatre lignes.
Plus précisément, affichez ce texte:
known knowns
known unknowns
unknown knowns
unknown unknowns
La capitalisation n'a pas d'importance (par exemple, ça Known unKnowns
va), et une nouvelle nouvelle ligne est acceptable, mais aucune autre modification de mise en forme n'est autorisée. Cela signifie un seul espace entre les mots et LF
(59 octets) ou CR/LF
(62 octets) entre les lignes.
Règles
- Un programme complet ou une fonction sont acceptables. Si une fonction est utilisée, vous pouvez renvoyer le résultat plutôt que de l’imprimer.
- Les failles standard sont interdites.
- Il s’agit du code-golf, donc toutes les règles de golf habituelles s’appliquent et le code le plus court (en octets) gagne.
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
la source
la source
Réponses:
Python 2 ,
5452 octets-2 octets grâce à xnor
Essayez-le en ligne!
Les résultats de
/
et%
seront[[2, 2], [2, 0], [0, 2], [0, 0]]
les index de départ, en supprimant les élémentsun
when2
, en conservant la chaîne inchangée lorsque0
la source
k
être'unknowns'
, vous pouvez corriger aveck[i/3:7]
et enregistrer deux octets.Vim
2825 octetsCeci est ma première réponse à Vim, tout conseil de golf est le bienvenu.
Merci Lynn d’ avoir écrit le script Python pour réaliser cette animation fantastique.
Cela peut également être géré par V Essayez-le en ligne!
Aussi 25:
la source
2iunknown ␛rsYPw2x2YP2xj.
ou une légère variation2iunknown ␛rsYPw2x2YPⓋjlx
(= Ctrl-V).bash, 36 octets
d'autres solutions
36
37
38
41
45
si les espaces de début de ligne et les espaces supplémentaires ont été acceptés, 31 octets:
la source
05AB1E ,
1312 octetsEnregistré 1 octet grâce à Erik the Outgolfer (éviter de fermer la chaîne)
Essayez-le en ligne!
Explication
la source
“Š¢—‚“
->„Š¢—‚
CJam (
26 à25 octets)Démo en ligne
Produit cartésien de
["known" "unknown"]
avec lui-même, puis chaque élément joint à un espace et suffixe avecs
une nouvelle ligne.Merci à Erik pour une sauvegarde d'un octet.
la source
R ,
525150 octetsEssayez-le en ligne!
Une substitution étonnamment courte et des commandes d'impression en font une réponse R réellement compétitive dans un défi de chaînes !
Même si c'est super ennuyeux.Légèrement plus intéressant maintenant, et avec un octet sauvegardé grâce à J.Doe !J'ai sauvé un autre octet grâce à cette réponse, également de J.Doe!
la source
Haskell ,
60585351 octetsEssayez-le en ligne!
Donne une liste de lignes comme cela a été récemment autorisé. Merci à @firefrorefiddle pour l'avoir signalé.
-2 octets grâce à Cole .
Version de 58 octets:
Essayez-le en ligne! Donne une seule chaîne.
la source
unlines
car "Une liste de quatre chaînes serait OK, car cela préservera tout de même l'espace entre les mots;" (Commentaire à la question initiale).C # (.NET Core) , 54 octets
Essayez-le en ligne!
la source
Retina ,
3332 octetsEssayez-le en ligne! Edit: 1 octet enregistré grâce à @ovs. Explication: C’est une approche presque triviale qui consiste à utiliser un espace réservé pour
known
, sauf que je l’insère simplement avant chaque espace ous
, ce qui permet d’économiser3 à4 octets.la source
|s
approche plus: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8//...PHP,
55 5147 octetsessayez-le en ligne
la source
<?=
est l'option la plus courte.Retina ,
3332 octetsEnregistré 1 octet en utilisant une approche d'impression intermédiaire de Leo.
Essayez-le en ligne!
Explication
Met l'entrée non-existante (c'est-à-dire vide) dans la chaîne sur la deuxième ligne. Celui-ci semble assez étrange, mais ces caractères sont des codes pour le contenu qui se situe entre deux occurrences des
known[s]
deux premières lignes du résultat. L'espace et le saut de ligne ne sont eux-mêmes etu
sontun
.Maintenant, nous insérons
knowns
à chaque position (c'est-à-dire au début, à la fin et entre chaque paire de caractères).Nous décodons le
u
.Ensuite, on supprime les
s
points situés devant les espaces, c'est-à-dire ceux situés dans la première moitié de chaque ligne, et on affiche le résultat.Et finalement nous ajoutons
un
les deux lignes et imprimons à nouveau le résultat.Cela bat l'approche triviale de simplement utiliser un espace réservé pour
known
4 octets, mais pas la mise en œuvre plus efficace de cette approche par Neil .la source
Shakespeare Programming Language ,
10211012993 octets-19 octets grâce à Joe King!
Essayez-le en ligne!
la source
the sum of
Perl 6 , 45 octets
L'essayer
Étendu
La
[X](…)
pièce génèreEnsuite, son utilisation
X~
convertit les listes internes en un Str (à cause de l'&infix:«~»
opérateur), ce qui ajoute un espace entre les valeurs.Puis chacun se joint à un
s
la source
Haskell,
5752 octetsEssayez-le en ligne!
la source
APL (Dyalog) ,
644735 octetsEssayez-le en ligne!
Comment?
k←'known'
-k
est"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- produit extérieur avec lui-même{⍺,' ',⍵,'s'}
- avec la fonction qui formate les arguments comme{⍺} {⍵}s
,
- briser la table de produits en vecteur⍪
- séparé des colonnesla source
Java 8,
5655 octets-1 octet grâce à @SuperChafouin .
Explication:
Essayez ici.
la source
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 octetsMerci à @Justin Mariner pour avoir joué un octet au golf!
Essayez-le en ligne!
la source
%1$s
et vous en débarrassezi
: essayez-le en ligne!Husk , 14 octets
Essayez-le en ligne!
Explication
la source
6502 code machine (C64), 48 octets
Démo en ligne
Usage:
sys49152
Comment ça marche
L'astuce consiste ici à utiliser un "compteur de boucle" pour 8 itérations où les bits 7 à 1 de la valeur initiale sont
1
pourunknown(s)
et0
pourknown(s)
une itération. Ce compteur est décalé vers la gauche après chaque itération (en déplaçant le bit le plus à gauche dans l'indicateur de report) et le bit0
est initialement1
indiqué pour que nous sachions que nous avons terminé une fois que le dernier bit a été décalé. À la première itération,known
est imprimé car lors de l’appel du programme, le drapeau de report est dégagé.A chaque itération, la fin de la chaîne est basculée entre
<space>
ets<newline>
.Voici la liste de désassemblage commentée:
la source
Perl 5 , 33 octets
Avertissement : Je ne savais pas que l' expansion de hauban a été possible au sein de l'
<...>
opérateur (appris grâce à @ Grimy 's réponse !) Et en utilisant l'astuce d'expansion intelligente de @ NahuelFouilleul est bash étonnante réponse , je suis en mesure de construire cette solution. Je supprimerai volontiers ceci à l'une ou l'autre de leurs demandes.Essayez-le en ligne!
Perl 5 , 42 octets
Code de 41 octets + 1 pour
-p
.Essayez-le en ligne!
Perl 5 , 45 octets
J'ai essayé de trouver une alternative, mais je ne pouvais pas la raccourcir ... Je pensais que c'était assez différent pour justifier l'ajout de toute façon.
Essayez-le en ligne!
la source
Haskell,
71665654 octetsMerci à @Leo pour -3 octets!
Remarque: dans les commentaires de la question, le responsable de l'opération a déclaré qu'il est acceptable de renvoyer une liste de chaînes.
Essayez ici.
la source
fmap
peut être réduite àmap(' ':)
:)f=
.Gelée , 15 octets
Essayez-le en ligne!
la source
Ruby,
5350 octetsla source
\n
par une nouvelle ligne.Lot, 66 octets
Réponse alternative, également 66 octets:
la source
Haxe, 71 octets
Essayez-le en ligne!
la source
C (gcc) ,
70 à66 octetsMerci à @ l4m2 pour -4 octets!
Essayez-le en ligne!
la source
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
lieu dei%2?" ":"s\n"
PowerShell ,
4644 octetsEssayez-le en ligne!
(Presque) remplacement de chaîne simple. Utilise l'approche de Neil pour couper deux octets. Merci à Martin pour l'avoir signalé.
Malheureusement, il est plus court que la méthode plus intéressante de produits croisés de
troiscinqtrois octets:PowerShell ,
49 à47 octetsEssayez-le en ligne!
la source
T-SQL,
5654 octetsSQL prend en charge les sauts de ligne dans les littéraux de chaîne, si semblables à d'autres langues déjà publiées.
EDIT : légèrement plus long ( 82 octets ), mais un peu plus intelligent:
EDIT 2 : Mon préféré jusqu'à présent, en utilisant une auto-jointure croisée à partir d'une table dérivée ( 79 octets ):
EDIT 3 : Changement du caractère de remplacement de
'x'
à1
, ce qui me permet de supprimer les guillemets et de sauvegarder 2 octets, carREPLACE
une conversion implicite en chaîne.la source
ReRegex , 38 octets
Essayez-le en ligne!
la source
a/known / z/s\n/aazaunazunaazunaunaz
semble fonctionner pour 36 octets.Javascript
66 54 5350 octetsHistoire
la source
replace
enregistrer un octet.0
s et en utilisant.replace(/ |s/g,'known$&')
(qui enregistre maintenant que 3 octets).