El ex secretario de Defensa estadounidense, Donald Rumsfeld, famoso popularizó la frase "conocidos conocidos". Aquí vamos a destilar sus comentarios en una estrofa de cuatro líneas.
Específicamente, envíe este texto:
known knowns
known unknowns
unknown knowns
unknown unknowns
La capitalización no importa (por ejemplo, Known unKnowns
está bien), y una nueva línea final es aceptable, pero no se permiten otros cambios de formato. Eso significa un espacio único entre las palabras, y LF
(59 bytes) o CR/LF
(62 bytes) entre las líneas.
Reglas
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf y gana el código más corto (en bytes).
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
fuente
fuente
Respuestas:
Python 2 ,
5452 bytes-2 bytes gracias a xnor
Pruébalo en línea!
Los resultados de
/
y%
serán[[2, 2], [2, 0], [0, 2], [0, 0]]
los índices iniciales, eliminando elun
cuándo2
, manteniendo la cadena inalterada cuando0
fuente
k
sea'unknowns'
, se puede corregir conk[i/3:7]
y guardar dos bytes.Vim
2825 bytesEsta es mi primera respuesta de Vim, cualquier consejo de golf es bienvenido.
Gracias Lynn por escribir el script de Python para hacer esa animación fantástica.
Esto también puede ser ejecutado por V ¡ Pruébelo en línea!
También 25:
fuente
2iunknown ␛rsYPw2x2YP2xj.
o una ligera variación2iunknown ␛rsYPw2x2YPⓋjlx
(Ⓥ = Ctrl-V).bash, 36 bytes
otras soluciones
36
37
38
41
45
si la nueva línea inicial y el espacio adicional se aceptaran 31 bytes:
fuente
05AB1E ,
1312 bytesGuardado 1 byte gracias a Erik the Outgolfer (evita cerrar cadena)
Pruébalo en línea!
Explicación
fuente
“Š¢—‚“
->„Š¢—‚
CJam (
2625 bytes)Demostración en línea
Producto cartesiano de
["known" "unknown"]
sí mismo, luego cada elemento se unió con espacio y sufijo cons
una nueva línea.Gracias a Erik por un ahorro de un byte.
fuente
R ,
525150 bytesPruébalo en línea!
Sorprendentemente cortos comandos de sustitución e impresión hacen de esta una respuesta R realmente competitiva en un desafío de cadena
Incluso si es súper aburrido.Un poco más interesante ahora, y con un byte guardado gracias a J.Doe !¡Ahorré otro byte gracias a esta respuesta, también de J.Doe!
fuente
Haskell ,
60585351 bytesPruébalo en línea!
Produce una lista de líneas como se permitió recientemente. Gracias a @firefrorefiddle por señalarlo.
-2 bytes gracias a cole .
Versión de 58 bytes:
Pruébalo en línea! Produce una sola cuerda.
fuente
unlines
porque "Una lista de cuatro cadenas estaría bien, ya que aún conserva el espacio entre las palabras"; (Comentario a la pregunta original).C # (.NET Core) , 54 bytes
Pruébalo en línea!
fuente
Retina ,
3332 bytesPruébalo en línea! Editar: Guardado 1 byte gracias a @ovs. Explicación: Este es casi el enfoque trivial de usar un marcador de posición
known
, excepto que aquí simplemente lo inserto antes de cada espacio os
, lo que ahorra34 bytes.fuente
|s
enfoque: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8//…PHP,
55 5147 bytespruébalo en línea
fuente
<?=
Es la opción más corta.Retina ,
3332 bytesSe guardó 1 byte con un enfoque de impresión intermedio de Leo.
Pruébalo en línea!
Explicación
Convierte la entrada inexistente (es decir, vacía) en la cadena en la segunda línea. Ese parece bastante extraño, pero estos personajes son códigos para las cosas que van entre dos instancias
known[s]
en las dos primeras líneas del resultado. El espacio y el salto de línea son solo ellos mismos y lou
sonun
.Ahora insertamos
knowns
en cada posición (es decir, al principio, al final y entre cada par de caracteres).Decodificamos el
u
.Luego nos deshacemos de la
s
s delante de los espacios, es decir, los de la primera mitad de cada línea, e imprimimos el resultado.Y finalmente anteponemos
un
ambas líneas e imprimimos el resultado nuevamente.Esto supera el enfoque trivial de solo usar un marcador de posición
known
por 4 bytes, pero no la implementación más eficiente de ese enfoque por parte de Neil .fuente
Lenguaje de programación Shakespeare ,
10211012993 bytes-19 bytes gracias a Joe King!
Pruébalo en línea!
fuente
the sum of
Perl 6 , 45 bytes
Intentalo
Expandido
La
[X](…)
parte generaLuego, usarlo
X~
coacciona las listas internas en un Str (debido al&infix:«~»
operador), que al hacerlo agrega un espacio entre los valores.Entonces cada uno se une con un
s
fuente
Haskell,
5752 bytesPruébalo en línea!
fuente
APL (Dyalog) ,
644735 bytesPruébalo en línea!
¿Cómo?
k←'known'
-k
es"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- producto externo consigo mismo{⍺,' ',⍵,'s'}
- con la función que formatea los argumentos como{⍺} {⍵}s
,
- aplastar la tabla de productos en vector⍪
- separado a columnasfuente
Java 8,
5655 bytes-1 byte gracias a @SuperChafouin .
Explicación:
Pruébalo aquí
fuente
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 bytes¡Gracias a @Justin Mariner por jugar al golf un byte!
Pruébalo en línea!
fuente
%1$s
y lo eliminai
: ¡ Pruébelo en línea!Casco , 14 bytes
Pruébalo en línea!
Explicación
fuente
6502 código máquina (C64), 48 bytes
Demostración en línea
Uso:
sys49152
Cómo funciona
El truco aquí es usar un "contador de bucles" para 8 iteraciones donde los bits 7 a 1 del valor inicial son
1
paraunknown(s)
y0
paraknown(s)
en una iteración. Este contador se desplaza hacia la izquierda después de cada iteración (desplazando el bit más a la izquierda hacia el indicador de acarreo) y el bit0
es inicialmente,1
por lo que sabemos que hemos terminado una vez que se desplazó el último bit. En la primera iteración,known
se imprime porque al llamar al programa, el indicador de acarreo está claro.En cada iteración, el final de la cadena se alterna entre
<space>
ys<newline>
.Aquí está el listado de desmontaje comentado:
fuente
Perl 5 , 33 bytes
Descargo de responsabilidad : no me di cuenta de que era posible la expansión de llaves dentro del
<...>
operador (¡aprendí gracias a la respuesta de @ Grimy !) Y al usar el ingenioso truco de expansión de la sorprendente respuesta de @ NahuelFouilleul , pude construir esta solución. Felizmente eliminaré esto a cualquiera de sus solicitudes.Pruébalo en línea!
Perl 5 , 42 bytes
Código de 41 bytes + 1 para
-p
.Pruébalo en línea!
Perl 5 , 45 bytes
Intenté encontrar una alternativa, pero no pude hacerlo más corto ... Pensé que era lo suficientemente diferente como para justificar la adición de todos modos.
Pruébalo en línea!
fuente
Haskell,
71665654 bytes¡Gracias a @Leo por -3 bytes!
Nota: En los comentarios de la pregunta, el operador dijo que devolver una lista de cadenas está bien
Pruébalo aquí
fuente
fmap
adelante se puede acortar amap(' ':)
:)f=
.Jalea , 15 bytes
Pruébalo en línea!
fuente
Ruby,
5350 bytesfuente
\n
con una nueva línea literal.Lote, 66 bytes
Respuesta alternativa, también 66 bytes:
fuente
Haxe, 71 bytes
Pruébalo en línea!
fuente
C (gcc) ,
7066 bytes¡Gracias a @ l4m2 por -4 bytes!
Pruébalo en línea!
fuente
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
lugar dei%2?" ":"s\n"
PowerShell ,
4644 bytesPruébalo en línea!
(Casi) simple reemplazo de cadena. Utiliza el enfoque de Neil para recortar dos bytes. Gracias a Martin por señalar eso.
Lamentablemente, es más corto que el método de productos cruzados más interesante en
trescincotres bytes:PowerShell ,
4947 bytesPruébalo en línea!
fuente
T-SQL,
5654 bytesSQL admite saltos de línea dentro de literales de cadena, de manera similar a algunos otros idiomas ya publicados.
EDITAR : Ligeramente más largo ( 82 bytes ), pero un poco más inteligente:
EDIT 2 : Mi favorito hasta ahora, usando una unión cruzada de una tabla derivada ( 79 bytes ):
EDITAR 3 : Cambió el carácter de reemplazo de
'x'
a1
, lo que me permite eliminar las comillas a su alrededor y guardar 2 bytes, ya queREPLACE
hace una conversión implícita a cadena.fuente
ReRegex , 38 bytes
Pruébalo en línea!
fuente
a/known / z/s\n/aazaunazunaazunaunaz
parece funcionar para 36 bytes.Javascript
66 54 5350 bytesHistoria
fuente
replace
un byte.0
sy usar.replace(/ |s/g,'known$&')
(que ahora solo ahorra 3 bytes).