Berechnen Sie bei 3 Bytes oder RGB als Eingabe die nächsten CMYK-Werte und geben Sie sie aus.
- Erstellen Sie entweder eine Funktion mit Parametern und einem Rückgabewert oder ein Programm, das mit stdin / stdout arbeitet
- Verwenden Sie das Farbprofil Ihrer Wahl, geben Sie jedoch eine Referenz an
- Die Eingabe kann entweder separate numerische Werte im Bereich [0; 255] oder eine 6-stellige Hex-Zeichenfolge sein
- Die Ausgabe sollte separate numerische Werte sein, die entweder [0; 1] oder [0; 100] reichen.
- Standard Code Golf: Keine Lücken , kürzester Code gewinnt
- extravagante Ideen sind willkommen
Beispieldaten:
input output
108,174,106 [0.3793103448275862, 0.0, 0.3908045977011494, 0.3176470588235294]
0,0,0 0,0,0,1
170,255,238 33,0,7,0
0x0088ff 1,0.4667,0,0
[250,235,215] [0,6,14,1.96]
#123456 .7907,.3953,0,.6627
- Nicht kalibriertes Mapping ist in Ordnung und wahrscheinlich das einfachste
- Keine Eingabevalidierung erforderlich; Floats sind erlaubt (von 0 bis 255), können aber auch gerundet sein
- Das Ausgabeformat sollte entweder klar kommentiert oder offensichtlich sein. dh:
- CMYK in dieser Reihenfolge
- spielt keine Rolle, ob Prozentsatz [0; 100] oder reine Zahlen [0; 1]
- Das Testen sollte das triviale Beispiel [0,0,0] enthalten.
Diese Seite hat die meisten Ziffern an Online-Tools, die ich finden konnte. Kennt jemand ein Werkzeug, das mehr als 4 Ziffern gibt?
code-golf
conversion
color
Titus
quelle
quelle
~
.Antworten:
Dyalog APL ,
1615 Bytes1 minus
1-
X geteilt durch
÷
Y , gefolgt von,
255 geteilt durch255÷⍨
Y⊢
, wobeiX selbst ist
⊢
(dh die Liste der RGB-Werte) undY das Maximum
/⌈
(der RGB-Werte) ist.TryAPL!
Credits:
∘ -1 Byte von ngn .
quelle
⍨
! Nettes Emoticon⍣
und⍤
. Ich hoffe , wir bekommen⍥
und⍢
bald.ಠ
würde mich glücklich machen!C # ,
88868584 BytesAusgabe für
108,174,106
:Da OP die Funktion erlaubt, habe ich nur das Lambda eingereicht. Eine laufende Demo finden Sie auf .NetFiddle . Ich bin kein Golfer, ich poste zum Spaß. Es ist auch meine erste Antwort \ o /. Fühlen Sie sich frei, jede Verbesserung zu kommentieren :)
Ein großes Lob an Leaky Nun für die Formel.
Vorbehalt: Es funktioniert nicht für [0,0,0] (danke Titus)
quelle
1.0-x/j
? Das kannst du doch nicht1-x/j
?a[3]
, und Sie scheinen nicht eine feste Größe für angebena
, so können Sie tun ,{r,g,b}
unda[3]=j*j
(weil sowieso,1 * a = a
).a
mit demselect()
. Wenn ich so benutze,a[3]
werde ich außer Reichweite sein und werfen, nicht wahr?#
vor der Zeile einfügen. :)Python, 46 Bytes
Erfordert, dass die Eingabe in Python 2 schwebt, ziemlich sicher, dass dies in 3 nicht der Fall ist.
quelle
JavaScript (ES6),
5851 ByteAkzeptiert ein Array
[R, G, B]
(addiert 7 Bytes für separate Parameter) und gibt ein Array[C, M, Y, K]
mithilfe der nicht kalibrierten Farbzuordnung zurück.quelle
a
Inhalten den Inhalt verwechselt? Das ist komisch. 3) Haben Sie [0,0,0] getestet? Keine Ausnahme in ES, sieht aber wie eine Division durch Null aus.[...a,m=Math.max(...a)]
Ihre Array-Lösung aus. 5) Können Sie den anderen mit einem Array als Eingabe weiter spielen? Erwägen Sie die Verwendung vona.0
etc. anstelle von.map
.Mathematica,
362833 BytesNach der Liberalisierung der E / A-Formate weiter Golf gespielt:List@@#~ColorConvert~"CMYK"&
Anonyme Funktion, die macht, was gefragt wird.
Die alte Funktion akzeptiert drei Argumente von 0 bis 255 (alles, was über diesen Bereich hinausgeht, wird automatisch auf diesen Bereich begrenzt) und gibt ein Array von "CMYK" -Werten zwischen
0.
und zurück1.
Beispiel (für alte Funktion):
Da Arrays als Eingabe zulässig sind, werden 33 Bytes:
Natürlich funktioniert die eingebaute Funktion
{0, 0, 0}
ordnungsgemäß und kehrt zurück{0, 0, 0, 1}
.quelle
/255
?Bash + ImageMagick, 69 Bytes
Beispiel:
quelle
SmileBASIC,
7372 BytesKönnte viel kürzer sein.
quelle
J=MAX(R,G,B)
?Pyth,
2421182421 BytesDas Leben ist in der Tat eine Rundreise.
Testsuite.
Beispieleingabe:
108,174,106
Beispielausgabe:
[0.3793103448275862, 0.0, 0.3908045977011494, 0.3176470588235294]
Beispieleingabe:
0,0,0
Beispielausgabe:
[0, 0, 0, 1.0]
Verwendete Formel:
Alte Formel: http://i.stack.imgur.com/ZtPD6.gif
Alte Formel: http://i.stack.imgur.com/Nqi9F.gif
quelle
Lithp , 114 Bytes
Probieren Sie es online aus!
max
eine beliebige Anzahl von Argumenten erforderlich ist)Ich bin mir nicht ganz sicher, ob das richtig ist. Die ersten beiden Ergebnisse mit den Beispieldaten sind korrekt, der Rest jedoch nicht (siehe die Online-Test ).
Verwendet die beschriebene Implementierung wie folgt:
quelle
PHP 7,
123110105 BytesEingabe als RGB-Farbe
100 240 75
Gibt CMYK-Werte als Dezimalzahl aus
0...1
.Dank Titus wurden viele Bytes gespeichert.
Beispielnutzung:
Online testen
Eingabe als HEX-Farbe
#123456
, 202 Bytes54 Bytes für die Funktion zur Verhinderung der Division durch Null, wahrscheinlich golfbar oder entfernbar.
Ruft als Eingabe-RGB-Farbe als HEX ab
#123456
und gibt CMYK als Dezimalbereich aus0...1
.Beispielnutzung:
quelle
separate numeric values
bedeutet, dass Sie statt usw. einfach nehmen$h=$argv;
und verwenden können . Ich mag den Trick; Aber gibt das nicht Warnungen aus? ist wahrscheinlich kürzer als und benötigt keine Anmerkung (gibt Hinweise aus, aber diese werden in der Standardkonfiguration nicht angezeigt).$h[1]
$h[0]
NAN
strtr
str_replace
NAN
1/0
Ergebnisse resultierenINF
) noch in PHP 5 (1/0
=>false
).$argv
Array-Tipp in der Kommandozeile! Ich habe die PHP-Version hinzugefügt. Es funktioniert mit,NAN
weil, wenn Sie es verwendenstr_replace
, die Zahl implizit in eine Zeichenfolge konvertiert wird, damit sie ausgegebenNAN
wird. Wenn Sie diesen Link überprüfen , werden Sie feststellen, dass sieNAN
aufgrund vonstr_replace("INF"
statt ausgibtstr_replace("NAN"
. Ich konnte es nicht zum Laufen bringenstrtr
. Ich habe das hinzugefügt@
, um die Warnungen zu unterdrücken.$n/0
istINF
, aber0/0
istNAN
(auch in PHP 7.0). Sie können 4 Bytes mitstr_replace(NAN,0,$s)
oder 6 Bytes mit speichernstrtr($s,["NAN"=>0)
.strtr()
;PHP, nicht konkurrierend
Ich war einfach zu versucht, meine eigenen zu posten.
RGB-Eingang, 74 Bytes
oder 68 Bytes mit einem nachgestellten Komma in der Ausgabe: entfernen
[$i>3]
.Laufen Sie mit
php -r '<code>' <red-value> <green-value> <blue-value>
.HEX-Eingang, 100 Bytes
Laufen Sie mit
php -nr '<code>' RRGGBB
.Dieser Ansatz würde 75 Bytes für die RGB-Eingabe benötigen:
Ersetzen
foreach($a=array_map...as$c)
durchforeach($a=$argv as$c)if($i++)
.quelle
C 155 Bytes
Ich versuche herauszufinden, wie es möglich ist, mehr Golf zu spielen.
Verwendungszweck:
Ausgabe:
quelle
i>0?i>1?i>2
j>0?
, 17 beim Entfernen der Schleife und 6 beim Aufteilen derj
Definition.F *
). Aber ich habe in C99 ein anderes Byte gefunden, um Golf zu spielen.j>0?j:1
kann es seinj+!j
, -3 Bytes zu erreichen.C
Makro ist falsch:1-x/1
fürj==0
? Ich denke das sollte sein1-(j>0?x/j:1)
.Hoon , 110 Bytes
Verwenden Sie die Gleitkomma-Bibliothek mit einfacher Genauigkeit. Erstellen Sie eine neue generische Funktion, die benötigt wird
a
. Setzen Sies
aufsub
curried mit.1
für später, undj
zum Umklappena
mitmax
.Ordnen Sie
a
die Abbildung zuj
, indem Sie jedes Element mit teilen , das Minimum davon und 1 ermitteln, um NaN zu normalisieren, und dann 1 mit subtrahierens
. Am1-j/255
Ende dieser Liste hinzufügen.quelle