Tomar dos entradas, un vector no vacío / lista que contiene los dígitos 1
y 2
y una cadena (no, no se puede tomar 0/1
en su lugar). La cadena será una de las siguientes (en minúsculas, exactamente como se escribe a continuación:
increasing
decreasing
ones
twos
all
none
Si la cadena es ____, deberá devolver los índices ___:
increasing
... donde la lista cambia de1
a2
(todo lo2
que sigue directamente después de a1
)decreasing
... donde la lista cambia de2
a1
(todo lo1
que sigue directamente después de a2
)ones
... de todos los dígitos que son1
twos
... de todos los dígitos que son2
all
... todos los dígitosnone
... ninguno de los dígitos.0
está bien si la lista está indexada en 1. Un número negativo está bien si la lista está indexada en 0. También puede generar una lista o cadena vacía.
Casos de prueba:
Estos están indexados en 1. Puede elegir si desea 1 indexado o 0 indexado. Los mismos vectores se utilizan para diferentes cadenas en los casos de prueba.
--------------------------------
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 / []
Puntuación
Como se trata de código de golf , gana la respuesta con la menor cantidad de bytes.
Respuestas:
JavaScript (Firefox 30-57),
7473 bytesLas comprensiones de matriz son una forma ordenada de combinar
map
yfilter
de una vez. Editar: guardado 1 byte gracias a @ edc65.fuente
Python 2 ,
13613111910897 byteslambda
funciónenumerate()
lugar derange(len())
.0
-indexing (como en la respuesta de TFeld ) y jugar al golf"adinot".find(m[0])
aord(m[0])/3-32
.Pruébalo en línea!
fuente
1
o2
, puede cambiar(l[j]>1)*(l[~-j]<2)
a(l[j]>l[~-j])
de 119 bytes1
quedaré con -indexed.enumerate()
Python 2 ,
117111110999792 bytesPruébalo en línea!
0
-indexadoCambió a usar la indexación de Jonathan y jugó golf
ord(m[0])/3-32
aord(t[0])/3%7
fuente
l[i]==2
al golfl[i]>1
.Haskell ,
1128381 bytesPruébalo en línea! Ejemplo de uso:
"increasing"%[1,1,2,1,2]
. Los resultados están indexados en 1.Parcialmente inspirado por la respuesta de Lynn Haskell .
fuente
MATL ,
32313029 bytesLa salida se basa en 1 o está vacía.
Pruébalo en línea!
Explicación
El código calcula las seis salidas posibles para la entrada de la matriz y luego selecciona la salida apropiada según la entrada de la cadena.
Para seleccionar la salida, se agregan los puntos de código ASCII de todos los caracteres de la entrada de cadena. El modulo número 9 da
6
,1
,5
,2
,7
,0
, respectivamente, para'increasing'
,'decreasing'
,'ones'
,'twos'
,'all'
,'none'
. Como todos los números resultantes son distintos, esto puede usarse como criterio de selección.En lugar de realizar realmente una operación del módulo 9 en la suma, la lista de posibles entradas se extiende a 9 entradas (algunas de las cuales son ficticias), por lo que la indexación en esa lista se realiza automáticamente en el módulo 9.
fuente
Python 2 , 92 bytes
Pruébalo en línea!
fuente
Jalea , 27 bytes
Pruébalo en línea!
-3 gracias a Jonathan Allan .
fuente
0
era el enlace más inferior, pero aparentemente esÇ
más extraño, ¡gracias! (también acabo de aprender una nueva palabra: p)Casco , 27 bytes
Pruébalo en línea!
-9 gracias a H.PWiz .
Estoy muy orgulloso de esta respuesta.
fuente
ΘẊ>
yΘẊ<
y`fN
0
es el último elemento.¨₆Żσa¨
cambio por eso no utilicé esa función, gracias. Y ahora puedo decir que vincula a Jelly .Java (OpenJDK 8) ,
266217213205172171155131 bytesPruébalo en línea!
fuente
y
como unachar
, puede tests de igualdad de golf comoy.equals("a")
ay=='a'
,y==97
o inclusoy<98
.19
esc
el valor más alto,c==19
es 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
Basado en el enfoque de xcali ya que la coincidencia de cadenas es más corta que mi versión de matriz.
Asume que jq se invoca con
-Rs
opciones y la entrada aparece en dos líneas, por ejemploExpandido:
Pruébalo en línea!
fuente
Haskell , 91 bytes
Pruébalo en línea!
Laikoni salvó un byte.
fuente
(i,y,x)<-zip3[1..]l$l!!0:l
.J 73 bytes
Sería curioso ver cómo esto se puede condensar significativamente: creo que sí (¡10 caracteres solo para todos esos padres de la agenda!)
g
- verbo auxiliar para aumentar y disminuir, lo que equivale a comparar los valores de infijo\
series de de tamaño 2@.
Pruébalo en línea!
fuente
1=]
y2=]
no trabajar? Además, ¿quég
pasaría si tomara un número como argumento izquierdo y una lista como argumento derecho y devolviera los índices2-/\
aplicados a la lista igual al argumento izquierdo? De esa manera, podría pasarlo_1
o1
encontrarlo disminuyendo y aumentando en lugar de usar un adverbio.Java 8,
233229216 bytesEste enfoque de String terminó más tiempo de lo que esperaba ... Pero aunque pensé que la otra respuesta de Java 8 me superaba enormemente , decidí publicarlo de todos modos.
Definitivamente se puede jugar golf, incluso con este enfoque. El "ninguno" y el "aumento / disminución" causaron principalmente una solución que costó algunos bytes.
El resultado es 1 indexado.
Explicación:
Pruébalo aquí.
fuente
Perl 5 , 71 + 2 (
-nl
) = 73 bytesPruébalo en línea!
La lógica revisada es efectivamente la misma que la explicación a continuación, pero las coincidencias de patrones se han acortado.
Previamente:
Pruébalo en línea!
No genera nada si el criterio no coincide.
Explicado:
fuente