O ex-secretário de Defesa dos EUA, Donald Rumsfeld, famosa popularizou a frase "knowns conhecidos." Aqui vamos destilar seus comentários em uma estrofe de quatro linhas.
Especificamente, imprima este texto:
known knowns
known unknowns
unknown knowns
unknown unknowns
Letras maiúsculas não importam (por exemplo, Known unKnowns
é bom), e uma única nova linha à direita é aceitável, mas nenhuma outra alteração de formatação é permitida. Isso significa um espaço único entre as palavras e LF
(59 bytes) ou CR/LF
(62 bytes) entre as linhas.
Regras
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
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
fonte
fonte
Respostas:
Python 2 ,
5452 bytes-2 bytes graças ao xnor
Experimente online!
Os resultados de
/
e%
serão[[2, 2], [2, 0], [0, 2], [0, 0]]
os índices iniciais, removendo oun
when2
, mantendo a string inalterada quando0
fonte
k
ser'unknowns'
, você pode corrigir comk[i/3:7]
e salvar dois bytes.Vim
2825 bytesEsta é a minha primeira resposta Vim, todas as dicas de golfe são bem-vindas.
Obrigado Lynn por escrever o script python para fazer essa animação fantástica.
Isso também pode ser executado pelo V Experimente Online!
Também 25:
fonte
2iunknown ␛rsYPw2x2YP2xj.
ou uma ligeira variação2iunknown ␛rsYPw2x2YPⓋjlx
(Ⓥ = Ctrl-V).bash, 36 bytes
outras soluções
36.
37.
38.
41.
45
se nova linha inicial e espaço extra foram aceitos 31 bytes:
fonte
05AB1E ,
1312 bytesEconomizou 1 byte graças a Erik, o Outgolfer (evite fechar a corda)
Experimente online!
Explicação
fonte
“Š¢—‚“
->„Š¢—‚
CJam (
2625 bytes)Demonstração online
Produto cartesiano de
["known" "unknown"]
si mesmo, então cada elemento se juntava ao espaço e com o sufixos
e uma nova linha.Agradecemos a Erik pela economia de um byte.
fonte
R ,
525150 bytesExperimente online!
Os comandos surpreendentemente curtos de substituição e impressão fazem desta uma resposta R realmente competitiva em um desafio de string !
Mesmo que seja super chato.Um pouco mais interessante agora, e com um byte salvo graças ao J.Doe !Salvo outro byte, graças a esta resposta, também por J.Doe!
fonte
Haskell ,
60585351 bytesExperimente online!
Rende uma lista de linhas como foi permitido recentemente. Obrigado a @firefrorefiddle por apontar.
-2 bytes graças a cole .
Versão de 58 bytes:
Experimente online! Rende uma única sequência.
fonte
unlines
porque "Uma lista de quatro strings seria boa, pois isso ainda preserva o espaço entre as palavras;" (Comentário à pergunta original).C # (.NET Core) , 54 bytes
Experimente online!
fonte
Retina ,
3332 bytesExperimente online! Editar: salvou 1 byte graças a @ovs. Explicação: Essa é quase a abordagem trivial do uso de um espaço reservado para
known
, exceto aqui, basta inseri-lo antes de cada espaço ous
, o que economiza34 bytes.fonte
|s
abordagem: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8///PHP,
55 5147 bytesexperimente online
fonte
<?=
é a opção mais curta.Retina ,
3332 bytesEconomizou 1 byte usando uma abordagem de impressão intermediária da Leo.
Experimente online!
Explicação
Transforma a entrada inexistente (ou seja, vazia) na string na segunda linha. Essa parece bastante estranha, mas esses caracteres são códigos para as coisas que vão entre duas instâncias das
known[s]
duas primeiras linhas do resultado. Espaço e avanço de linha são apenas eles mesmos eu
sãoun
.Agora inserimos
knowns
em todas as posições (ou seja, no começo, no final e entre cada par de caracteres).Decodificamos o
u
.Então nos livramos dos
s
s na frente dos espaços, ou seja, aqueles na primeira metade de cada linha, e imprimimos o resultado.E finalmente anexamos as
un
duas linhas e imprimimos o resultado novamente.Isso supera a abordagem trivial de apenas usar um espaço reservado
known
por 4 bytes, mas não a implementação mais eficiente de Neil dessa abordagem.fonte
Linguagem de programação de Shakespeare ,
10211012993 bytes-19 bytes graças a Joe King!
Experimente online!
fonte
the sum of
Perl 6 , 45 bytes
Tente
Expandido
A
[X](…)
peça geraEm seguida, usá
X~
-lo coage as listas internas em um Str (por causa do&infix:«~»
operador), o que adiciona um espaço entre os valores.Em seguida, cada um é unido a um
s
fonte
Haskell,
5752 bytesExperimente online!
fonte
APL (Dyalog) ,
644735 bytesExperimente online!
Quão?
k←'known'
-k
é"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- produto externo consigo mesmo{⍺,' ',⍵,'s'}
- com a função que formata os argumentos como{⍺} {⍵}s
,
- esmagar a tabela do produto em vetor⍪
- separado para colunasfonte
Java 8,
5655 bytes-1 byte graças a @SuperChafouin .
Explicação:
Experimente aqui.
fonte
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 bytesObrigado a Justin Mariner por jogar um byte!
Experimente online!
fonte
%1$s
e se livrar dei
: Experimente online!Casca , 14 bytes
Experimente online!
Explicação
fonte
Código da máquina 6502 (C64), 48 bytes
Demonstração online
Uso:
sys49152
Como funciona
O truque aqui é usar um "contador de loop" para 8 iterações em que os bits 7 a 1 do valor inicial são
1
paraunknown(s)
e0
paraknown(s)
em uma iteração. Esse contador é deslocado para a esquerda após cada iteração (colocando o bit mais à esquerda no sinalizador de transporte) e o bit0
é inicialmente,1
para que saibamos que terminamos assim que o último bit foi deslocado. Na primeira iteração,known
é impresso porque, ao chamar o programa, o sinalizador de transporte fica limpo.Em cada iteração, o final da sequência é alternado entre
<space>
es<newline>
.Aqui está a lista de desmontagem comentada:
fonte
Perl 5 , 33 bytes
Disclaimer : Eu não percebi que a expansão cinta era possível dentro do
<...>
operador (aprendi graças a @ Grimy 's resposta !) Eo usando o truque de expansão inteligente de @ NahuelFouilleul ' s resposta festa incrível , eu era capaz de construir esta solução. É com satisfação que removerei isso a qualquer um dos pedidos deles.Experimente online!
Perl 5 , 42 bytes
Código de 41 bytes + 1 para
-p
.Experimente online!
Perl 5 , 45 bytes
Tentou encontrar uma alternativa, mas não conseguiu reduzi-la ... Pensei que fosse diferente o suficiente para justificar a adição de qualquer maneira.
Experimente online!
fonte
Haskell,
71665654 bytesGraças a @Leo por -3 bytes!
Nota: Nos comentários da pergunta, o op disse que retornar uma lista de strings é bom
Experimente aqui.
fonte
fmap
em diante pode ser encurtado paramap(' ':)
:)f=
.Gelatina , 15 bytes
Experimente online!
fonte
Ruby,
5350 bytesfonte
\n
por uma nova linha literal.Lote, 66 bytes
Resposta alternativa, também 66 bytes:
fonte
Haxe, 71 bytes
Experimente online!
fonte
C (gcc) ,
7066 bytesObrigado a @ l4m2 por -4 bytes!
Experimente online!
fonte
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
vez dei%2?" ":"s\n"
PowerShell ,
4644 bytesExperimente online!
(Quase) simples substituição de string. Usa a abordagem de Neil para aparar dois bytes. Obrigado a Martin por apontar isso.
Infelizmente, é mais curto que o método de produto cruzado mais interessante em
trêscincotrês bytes:PowerShell ,
4947 bytesExperimente online!
fonte
T-SQL,
5654 bytesO SQL suporta quebras de linha dentro de literais de seqüência de caracteres, tão semelhantes a outros idiomas já publicados.
EDIT : ligeiramente mais longo ( 82 bytes ), mas um pouco mais inteligente:
EDIT 2 : Meu favorito até agora, usando uma junção cruzada de uma tabela derivada ( 79 bytes ):
EDIT 3 : Alterou o caractere de substituição de
'x'
para1
, o que me permite remover as aspas e salvar 2 bytes, poisREPLACE
faz uma conversão implícita em string.fonte
ReRegex , 38 bytes
Experimente online!
fonte
a/known / z/s\n/aazaunazunaazunaunaz
parece funcionar por 36 bytes.Javascript
66 54 5350 bytesHistória
fonte
replace
salva um byte.0
usando.replace(/ |s/g,'known$&')
(que agora salva apenas 3 bytes).