Introduction:
(Source: Wikipedia )
Quand on regarde un arc-en-ciel, il aura toujours les couleurs de haut en bas:
rouge; Orange; Jaune; vert; bleu; indigo; violet
Si nous regardons ces anneaux individuels, l'anneau rouge est bien sûr plus grand que l'anneau violet.
De plus, il est également possible d'avoir deux voire trois arc-en-ciel en même temps.
Tout cela combiné ci-dessus sera utilisé dans ce défi:
Défi:
Étant donné une liste d'entiers de taille exactement 7, où chaque valeur indique les particules de couleur disponibles pour former des arcs-en-ciel (où le plus grand indice indique le rouge et le plus petit indice indique le violet), affichez la quantité d'arcs-en-ciel qui peuvent être formés.
Un seul arc-en-ciel entier doit avoir au moins 3x violet, 4x indigo, 5x bleu, 6x vert, 7x jaune, 8x orange, 9x rouge. Un deuxième arc-en-ciel au-dessus sera encore plus grand que l'anneau rouge du premier arc-en-ciel (y compris un espace entre eux), il aura donc besoin d'au moins 11x violet, 12x indigo, 13x bleu, 14x vert, 15x jaune, 16x orange , 17x rouge en plus de ce que le premier arc-en-ciel utilise. Le troisième arc-en-ciel recommencera à 19x violet.
Exemple:
Liste d'entrées: [15,20,18,33,24,29,41]
Sortie:2
Pourquoi? Nous avons 15x violet, et nous avons besoin d'au moins 3 + 11 = 14 pour deux arcs-en-ciel. Nous avons 20 indigo et nous avons besoin d'au moins 4 + 12 = 16 pour deux arcs-en-ciel. Etc. Nous avons assez de couleurs pour deux arcs-en-ciel, mais pas assez pour former trois arcs-en-ciel, donc la sortie est 2
.
Règles du défi:
- Les entiers du tableau d'entrée sont garantis non négatifs (
>= 0
). - La liste d'entrées est garantie de taille 7 exactement.
- Quand aucun arc-en-ciel ne peut se former, nous sortons
0
. - Le format d'entrée et de sortie est flexible. Peut être une liste ou un tableau d'entiers de décimales, peut être extrait de STDIN. La sortie peut être un retour d'une fonction dans n'importe quel type de sortie raisonnable, ou imprimée directement sur STDOUT.
Quantité minimale de couleurs requise pour la n
quantité d'arcs-en-ciel:
Amount of Rainbows Minimum amount per color
0 [0,0,0,0,0,0,0]
1 [3,4,5,6,7,8,9]
2 [14,16,18,20,22,24,26]
3 [33,36,39,42,45,48,51]
4 [60,64,68,72,76,80,84]
5 [95,100,105,110,115,120,125]
etc...
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Input: [15,20,18,33,24,29,41]
Output: 2
Input: [3,4,5,6,7,8,9]
Output: 1
Input: [9,8,7,6,5,4,3]
Output: 0
Input: [100,100,100,100,100,100,100]
Output: 4
Input: [53,58,90,42,111,57,66]
Output: 3
Input: [0,0,0,0,0,0,0]
Output: 0
Input: [95,100,105,110,115,120,125]
Output: 5
Input: [39525,41278,39333,44444,39502,39599,39699]
Output: 98
0,0,0,0,0,0,0
cas de bord cependant :( (cela ne correspond pas à la logique à 1 écart)Réponses:
Pyth , 14 octets
Suite de tests!
Comment?
Algortihm
Tout d'abord, dérivons la formule sur laquelle cette réponse est basée. Appelons la fonction qui donne la quantité nécessaire de particules de couleur , où est le nombre de couches et est l'indice de la couleur, basé sur 0. Tout d'abord, nous notons que pour la seule couche (où est indexé 1, dans ce cas), nous avons besoin de particules de couleur . En gardant cela à l'esprit, nous additionnons les résultats de chaque pour chaque couche :C(n,i) n i nth n L(n,i)=i+3+8(n−1) L(k,i) k
Par conséquent, nous savons maintenant que le nombre maximum de couches possibles, appelons-le , doit satisfaire l'inégaliték C(k,i)≤Ii Ii ith
la mise en oeuvre
.e
la source
Python 2 ,
6461 octetsEssayez-le en ligne!
Chaque couleur de l'arc-en-ciel utilise
(3+i)+n*8
pour la couchen
et la couleuri
(0 = violet, etc.)Le total des couches x est donc:
(3*i)*x + 8*x*(x+1)
.Nous résolvons simplement n et prenons la valeur minimale.
Enregistré:
la source
05AB1E ,
181716 octets-1 octet grâce à Magic Octopus Urn
Essayez-le en ligne!
La quantité de couleur nécessaire pour n arcs-en-ciel est n (4n + [-1, 0, 1, 2, 3, 4, 5]) .
la source
[ND4*6Ý<+*¹›1å#N
fonctionne mais je ne sais pas pourquoi. -1 octet cependant.N>
parce que vous en aviez¾>
avant.JavaScript (ES6), 49 octets
Essayez-le en ligne!
Comment?
Mais à des fins de golf, nous commençons par
n === undefined
et utilisons des valeurs négativesn
après. La première itération est toujours réussie car le côté droit de l'inégalité est évaluéNaN
. Par conséquent, le premier test significatif est le deuxième avecn == -1
.la source
Gelée , 18 octets
Essayez-le en ligne!
Utilise l'explication de la réponse 05AB1E d'Okx.
la source
Excel VBA, 78 octets
Fonction anonyme qui prend les entrées de la plage
[A1:G1]
et les sorties vers la fenêtre immédiate du VBE.la source
Fusain , 21 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication: calcule directement le nombre d'arcs-en-ciel possibles avec chaque couleur avec une formule I dérivée indépendamment mais s'avère être la même que la formule de @ TField.
la source
JavaScript (Node.js) , 54 octets
Port de réponse @TFeld
Essayez-le en ligne!
la source
Gelée , 14 octets
C'était dur!
Un lien monadique acceptant une liste de sept entiers qui donne un entier, le nombre d'arc-en-ciel possible.
Essayez-le en ligne! Ou consultez la suite de tests .
Comment?
Malheureusement, toute méthode naïve semble prendre 16 octets, une telle méthode l'est
Ṃɓ_J×¥H÷‘H<¬Ȧð€S
, mais il s'avère que la méthode utilisée ici est beaucoup plus efficace et plus courte!Cette méthode crée plus que suffisamment de piles arc-en-ciel en tant que nombre de particules, y compris les bandes ultra-violettes , et ajoute 1 pour chaque pile, ce qui est possible.
Le test pour cela est de vérifier qu'il n'y a qu'une seule bande NON possible étant donné que nous avons besoin de quelques particules de bande ultra-violette mais que nous avons fourni zéro.
la source
§ỊS
!05AB1E , 14 octets
Essayez-le en ligne!
Algorithme Pyth ⟶ 05AB1E Algorithme
Il existe de nombreuses méthodes que l'on peut essayer pour résoudre ce défi dans 05AB1E, j'ai donc essayé quelques-unes d'entre elles et cela s'est avéré être le plus court. En adaptant la formule susmentionnée de ma réponse Pyth, en gardant à l'esprit que 05AB1E utilisait l'indexation 1, nous pouvons construire notre fonction comme suit:
Notez que cette égalité n'est pas précise (mais je ne connais actuellement aucun moyen de l'énoncer plus formellement) et que les solutions à cette équation produiront des nombres à virgule flottante, mais nous corrigeons cela en utilisant la division du sol plutôt que la division précise plus tard. Quoi qu'il en soit, pour continuer avec notre argument, la plupart d'entre vous connaissent probablement très bien les solutions d' une telle équation , alors nous l'avons ici:
Quelle est exactement la relation que cette réponse met en œuvre.
la source
C ++,
127125 octetsRasé de 2 octets grâce à Kevin Cruijssen.
Essayez-le en ligne!
La fonction prend un tableau de style C de sept ints et retourne un int.
Explication:
la source
for(int c=0;c<7;c++){int q=c-1;q=(std::sqrt(q*q+16*x[c])-q)/8;o=o>q?q:o;}
à ceci:for(int c=0,q;c<7;c++,o=o>q?q:o)q=(std::sqrt(--c*c-c+16*x[++c]))/8;
. Pourriez-vous également fournir un lien TIO avec un code de test?