Die Welt der Kunst ist voller Farben, aber die Welt des Netzwerks ist noch voller als die Welt der Kunst mit verschiedenen Farben und Renderings. Deshalb müssen wir wissen, wie man eine Art von Farbformat in eine andere konvertiert.
Die Herausforderung liegt auf der Hand:
Schreiben Sie ein Programm / eine Funktion, um dann einen bestimmten HEX- Code ( #00ff0080
zum Beispiel) in RGBA (wie rgba(0, 255, 0, 0.5)
) zu konvertieren .
Regeln:
- Externe Bibliotheken / integrierte Funktionen zum Konvertieren von HEX in RGBA sind nicht zulässig. Solche jQuery- und Syntax-Ersetzer sind jedoch akzeptabel.
- Es gelten die Standard-Eingabe- / Ausgaberegeln.
- Das Format des Alphas kann zwischen (1 == 100%) oder dem anderen (100 == 100%) liegen, was nicht wirklich wichtig ist.
- Die Ausgabe ist flexibel , solange sie die 4 konvertierten Werte zurückgibt (als String, Array, Liste Ihrer Wahl).
- Sie können die Eingabe ohne die
#
am Anfang übernehmen. Daher können Sie Eingaben entweder als#RRGGBBAA
oder als nehmenRRGGBBAA
. Sie können davon ausgehen, dass der Hex-Code (ohne den#
) immer 8 Zeichen lang ist. - Sie sollten alle Werte durch 255 teilen, einschließlich des Alphas. Die minimale Dezimalgenauigkeit (für das Alpha sind 2 Dezimalstellen).
Testfälle
Input: 00ff0080
Output: 0, 255, 0, 0.5
Wertung
Code-Golf , der Code mit der geringsten Anzahl von Bytes gewinnt.
code-golf
base-conversion
conversion
hexadecimal
color
Obsdarek
quelle
quelle
#
. In diesem Fall wäre es nur ein 32-Bit-Ganzzahlwert. Ist es legal, das so zu nehmen?Antworten:
JavaScript (ES6),
735450 Byte(Einige Bytes wurden dank @LeakyNun, der bearbeiteten Herausforderung und @CraigAyre gespeichert.)
quelle
eval
anstelle vonparseInt
:s=>s.match(/../g).map((x,i)=>eval('0x'+x)/(i-3?1:255))
eval
ist eine großartige Alternative zu GolfzweckenparseInt
, danke!/../g
. Sie können es möglicherweise noch weiter reduzieren, indem Siereplace
übermatch
/map
Japt , 13 Bytes
Nimmt die Eingabe als Zeichenfolge ohne die führende
#
. Gibt den rgba-Wert als Array aus.Probier es aus
Erläuterung
Wir nehmen den String implizit als Eingabe über eine Variable
U
."00ff0080"
Teilen Sie die Zeichenfolge in ein Array von Elementen der Länge 2 auf.
["00","ff","00","80"]
Ordnen Sie das Array zu und konvertieren Sie jedes Element von einer Basis-16-Zeichenfolge in eine Dezimalzahl. Aufgrund des folgenden Zeilenumbruchs wird dieses Array implizit einer Variablen zugewiesen
U
.[0,255,0,128]
Pop das letzte Element aus dem Array.
128
Teilen Sie es durch 255.
0.5019607843137255
Schieben Sie das Ergebnis zurück in
U
das endgültige Array und geben Sie es implizit aus.[0,255,0,0.5019607843137255]
quelle
PHP , 63 Bytes
Ausgabe als Array
Probieren Sie es online aus!
PHP , 80 Bytes
Ausgabe als rgba-Wert, Eingabe ohne
#
Probieren Sie es online aus!
PHP , 88 Bytes
Ausgabe als rgba-Wert, Eingabe mit
#
Probieren Sie es online aus!
quelle
C (gcc) , 139 Bytes
Probieren Sie es online aus!
Mein anderer Versuch wurde mit 145 Bytes getaktet . Ich bin kein großer C-Golfer, daher könnte dies wahrscheinlich kürzer sein.
quelle
05AB1E , 9 Bytes
Probieren Sie es online aus!
Zumindest haben wir Unterstützer wie Emigna , die oft einen gesunden Menschenverstand verwenden ... (das bekommt man den ganzen Tag zum Golfen und dann
2ô16öRć255/¸ìR
fängt man an, Sachen wie ಠ_ಠ zu produzieren)quelle
2ôH`žz/)
Gelee ,
1514 BytesProbieren Sie es online aus!
Wie es funktioniert
-1 Byte dank @EricTheOutgolfer
quelle
PHP, 72 Bytes
Jörgs Array-Ausgabeversion ist unschlagbar; Es gibt aber auch andere Möglichkeiten:
Laufen Sie als Rohr mit
-F
.#
spielt keine Rolle, einfache CSV-Ausgabeoder 73 Bytes (laufen mit
-R
):74 Bytes mit den Leerzeichen:
nicht so einfach, 81 Bytes :
quelle
Gestapelt ,
474541 BytesProbieren Sie es online aus!
quelle
Excel, 99 Bytes
quelle
SmileBASIC, 50 Bytes
Die hexadezimale Zeichenfolge wird mit VAL () in eine Zahl konvertiert, und RGBREAD extrahiert jedes Byte. #L ist eine Konstante mit dem Wert 256.
RGBREAD wurde entwickelt, um die Kanäle aus einer ARGB-Farbe zu extrahieren, aber es teilt wirklich nur eine 4-Byte-Ganzzahl in 4 separate Bytes auf, sodass die Reihenfolge keine Rolle spielt.
quelle
Perl 6 , 42 Bytes
Probieren Sie es online aus!
quelle
JS ES2015, 84 Byte
Das ist eine Funktion. Führen Sie es mit aus
quelle
Python 3 , 62 Bytes
Probieren Sie es online aus!
quelle
q / kdb +, 43 Bytes
Lösung:
Beispiel:
Erläuterung:
quelle
APL (Dyalog) , 24 Bytes
Erfordert,
⎕IO←0
was auf vielen Systemen Standard ist. Fordert zur Eingabe als Großbuchstaben ohne auf#
.Probieren Sie es online aus!
⎕D,⎕A
D igits gefolgt von A lphabet⍞⍳⍨
Eingabeaufforderung zur Texteingabe (Mnemonik: Konsole mit Anführungszeichen) und darin den Index jedes Buchstabens finden4 2⍴
r eshape als vierreihige zweispaltigen Matrix⍉
transponieren (weil die Basiskonvertierung spaltenweise funktioniert)16⊥
als Basis sechzehn bewerten⊢
Ausbeute (dient zur Trennung von 3 und 16)256÷⍨@3
Unterteile das 4 - ten Element durch 256quelle
Python 2 , 54 Bytes
Probieren Sie es online aus!
quelle
Yabasic , 96 Bytes
Noch eine grundlegende Antwort; Übernimmt Eingaben als Zeichenfolge und Ausgaben an die Konsole.
Probieren Sie es online aus!
quelle
?
.Excel VBA, 90 Bytes
Eine anonyme VBE-Sofortfensterfunktion, die Eingaben aus dem Bereich übernimmt
[A1]
und in das VBE-Sofortfenster ausgibt.quelle
Vim, 46 Bytes
Übernimmt Eingaben ohne
#
und kehrt durch Drucken auf dem Bildschirm zurück.quelle