Relacionado: Diga-me quantos problemas de matemática eu tenho que fazer!
Desafio
Dada uma lista inteira estritamente ascendente estritamente positiva L e um número inteiro 3 ≤ N ≤ comprimento de L, substitua os inteiros médios das execuções inteiras consecutivas de L de comprimento ≥ N com um único traço -
.
Regras
- O espaço em branco horizontal é irrelevante.
- Opcionalmente, você pode preservar os caracteres introdutor, separador e terminador do formato de lista padrão do seu idioma. Veja exemplos de formato abaixo.
Exemplos de dados
Todos esses exemplos usam L = 3 5 6 7 8 10 11 12 14 16 17 18 19 20 21 22 24
.
N = 3
→ 3 5 - 8 10 - 12 14 16 - 22 24
N = 4
→ 3 5 - 8 10 11 12 14 16 - 22 24
N = 5
→ 3 5 6 7 8 10 11 12 14 16 - 22 24
N = 8
→ 3 5 6 7 8 10 11 12 14 16 17 18 19 20 21 22 24
Exemplos de formato
Para as entradas
L = [3,5,6,7,8,10,11,12,14,16,17,18,19,20,21,22,24]
e N = 3
todas as linhas abaixo, são exemplos de respostas válidas, como listas reais e como strings:
[3,5,"-",8,10,"-",12,14,16,"-",22,24]
[3,5,-,8,10,-,12,14,16,-,22,24]
[3,5-8,10-12,14,16-22,24]
3,5-8,10-12,14,16-22,24
O mesmo se aplica a outros formatos de lista, como {1 2 3}
e (1; 2; 3)
etc. Em dúvida? Ask!
-
ou podemos usar um símbolo diferente?_
para que eu possa continuar operando em matrizes numéricas em J.'-'
. Você também pode ser capaz de restringir tudo antes de inserir traços, não?[3,5,-8,10,-12,14,16,-22,24]
(este parece ser o formato que faz mais sentido em termos de tipos)Respostas:
Python 2 ,
132115 bytes-17 bytes graças a Leaky Nun
Experimente online!
fonte
while t+i==x[i]:
? Ou eu estou esquecendo de alguma coisa?i
obter maior do que o tamanho dex
Geléia ,
26 2523 bytes-2 bytes graças a Erik the Outgolfer (trazendo a instrução if para o link principal)
Um link diádico retornando uma lista no
[3,5,"-",8,10,"-",12,14,16,"-",22,24]
formato.Experimente online! (o rodapé separa com espaços, para imprimir o formato de exemplo de dados).
Quão?
fonte
Pitão, 23 bytes
Experimente online
Como funciona
fonte
Japt , 24 bytes
Experimente online!
Explicação
fonte
Mathematica, 128 bytes
entrada
saída
Experimente online!
fonte
APL, 38 bytes
fonte
PHP 7,
137 136 134 117 117 108108 bytesRetirado
L
do primeiro argumento, liste os elementos depois disso. Corra com-nr
ou experimente online .Substitua
$L=($a=$argv)
por$a=$argv,$L=
(+1 byte) para PHP <7.demolir
fonte
Retina , 101 bytes
Experimente online! Leva a lista separada por espaços
L
na primeira linha e o número inteiroN
na segunda linha. Explicação: O primeiro estágio converte a entrada em unário. O segundo estágio altera o espaço entre números inteiros consecutivos para umX
. O terceiro estágio procura execuções de números inteiros consecutivos cujo comprimento seja menor queN
e muda seusX
s de volta para espaços. O quarto estágio alteraX
s para-
(isso foi 3 bytes mais curto do que usar-
s em primeiro lugar.) O quinto estágio exclui todos os números inteiros ainda deixados no meio de uma execução, bem comoN
, enquanto o estágio final é convertido novamente em decimal.fonte
Ruby, 68 bytes
Retorna uma string como por exemplo
3,5-8,10-12,14,16-22,24
.Experimente online!
fonte
J , 40 bytes
Experimente online!
Usa em
_
vez de-
.Explicação
fonte
Geléia,
393736 bytesExperimente online
Toma a matriz por meio de argumentos e o número inteiro via STDIN. O link TIO usa o rodapé
ÇG
para que a saída seja separada por espaço.Quão? (Array:
a
, Integer:n
)Eu estou supondo que eu caí ... plana em um presente.
fonte
JavaScript (ES6),
126119 bytesUma função anônima. Recebe a entrada na ordem
Array L, Integer N
e retorna o resultado como uma sequência separada por vírgula.Mostrar snippet de código
fonte
e=>c=>
.Dyalog APL v16.0,
82807876756562 bytesUau, isso é ... ruim. Provavelmente há uma solução muito mais curta com estêncil.
Experimente online!
Sugestões de golfe são bem-vindas!
fonte