Desafío relacionado con el marketing multinivel.
Un compañero quiere ser recompensado. Por lo tanto, atrajo a los N
inversores ( N>=1
), cada i-ésimo inversor invirtió x[i]
. Cuando una suma total excede el umbral, x[0]+x[1]+...+x[N-1] >= T
un compañero podría ser recompensado. Pero solo si se cumplen las siguientes condiciones:
- La cantidad mínima de inversores debe ser mayor que
M
(M<=N
) - Para al menos un número entero
k
, dóndek>=M
yk<=N
, cualquierk
inversor tiene que invertir al menosT/k
cada uno;
Dado N, x[], T, M
que debe determinar si la recompensa de los pares se genera o no (resultado booleano, "sí" o "no"). El código más corto gana.
Ejemplos:
N=5; M=3; T=10000
, para generar la recompensa de un compañero, debe cumplirse uno de los siguientes:
- 3 invirtieron al menos 3334 cada uno
- 4 invirtieron al menos 2500 cada uno
- los 5 invirtieron al menos 2000 cada uno
N=6; M=2; T=5000
:
- 2 invirtieron al menos 2500 cada uno
- 3 invirtieron al menos 1667 cada uno
- 4 invirtieron al menos 1250 cada uno
- 5 invertidos al menos 1000 cada uno
- los 6 invirtieron al menos 834 cada uno
generalizado: para cualquier k
, donde k>=M
y k<=N
:
- cualquiera
k
de losN
inversores invirtió al menosT/k
cada
Casos de prueba:
formato:
N, x[], T, M -> correct answer
6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0
6, [0, 60, 0, 60, 60, 0], 180, 3 -> 1
6, [179, 89, 59, 44, 35, 29], 180, 3 -> 0
6, [179, 89, 59, 44, 35, 30], 180, 3 -> 1
6, [179, 89, 59, 44, 36, 29], 180, 3 -> 1
6, [179, 90, 59, 44, 35, 29], 180, 3 -> 0
6, [30, 30, 30, 30, 29, 30], 180, 3 -> 0
6, [30, 30, 30, 30, 30, 30], 180, 3 -> 1
code-golf
decision-problem
xakepp35
fuente
fuente
len(x)
será más corta que la escrituraN
. Eso se hace, porque para la matriz asignada dinámicamentex
en C no hay unalen(x)
función directa , por lo que siempre puede referirse a la longitud comoN
. Para su comodidad, puede considerar todos los datos de entradaN, x[], T, M
como algunas constantes definidas externamente o como elementos incorporados en el lenguaje.true
y un valor verdadero parafalse
?Respuestas:
Jalea ,
129 bytesUn programa completo que acepta
x T M
e imprime0
si el compañero es recompensado y1
si no.Pruébalo en línea!
¿Cómo?
fuente
0
si el compañero es recompensado y1
si no". (0
es decir, "sí"). Ahorra 1 byte :)05AB1E , 9 bytes
Pruébelo en línea o verifique todos los casos de prueba .
Puerto de la respuesta Jelly de @JonathanAllan , por lo que también toma las entradas
x T M
y salidas0
por"yes"
y1
para"no"
. Si esto no está permitido, y debe invertirse,_
se puede agregar un final .Explicación:
Alternativa para
.ssè
:Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
JavaScript,
5452 bytesPruébalo en línea
fuente
[0, 60, 0, 60, 60, 0], 180, 3 -> true
parece no funcionar! La bersión de 72 bytes lo maneja bien. ¿Error o función?)Retina , 79 bytes
Pruébalo en línea! Toma entrada en el formato
[x], T, M
. El enlace incluye casos de prueba. Explicación:Convierte a unario.
Ordenar
[x]
en orden descendente.Multiplica cada elemento de
[x]
por su índice.Eliminar los primeros
M-1
elementos de[x]
.Pruebe si algún elemento restante de
[x]
es mayor o igual aT
.fuente
Perl 6 ,
46 3329 bytesPruébalo en línea!
Bloques de código anónimo que toman la entrada en el formulario
list, amount, length of list, minimum amount of investors
y devuelven un cruce de verdad / falseyall
, donde la verdad falla y falsey es un éxito.Explicación:
fuente
05AB1E , 6 bytes
Entrada efectuará siguiendo el orden
T
,N
,x[]
,M
salida es
0
por la recompensa de pares y1
si no sePruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
*
con el rango para recortar implícitamente la lista!C # (.NET Core) ,
129, 89 bytesEDITAR: ¡Gracias a Kevin Cruijssen por jugar 40 bytes mientras explicaba la mecánica de por qué!
Pruébalo en línea!
fuente
n
ya que no la usas en ningún lado; eliminadok
ya que puedes usarlom
solo; añadido una variablel
para elq.Length
puesto de usarlo dos veces; combina las variablesint c=0,l=q.Length,j;
para que no necesite el adicionalvar
; eliminó los corchetes innecesarios poniendo todo en el cuerpo del bucle for; cambió elc>=k
cheque ac<k
; y cambió elif(c>0)break;
am=c>0?l+1:m;
, ya que el bucle se detiene sim<=l
, al cambiarm
a, sel+1
guarda un bytebreak
(y también se guarda en 2 paréntesis). :)m=c>0?l+1:m
puede eliminar por completo y en su lugar&c<1
se puede agregar un cheque al bucle. Y al tomar la entradan
nuevamente, ya no la necesita,q.Length
sino que puede usarlan
.C # (compilador interactivo de Visual C #) con indicador
/u:System.Linq.Enumerable
, 69 bytesPruébalo en línea!
Sin banderas, 73 bytes
Pruébalo en línea!
fuente
JavaScript, 72 bytes
Código
Pruébalo en línea!
Acepta entradas en formato (x [], T, M)
Explicación
fuente
Python 3 , 136 bytes
Simplemente prueba las condiciones para asegurarse de que se cumplan. 1 si se otorga la recompensa, 0 si no.
Pruébalo en línea!
fuente
Python ,
7165 bytesPruébalo en línea!
Una función sin nombre; puerto de mi respuesta Jelly. Como tal, "sí" es
False
y "no" esTrue
. Aquí, sin embargo, descartamos los casos de prueba como parte de la inversión y aprovechamos la capacidad de iniciar elenumerate
conteoM
. (min
también funcionaría en lugar deall
)fuente
R ,
4342 bytes-1 bytes al implementar el enfoque aún más de cerca
Pruébalo en línea!
Implementación R simple del enfoque Jonathan's Jelly. Intenté varias variaciones, pero esto es lo mejor que se me ocurre por unos pocos bytes.
1 implica fracaso, 0 implica éxito.
fuente
Japt,
16141311 bytesIntentalo
fuente
Java 8, 91 (¿o 89?) Bytes
Respuesta de C # .NET del puerto de @Destroigo (después de jugar un poco más), ¡así que asegúrese de votarlo!
Toma entradas
N,x,T,M
y salidastrue
/false
para"yes"
/"no"
respectivamente.Dado que el desafío pide específicamente
boolean
resultados, no puedo devolver el1
/0
as como está, ya que esos no son valores de verdad / falsey válidos en Java. Si dos valores de salida distintos para"yes"
/"no"
son válidos para este desafío en su lugar,>0
se puede descartar en el retorno para guardar dos bytes, en cuyo caso devolverá1
/0
para"yes"
/"no"
respectivamente.Pruébalo en línea.
Explicación:
fuente
C # (compilador interactivo de Visual C #) , 66 bytes
Pruébalo en línea!
Inspirado por la respuesta de @ EmbodimentOfIgnorance.
He mencionado esto antes, pero C # 8 tiene un rango literal que podría hacer que esta respuesta sea algo como esto:
Vi un enlace a SharpLab con un ejemplo, pero no pude hacerlo funcionar.
Una cosa que cambié fue el
x
y lost
valores son decimales. Esto maneja el caso dondet
no es divisible pork
un poco mejor.fuente