Dada uma lista de números inteiros positivos, escreva um código que encontre o comprimento da sub-lista contígua mais longa que está aumentando (não estritamente). Essa é a sublista mais longa, de modo que cada elemento seja maior ou igual ao último.
Por exemplo, se a entrada foi:
A sub-lista crescente mais longa seria , portanto você produziria .
Sua resposta será pontuada tomando sua origem como uma lista de bytes e, em seguida, localizando o comprimento da sub-lista crescente mais longa dessa lista. Uma pontuação mais baixa é o objetivo. Os laços são quebrados em favor de programas com menos bytes gerais.
code-challenge
source-layout
Post Rock Garf Hunter
fonte
fonte
True
ter sido um substituto,1
mas pode ser. Você deve conseguir lidar com a lista vazia (a saída é obviamente 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Respostas:
Pitão , pontuação 2 (8 bytes)
Experimente aqui!
Pontos de código
[108, 101, 102, 83, 73, 84, 46, 58]
. Outra solução mais curta, temleSI#.:
3 pontos, mas seus pontos de código[108, 101, 83, 73, 35, 46, 58]
são muito próximos a 1, na verdade.Reorganizar um pouco pode ajudar oNevermind, as subseqüências internas são as.:
que não podem ser reorganizadas; portanto, a pontuação mais baixa deve ser 2 se o programa fizer uso dela.Quão?
fonte
Haskell , pontuação 2,
6664616065 bytesExperimente online! (se verifica).
Eu nunca pensei que poderia conseguir uma pontuação de 2 com Haskell, e ainda estou aqui!
A função
g
calcula os comprimentos de todas as substrings crescentes recursivamente.foldr1 max.g
leva o máximo desses comprimentos (foldr1 max
é equivalente amaximum
, mas com uma pontuação mais baixa).fonte
1+a : b
não é necessário; portanto, são 62 bytes.1
para a lista vazia, onde deve retornar0
JavaScript (Node.js) ,
pontuação 3,pontuação 2,5346 bytes5150 bytes-7 bytes obrigado @Arnauld
+5+4 espaços em troca de -1 de pontuaçãoExperimente online!
Pressupõe entrada não vazia. 61 bytes se a lista vazia precisar ser manipulada. Pontuação 2 ainda.
Experimente online!
... ou 58, se o retorno
false
for permitido. Pontuação 2 ainda.fonte
Husk , 5 bytes , pontuação = 2
Experimente online!
É improvável que você obtenha uma pontuação menor que 2 com Husk, porque
ġ
1 tem um ponto de código realmente alto e precisa haver algo antes dele para obter o máximo e o comprimento. Uma tentativa poderia ser feita com a tentativa de usar várias funções, mas\n
seria antes de qualquer função auxiliar que tenha um ponto de código muito baixo; portanto, qualquer coisa depois disso criaria uma sequência de bytes crescente de pelo menos o comprimento 2.1: Parece que a melhor maneira de usar para os operadores de comparação precisaria seguir as várias funções de divisão como
↕
(span
).Explicação
fonte
Retina 0.8.2 , 40 bytes, pontuação 3
Experimente online! O link inclui-se como códigos de bytes como entrada. Explicação:
Converta para unário.
Dividir em pares decrescentes.
Exclua os dígitos.
Classifique as vírgulas na ordem inversa. (Normalmente, eu escreveria isso como
O^
mas não posso fazer isso aqui por razões óbvias.)Conte a execução de vírgula mais longa e adicione uma para incluir o número final.
fonte
Japt
-h
, 6 bytes, pontuação 2Não pense que uma pontuação de 1 é possível. Também deve funcionar com strings e matrizes de caracteres.
Experimente - o caso de teste incluído é o código da solução.
Explicação
fonte
MATL , pontuação 2, 13 bytes
A entrada pode ser:
MATL usa codificação ASCII. Os pontos de código do código acima são
Experimente online!
Explicação
fonte
Pascal (FPC) , pontuação 2
111 bytes
Experimente online!
Pressupõe entrada não vazia. Os números são obtidos da entrada padrão separados por espaços.
fonte
Geléia , 8 bytes , pontuação 2
Provavelmente existe uma solução de pontuação 1 de alguma forma ...
Experimente online!
Código fonte como uma lista de valores de bytes:
Quão?
fonte
Perl 6 , pontuação 2, 46 bytes
Experimente online!
Lida com a lista vazia. O código original era:
Portanto, apenas 5 bytes extras para reduzir a pontuação para 2.
Edit: Ah, eu descobri como remover a tarefa , mas não consigo obter essa pontuação abaixo de 3 por causa da
)]]
...Explicação:
fonte
[[&(*+*)]]
funciona como[+]
? Incrível ...Z
eX
. Experimente online!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , pontuação 3 (9 bytes )
Provavelmente pode ser uma pontuação de 2 de alguma forma.
Pontos de código dos bytes de programa:
[140,1,90,100,80,125,233,9,103]
(duas sublistas de comprimento 3:[1,90,100]
e[80,125,233]
)Experimente online.
Explicação:
fonte
Java (JDK) , pontuação 3, 94 bytes
Experimente online!
Porto da minha (com sugestões de Arnauld) resposta JS.
etu
dentroreturn
ehil
dentrowhile
tornam impossível jogar golfe para marcar 2.for
não pode ser usado aqui porque:;for
está subindofor
não pode ser usado no início do corpo lambda (restrições de escopo). É possível envolvê-lo,{}
mas aparentemente usandowhile
salva bytes.fonte
\u
, em alguns lugares, mas então você tem que ter00
seguido por um dígito que é 3 de qualquer maneira ...Powershell, pontuação 3, 44 bytes
Script de teste:
Resultado:
Explicação:
contiguous sub-list that is increasing (not strictly)
. Em seguida, o script classifica os comprimentos e leva um último (máximo)(...|sort)[-1]
.Powershell 6, pontuação 3, 43 bytes
O mesmo que acima. Uma diferença:
sort -b 1
é um atalho parasort -Bottom 1
e significa 1 elemento do final da matriz classificada . Portanto, não precisamos de um índice[-1]
.fonte
Stax , pontuação 3 (15 bytes)
Execute e depure
fonte
Python 2 ,
pontuação 5, 87 bytespontuação 2,1019392101 bytesExperimente online!
Opa! Pensei que era a primeira vez em code-golf ...
fonte
m=1,o=[1]
parte não acabar salvando quaisquer bytes uma vez que reduzir o marcadorDyalog APL , pontuação 2, 20 bytes
Experimente online!
fonte
Wolfram Language (Mathematica) , pontuação 3, 45 bytes
Experimente online!
SequenceCases
e,OrderedQ
por si só, dão uma pontuação de 3, para que a pontuação não possa ser melhorada sem alterar significativamente a abordagem.fonte
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, mas_?Or
é uma subsequência crescente de comprimento 4. (Como é_?AnyCamelCaseCommand
.)Java (JDK), 126 bytes, Pontuação 6
Golfe
Ungolfed
Entrada
fonte
byte
serint
, poisbyte
seria restrito a 8 bits?Kotlin, pontuação 6, 119 bytes
Experimente on-line
Explicação
fonte
Kotlin, pontuação 4, 67 bytes
A idéia principal é: Transforme cada número inteiro no comprimento de sub sequências contíguas que estão aumentando (não estritamente). Retorno máximo.
a.map{...}
- para cada número inteiro na matriz, façaif(it<p){i=0}
- se o número inteiro atual for menor que o número anterior, redefina o contadorp=it
- armazena inteiro inteiro no anterior(++i)
- contador de incremento e valor de retorno da expressão.max()
- obtenha o máximo de todo o comprimentofonte
Ruby , 64 bytes
Experimente online!
fonte
6
. Além disso, seu código não lidar com a lista vazia (onde a saída deve ser0
)