Definición y reglas
Una matriz de golf es una matriz de enteros, donde cada elemento es mayor o igual que la media aritmética de todos los elementos anteriores. Su tarea es determinar si un conjunto de enteros positivos dados como entrada es golfoso o no.
No necesita manejar la lista vacía.
Puede elegir dos valores distintos no vacíos. Ellos deben ser consistentes, y deben cumplir con todas las demás decisiones problemáticas reglas. Este es el código de golf , ¡el código más corto en cada idioma gana!
Casos de prueba y ejemplo
Por ejemplo, la siguiente matriz:
[1, 4, 3, 8, 6]
Es una matriz de golf, porque cada término es más alto que la media aritmética de los anteriores. Vamos a resolverlo paso a paso:
Número -> Elementos anteriores -> Promedio -> ¿Sigue la regla? 1 -> [] -> 0.0 -> 1 ≥ 0.0 (Verdadero) 4 -> [1] -> 1.0 -> 4 ≥ 1.0 (Verdadero) 3 -> [1, 4] -> 2.5 -> 3 ≥ 2.5 (Verdadero) 8 -> [1, 4, 3] -> 2. (6) -> 8 ≥ 2. (6) (Verdadero) 6 -> [1, 4, 3, 8] -> 4.0 -> 6 ≥ 4.0 (Verdadero)
Todos los elementos respetan la condición, por lo tanto, este es un conjunto de golf. Tenga en cuenta que para el propósito de este desafío, asumiremos que el promedio de una lista vacía ( []
) es 0
.
Más casos de prueba:
Entrada -> Salida [3] -> Verdadero [2, 12] -> Verdadero [1, 4, 3, 8, 6] -> Verdadero [1, 2, 3, 4, 5] -> Verdadero [6, 6, 6, 6, 6] -> Verdadero [3, 2] -> falso [4, 5, 6, 4] -> Falso [4, 2, 1, 5, 7] -> Falso [45, 45, 46, 43] -> Falso [32, 9, 15, 19, 10] -> Falso
Tenga en cuenta que este es el Rompecabezas 1 de CodeGolf-Hackathon y también está publicado en Anarchy Golf (ese está roto) - Publicado por el histocrático , pero yo soy el autor original en ambos sitios, y por lo tanto se me permite volver a publicarlos aquí.
Respuestas:
Python 2 , 37 bytes
Pruébalo en línea!
Salidas a través del código de salida: fallas (código de salida 1) para matrices de golf, solo sale con el código de salida 0 para matrices que no son de golf. ovs y Jonathan Frech guardaron 3 bytes.
Python 2 , 44 bytes
Pruébalo en línea!
Una variante más tradicional, que vuelve
True
para los arreglos de golf, de lo contrarioFalse
. Jonathan Frech ahorró 2 bytes.fuente
a==[]or
puede sera and
.sum(a)<=len(a)*a.pop()*[]
para el caso base, que siempre es ciertoint < list
.Jalea ,
65 bytesPruébalo en línea!
Cómo funciona
fuente
ÆmƤµ⁼Ṣ
JavaScript (ES6),
3332 bytesEl código también funciona en valores negativos como
[-3, -2]
. Devuelvefalse
para una matriz de golf,true
para otras matrices. Editar: Guardado 1 byte gracias a @JustinMariner.fuente
!
ya que la especificación solo solicita dos valores diferentes, por lo que está bien regresarfalse
cuando se trata de una matriz de golf.Wolfram Language (Mathematica) , 35 bytes
Pruébalo en línea!
Salidas
False
para matrices de golf yTrue
otros.fuente
MATL ,
98 bytesSalidas
0
para matrices de golf, de lo1
contrario.Pruébalo en línea!
Explicación
Considere la entrada
[1, 4, 3, 8, 6]
.fuente
Haskell ,
535048 bytesPruébalo en línea!
Editar: -3 bytes gracias a Zgarb!
Explicación
La versión sin puntos anterior es equivalente al siguiente programa:
Dada una entrada
s=[1,4,3,8,6]
,scanl1(+)s
calcula las cantidades de prefijo[1,5,8,16,22]
yzipWith(*)[1..](tail s)
gotas el primer elemento y se multiplica todos los otros elementos con su índice:[4,6,24,24]
. La lista ahora es elegante si en pares las sumas de prefijos son más pequeñas o iguales al índice de tiempos de los elementos, lo que puede verificarse comprimiendo ambas listas con(<=)
y verificando que todos los resultados esténTrue
conand
.fuente
C # (compilador de Visual C #) , 71 + 18 = 89 bytes
18 bytes adicionales para
using System.Linq;
Pruébalo en línea!
fuente
using System.Linq;
en realidad serían 89 bytes, a veces expresados como "71 + 18 = 89" para mostrar que se requieren 18 bytes pero que no son parte de la solución, mientras que el recuento final sea el último número en la línea del título ( que es útil para algunos analizadores automáticos).APL (Dyalog) , 10 bytes
Esta es una función de prefijo tácito anónimo (llamado un tren monádico en términos de APL).
¡Pruebe todos los casos de prueba en TIO!
Lo es
∧/
todo cierto que⊢
los elementos≥
son mayores o iguales que+\
las sumas acumulativas÷
dividido por⍳
los enteros 1 a∘
el≢
cantidad de elementos?
fuente
∘
une las cosas de la misma manera "el" se une en "cuenta los gatos". Realmente se llama Componer .C (gcc) ,
626062 bytesb=
).Pruébalo en línea!
fuente
05AB1E , 5 bytes
Pruébalo en línea!
La amplia ayuda de Dennis y Adnan llegó a esta versión reducida. También se corrigió un error para hacer esto posible, gracias nuevamente chicos. Tomo poco crédito por esta respuesta.
05AB1E , 10 bytes
Pruébalo en línea!
Largo porqueDgsO/
es el equivalente de "media" en 05AB1E.Aparentemente
ÅA
es media aritmética.fuente
+\÷J
(dividir la suma acumulativa entre índices) en Jelly. ¿No es tan fácil en 05AB1E? Editar: no importa.ü+
entonces que realmente no hay división por índices distintos deg
obtener la longitud de la matriz,L
presionar1,2,...,n
y dividir para obtener la media, que todavía es esencialmente 5 bytes..S_
es un largo camino por recorrer<=
, si alguien tiene alguna idea lmk.÷W
Funcionaría en lugar deü.S_P
?ÅA
, por lo queηÅA÷W
funciona ahora.APL (Dyalog) , 15 bytes
Pruébalo en línea!
¿Cómo?
fuente
PowerShell , 60 bytes
Pruébalo en línea!
Toma la entrada como una matriz literal (por ejemplo,
@(1, 4, 3, 8, 6)
) en$a
. Establece nuestra$o
variable de rendimiento para ser1
. Luego se repite$a
. En cada iteración, estamos (ab) usando la conversión implícita de PowerShell al*=
resultado de una comparación booleana contra nuestro$o
rendimiento. El booleana es si el valor actual$_
es-g
reater-que-o-e
qual a los términos anteriores$a[0..$i++]
sumados (-join'+'|iex
) dividido por el número de términos que ya hemos visto$i
. Entonces, si cualquier paso en el camino es falso, entonces$o
se multiplicará por0
. De lo contrario, permanecerá en1
todo momento.Luego simplemente colocamos
$o
en la tubería y la salida está implícita.1
para la verdad y0
para falsey.fuente
Perl 5, 27 +2 (-ap) bytes
Pruébalo en línea
fuente
C # (.NET Core) , 74 bytes
Pruébalo en línea!
Devuelve 0 para falso y 1 para verdadero.
3 Bytes más largos que el núcleo de los crislovelatos responden . Pero en total, varios bytes más cortos porque mi variante no necesita ninguna
using
declaración.fuente
Cubix , 35 bytes
Pruébalo en línea!
No es el uso más eficiente del espacio (6 no-ops en el código) No produce salida para una matriz de golf,
1
para una matriz que no sea de golf.Se expande al siguiente cubo:
Explicación próxima, pero básicamente presenta algo como la respuesta MATL de Luis Mendo o la respuesta Julia de Dennis .
¡Míralo correr!
fuente
Matlab y Octave,
4136 bytes5 bytes guardados gracias a Luis Mendo
Pruébalo en línea!
fuente
a
es cero. Pero ese es un truco útil, sin embargo, en situaciones similares, hay que tenerlo en cuenta.SQL (MySQL), 68 bytes
Pruébalo en línea!
Devuelve 1 para matrices de golf y 0 en caso contrario. Toma de entrada de una tabla llamada ,
t
. Para creart
, ejecute:y para cargar los valores:
fuente
Rubí , 30 bytes.
Pruébalo en línea!
Inspirado por la respuesta de Lynn . Lanza
NoMethodError
para golf, vuelve de lonil
contrario.fuente
Python 2 , 52 bytes
Pruébalo en línea!
Python 2 ,
50484442 bytesand
.S=k=0
.or
y el valor booleano de la comparación comok
valor de incremento.NameError
mediante el uso de una variable indefinida en lugar de aZeroDivisionError
.Pruébalo en línea!
fuente
q / kdb + , 14 bytes
Solución:
Ejemplos:
Explicación:
Bastante simple con el
avgs
incorporado:fuente
Julia 0.6 , 29 bytes
Devuelve falso o verdadero .
Pruébalo en línea!
fuente
R ,
3834 bytesPruébalo en línea!
fuente
y
en los argumentos de la función, usarcumsum(x)
directamente es 4 bytes más corto. Es una penacummean
que no exista en la base R.Agregar ++ , 54 bytes
Pruébalo en línea!
Versión no original, 30 bytes.
Pruébalo en línea!
Tanto la salida 1 para matrices de golf y 0 en caso contrario
Cómo trabajan ellos
La primera versión fue creada por mí, sin verificar ninguna otra solución. El segundo fue inspirado por el comentario de Dennis , así que estoy menos contento con él.
La primera versión
dbLR$
que es una función diádica (es decir, toma2 UN e ∈ x [ . . . A , e ] . . . mi UN
#
BF
B
€
g
k
{...}
I
K
U
Y
Z
g
k
l
u
w
¦+
AbL
/
0b]$
ABcB]
Bc
zip
ª!
La segunda versión
¬+
J
BcB/
@0@B]
fuente
Pyth ,
1110 bytes-1 byte gracias al Sr. Xcoder
Pruébalo en línea!
fuente
SI.OM._
(puerto de la solución de cairdcoinheringaahing de Jelly, por Erik the Outgolfer), o 10 bytes utilizando su enfoque:.A.egb.O<Q
Java (OpenJDK 8) , 96 bytes
Sé que no es un buen lenguaje de golf, ¡pero aún así lo intenté!
Matriz de entrada como primer argumento de entradas separadas por comas para probar.
Devuelve 1 para verdadero, 0 para falso.
Pruébalo en línea!
fuente
Java 7, 100 bytes
Golfizado:
Sin golf:
Pruébalo en línea
Devuelve 0 para ungolfy y 1 para matrices de golf. Ligeramente más largo que java 8 respuesta.
fuente
PHP, 44 bytes
toma la entrada de los argumentos de la línea de comando, sale con
0
(ok) para una matriz de golf, con1
else.Ejecutar
-nr
o probarlo en línea .fuente
J, 19 bytes
+/\ % #\
promedios de los prefijos:#\
produce 1..n}:0,
agregue 0 al principio y elimine el último[>:
¿Es la lista original elemento por elemento> = a la lista desplazada de promedios?*/
¿son todos los elementos mayores, es decir, la lista anterior es todo1
s?Pruébalo en línea!
fuente
AWK , 39 bytes
Pruébalo en línea!
Tenga en cuenta que el enlace TIO tiene 5 bytes adicionales
i=s=0
para permitir la entrada de varias líneas.fuente
Japt , 10 bytes
Se le ocurrieron dos soluciones de 10 bytes, parece que no puede mejorar eso.
Intentalo
Explicación
Alternativa
Intentalo
fuente