Dada uma lista ou sequência delimitada, imprima uma lista ou sequência delimitada com o primeiro caractere de cada palavra uma palavra depois.
Para esse desafio, uma "palavra" consiste apenas em todos os caracteres ASCII imprimíveis, exceto no espaço, nova linha e caractere de tabulação.
Por exemplo, pegue a sequência "Boa tarde, mundo!" (delimitado por espaço):
1. String
"Good afternoon, World!"
2. Get the first characters:
"[G]ood [a]fternoon, [W]orld!"
3. Move the characters over. The character at the end gets moved to the beginning.
"[W]ood [G]fternoon, [a]orld!"
4. Final string
"Wood Gfternoon, aorld!"
Isso é código-golfe , então o código mais curto vence!
Casos de teste:
Input -> output (space-delimited)
"Good afternoon, World!" -> "Wood Gfternoon, aorld!"
"This is a long sentence." -> "shis Ts i aong lentence."
"Programming Puzzles and Code Golf" -> Grogramming Puzzles Pnd aode Colf"
"Input -> output" -> "onput I> -utput"
"The quick brown fox jumped over the lazy dog." -> "dhe Tuick qrown box fumped jver ohe tazy log."
"good green grass grows." -> "good green grass grows."
Respostas:
05AB1E ,
76 bytesExplicação:
Experimente online!
fonte
Japonês ,
111098 bytesAproveita o empacotamento de índice do Japt e a indexação negativa.
Experimente online
Explicação
fonte
¸
h
foi uma boa ideia. Eu vim com o£g´Y ¯1 +XÅ
que pode se tornar £ XhUg´Y ¯1 usando sua técnica.Haskell , 43 bytes
Experimente online! Usa uma lista de cadeias de caracteres para entrada e saída.
Lembra a primeira letra da palavra anterior
p
e a torna recursivamente a primeira letra da palavra atual enquanto envia a nova primeira letra da cadeia. A primeira letra anterior é inicializada como a primeira letra da última palavra.fonte
Ruby,
857763 bytesCertamente isso pode ser muito mais curto.
Edit: Obrigado por @manatwork para coletar -> mapa
fonte
.collect
e.each
com.map
.-p
flag (+1 byte) ei=-2;gsub(r=/\b\w/){$_.scan(r)[i+=1]}
para o melhor golfeGelatina , 6 bytes
Experimente online!
Graças a Dennis por ler as regras melhor do que eu, isso retorna uma lista de palavras. Não funciona como um programa completo.
fonte
CJam ,
12109 bytesGuardado 1 byte graças a jimmy23013
Recebe a entrada como uma lista de palavras.
Experimente online!
Explicação
fonte
)o
para1m>
.V , 7 bytes
Experimente online!
Explicação:
fonte
JavaScript (ES6), 46 bytes
Aproveita o fato de
slice(-1)
retornar o último elemento de uma matriz.Snippet
Mostrar snippet de código
fonte
Vim,
16, 9 bytes7 bytes salvos graças ao @Wossname!
É necessário inserir uma palavra por linha, por exemplo
Eu acredito que isso deve ser bom, uma vez que aceitar a entrada como uma lista é permitido.
Experimente online!
fonte
^vGdjPGd$ggP
(onde ^ v é a [control + v] combinação de teclas, só não se esqueça de começar com o cursor no canto superior esquerdo e estar em modo de comando)dd -> D
,gg -> }
) Obrigado pela dica!> <> ,
4445 bytesAssume palavras separadas por espaço.
Correction by Aaron adicionou 1 byte
fonte
Python 2, 74 bytes
Experimente online
-5 bytes, graças a @Rod
fonte
S[:-1]
pode ser reduzido paraS
; fechando listas de diferentes comprimentos Truncates automaticamente o que for maiorHaskell , 50 bytes
Entrada e saída são como listas de palavras.
fonte
f=
.PHP, 62 bytes
fonte
C #,
7877 bytesCompila para uma
Func<List<string>, IEnumerable<string>>
versão completa / formatada:fonte
Braquilog , 12 bytes
Experimente online!
Explicação
fonte
R,
7270 bytesfunction(x)paste0(substr(x,1,1)[c(y<-length(x),2:y-1)],substring(x,2))
Experimente online
2 bytes salvos graças a Giuseppe.
Entrada e saída são listas. Pega uma subcadeia que consiste nas primeiras letras, alterna a última para a frente e cola com uma subcadeia do restante de cada palavra. O passo do ciclismo é um assassino, mas não consigo descobrir uma maneira de reduzi-lo ainda mais.
fonte
2:y-1
vez de,1:(y-1)
desde que:
tenha precedência sobre o-
que economiza 2 bytes.substring
como um argumento de funçãoPython 2 + Numpy, 104 bytes
fonte
APL (Dyalog) , 6 bytes
Toma matriz com uma palavra por coluna.
Experimente online!
¯1∘⌽
gire um passo para a direita@
às1
linha 1fonte
Mathematica, 59 bytes
Experimente online!
Pega e retorna uma lista de palavras.
Se você preferir pegar e retornar cadeias, isso funciona para 87 bytes:
fonte
Retina,
463731 bytesExperimente Online
Ainda sendo jogado ..
fonte
(.*)
e$3
?+
na primeira linha a um*
você virar(.* .)
na terceira linha a(.*)
para -2 bytes. Experimente Online!kdb +,
2522 bytesSolução:
Exemplo:
Explicação:
Extra:
Uma versão que usa uma sequência regular (37 bytes):
fonte
Perl 5 , 40 bytes
39 bytes de código + 1 para
-a
Experimente online!
fonte
Retina ,
2520 bytesA contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
Entrada e saída são separadas por alimentação de linha. O conjunto de testes executa a conversão de E / S necessária da separação de espaço.
fonte
Mathematica, 134 bytes
fonte
Pitão, 12 bytes
Pega uma lista de palavras e retorna uma lista de palavras.
Tente!
fonte
Java (OpenJDK 8) , 97 bytes
Experimente online!
fonte
C,
10677 bytes-29 bytes de scottinet
Modifica a sequência no local.
Ungolfed:
fonte
J , 34 bytes
Experimente online!
fonte
Casca , 11 bytes
Entrada e saída como uma lista de strings, experimente online!
(O cabeçalho apenas transforma a entrada em uma lista de palavras e une a lista de saída com espaços.)
Explicação
Alternativa, 11 bytes
Experimente online!
fonte
AWK , 63 bytes
Experimente online!
Parece que deve haver uma maneira de reduzir a redundância, mas não estou vendo.
Nota: o link TIO possui 4 bytes extras para permitir a entrada de várias linhas.
fonte