Verschiedene Systeme haben unterschiedliche Möglichkeiten, Farben zu beschreiben, auch wenn alle im RGBA-Raum sprechen. Ein Front-End-Entwickler, der mit CSS vertraut ist, mag es vorziehen #RRGGBBAA
. Aber Android-Entwickler mögen es vorziehen #AARRGGBB
. Beim Umgang mit AAS-Dateiformat #AABBGGRR
wird benötigt. Das ist zu verwirrend. Vielleicht brauchen wir ein Programm, das zwischen verschiedenen Farbformaten konvertieren kann.
Eingang:
Die Eingabe enthält 3 Teile:
- Die Farbe, die transformiert werden soll (z. B.
#1459AC0F
eine Zeichenfolge, die mit einem scharfen Vorzeichen#
gefolgt von 8 hexadezimalen Ziffern beginnt) . - Das Format der angegebenen Farbe (z. B.
#RRGGBBAA
eine Zeichenfolge, die mit#
8 Buchstaben beginnt und in 4 verschiedene Gruppen unterteilt ist. Jede Gruppe ist eine vonRR
/GG
/BB
/AA
. - Das Format, in das konvertiert werden soll.
Ausgabe:
- Ausgabe der Farbe in konvertiertem Format
Testfälle:
Color, OriginalFormat, TargetFormat -> Result
#12345678, #RRGGBBAA, #AARRGGBB -> #78123456
#1A2B3C4D, #RRGGBBAA, #AABBGGRR -> #4D3C2B1A
#DEADBEEF, #AARRGGBB, #GGBBAARR -> #BEEFDEAD
Eingabe / Ausgabe unterscheidet nicht zwischen Groß- und Kleinschreibung. Sie können auf jede akzeptable Weise Daten eingeben / ausgeben.
Regeln:
Dies ist Code Golf, der kürzeste (in Byte) Code für jeden Sprachgewinn
AARRGGBB
ist objektiv das beste Farbformat. Wenn etwas 24 Bit erwartetRRGGBB
und SieAARRGGBB
stattdessen 32 Bit angeben, kann es das obere Byte einfach ignorieren und trotzdem funktionieren.Antworten:
APL (Dyalog Unicode) , 6 Byte SBCS
Volles Programm. Fordert bei STDIN zur Eingabe von Original, Ziel und Farbe auf. Gibt das Ergebnis an STDOUT aus.
Probieren Sie es online!
⍞
Eingabeaufforderung für Original⍞⍋
Eingabeaufforderung für Ziel und suchen Sie die Indizes in Original, die Original in Ziel machen würden⍞[
...]
fragen Sie nach Farbe und verwenden Sie die oben erhaltenen Indizes, um die Farbe neu zu ordnenquelle
JavaScript (ES6),
5352 Bytes1 Byte dank @tsh gespeichert
Nimmt die Eingabe als 3 verschiedene Parameter:
(Color, From, To)
.Probieren Sie es online!
quelle
(C,F,T)=>T.replace(/\w/g,(x,i)=>C[F.search(x)-~i%2])
Speichern Sie ein ByteStax , 8 Bytes
Führen Sie es aus und debuggen Sie es
Dieses Programm nimmt Eingaben in diesem Format vor.
Hier ist die kommentierte ungolfed entpackte Version desselben Programms.
Führen Sie dieses aus
quelle
Python 2 , 59 Bytes
Probieren Sie es online!
quelle
Retina 0.8.2 , 33 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
Suchen Sie für jedes Paar identischer Zeichen nach einer weiteren Kopie dieses Paares und danach nach dem neunten und achten Zeichen davor und ersetzen Sie das Paar durch diese Zeichen. Dies ist nur für die Zeichenpaare im Zielformat möglich und ersetzt sie durch das gewünschte Ergebnis.
Löschen Sie die Farbe und das Quellformat.
quelle
Haskell ,
108 104 100 9487 BytesProbieren Sie es online!
Alte Version
Vielen Dank an Laikoni für die Verkürzung von 6 Bytes durch die Suche nach einer kürzeren Verwendungsart
lookup
!Probieren Sie es online!
Erläuterung:
p
Funktion "analysiert" einen String, indem sie die führenden#
und zurückkommenden Gruppen (Listen) von 2 Zeichen ignoriert .(!)
Bediener nimmt die Farbe und das Eingabeformat als Eingabe und gibt eine Funktion zurück, die das Ausgabeformat als Parameter nimmt und die konvertierte Farbe zurückgibt. Es stellte sich heraus, dass die pointfree-Version kürzer war, aber ich begann mit der besser lesbaren Version:f c i o='#':concat[x#zip(p<$>[i,c])|x<-p o]
Probieren Sie es online!
quelle
Perl 5
-p
,333227 BytesGeben Sie Eingaben in der Reihenfolge ein: Ziel, Original, Nummer
Probieren Sie es online!
Finden Sie für jedes Zeichen in der Eingabe dasselbe Zeichen eine gerade Anzahl von Stellen vorwärts, dann gehen Sie von dort aus 10 weitere Zeichen vorwärts und nehmen Sie dieses Zeichen als Ersatz. Wenn Sie diese Schritte nicht ausführen können, ersetzen Sie sie durch nichts.
quelle
05AB1E , 10 Bytes
Probieren Sie es online!
Das funktioniert, weil ich die Eingabe von:
Zu:
Jeder Wert ist also eindeutig zugeordnet, dann kann ich Transkription verwenden.
Die Argumente sind umgekehrt.
quelle
Java 10,
179105102 BytesSatte -77 Bytes dank @ OlivierGrégoire .
Erläuterung:
Probieren Sie es online aus.
quelle
J , 5 Bytes
Das linke Argument ist die Farbe. Das rechte Argument ist eine Zeichenmatrix, in der die erste Zeile das Zielformat und die zweite Zeile das Originalformat ist. Probieren Sie es online!
quelle
CJam, 14 Bytes
Probieren Sie es online!
Die Eingabe ist ein Array in umgekehrter Reihenfolge.
quelle
Python 2, 62 Bytes
quelle
SmileBASIC, 144 Bytes
quelle
Rot ,
154 120114 BytesProbieren Sie es online!
quelle
Python 3 , 102 Bytes
Probieren Sie es online!
quelle
Gelee , 6 Bytes
Probieren Sie es online!
Volles Programm.
Argument 1: Ursprüngliches
Argument 2:
Zielargument 3: Farbe
quelle
C (clang) 89 Bytes
Probieren Sie es online!
Nimmt den Eingabewert in
a
, in das Format ini
und out in das Format in aufo
. Gibt den Wert in ausb
Kleiner Cheat: Ergebnis speichern
b
statt drucken, um Bytes zu sparen. Frage lässt es nicht zu.C (clang) , 100 Bytes
Probieren Sie es online!
C (gcc) , 181 Bytes
Probieren Sie es online!
Erstellt einenRGBA
Wert imc[]
Array basierend auf dem Formati
und druckt dann imo
Formatquelle
char*a,b[10],*i,*o;f(x)
stattchar *a,b[10],*i,*o;f(x,y)
undx+=2)bcopy(a+(long)index(i,o[x])-i,b+x,2);
stattb[x++]=a[y=index(i,o[x])-i],b[x++]=a[y+1]);
Clojure 1.8, 156 Bytes
Ungolfed
Online ausprobieren unterstützt Clojure 1.8 nicht. Sehr eigenartig!
quelle
Perl 6 ,
555146 BytesProbieren Sie es online!
Nimmt eine (Farb-, Original-, Ziel-) Liste als Eingabe. Teilt jede Eingabezeichenfolge in Komponenten auf, erstellt eine Hash-Zuordnung von Quellschlüsseln zu Farbwerten, sucht nach Farbwerten in der Reihenfolge der Zielschlüssel und formatiert das Ergebnis.
quelle