História
Você já viu este post do 9gag ? Talvez você tenha a sensação de fazer suas próprias frases. Mas então você percebe que poderá jogar um script em meia hora e nunca terá que lidar com isso.
A submissão
Seu programa receberá uma string de entrada que retornará com aspas adicionais, conforme explicado abaixo. As brechas padrão são proibidas. A saída como uma lista de linhas é permitida. Espaços à direita e linhas vazias que não interrompem a saída são permitidos.
As regras de entrada
- A entrada contém apenas caracteres ASCII imprimíveis.
- A entrada pode conter espaços. As palavras são determinadas com eles.
- É garantido que um espaço nunca será seguido por outro espaço.
- O caso de nenhuma entrada ou sequência vazia não importa.
As regras de saída
Se uma palavra for dada, o programa deverá retornar a string entre aspas.
Se a sequência de entrada tiver 2 ou mais palavras, ela retornará primeiro a entrada inicial, mas a primeira palavra estará entre aspas. Em seguida, na próxima linha, ele retorna a entrada inicial, mas com a segunda palavra entre aspas. E assim por diante pelas palavras restantes.
Em geral, o programa deve retornar quantas linhas houver palavras na entrada.
Exemplos:
test -> "test"
This is codegolf -> "This" is codegolf
This "is" codegolf
This is "codegolf"
This is a significantly longer, but not the longest testcase -> "This" is a significantly longer, but not the longest testcase
This "is" a significantly longer, but not the longest testcase
This is "a" significantly longer, but not the longest testcase
This is a "significantly" longer, but not the longest testcase
This is a significantly "longer," but not the longest testcase
This is a significantly longer, "but" not the longest testcase
This is a significantly longer, but "not" the longest testcase
This is a significantly longer, but not "the" longest testcase
This is a significantly longer, but not the "longest" testcase
This is a significantly longer, but not the longest "testcase"
Here is an another one -> "Here" is an another one
Here "is" an another one
Here is "an" another one
Here is an "another" one
Here is an another "one"
Isso é código-golfe , então a resposta de menos byte vence!
"
caracteres?''
,‘’
, ou“”
, ao invés de""
?Respostas:
vim, 38 bytes
Experimente online!
Requer o plug-in vim-surround .
Se a entrada não contiver
"
caracteres, isso poderá ser feito em 19 bytes :Aqui, registramos uma macro recursiva (
qq ... @qq@q
) que envolve uma palavra entre aspas (ysW"
), duplica a linha (Yp
), exclui as aspas (ds"
) e passa para a próxima palavra (W
) antes de se chamar recursivamente. Após o término, há duas linhas estranhas, que são excluídas comdk
.A solução completa simplesmente encapsula isso
:s/"/<C-d>/g
no início, que substitui os"
caracteres existentes por um caractere não imprimível, e:%s/<C-d>/"/g
no final, que desfaz a substituição.fonte
Haskell, 65 bytes
Retorna uma lista de linhas.
Experimente online!
fonte
\n
espaços em branco, elas se comportam de maneira inadequada quando estão presentes.~
. "A entrada pode conter espaços" - não "espaços em branco".Retina 0.8.2 , 17 bytes
Experimente online! O link inclui o conjunto de testes. Explicação:
Expanda cada espaço duplicando a linha e inserindo aspas.
Corrija a primeira e a última linha.
fonte
Geléia ,
1514 bytesExperimente online!
Quão?
fonte
JavaScript (ES6),
43 42 4138 bytesGuardado 3 bytes graças a @mazzy
Usa o não-padrão, mas é amplamente suportado
RegExp.leftContext
eRegExp.rightContext
. São muitas citações diferentes ...Experimente online!
fonte
This is a significantly "longer,"...
/(\S+)/g
funcionaria?Java,
235 183132 bytes-52 bytes por abusar de uma variedade de coisas (acesso estática, lista vs matriz, imprimir ao invés de retornar, etc. @ValueInk Thanks!)
-51 bytes por Beung @KevinCruijssen preguiçosos e deixar fazer o trabalho para me
Tente-lo online
fonte
java.util.Arrays.copyOfRange
. Se você utilizar,java.util.List
poderá usarsubList
por menos tempo e imprimir em STDOUT, em vez de criar uma matriz. Eu tenho 193 bytes com essas idéias e também abusando da palavra-chave var.String.join
coms.join
para os avisos IDE extras (e -10 bytes).Primeira tentativa de golfe com código, espero que não seja terrível e espero que não seja quebra de regra
Kotlin,
105112147117 bytes / caracteresExperimente online!
fonte
05AB1E , 14 bytes
Experimente online!
+1 byte (e funciona para o caso de ponta) graças a Emigna. -1 byte graças a Kevin!
fonte
ð¡
para lidar com entradas comotest
.»
.JavaScript,
91977578 bytesProduz uma lista de linhas como uma matriz JavaScript. A última entrada possui um espaço à direita, conforme permitido na pergunta. O código de teste grava cada entrada no console em uma linha separada para fins de demonstração.
Graças a Shaggy por 19 bytes de folga e sem espaços à esquerda - quando o operador de propagação é usado em uma matriz vazia para inicializar uma literal de matriz, nenhum slot é criado na matriz produzida pelo operador de propagação:
(A versão de 91 bytes tinha um espaço à esquerda na primeira linha, a versão de 97 bytes levou 6 bytes para removê-la.)
fonte
f
função. Caso contrário, verificado. Bom trabalho!Python 3 ,
79,69, 65 bytesExperimente online!
Raspou 10 bytes graças ao xnor. E agora são 65 bytes, conforme Erik, a solução Outgolfer. Programa termina com IndexError, mas isso é bom.
fonte
print(*l)
no Python 3 no lugar deprint(" ".join(l))
.w
ainput().split()
, atribua-o ainput()
, em seguida, nowhile
loop, atribuam
aw.split()
, o que criará uma nova lista a cada iteração para evitar problemas de referência, depois definam[i]
como'"%s"'%m[i]
eprint(*m)
.Java 8,
72716762 bytesExperimente online.
Explicação:
Explicação Regex:
fonte
Ruby com
-an
53 bytesOs sinalizadores
-an
são lidos em cada linha e divididos em$F
.Experimente online!
fonte
Rubi , 98 caracteres.
Primeira submissão de todos os tempos. Definitivamente, isso pode ser reduzido. Eu só queria obter uma resposta rapidamente.
Experimente online!
fonte
s.split
como uma variável e edite o índice que você deseja que as aspas contornem, em vez de usar a excessivamente detalhadaeach_with_index.map
. Além disso, você pode enviar o lambda anônimo sem nomeá-lo e a junção pode ser substituída por um*
operador. Isso reduz sua contagem de bytes para 64 bytes.Perl 6 ,
4340 bytesExperimente online!
Corresponde a todas as palavras possíveis e junta-se a cada lista entre aspas. Isso poderia ser um byte mais curto se pudéssemos produzir linhas na ordem inversa.
Explicação:
fonte
Reflexões , 229 bytes
Teste-o!
Eu "rapidamente" "joguei" isso em uma linguagem "engraçada" de "jogar golfe".
Olhando para todo esse espaço em branco, provavelmente poderia ser mais curto.
fonte
Haskell , 64 bytes
Experimente online!
Produz uma lista de strings. Com base na resposta de nimi .
fonte
\n
ou"
.Stax , 10 bytes
Execute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
C (gcc) ,
136133 bytesComo as funções de tokenização de C atrapalhariam a string em futuras leituras, em vez disso, calculo o número e as compensações de cada palavra e termino quando o número total de iterações do loop externo corresponder ao número de palavras.
Experimente online!
fonte
"\""+!!(i-++j)
pori-++j?"":"\""
você economiza um byte.PowerShell ,
604036 bytes-20 bytes inspirados em Arnauld
Experimente online!
O resultado tem um espaço extra e uma linha vazia na cauda.
PowerShell, sem regexp, 60 bytes
Experimente online!
Menos golfe:
fonte
The input only contains printable ASCII characters.
, 2The input may contain spaces
.. Guias e outros espaços em branco não são imprimíveis em ASCII, não é? :)JavaScript, 62 bytes
Obrigado @Shaggy por jogar fora 10 bytes
Explicação
fonte
Java (JDK) , 104 bytes
Experimente online!
fonte
R ,
9476 bytes-18 bytes graças a Giuseppe
Experimente online!
Agradecemos ao digEmAll por configurar o TIO corretamente. Recebe, por exemplo,
This is codegolf
e sai corretamenteEle usa um formato de matriz com a frase repetida
n
vezes; só precisamos alterar as entradas diagonais. Observe que geralmente, no código-golfe R, as strings são lidas comscan(,"")
, mas qualquer string pode ser usada em vez da string vazia como parâmetrowhat
(ouw
).Explicação da versão antiga não destruída:
fonte
scan
??""
, podemos reduzir para 68 bytes usandosQuote
.Este é o meu primeiro código de golfe. espero que não seja uma merda.
EDIT: reduziu para 54 bytes com uma melhor expressão regular.
** EDIÇÃO 2: por sugestões, corrigido um erro e diminuído **
JavaScript (V8) , 46 bytes
Experimente online!
fonte
C # (compilador interativo do Visual C #) com
/u:System.Text.RegularExpressions.Regex
sinalizador,5940 bytesPorta da minha resposta do Java 8 , então procure uma explicação.-19 bytes por portar @Arnauld regex 's , uma vez que o
$`
e$'
são suportados em C # .NET.Experimente online.
fonte
Elm Usando recursão,
132.130.121.111.10099 bytesGolpeou 9 bytes graças à técnica de Kevin Cruijssen e outros 22 bytes foram quebrados pelo ASCII-only . Transformado em recursão não-cauda durante o golfe.
Experimente online
85 bytes após a exposição
String
funções ao escopo atualVersão não destruída (Usando recursão da cauda)
Tente sem golfe
fonte
Japonês ,
1412 bytesTente
2 bytes salvos graças a Oliver.
fonte
PowerShell ,
7065 bytesExperimente online!
Possui suíte de teste em avaliação. Possui 1 espaço à esquerda na primeira linha e 1 à direita na última linha. Tentativa de refatorar.
fonte
Carvão , 19 bytes
Experimente online! Link é a versão detalhada do código. Nota: Espaço à direita. Explicação:
fonte
Anexo , 34 bytes
Experimente online! Função anônima retornando uma lista de linhas.
Explicação
fonte
C # (compilador interativo do Visual C #) , 123 bytes
Gostaria de saber se isso pode ser abreviado com expressões regulares.
Experimente online!
fonte