Tome duas entradas, um vetor não-vazia / lista contendo dígitos 1
e 2
e uma corda (não, você não pode levar 0/1
em vez disso). A string será uma das seguintes (em minúsculas, exatamente como está escrito abaixo:
increasing
decreasing
ones
twos
all
none
Se a sequência for ____, você retornará os índices ___:
increasing
... onde a lista muda de1
para2
(todos os2
que seguem diretamente após a1
)decreasing
... onde a lista muda de2
para1
(todos os1
que seguem diretamente após a2
)ones
... de todos os dígitos que são1
twos
... de todos os dígitos que são2
all
... todos os dígitosnone
... nenhum dos dígitos.0
é bom se a lista estiver indexada em 1. Um número negativo é bom se a lista estiver indexada em 0. Você também pode gerar uma lista ou sequência vazia.
Casos de teste:
Estes são indexados em 1. Você pode escolher se deseja indexar 1 ou 0. Os mesmos vetores são usados para cadeias diferentes nos casos de teste.
--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2
String - Output
increasing - 3, 7, 11
decreasing - 6, 9
ones - 1, 2, 6, 9, 10
twos - 3, 4, 5, 7, 8, 11
all - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none - 0 / []
------------------------------------
Vector:
1
String:
ones - 1
all - 1
decreasing / increasing / twos / none - 0 / []
Pontuação
Como se trata de código-golfe , a resposta com o mínimo de bytes vence.
Respostas:
JavaScript (Firefox 30-57),
7473 bytesA compreensão de matrizes é uma maneira elegante de combinar
map
efilter
de uma só vez. Editar: salvou 1 byte graças a @ edc65.fonte
Python 2 ,
13613111910897 byteslambda
funçãoenumerate()
vez derange(len())
.0
-indexing (como na resposta de TFeld ) e golfe"adinot".find(m[0])
paraord(m[0])/3-32
.Experimente online!
fonte
1
ou2
, você pode mudar(l[j]>1)*(l[~-j]<2)
para(l[j]>l[~-j])
para 119 bytes1
-indexed.enumerate()
Python 2 ,
117111110999792 bytesExperimente online!
0
-indexedMudou para usar a indexação de Jonathan e jogou golfe
ord(m[0])/3-32
paraord(t[0])/3%7
fonte
l[i]==2
paral[i]>1
.Haskell ,
1128381 bytesExperimente online! Exemplo de utilização:
"increasing"%[1,1,2,1,2]
. Os resultados são indexados em 1.Em parte inspirado pela resposta de Lynn Haskell .
fonte
MATL ,
32313029 bytesA saída é baseada em 1 ou vazia.
Experimente online!
Explicação
O código calcula as seis saídas possíveis para a entrada da matriz e, em seguida, seleciona a saída apropriada, dependendo da entrada da string.
Para selecionar a saída, os pontos de código ASCII de todos os caracteres da entrada de sequência são adicionados. O módulo resultado dá 9
6
,1
,5
,2
,7
,0
, respectivamente, para'increasing'
,'decreasing'
,'ones'
,'twos'
,'all'
,'none'
. Como todos os números resultantes são distintos, isso pode ser usado como critério de seleção.Em vez de realmente executar uma operação do módulo 9 na soma, a lista de entradas possíveis é estendida para 9 entradas (algumas das quais são falsas) e, portanto, a indexação nessa lista é feita automaticamente no módulo 9.
fonte
Python 2 , 92 bytes
Experimente online!
fonte
Gelatina , 27 bytes
Experimente online!
-3 graças a Jonathan Allan .
fonte
0
era o link mais baixo, mas aparentemente éÇ
mais estranho, obrigado! (também acabei de aprender uma nova palavra: p)Casca , 27 bytes
Experimente online!
-9 graças a H.PWiz .
Estou bastante orgulhoso desta resposta.
fonte
ΘẊ>
eΘẊ<
e`fN
0
é o último elemento.¨₆Żσa¨
por isso que não usei esse recurso, obrigado. E agora posso dizer que amarra Jelly .Java (OpenJDK 8) ,
266217213205172171155131 bytesExperimente online!
fonte
y
como umchar
, você pode testes de igualdade de golfe gostamy.equals("a")
dey=='a'
,y==97
ou mesmoy<98
.19
éc
o valor mais alto,c==19
é igual ac>18
.s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}
Jq 1.5 , 131 bytes
Com base na abordagem do xcali , uma vez que a correspondência de strings é menor que a minha versão do array.
Assume que jq é chamado com
-Rs
opções e a entrada aparece em duas linhas, por exemploExpandido:
Experimente online!
fonte
Haskell , 91 bytes
Experimente online!
Laikoni salvou um byte.
fonte
(i,y,x)<-zip3[1..]l$l!!0:l
.J, 73 bytes
Seria curioso ver como isso pode ser significativamente condensado - acredito que sim (10 caracteres apenas para todas essas agendas)!
g
- verbo auxiliar para aumentar e diminuir, o que equivale a comparar os valores de\
execuções infix de tamanho 2@.
Experimente online!
fonte
1=]
e2=]
não funcione? Além disso, what ifg
pegou um número como argumento à esquerda e uma lista como argumento à direita e retornou os índices onde2-/\
aplicados à lista igualaram o argumento à esquerda. Dessa forma, você pode passá-lo_1
ou1
encontrar diminuindo e aumentando em vez de usar um advérbio.Java 8,
233229216 bytesEssa abordagem de String acabou mais do que eu esperava .. Mas, mesmo pensando que sou extremamente desafiada pela outra resposta do Java 8 , decidi publicá-la de qualquer maneira.
Definitivamente, pode-se jogar golfe, mesmo com essa abordagem. O "nenhum" e "aumento / diminuição" causaram principalmente alguma solução alternativa que custou alguns bytes.
O resultado é 1 indexado.
Explicação:
Experimente aqui.
fonte
Perl 5 , 71 + 2 (
-nl
) = 73 bytesExperimente online!
A lógica revisada é efetivamente a mesma da explicação abaixo, mas as correspondências de padrões foram reduzidas.
Anteriormente:
Experimente online!
Não gera nada se o critério não for correspondido.
Explicado:
fonte