Desafío relacionado con el marketing multinivel.
Un compañero quiere ser recompensado. Por lo tanto, atrajo a los Ninversores ( N>=1), cada i-ésimo inversor invirtió x[i]. Cuando una suma total excede el umbral, x[0]+x[1]+...+x[N-1] >= Tun 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>=Myk<=N, cualquierkinversor tiene que invertir al menosT/kcada uno;
Dado N, x[], T, Mque 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>=My k<=N:
- cualquiera
kde losNinversores invirtió al menosT/kcada
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ámicamentexen 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, Mcomo algunas constantes definidas externamente o como elementos incorporados en el lenguaje.truey un valor verdadero parafalse?Respuestas:
Jalea ,
129 bytesUn programa completo que acepta
x T Me imprime0si el compañero es recompensado y1si no.Pruébalo en línea!
¿Cómo?
fuente
0si el compañero es recompensado y1si no". (0es 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 My salidas0por"yes"y1para"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 -> trueparece 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-1elementos 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 investorsy 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[],Msalida es
0por la recompensa de pares y1si 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
nya que no la usas en ningún lado; eliminadokya que puedes usarlomsolo; añadido una variablelpara elq.Lengthpuesto 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>=kcheque ac<k; y cambió elif(c>0)break;am=c>0?l+1:m;, ya que el bucle se detiene sim<=l, al cambiarma, sel+1guarda un bytebreak(y también se guarda en 2 paréntesis). :)m=c>0?l+1:mpuede eliminar por completo y en su lugar&c<1se puede agregar un cheque al bucle. Y al tomar la entradannuevamente, ya no la necesita,q.Lengthsino 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
Falsey "no" esTrue. Aquí, sin embargo, descartamos los casos de prueba como parte de la inversión y aprovechamos la capacidad de iniciar elenumerateconteoM. (mintambié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,My salidastrue/falsepara"yes"/"no"respectivamente.Dado que el desafío pide específicamente
booleanresultados, no puedo devolver el1/0as 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,>0se puede descartar en el retorno para guardar dos bytes, en cuyo caso devolverá1/0para"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
xy lostvalores son decimales. Esto maneja el caso dondetno es divisible porkun poco mejor.fuente