Étant donné trois entiers rgb, affichez la représentation hexadécimale sous forme de chaîne.
Input: Output:
72 61 139 #483D8B
75 0 130 #4B0082
0 255 127 #00FF7F
Victoires de code les plus peu orthodoxes les plus courtes
Réponses:
Ruby: 19 caractères
Exemple d'exécution:
la source
Rubis
J'allais plus pour la partie "peu orthodoxe". ;)
La police (sur mon navigateur Web) est un peu grande, donc elle a l'air déformée, mais elle est meilleure dans Courier New:
Exemple d'exécution:
la source
q / k (3 caractères)
Pas exactement peu orthodoxe mais assez court
Exemple
Pour correspondre exactement au format de sortie de la question, nous pouvons faire (pour 9 caractères):
la source
PowerShell:
71525141Code golf:
Remarque:
Il n'y a pas d'erreur lors de la vérification des entrées non valides. Le script prendra volontiers 256, 4096 et 65536 comme entrées, puis la sortie # 100100010000 (qui ne fonctionnera évidemment pas en RVB).
Non golfé, avec commentaires:
la source
foreach($i in 1,2,3)
pour la réduire à 68 caractères.foreach
dans PowerShell. (Au moins, je n'ai pas pu faire fonctionner certains tests.) Cependant, en utilisant la bonne syntaxe, un alias intégré et un autre raccourci PowerShell que j'ai récemment découvert, je pense que j'ai quelque chose de mieux, le rasage 12 autres caractères de votre suggestion.(1..3)|%{...}
(Insérez la déclaration entre crochets du script existant à la place des points de suspension.) J'ai encore besoin de tester complètement cela dans le script, mais merci de m'avoir pointé dans cette direction!foreach
Je ne sais pas si c'est la bonne syntaxe ou non, mais la référence SS64 la mentionne et cela fonctionne pour moi. (Aucune idée de la version. Celle fournie avec Windows 7.)(1..3)|%
fonctionne et ramène le script à 56 caractères. Je vais éditer cela dans la réponse, et je vous créditerai certainement pour l'idée. Merci encore!-join
:'#'+-join(1..3|%{"{0:X2}"-f+(read-host)})
.bash
2221 caractères(Merci @manatwork pour 1 caractère en utilisant
\
au lieu de guillemets doubles)ou lire STDIN en boucle: 48 caractères:
Ajouté le 06-10-2015: bash ( méthode plus peu orthodoxe )
8483 caractèresJe sais, ce pourrait être 82 caractères si
020
c'est écrit16
, mais je préfère ça ... Ou peut-êtred+=${c[$b$a 0x10]}
qui était le premier post.Une autre approche bash
Cela affichera une fenêtre de navigateur, avec:
Où vous pouvez faire tourner la molette pour changer les valeurs (avec la touche Maj enfoncée pour l'étape par 15) ...
la source
printf \#%02X%02X%02X
suffisant.d+=${c[$b$a 0x10]}
quelque chose de sexy !d+=${c[$b$a 020]}
fera le travail et aura fière allurePerl, 31 caractères
Il est difficile de rendre un programme aussi court non orthodoxe, mais je pense que cela fonctionne.
la source
unpack
question: pouvez-vous mettre le hexadécimal a..f en majuscule, comme dans la question?unpack
, mais pas de chance. Une façon est d'utilisersprintf
au lieu deunpack
, mais c'est plus long et complètement orthodoxe. L'autre façon consiste simplement à modifier la chaîne en majuscules:,map{uc unpack H2,chr}
au coût de trois caractères.pack
et n'entrentunpack
jamais dans mon style de codage. Donc, c'est assez peu orthodoxe pour moi.Script d'action 3 | 43 caractères
Production:
#483D8B
la source
Perl 24 caractères
Désolé, ce n'est pas aussi sexy que d'utiliser
unpack
, mais plus court!Version plus obscure:
Mais si vous préférez vraiment utiliser
unpack
, vous pouvez:Par exemple, ce n'est pas la version courte, mais j'aime ça! (Notez l'utilisation de
rand
pour randonner ceci :-)la source
> <>
10360Utilisé l'espace blanc gaspillé et y déplacé du code
Exécuter avec des entrées de ligne de commande:
sortie: "# FF2448"
la source
En avant, 62 caractères
la source
1 1 1
sorties#010101
. Toutes les autres valeurs 0-255 fonctionnent également. Quel environnement utilisez-vous?C (67 caractères sans passe-partout principal)
l'utilisation standard de tourbière printf & bit twiddler
la source
readf
? N'est-ce passcanf
?Dc:
3532 caractèresExemple d'exécution:
Dc:
2724 caractères(Mais a besoin des numéros d'entrée sur des lignes distinctes.)
Exemple d'exécution:
la source
dc
réponses sur ce site.JavaScript, 89 caractères
Convertis
72 61 139
à256*(256*(72)+61)+139
et evals il.la source
eval('(('+DEC.replace(/ /g,'<<8)+'))
au lieu deeval('256*(256*('+DEC.replace(/ /g,')+'))
vous permettre d'économiser 5 caractères!PowerShell, 45
Ou, s'il peut être utilisé en canalisant les données, vous pouvez simplement utiliser
ce qui le ramène à 42 .
la source
-split
et-join
.PowerShell 37
sauvé un octet grâce à TimmyD
la source
[byte]
car nous recevons l'entrée sous forme d'entiers, et modifiez votre sortie pour qu'elle soit"#$o"
- ce qui donne 31 octets pour$args|%{$o+="{0:X2}"-f$_};"#$o"
R, 16 octets
C'est ça. Utilisez le intégré.
la source
C,
6773 caractères (65 caractères hors principal)Programme Boring C - très orthodoxe.
la source
Python 2.7 (80 caractères)
Je cherche un meilleur moyen de gérer les valeurs hexadécimales à un chiffre. Des idées?
la source
Befunge-98, 45 caractères
Bleh, code dupliqué. Tant pis. Juste une implémentation simple de la conversion radix.
Exemple d'exécution
(Remarque: imprime '#' avant de lire l'entrée --- la tâche ne l'interdit pas; étant donné trois chiffres sur stdin, elle produit la bonne sortie sur stdout. Elle ne dérange pas non plus avec les nouvelles lignes, et comme vous pouvez le voir, elle ne le fait pas 'ajoutez pas' # 'correctement quand il est exécuté "de manière interactive".)
la source
Game Maker Language, 175 (erreur en position 81)
Invite pour RVB de 3 à 9 chiffres. Renvoie hexadécimal avec le signe hexadécimal GML,
$
Faites-en un script. Compilez également avec des variables non initialisées traitées comme 0.
La source
la source
Gema, 93 caractères
Exemple d'exécution:
la source
Burlsque, 12 octets (10 octets pour les minuscules)
Si les minuscules sont également autorisées, alors 10 octets:
Usage:
Si vous avez désespérément besoin de majuscules, ajoutez
ZZ
:Si vous ne recevez pas les entiers comme dans une chaîne, alors allez avec:
Explication:
Essayez en ligne ici .
Prime:
Pour le reconvertir, utilisez ceci:
la source
Powershell, 28 octets
Script de test:
Production:
la source
Python3.3 @ 60 caractères
Impossible de résister:
la source
Clojure 76 Personnages
Cela pourrait être en retard, par souci d'exhaustivité:
Exemples d'appels:
la source
Mathematica, 40 caractères
la source
Lisp commun, 39 caractères
Lisez trois entiers, renvoyez une chaîne.
la source
Javascript ES6, 63 octets
la source
x=>(x<16?0:'')+x.toString(16)
r=
le début. Il compte toujours comme une fonction même comme une fonction anonyme, puisque vous pouvez l'invoquer sans avoir à assigner quoi que ce soit.x=>(x<16?0:'')+(x*1).toString(16)
vôtre et ma première là-bas donnent actuellement des valeurs erronéesx>9
.#7261139
au lieu de#483D8B
pour le premier cas de test.Python 2, 40 octets
Lit l'entrée sur trois lignes distinctes. Abus
exec
et multiplication de chaînes.Exemple d'utilisation:
la source
Python (55 caractères)
la source