Défi lié au marketing à plusieurs niveaux.
Un pair veut être récompensé. Il a donc attiré des N
investisseurs ( N>=1
), chaque i-ème investisseur ayant investi x[i]
. Lorsqu'une somme totale dépasse le seuil, x[0]+x[1]+...+x[N-1] >= T
un pair pourrait être récompensé. Mais seulement si les conditions suivantes sont remplies:
- Le nombre minimum d'investisseurs doit être supérieur à
M
, (M<=N
) - Pour au moins un entier
k
, oùk>=M
etk<=N
, toutk
investisseur doit investir au moinsT/k
chacun;
Donné N, x[], T, M
vous devez déterminer si la récompense du pair est générée ou non (résultat booléen, «oui» ou «non»). Le code le plus court gagne.
Exemples:
N=5; M=3; T=10000
, afin de générer la récompense du pair, l'une des conditions suivantes doit être remplie:
- 3 investis au moins 3334 chacun
- 4 investis au moins 2500 chacun
- chacun des 5 a investi au moins 2000 chacun
N=6; M=2; T=5000
:
- 2 investis au moins 2500 chacun
- 3 investis chacun au moins 1667
- 4 investis au moins 1250 chacun
- 5 investis au moins 1 000 chacun
- chacun des 6 a investi au moins 834 chacun
généralisé: pour tout k
, où k>=M
et k<=N
:
- l'un
k
desN
investisseurs a investi au moinsT/k
chacun
Cas de test:
format:
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
la source
la source
len(x)
sera plus courte que l'écritureN
. Cela est fait, car pour le tableau alloué dynamiquementx
en C, il n'y a pas delen(x)
fonction directe - vous pouvez donc toujours faire référence à la longueur commeN
. Pour plus de commodité, vous pouvez considérer toutes les données d'entréeN, x[], T, M
comme des constantes définies en externe ou comme des éléments de langage intégrés.true
Falsey et une valeur pourfalse
?Réponses:
Gelée ,
129 octetsUn programme complet qui accepte
x T M
et imprime0
si le pair est récompensé et1
sinon.Essayez-le en ligne!
Comment?
la source
0
si le pair est récompensé et1
sinon". (c'est-à0
- dire "oui"). Il enregistre 1 octet :)05AB1E , 9 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Port de la réponse Jelly de @JonathanAllan , prend donc également les entrées
x T M
et sorties0
pour"yes"
et1
pour"no"
. Si cela n'est pas autorisé et doit être inversé, une fin_
peut être ajoutée.Explication:
Alternative pour
.ssè
:Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
JavaScript,
5452 octetsEssayez-le en ligne
la source
[0, 60, 0, 60, 60, 0], 180, 3 -> true
semble pas fonctionner! La bersion de 72 octets le gère bien. Bug ou fonctionnalité?)Rétine , 79 octets
Essayez-le en ligne! Prend la saisie dans le format
[x], T, M
. Le lien inclut des cas de test. Explication:Convertissez en unaire.
Trier
[x]
par ordre décroissant.Multipliez chaque élément de
[x]
par son index.Supprimer le premier
M-1
éléments de[x]
.Testez si un élément restant de
[x]
est supérieur ou égal àT
.la source
Perl 6 ,
46 3329 octetsEssayez-le en ligne!
Blocs de code anonymes qui prennent une entrée dans le formulaire
list, amount, length of list, minimum amount of investors
et retournent une jonction vérité / falseyall
, où la vérité est échouée et falsey est un succès.Explication:
la source
05AB1E , 6 octets
Entrée pris dans l'ordre
T
,N
,x[]
, LaM
sortie est
0
une récompense par les pairs et1
sinonEssayez-le en ligne! ou comme suite de tests
Explication
la source
*
avec la plage pour recadrer implicitement la liste!C # (.NET Core) ,
129, 89 octetsEDIT: Merci à Kevin Cruijssen d'avoir joué au golf sur 40 octets tout en expliquant la mécanique pour expliquer pourquoi!
Essayez-le en ligne!
la source
n
car vous ne l'utilisez nulle part; supprimék
car vous pouvez vous utiliserm
; ajouté une variablel
pourq.Length
puisque vous l'utilisez deux fois; combiné les variablesint c=0,l=q.Length,j;
pour que vous n'ayez pas besoin des supplémentairesvar
; supprimé les supports inutiles en mettant tout dans le corps de la boucle for; changé lec>=k
chèque enc<k
; et changé leif(c>0)break;
enm=c>0?l+1:m;
, puisque la boucle s'arrête sim<=l
, changerm
enl+1
enregistre un octetbreak
(et il enregistre également sur 2 crochets). :)m=c>0?l+1:m
peut être complètement supprimé et un&c<1
chèque peut être ajouté à la boucle à la place. Et en reprenant l'entréen
, vous n'en avez plus besoinq.Length
mais vous pouvez utiliser à lan
place.C # (Visual C # Interactive Compiler) avec indicateur
/u:System.Linq.Enumerable
, 69 octetsEssayez-le en ligne!
Sans aucun indicateur, 73 octets
Essayez-le en ligne!
la source
JavaScript, 72 octets
Code
Essayez-le en ligne!
Accepte une entrée au format (x [], T, M)
Explication
la source
Python 3 , 136 octets
Il suffit de tester les conditions pour vous assurer qu'elles sont remplies. 1 si la récompense est donnée, 0 sinon.
Essayez-le en ligne!
la source
Python ,
7165 octetsEssayez-le en ligne!
Une fonction sans nom; port de ma réponse Jelly. En tant que tel, «oui» est
False
et «non» l'estTrue
. Ici, cependant, nous rejetons les cas de test dans le cadre de l'inversion et profitons de la possibilité d'initier leenumerate
comptageM
. (min
fonctionnerait également à la place deall
)la source
R ,
4342 octets-1 octets en implémentant l'approche encore plus étroitement
Essayez-le en ligne!
Implémentation R simple de l'approche Jelly de Jonathan. J'ai essayé un tas de variations mais cela pépine le mieux que je pouvais penser de quelques octets.
1 implique un échec, 0 implique un succès.
la source
Japt,
16141311 octetsEssayez-le
la source
Java 8, 91 (ou 89?) Octets
Port de la réponse C # .NET de @Destroigo (après l'avoir joué un peu plus), alors assurez-vous de voter pour lui!
Prend des entrées
N,x,T,M
et des sortiestrue
/false
pour"yes"
/"no"
respectivement.Étant donné que le défi demande spécifiquement des
boolean
résultats, je ne peux pas retourner le1
/0
tel quel , car ce ne sont pas des valeurs truey / falsey valides en Java. Si deux valeurs de sortie distinctes pour"yes"
/"no"
sont valables pour ce défi à la place, le>0
retour peut être supprimé pour enregistrer deux octets, auquel cas il retournera1
/0
pour"yes"
/"no"
respectivement.Essayez-le en ligne.
Explication:
la source
C # (Visual C # Interactive Compiler) , 66 octets
Essayez-le en ligne!
Inspiré par la réponse de @ EmbodimentOfIgnorance.
J'ai déjà mentionné cela, mais C # 8 a un littéral de plage qui pourrait rendre cette réponse quelque chose comme ceci:
J'ai vu un lien vers SharpLab avec un exemple, mais je n'ai pas pu le faire fonctionner moi-même.
J'ai changé une chose
x
et lest
valeurs sont des décimales. Cela gère le cas oùt
n'est pas divisible park
un peu mieux.la source