Desafio
Robin gosta de ter sua declaração de variáveis na forma de uma flecha. Aqui está como ele faz isso:
- Insira qualquer número de strings
- Encomende-os por comprimento crescente
Produza-os ordenados pelo meio para formar aproximadamente uma ponta de seta negativa, desta forma (o que for melhor para os jogadores):
5 or 4 3 2 1 1 2 3 4 5
Casos de teste
Entrada:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Saída:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Entrada:
a
bb
cc
Saída (ambas são válidas):
bb
a
cc
cc
a
bb
Entrada:
one
four
seven
fifteen
Saída possível (a única outra saída válida é o seu espelho vertical):
seven
one
four
fifteen
Notas
As strings estão em camelCase e não têm números ou caracteres especiais, apenas letras minúsculas e maiúsculas.
A entrada pode ser o que você quiser: separada por vírgula como uma sequência, matriz, ... Qualquer formato de E / S é permitido.
- Entre strings com o mesmo comprimento, qualquer pedido é aceito.
Respostas:
Python 2 , 47 bytes
Experimente online!
fonte
[::-2]
diretamente para salvar 5 bytes.R ,
6348 bytesExperimente online!
Classifique por comprimentos de sequência e, em seguida, combine a lista invertida com a lista classificada e, finalmente, pegue cada segundo elemento, começando no índice 1 baseado em 1.
fonte
o<-L[...
A outra maneira de 'variáveis de seta'. Um aspecto menos importante,pryr::f(...)
trabalha aqui por 46 anos. Experimente online!R + pryr
motivo pelo qual eu normalmente evito fazê-lo, a menos que haja uma boa razão para - como em questões de teoria dos números,numbers
seja indispensável.Javascript 77 bytes
Recebe a entrada como uma matriz de seqüências de caracteres, gera uma matriz de seqüências de caracteres classificada por setas.
Explicação
fonte
f=
. 77f=x=>x?f(x-1)
. Nesse caso, você precisa incluirf
uma vez que está chamando em sua função. No entanto, como você não está usando recursão, não precisa incluirf
. Existem vários posts no Meta, este parece explicar um pouco melhor. codegolf.meta.stackexchange.com/a/9032/8340C # (compilador interativo do Visual C #) , 89 bytes
Experimente online!
fonte
K (oK) , 24 bytes
Solução:
Experimente online!
Explicação:
Gere a
6 4 2 0 1 3 5
sequência, use-a para indexar os comprimentos crescentes de entrada e use-a para indexar na matriz original:fonte
Geléia ,
98 bytesExperimente online!
também é 8 bytes.
Obrigado a @EriktheOutgolfer e @JonathanAllan por ambos oferecerem golfe para salvar um byte.
fonte
Ṛ€1¦
pode se tornarm"-
.LÞŒœṚ;¥/
Ruby , 51 bytes
Experimente online!
fonte
05AB1E ,
65 bytesGuardado 1 byte graças a Kevin Cruijssen
E / S é uma lista de cadeias.
O link é modificado para E / S separada por nova linha para facilitar o teste.
Experimente online!
Explicação
fonte
R
e substituir«
pori
para salvar um byte, uma vez que a terceira regra de marcador permite as duas versões de desintercalação.J , 11 bytes
Experimente online!
Separamos primeiro.
Em seguida, reduzimos o formulário da lista da direita para a esquerda, mas alternando de que lado colocamos o novo elemento. Feito.
fonte
PowerShell , 66 bytes
Experimente online!
Recebe entrada por meio de splatting, que se manifesta no TIO como argumentos separados da linha de comando.
sort
s nol
mecanismo, armazena isso em$a
e constrói um intervalo de1
até ascount
cadeias de entrada. Depois, extraímos apenas os ímpares?{$_%2}
e os alimentamos em um loop|%{...}
. A cada iteração, colocamos o "último", depois o "terceiro do último" e assim por diante$a[-$_]
. Separadamente, também acumulamos$x
o "segundo do último", o "quarto do último", etc. Fora do loop e o pipeline é liberado (para que esses elementos sejam gerados) e depois geramos$x
. Nos dois casos, a saída padrão nos fornece novas linhas automaticamente entre os itens.fonte
PHP ,
144141 bytesExperimente online!
-3 bytes graças a @Ismael Miguel !
fonte
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
com[++$i%2]
como o índice da matriz alternada entre um0
ou1
então será avaliada como a outra função de cada vez. As "funções variáveis" do PHP permitem atribuir uma variável a uma função e executá-la chamando entre parênteses (ex:$f='array_push'; $f($e,$d);
==array_push($e,$d)
), para que($e,$d)
então chame o elemento avaliado da matriz. Apenas uma maneira mais curta de fazerif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. Acho que havia algum açúcar sintático do PHP, afinal![array_unshift,array_push][++$i%2]($e,$d)
por(array_.[unshift,push][++$i%2])($e,$d)
. O que fiz foi remover o repetidoarray_
, concatenado e, em seguida, o resultado é passado para a chamada.MATLAB, 87 bytes
Recebe entrada como matriz de células, produz coluna de seqüências de caracteres (não tenho certeza se isso é legal)
PS: Obrigado Sanchises por apontar para um bug com entradas de tamanho ímpar
fonte
f({'loooooooong','medium','short'})
end
é opcional para afunction
. O usofunction x=f(y);x={...}'
é mais curto quefunction f(y);disp({...}')
.disp
é que não tenho certeza de quais são as regras de saída. Deveria ser texto puro ou não? oudisp({...})
está tudo bem ou mesmox={...}
como você sugereAPL (Dyalog Unicode) , SBCS de 18 bytes
Experimente online!
Corrigido o erro graças a @ngn.
Explicação:
¹
fonte
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
e fica ainda mais curto se você transformá-lo em umAPL + WIN,
3138 bytesVer comentário de Adams
Experimente online Cortesia de Dyalog Classic!
Solicita um vetor aninhado de strings
fonte
≢
"registro" monádico para substituir∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. Claramente, o resultado deveria ter sido'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Retina , 26 bytes
Experimente online! Explicação:
Classifique as linhas em ordem crescente de comprimento (
$.&
retorna o comprimento da linha).Exclua temporariamente as linhas alternativas e produza as linhas restantes na ordem inversa.
Mantenha as únicas linhas que foram excluídas temporariamente e as produza.
fonte
Gaia , 10 bytes
Experimente online!
fonte
Japonês, 8 bytes
-3 bytes graças a Shaggy!
Tente
fonte
A.ë()
mas não sei se isso levará a uma solução mais curta.PowerShell , 49 bytes
Experimente online!
A dupla destilação .
fonte
T-SQL, 84 bytes
Entrada é uma variável de tabela
Experimente online
fonte
Perl 6 , 31 bytes
Experimente online!
Classifique por comprimento da sequência e depois pela sequência estática 0, -1, 0, -3, 0, -5, ...
fonte
Javascript 95 bytes
fonte
s.sort()
classifica as strings lexicograficamente, não pelo comprimento da string.Vermelho ,
116101 bytesExperimente online!
fonte
perl 5 (
-p0777F/\n/ -M5.01
), 59 bytesTIO
fonte
C (gcc) ,
136128 bytesExperimente online!
-8 bytes graças ao ceilingcat.
A função
f
é a solução. Ele usa o número de strings, as próprias strings e o buffer de saída como argumentos (mais quatro usados internamente).fonte
./.bin.tio
na saída ?argv
, incluindo o nome do arquivot
e mantém por perto mesmo quando não precisa!Japonês , 8 bytes
Input as an array of lines, output as an array of 2 arrays of lines, one for each half of the list.
Try it (Additional code to allow for I/O as newline separated string)
fonte
Haskell,
10496 bytesTry it online!
fonte