Introdução:
Depois de postar dois desafios relacionados ao arco-íris: Codegolf Rainbow: Fun with Integer-Arrays 1 e Codegolf Rainbow: Draw em preto e branco 2 , o seguinte comentário foi feito por @ChrisM no ASCII ( Draw em preto e branco) ) desafio :
Talvez você saiba disso e seja por design (sei que arco-íris não são losangos ou ascii também, e as posições de ordens mais altas ficam mais complicadas), mas as cores não são revertidas no segundo arco-íris?
E ele está realmente certo. Quando você vê um arco-íris duplo, o segundo é na verdade um reflexo do primeiro, então as cores são invertidas. Com três arco-íris, é um arco-íris duplo real, com o terceiro sendo um reflexo de um dos outros dois. E com quatro, há dois arco-íris e dois reflexos deles.
Então, vamos fazer um terceiro desafio relacionado usando esse fato.
Desafio:
Entradas: Um inteiro positivo n
que é >=2
, e uma lista de inteiros de tamanho >= n+1
.
Saída: a mesma lista ordenada da seguinte forma:
- Primeiro, divida as listas de entrada em sub-listas de tamanho
n
(onde a sub-lista final pode ter qualquer tamanho no intervalo[1,n]
). - Em seguida, fazemos o seguinte com base na quantidade de sub-listas
m
:- Classifique a primeira
m - m//2
quantidade de sub-listas da menor para a maior (onde//
é a divisão do número inteiro). (Ou seja, com 6 sub-listas, os três primeiros serão classificados do menor para o maior; com 5 sub-listas, os três primeiros serão classificados do menor para o maior.) - Classifique a última
m//2
quantidade de sub-listas da maior para a menor (onde//
é a divisão do número inteiro). (Ou seja, com 6 sub-listas, os três últimos serão classificados do mais alto para o mais baixo; com 5 sub-listas, os dois últimos serão classificados do mais alto para o mais baixo.)
- Classifique a primeira
- Mesclar todas as sub-listas para formar uma única lista novamente
Exemplos:
Entradas: n=7
e [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Etapa 1: [[3,2,1,-4,5,6,17],[2,0,3,5,4,66,-7],[7,6,-5,2,10]]
Etapa 2: [[-4,1,2,3,5,6,17],[-7,0,2,3,4,5,66],[10,7,6,2,-5]]
Etapa 3 / Saída:[-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Entradas: n=4
e [7,4,-8,9,3,19,0,-23,-13,13]
Etapa 1: [[7,4,-8,9],[3,19,0,-23],[-13,13]]
Etapa 2: [[-8,4,7,9],[-23,0,3,19],[13,-13]]
Etapa 3 / Saída:[-8,4,7,9,-23,0,3,19,13,-13]
Regras do desafio:
- A entrada inteira
n
é garantida para ser maior que 1. - É garantido que o tamanho da lista inteira seja maior que
n
. - A sub-lista final pode ser menor que
n
(como pode ser visto nos exemplos e casos de teste). - O formato de E / S é flexível em qualquer formato razoável. Pode ser uma lista / matriz de números inteiros ou decimais, uma seqüência de caracteres delimitada por vírgula / espaço / nova linha, fluxo de números inteiros etc. (A saída pode não ser uma lista 2D de listas como a etapa 2. Etapa 3) é necessário para esse desafio.)
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Inputs: n=7 and [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Output: [-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Inputs: n=4 and [7,4,-8,9,3,19,0,-23,-13,13]
Output: [-8,4,7,9,-23,0,3,19,13,-13]
Inputs: n=2 and [7,-3,1]
Output: [-3,7,1]
Inputs: n=3 and [1,6,99,4,2]
Output: [1,6,99,4,2]
Inputs: n=2 and [5,2,9,3,-5,-5,11,-5,4,12,9,-2,0,4,1,10,11]
Output: [2,5,3,9,-5,-5,-5,11,4,12,9,-2,4,0,10,1,11]
Inputs: n=3 and [5,2,9,3,-5,-5,11,-5,4,12,9,-2,0,4,1,10,11]
Output: [2,5,9,-5,-5,3,-5,4,11,12,9,-2,4,1,0,11,10]
fonte
Geléia , 9 bytes
Experimente online!
fonte
Python 2 , 82 bytes
Experimente online!
fonte
Japonês , 10 bytes
Experimente online!
fonte
05AB1E (herdado) , 9 bytes
Experimente online!
Experimente online! em 05AB1E (reescrita do Elixir) - espera que a entrada esteja na pilha, um método de E / S padrão.
Kevin criou seu próprio 11-byter, que eu costumava chegar a 10. Depois, criei outra coisa para 9 bytes.
fonte
ô€{2äRć€R)˜
.í
. E bom golfe adicional.JavaScript (ES6),
8281 bytesGuardado 1 byte graças a @redundancy
Toma entrada como
(list)(n)
.Experimente online!
fonte
a
é unidimensional, acredito que você pode substituira>[]
pora+a
para verificar o caso não vazio e salvar 1 byte. Estratégia recorrente muito inteligente para particionar e determinar quando reverter o tipo também!