Le défi
Étant donné les deux chaînes hexadécimales majuscules (les deux 6 caractères de long, XXXXXX et YYYYYY) représentant les valeurs RVB (allant de 000000
à FFFFFF
inclus), et un entier positif non nul N, afficher une transition linéaire des N + 2 couleurs générées de XXXXXX à YYYYYY cela entraînerait un dégradé de couleurs.
Exemple
Contribution
FF3762
F08800
9
Production
Veuillez noter dans notre exemple, j'ai demandé 9 étapes intermédiaires entre les deux couleurs, donc 11 lignes seront affichées de la couleur initiale à la couleur finale
FF3762
FD3F58
FC474E
FA4F44
F9573A
F75F31
F66727
F46F1D
F37713
F17F09
F08800
Avertissements
Bien que j'aie opté pour un processus linéaire simple de dérivation des valeurs entières pour les couleurs intermédiaires avant de les reconvertir en hexadécimal, vos méthodes peuvent varier. Veuillez considérer les différentes façons d'arrondir / diminuer vos chiffres en conséquence.
Essai
Pour rendre cela intéressant, j'ai fourni un extrait pour permettre le test de votre code, y compris un bouton pour vous fournir deux couleurs aléatoires pour tester votre code. L'affichage de vos résultats est facultatif, mais c'est encouragé!
c1=()=>('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6);
$("#col").click(function(){
alert("Your two colors are: "+c1()+" and "+c1()+".");
});
$("#colors").blur(function(){
$("#test").empty();
var colArr = $("#colors").val().split("\n");
for(c in colArr){
$("#test").append('<div class="tester" style="background-color:#'+colArr[c]+';">'+colArr[c]+'</div>')
}
});
.tester{height: 20px;
width: 60px;padding: 4px;border: 1px solid black;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="col">Your two colors</button><br />
<textarea id="colors"></textarea>
<div id="test">
</div>
1) Vous pouvez accéder à deux couleurs aléatoires pour votre test en cliquant sur le bouton "Vos deux couleurs". 2) Le nombre d'étapes intermédiaires sera le même que le nombre de caractères dans votre nom d'utilisateur PPCG, espaces compris, dans le cas de "WallyWest", il serait de 9 (comme dans mon exemple ci-dessus). 3) Exécutez votre code avec les deux couleurs et le numéro et une fois que vous avez votre liste générée, vous avez la possibilité de coller votre sortie dans la zone de texte et de la tabuler pour obtenir votre dégradé de couleurs généré.
Mon exemple est montré ici:
Je dois admettre que ça a l'air génial!
Veuillez noter: Comme je l'ai mentionné, montrer votre test de votre sortie à l'aide de l'extrait est facultatif, mais c'est encouragé! :)
Production
La sortie de la liste doit être sous la forme de N + 2 ensembles de nombres hexadécimaux à 6 chiffres séparés par des sauts de ligne (\ n) comme indiqué dans mon exemple ci-dessus. La sortie peut prendre la forme de lignes séparées, d'une liste séparée par des espaces / virgules, d'un tableau ou de tout ce qui convient le mieux à votre langue ... (Merci @nimi pour les informations) N'oubliez pas que si vous prévoyez de tester votre code avec l'extrait, mais vous séparez chaque "couleur" est à vous.
Règles
Il s'agit de code-golf, donc la solution la plus courte en octets sera couronnée gagnante. Pas de failles , naturellement. L'entrée doit accepter les deux chaînes et un nombre (qui, comme je l'ai dit, équivaudra au nombre de lettres de votre nom d'utilisateur sur PPCG, donc votre sortie résultante aura toujours un minimum de trois lignes.
Réponses:
MATL , 31 octets
Cela utilise une interpolation linéaire avec arrondi. Le format d'entrée est
Essayez-le en ligne!
Sortie graphique, 31 octets
C'est le résultat pour les entrées
Essayez-le dans MATL Online ! L'interprète est actuellement expérimental. Si vous n'obtenez aucune sortie, actualisez la page et appuyez à nouveau sur "Exécuter".
la source
JavaScript (ES6), 130 octets
la source
Dyalog APL , 44 octets
Demande N , puis B eginning-color, puis E nding-color. Besoins
⎕IO←0
par défaut sur de nombreux systèmes.h[
...]
index en h (qui a une valeur lorsque nous finissons d'évaluer le contenu du support)N←⎕
invite pour N numérique (4)1+
ajouter un à N (5)(
...)÷
utilisez cela pour diviser le résultat de ...⍞⍞
invite pour deux chaînes de caractères ["7E0E7E", "FF3762"](
...)∘⍳¨
trouver les indices des caractères de chaque chaîne dans ...⎕D,⎕A
D igits suivie d' une lphabeth←
assigné à hnous avons maintenant "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
E B←
affecter les indices à E et B [[7,14,0,14,7,14], [15,15,3,7,6,2]]-/
soustraire et entourer B de E [[-8, -1, -3,7,1,12]]le résultat jusqu'à présent est [[-1.6, -0.2, -0.6,1.4,0.2,2.4]]
(
...)×
multipliez cela par ...2+N
deux plus N (6)⍳
premiers entiers [0,1,2,3,4,5]cela nous donne [[0,0,0,0,0,0,0], [- 1,6, -0,2, -0,6,1,4,0,2,2,4], [- 3,2, -0,4, -1,2,2,8,0,4,4,8 ], ...]
B∘+¨
ajouter B à chacun [[15,15,3,7,6,2], [13.4,14.8,2.4,8.4,6.2.4.4], [11.8,14.6,1.8,9.8,6.4,6.8], ... ]⌊
arrondir [[15,15,3,7,6,2], [13,14,2,8,6,4], [11,14,1,9,6,6], ...]↑
faire la liste des listes dans le tableauici, nous indexons en h , donnant
ce qui est le même que
et imprime en
TryAPL en ligne!
la source
Pyth - 35 octets
Golfe horriblement, abandonne.
Essayez-le en ligne ici .
Exemple:
la source
7cb472 93fb8a 8
et reçu seulement 10 lignes de sortie lors du test de votre code?93fb8a
... Votre code a-t- il sorti deux lignes de la même valeur?PowerShell v2 +,
176159150 octetsPrend l'entrée sous la forme de deux chaînes et d'un nombre, puis convertit la chaîne de départ en un tableau de chaînes réparties sur deux caractères, stocke cela dans
$x
. Nous sortons ensuite en$a
tant que section de départ et bouclons de++$n
à1
(pour assurer une clôture correcte).Chaque itération, définit l'assistant
$j
sur le numéro actuel (utilisé plus tard pour s'assurer que nous avons le bon nombre d'étapes entre l'endroit où nous en sommes actuellement à notre destination) et calcule l'étape suivante en fonction d'une boucle$x
.Chaque boucle intérieure n'est qu'une affectation. Nous définissons
$x
à l'endroit approprié égal à une nouvelle chaîne en"{0:x2}"
utilisant l'-f
opérateur ormat. L'x2
ici spécifie une sortie hexadécimal à deux chiffres, et l'entrée est du côté droit de l'-f
opérateur. PowerShell a un opérateur natif hexadécimal en décimal0x
, donc cette longue expression imbriquée parens utilise cet opérateur pour convertir l'hex courant en nombres, en soustrayant pour trouver la différence à faire (en divisant dynamiquement$b
ici comme nous l'avons fait$a
, et en utilisant modulo pour sélectionner le bon élément), en divisant par les$j
étapes restantes, en[int]
(PowerShell arrondit le banquier par défaut) et soustrait ce nombre de pas de l'hex actuel pour obtenir ce que notre prochain hex doit être.Le résultat de ce calcul est stocké dans
$x
trois éléments hexadécimaux. C'est encapsulé dans des parens pour créer une copie sur le pipeline, et-join
édité ensemble dans une seule chaîne. Toutes ces chaînes résultantes sont laissées sur le pipeline, et la sortie via impliciteWrite-Output
se produit lors de l'exécution du programme.Exemple
On m'a donné 0ba7c5 et 6c0e50 pour mes deux couleurs, et TimmyD contient 6 caractères.
la source
Python 2, 189 octets
la source
[Groovy] Mise à jour finale (199 octets) - selon la demande
Non-golf
Le golf
Essayez la finale ici: https://groovyconsole.appspot.com/script/5130696796405760
ANCIENNES VERSIONS CI-DESSOUS, REFUSÉES PAR OP
Groovy (123 octets)
Le golf
Non-golf
Contributions
Exemple de sortie
résulte en
Essayez-le vous-même: https://groovyconsole.appspot.com/script/5184465357766656
Avec conversions hexadécimales incluses
Je suppose que je triche aussi ... Voici le script avec l'utilisation de hex:
Nouveau code avec des conversions hexadécimales:
188 personnages au golf:
Sortie pour 000000 vers FFFFFF et 16 (longueur du nom d'utilisateur)
la source
{s-> s.split("(?<=\\G.{2})").collect{Integer.parseInt(it,16)}}('FFFFFF')
Résultats dans [255,255,255] Je peux ajouter 62 octets à mon code en utilisant cette conversion si vous le voulez vraiment.R, 68 octets
Il existe une fonction intégrée qui interpole deux couleurs:
Contribution:
Sortie: un vecteur avec des valeurs
La spécification des couleurs dans R nécessite un symbole de hachage.
Trottons quelque chose, comme une fonction:
la source
FF3762 F08800 15
?C,
175169168 octetsNon golfé:
Merci à @ h-walters d'avoir rasé 5 octets!
la source
puts
fait encore la syntaxe?printf()
, mais ne fait aucun formatage, au lieu de cela, il imprime simplement la chaîne donnée telle qu'elle est et ajoute une nouvelle ligne.puts("")
dans la troisième partie de la première boucle for (;
après être devenu un,
avant) ... +0 octets. Cependant, cela vous permet de supprimer les accolades après la deuxième boucle ... -2 octets. Vous pouvez enregistrer 1 octet supplémentaire en supprimant 3j<3
et en le remplaçant par votreprintf
déclaration (c'est sournois ... printf ne renverra que 2, mais il doit encore être évalué la troisième fois).0
dansj=0
. Une fois que tout ici est en place, votre programme devrait être plus court de 5 octets et au moins 50% plus étrange.sh + ImageMagick, 81 octets
usage:
("-depth 8" n'est pas nécessaire si votre messagerie instantanée est compilée avec 8bpp par défaut)
la source