Find the closest three-digit hex colourSolving Mastermind in 6 or less movesBetter Hex Color Codes for Your InternetConvert RGB color to websafeHow to code colors in hexFoam Bath LettersRoboZZle interpreterLet's design a digit mosaicTrue color codeExecute Triangularity MoveGenerate an RGB colour grid

How does the 'five minute adventuring day' affect class balance?

A quine of sorts

Can I submit a paper to two or more journals at the same time?

Robots in a spaceship

Do electrons really perform instantaneous quantum leaps?

What does 5d4 x 10 gp mean?

Why would Dementors torture a Death Eater if they are loyal to Voldemort?

The alcoholic village festival

Why doesn't SpaceX land boosters in Africa?

What are the children of two Muggle-borns called?

Is it theoretically possible to hack printer using scanner tray?

Could you fall off a planet if it was being accelerated by engines?

English idiomatic equivalents of 能骗就骗 (if you can cheat, then cheat)

How do I present a future free of gender stereotypes without being jarring or overpowering the narrative?

Why are examinees often not allowed to leave during the start and end of an exam?

Where to connect the fuse and why?

German idiomatic equivalents of 能骗就骗 (if you can cheat, then cheat)

Having to constantly redo everything because I don't know how to do it

Why is exile often an intermediate step?

How to count the number of bytes in a file, grouping the same bytes?

Customs and immigration on a USA-UK-Sweden flight itinerary

Why wasn't ASCII designed with a contiguous alphanumeric character order?

How do I keep a running total of data in a column in Excel?

Copy group of files (Filename*) to backup (Filename*.bak)



Find the closest three-digit hex colour


Solving Mastermind in 6 or less movesBetter Hex Color Codes for Your InternetConvert RGB color to websafeHow to code colors in hexFoam Bath LettersRoboZZle interpreterLet's design a digit mosaicTrue color codeExecute Triangularity MoveGenerate an RGB colour grid













5












$begingroup$


In CSS, colours can be specified by a "hex triplet" - a three byte (six digit) hexadecimal number where each byte represents the red, green, or blue components of the colour. For instance, #FF0000 is completely red, and is equivalent to rgb(255, 0, 0).



Colours can also be represented by the shorthand notation which uses three hexadecimal digits. The shorthand expands to the six digit form by duplicating each digit. For instance, #ABC becomes #AABBCC.



Since there are fewer digits in the hex shorthand, fewer colours can be represented.



The challenge



Write a program or function that takes a six digit hexadecimal colour code and outputs the closest three-digit colour code.



Here's an example:




  • Input hex code: #28a086

  • Red component

    • 0x28 = 40 (decimal)

    • 0x22 = 30

    • 0x33 = 51

    • 0x22 is closer, so the first digit of the shortened colour code is 2


  • Green component

    • 0xa0 = 160

    • 0x99 = 153

    • 0xaa = 170

    • 0x99 is closer, so the second digit is 9


  • Blue component

    • 0x86 = 134

    • 0x77 = 119

    • 0x88 = 136

    • 0x88 is closer, so the third digit is 8


  • The shortened colour code is #298 (which expands to #229988)



Your program or function must accept as input a six digit hexadecimal colour code prepended with # and output a three digit colour code prepended with #.



Examples



  • #FF0000 → #F00

  • #00FF00 → #0F0

  • #D913C4 → #D1C

  • #C0DD39 → #BD3

  • #28A086 → #298

  • #C0CF6F → #BC7

Scoring



This is a code-golf challenge, so shortest answer in your language wins! Standard rules apply.










share|improve this question











$endgroup$











  • $begingroup$
    "adding together the difference between each component of the full colour code and the corresponding component of the shorthand colour code" - this part is confusing. There's no adding anywhere, right?
    $endgroup$
    – Grzegorz Oledzki
    8 hours ago










  • $begingroup$
    Note that if you simply drop alternate digits then each short colour represents an equal number of full colours, so that could be considered to make a better representation than nearest colour.
    $endgroup$
    – Neil
    8 hours ago






  • 3




    $begingroup$
    Saw this in the Sandbox but forgot to mention that I don't think requiring the # adds anything to the challenge.
    $endgroup$
    – Shaggy
    8 hours ago










  • $begingroup$
    @GrzegorzOledzki you're right, that part is confusing. I'll go ahead an remove it because I think the example in that section is enough to explain what I mean.
    $endgroup$
    – wrymug
    8 hours ago






  • 1




    $begingroup$
    May we output in lowercase?
    $endgroup$
    – Arnauld
    7 hours ago















5












$begingroup$


In CSS, colours can be specified by a "hex triplet" - a three byte (six digit) hexadecimal number where each byte represents the red, green, or blue components of the colour. For instance, #FF0000 is completely red, and is equivalent to rgb(255, 0, 0).



Colours can also be represented by the shorthand notation which uses three hexadecimal digits. The shorthand expands to the six digit form by duplicating each digit. For instance, #ABC becomes #AABBCC.



Since there are fewer digits in the hex shorthand, fewer colours can be represented.



The challenge



Write a program or function that takes a six digit hexadecimal colour code and outputs the closest three-digit colour code.



Here's an example:




  • Input hex code: #28a086

  • Red component

    • 0x28 = 40 (decimal)

    • 0x22 = 30

    • 0x33 = 51

    • 0x22 is closer, so the first digit of the shortened colour code is 2


  • Green component

    • 0xa0 = 160

    • 0x99 = 153

    • 0xaa = 170

    • 0x99 is closer, so the second digit is 9


  • Blue component

    • 0x86 = 134

    • 0x77 = 119

    • 0x88 = 136

    • 0x88 is closer, so the third digit is 8


  • The shortened colour code is #298 (which expands to #229988)



Your program or function must accept as input a six digit hexadecimal colour code prepended with # and output a three digit colour code prepended with #.



Examples



  • #FF0000 → #F00

  • #00FF00 → #0F0

  • #D913C4 → #D1C

  • #C0DD39 → #BD3

  • #28A086 → #298

  • #C0CF6F → #BC7

Scoring



This is a code-golf challenge, so shortest answer in your language wins! Standard rules apply.










share|improve this question











$endgroup$











  • $begingroup$
    "adding together the difference between each component of the full colour code and the corresponding component of the shorthand colour code" - this part is confusing. There's no adding anywhere, right?
    $endgroup$
    – Grzegorz Oledzki
    8 hours ago










  • $begingroup$
    Note that if you simply drop alternate digits then each short colour represents an equal number of full colours, so that could be considered to make a better representation than nearest colour.
    $endgroup$
    – Neil
    8 hours ago






  • 3




    $begingroup$
    Saw this in the Sandbox but forgot to mention that I don't think requiring the # adds anything to the challenge.
    $endgroup$
    – Shaggy
    8 hours ago










  • $begingroup$
    @GrzegorzOledzki you're right, that part is confusing. I'll go ahead an remove it because I think the example in that section is enough to explain what I mean.
    $endgroup$
    – wrymug
    8 hours ago






  • 1




    $begingroup$
    May we output in lowercase?
    $endgroup$
    – Arnauld
    7 hours ago













5












5








5


0



$begingroup$


In CSS, colours can be specified by a "hex triplet" - a three byte (six digit) hexadecimal number where each byte represents the red, green, or blue components of the colour. For instance, #FF0000 is completely red, and is equivalent to rgb(255, 0, 0).



Colours can also be represented by the shorthand notation which uses three hexadecimal digits. The shorthand expands to the six digit form by duplicating each digit. For instance, #ABC becomes #AABBCC.



Since there are fewer digits in the hex shorthand, fewer colours can be represented.



The challenge



Write a program or function that takes a six digit hexadecimal colour code and outputs the closest three-digit colour code.



Here's an example:




  • Input hex code: #28a086

  • Red component

    • 0x28 = 40 (decimal)

    • 0x22 = 30

    • 0x33 = 51

    • 0x22 is closer, so the first digit of the shortened colour code is 2


  • Green component

    • 0xa0 = 160

    • 0x99 = 153

    • 0xaa = 170

    • 0x99 is closer, so the second digit is 9


  • Blue component

    • 0x86 = 134

    • 0x77 = 119

    • 0x88 = 136

    • 0x88 is closer, so the third digit is 8


  • The shortened colour code is #298 (which expands to #229988)



Your program or function must accept as input a six digit hexadecimal colour code prepended with # and output a three digit colour code prepended with #.



Examples



  • #FF0000 → #F00

  • #00FF00 → #0F0

  • #D913C4 → #D1C

  • #C0DD39 → #BD3

  • #28A086 → #298

  • #C0CF6F → #BC7

Scoring



This is a code-golf challenge, so shortest answer in your language wins! Standard rules apply.










share|improve this question











$endgroup$




In CSS, colours can be specified by a "hex triplet" - a three byte (six digit) hexadecimal number where each byte represents the red, green, or blue components of the colour. For instance, #FF0000 is completely red, and is equivalent to rgb(255, 0, 0).



Colours can also be represented by the shorthand notation which uses three hexadecimal digits. The shorthand expands to the six digit form by duplicating each digit. For instance, #ABC becomes #AABBCC.



Since there are fewer digits in the hex shorthand, fewer colours can be represented.



The challenge



Write a program or function that takes a six digit hexadecimal colour code and outputs the closest three-digit colour code.



Here's an example:




  • Input hex code: #28a086

  • Red component

    • 0x28 = 40 (decimal)

    • 0x22 = 30

    • 0x33 = 51

    • 0x22 is closer, so the first digit of the shortened colour code is 2


  • Green component

    • 0xa0 = 160

    • 0x99 = 153

    • 0xaa = 170

    • 0x99 is closer, so the second digit is 9


  • Blue component

    • 0x86 = 134

    • 0x77 = 119

    • 0x88 = 136

    • 0x88 is closer, so the third digit is 8


  • The shortened colour code is #298 (which expands to #229988)



Your program or function must accept as input a six digit hexadecimal colour code prepended with # and output a three digit colour code prepended with #.



Examples



  • #FF0000 → #F00

  • #00FF00 → #0F0

  • #D913C4 → #D1C

  • #C0DD39 → #BD3

  • #28A086 → #298

  • #C0CF6F → #BC7

Scoring



This is a code-golf challenge, so shortest answer in your language wins! Standard rules apply.







code-golf hexadecimal color






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 8 hours ago







wrymug

















asked 8 hours ago









wrymugwrymug

5572 silver badges13 bronze badges




5572 silver badges13 bronze badges











  • $begingroup$
    "adding together the difference between each component of the full colour code and the corresponding component of the shorthand colour code" - this part is confusing. There's no adding anywhere, right?
    $endgroup$
    – Grzegorz Oledzki
    8 hours ago










  • $begingroup$
    Note that if you simply drop alternate digits then each short colour represents an equal number of full colours, so that could be considered to make a better representation than nearest colour.
    $endgroup$
    – Neil
    8 hours ago






  • 3




    $begingroup$
    Saw this in the Sandbox but forgot to mention that I don't think requiring the # adds anything to the challenge.
    $endgroup$
    – Shaggy
    8 hours ago










  • $begingroup$
    @GrzegorzOledzki you're right, that part is confusing. I'll go ahead an remove it because I think the example in that section is enough to explain what I mean.
    $endgroup$
    – wrymug
    8 hours ago






  • 1




    $begingroup$
    May we output in lowercase?
    $endgroup$
    – Arnauld
    7 hours ago
















  • $begingroup$
    "adding together the difference between each component of the full colour code and the corresponding component of the shorthand colour code" - this part is confusing. There's no adding anywhere, right?
    $endgroup$
    – Grzegorz Oledzki
    8 hours ago










  • $begingroup$
    Note that if you simply drop alternate digits then each short colour represents an equal number of full colours, so that could be considered to make a better representation than nearest colour.
    $endgroup$
    – Neil
    8 hours ago






  • 3




    $begingroup$
    Saw this in the Sandbox but forgot to mention that I don't think requiring the # adds anything to the challenge.
    $endgroup$
    – Shaggy
    8 hours ago










  • $begingroup$
    @GrzegorzOledzki you're right, that part is confusing. I'll go ahead an remove it because I think the example in that section is enough to explain what I mean.
    $endgroup$
    – wrymug
    8 hours ago






  • 1




    $begingroup$
    May we output in lowercase?
    $endgroup$
    – Arnauld
    7 hours ago















$begingroup$
"adding together the difference between each component of the full colour code and the corresponding component of the shorthand colour code" - this part is confusing. There's no adding anywhere, right?
$endgroup$
– Grzegorz Oledzki
8 hours ago




$begingroup$
"adding together the difference between each component of the full colour code and the corresponding component of the shorthand colour code" - this part is confusing. There's no adding anywhere, right?
$endgroup$
– Grzegorz Oledzki
8 hours ago












$begingroup$
Note that if you simply drop alternate digits then each short colour represents an equal number of full colours, so that could be considered to make a better representation than nearest colour.
$endgroup$
– Neil
8 hours ago




$begingroup$
Note that if you simply drop alternate digits then each short colour represents an equal number of full colours, so that could be considered to make a better representation than nearest colour.
$endgroup$
– Neil
8 hours ago




3




3




$begingroup$
Saw this in the Sandbox but forgot to mention that I don't think requiring the # adds anything to the challenge.
$endgroup$
– Shaggy
8 hours ago




$begingroup$
Saw this in the Sandbox but forgot to mention that I don't think requiring the # adds anything to the challenge.
$endgroup$
– Shaggy
8 hours ago












$begingroup$
@GrzegorzOledzki you're right, that part is confusing. I'll go ahead an remove it because I think the example in that section is enough to explain what I mean.
$endgroup$
– wrymug
8 hours ago




$begingroup$
@GrzegorzOledzki you're right, that part is confusing. I'll go ahead an remove it because I think the example in that section is enough to explain what I mean.
$endgroup$
– wrymug
8 hours ago




1




1




$begingroup$
May we output in lowercase?
$endgroup$
– Arnauld
7 hours ago




$begingroup$
May we output in lowercase?
$endgroup$
– Arnauld
7 hours ago










9 Answers
9






active

oldest

votes


















2












$begingroup$


Japt, 16 bytes



r"%w"²_n16_r17Ãg


Try it or run all test cases



r"%w"²_n16_r17Ãg :Implicit input of string
r :Replace
"%w" :RegEx /w/g
² :Duplicate, giving /ww/g
_ :Pass each match through a function
n16 : Convert to decimal
_ : Pass through the following function, and convert back to hex
r17 : Round to the nearest multiple of 17
à : End function
g : Get first character





share|improve this answer











$endgroup$




















    2












    $begingroup$


    Python 3, 72 70 68 bytes





    lambda x:'#'+''.join(f"(int(x[i:i+2],16)+8)//17:X"for i in(1,3,5))


    Try it online!



    This is a port of Grzegorz Oledzkis original answer, which I helped him golfing down.



    Two features of Python 3 help us save bytes:



    • Floating point division by default

    • Format string literals

    -2 bytes thanx to Jonathan Allan






    share|improve this answer











    $endgroup$








    • 1




      $begingroup$
      (int(x[i:i+2],16)+8)//17 saves 2
      $endgroup$
      – Jonathan Allan
      5 hours ago


















    1












    $begingroup$

    JavaScript (ES6), 55 bytes





    s=>s.replace(/w./g,x=>(('0x'+x)/17+.5|0).toString(16))


    Try it online!






    share|improve this answer









    $endgroup$




















      1












      $begingroup$

      Python 2 (109 101 97 85 83 74 bytes)



      lambda x:'#'+''.join(hex(int(int(x[i:i+2],16)/17.+.5))[2:]for i in[1,3,5])


      The "nearest distance" is handled by division by 17 and rounding.



      Improvements:



      -8 bytes by using the int(...+.5) trick instead of int(round(...))



      -4 bytes by using list comprehension instead of map()



      -1 byte by hardcoding # in the output (thanks @movatica)



      -10 bytes by not using re.findall("..",...) in favor of explicit String splicing



      -2 bytes by not using list comprehension, but an inline generator expression in join (thanks @movatica)



      -1 byte by not splicing the :7 ending for blue part



      -9 bytes by better iteration over colors - i.e. iterating over indices, not actual characters (thanks @movatica)






      share|improve this answer











      $endgroup$












      • $begingroup$
        Does not run without import re. The import is required and thus adds to the bytecount!
        $endgroup$
        – movatica
        7 hours ago






      • 1




        $begingroup$
        @movatica - you're right, added it
        $endgroup$
        – Grzegorz Oledzki
        7 hours ago






      • 1




        $begingroup$
        Save 1 byte by hardcoding '#' instead of x[0].
        $endgroup$
        – movatica
        7 hours ago






      • 1




        $begingroup$
        You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
        $endgroup$
        – movatica
        6 hours ago






      • 1




        $begingroup$
        Thanks! range(1,6,2) is even better with [1,3,5]
        $endgroup$
        – Grzegorz Oledzki
        6 hours ago


















      1












      $begingroup$


      PHP, 75 67 bytes





      #<?php for($m=3;$m;)echo dechex((hexdec($argn)>>--$m*8&255)/17+.5);


      Try it online! or verify all test cases.






      share|improve this answer











      $endgroup$




















        0












        $begingroup$


        Retina 0.8.2, 88 bytes



        (w)(.)
        $1,$2;
        [A-F]
        1$&
        T`L`d
        d+
        $*
        +`1,
        ,16$*
        ,
        8$*
        (117)*1*;
        $#1;
        T`d`L`1d
        BB|;



        Try it online! Link includes test cases. Explanation:



        (w)(.)
        $1,$2;


        Pair up the hex digits.



        [A-F]
        1$&
        T`L`d


        Convert each digit separately to decimal.



        d+
        $*


        Convert each decimal digit to unary.



        +`1,
        ,16$*


        Finish the hexadecimal conversion of the pair of digits.



        ,
        8$*
        (117)*1*;
        $#1;


        Add 8 and divide by 17.



        T`d`L`1d
        BB|;



        Convert back to hexadecimal.






        share|improve this answer









        $endgroup$




















          0












          $begingroup$


          Jelly, 20 bytes



          ḊØHiⱮs2ḅ⁴÷17+.ḞịØHṭḢ


          Try it online!






          share|improve this answer









          $endgroup$




















            0












            $begingroup$


            05AB1E, 13 bytes



            ćs2ôH8+17÷hJ«


            Try it online!



            How?



            ćs2ôH8+17÷hJ« | string, S e.g. stack: "#B23F08"
            ć | decapitate "B23F08", "#"
            s | swap "#", "B23F08"
            2 | two "#", "B23F08", 2
            ô | chuncks "#", ["B2", "3F", "08"]
            H | from hexadecimal "#", [178, 63, 8]
            8 | eight "#", [178, 63, 8], 8
            + | add "#", [186, 71, 16]
            17 | seventeen "#", [186, 71, 16], 17
            ÷ | integer divide "#", [10, 4, 0]
            h | to hexadecimal "#", ["A", "4", "0"]
            J | join "#", "A40"
            « | concatenate "#A40"
            | print top of stack





            share|improve this answer











            $endgroup$




















              0












              $begingroup$


              Perl 5 -p, 35 bytes





              s|ww|sprintf'%X',.5+(hex$&)/17|ge


              Try it online!



              Reads from STDIN, replaces each pair of items that is not # with the appropriate single character using the division by 17 method for finding the nearest, then implicitly outputs (-p) the result.






              share|improve this answer









              $endgroup$















                Your Answer






                StackExchange.ifUsing("editor", function ()
                StackExchange.using("externalEditor", function ()
                StackExchange.using("snippets", function ()
                StackExchange.snippets.init();
                );
                );
                , "code-snippets");

                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "200"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader:
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                ,
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                draft saved

                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f187465%2ffind-the-closest-three-digit-hex-colour%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                9 Answers
                9






                active

                oldest

                votes








                9 Answers
                9






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                2












                $begingroup$


                Japt, 16 bytes



                r"%w"²_n16_r17Ãg


                Try it or run all test cases



                r"%w"²_n16_r17Ãg :Implicit input of string
                r :Replace
                "%w" :RegEx /w/g
                ² :Duplicate, giving /ww/g
                _ :Pass each match through a function
                n16 : Convert to decimal
                _ : Pass through the following function, and convert back to hex
                r17 : Round to the nearest multiple of 17
                Ã : End function
                g : Get first character





                share|improve this answer











                $endgroup$

















                  2












                  $begingroup$


                  Japt, 16 bytes



                  r"%w"²_n16_r17Ãg


                  Try it or run all test cases



                  r"%w"²_n16_r17Ãg :Implicit input of string
                  r :Replace
                  "%w" :RegEx /w/g
                  ² :Duplicate, giving /ww/g
                  _ :Pass each match through a function
                  n16 : Convert to decimal
                  _ : Pass through the following function, and convert back to hex
                  r17 : Round to the nearest multiple of 17
                  Ã : End function
                  g : Get first character





                  share|improve this answer











                  $endgroup$















                    2












                    2








                    2





                    $begingroup$


                    Japt, 16 bytes



                    r"%w"²_n16_r17Ãg


                    Try it or run all test cases



                    r"%w"²_n16_r17Ãg :Implicit input of string
                    r :Replace
                    "%w" :RegEx /w/g
                    ² :Duplicate, giving /ww/g
                    _ :Pass each match through a function
                    n16 : Convert to decimal
                    _ : Pass through the following function, and convert back to hex
                    r17 : Round to the nearest multiple of 17
                    Ã : End function
                    g : Get first character





                    share|improve this answer











                    $endgroup$




                    Japt, 16 bytes



                    r"%w"²_n16_r17Ãg


                    Try it or run all test cases



                    r"%w"²_n16_r17Ãg :Implicit input of string
                    r :Replace
                    "%w" :RegEx /w/g
                    ² :Duplicate, giving /ww/g
                    _ :Pass each match through a function
                    n16 : Convert to decimal
                    _ : Pass through the following function, and convert back to hex
                    r17 : Round to the nearest multiple of 17
                    Ã : End function
                    g : Get first character






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited 7 hours ago

























                    answered 8 hours ago









                    ShaggyShaggy

                    20k3 gold badges20 silver badges68 bronze badges




                    20k3 gold badges20 silver badges68 bronze badges





















                        2












                        $begingroup$


                        Python 3, 72 70 68 bytes





                        lambda x:'#'+''.join(f"(int(x[i:i+2],16)+8)//17:X"for i in(1,3,5))


                        Try it online!



                        This is a port of Grzegorz Oledzkis original answer, which I helped him golfing down.



                        Two features of Python 3 help us save bytes:



                        • Floating point division by default

                        • Format string literals

                        -2 bytes thanx to Jonathan Allan






                        share|improve this answer











                        $endgroup$








                        • 1




                          $begingroup$
                          (int(x[i:i+2],16)+8)//17 saves 2
                          $endgroup$
                          – Jonathan Allan
                          5 hours ago















                        2












                        $begingroup$


                        Python 3, 72 70 68 bytes





                        lambda x:'#'+''.join(f"(int(x[i:i+2],16)+8)//17:X"for i in(1,3,5))


                        Try it online!



                        This is a port of Grzegorz Oledzkis original answer, which I helped him golfing down.



                        Two features of Python 3 help us save bytes:



                        • Floating point division by default

                        • Format string literals

                        -2 bytes thanx to Jonathan Allan






                        share|improve this answer











                        $endgroup$








                        • 1




                          $begingroup$
                          (int(x[i:i+2],16)+8)//17 saves 2
                          $endgroup$
                          – Jonathan Allan
                          5 hours ago













                        2












                        2








                        2





                        $begingroup$


                        Python 3, 72 70 68 bytes





                        lambda x:'#'+''.join(f"(int(x[i:i+2],16)+8)//17:X"for i in(1,3,5))


                        Try it online!



                        This is a port of Grzegorz Oledzkis original answer, which I helped him golfing down.



                        Two features of Python 3 help us save bytes:



                        • Floating point division by default

                        • Format string literals

                        -2 bytes thanx to Jonathan Allan






                        share|improve this answer











                        $endgroup$




                        Python 3, 72 70 68 bytes





                        lambda x:'#'+''.join(f"(int(x[i:i+2],16)+8)//17:X"for i in(1,3,5))


                        Try it online!



                        This is a port of Grzegorz Oledzkis original answer, which I helped him golfing down.



                        Two features of Python 3 help us save bytes:



                        • Floating point division by default

                        • Format string literals

                        -2 bytes thanx to Jonathan Allan







                        share|improve this answer














                        share|improve this answer



                        share|improve this answer








                        edited 5 hours ago

























                        answered 6 hours ago









                        movaticamovatica

                        3286 bronze badges




                        3286 bronze badges







                        • 1




                          $begingroup$
                          (int(x[i:i+2],16)+8)//17 saves 2
                          $endgroup$
                          – Jonathan Allan
                          5 hours ago












                        • 1




                          $begingroup$
                          (int(x[i:i+2],16)+8)//17 saves 2
                          $endgroup$
                          – Jonathan Allan
                          5 hours ago







                        1




                        1




                        $begingroup$
                        (int(x[i:i+2],16)+8)//17 saves 2
                        $endgroup$
                        – Jonathan Allan
                        5 hours ago




                        $begingroup$
                        (int(x[i:i+2],16)+8)//17 saves 2
                        $endgroup$
                        – Jonathan Allan
                        5 hours ago











                        1












                        $begingroup$

                        JavaScript (ES6), 55 bytes





                        s=>s.replace(/w./g,x=>(('0x'+x)/17+.5|0).toString(16))


                        Try it online!






                        share|improve this answer









                        $endgroup$

















                          1












                          $begingroup$

                          JavaScript (ES6), 55 bytes





                          s=>s.replace(/w./g,x=>(('0x'+x)/17+.5|0).toString(16))


                          Try it online!






                          share|improve this answer









                          $endgroup$















                            1












                            1








                            1





                            $begingroup$

                            JavaScript (ES6), 55 bytes





                            s=>s.replace(/w./g,x=>(('0x'+x)/17+.5|0).toString(16))


                            Try it online!






                            share|improve this answer









                            $endgroup$



                            JavaScript (ES6), 55 bytes





                            s=>s.replace(/w./g,x=>(('0x'+x)/17+.5|0).toString(16))


                            Try it online!







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 7 hours ago









                            ArnauldArnauld

                            87.1k7 gold badges102 silver badges356 bronze badges




                            87.1k7 gold badges102 silver badges356 bronze badges





















                                1












                                $begingroup$

                                Python 2 (109 101 97 85 83 74 bytes)



                                lambda x:'#'+''.join(hex(int(int(x[i:i+2],16)/17.+.5))[2:]for i in[1,3,5])


                                The "nearest distance" is handled by division by 17 and rounding.



                                Improvements:



                                -8 bytes by using the int(...+.5) trick instead of int(round(...))



                                -4 bytes by using list comprehension instead of map()



                                -1 byte by hardcoding # in the output (thanks @movatica)



                                -10 bytes by not using re.findall("..",...) in favor of explicit String splicing



                                -2 bytes by not using list comprehension, but an inline generator expression in join (thanks @movatica)



                                -1 byte by not splicing the :7 ending for blue part



                                -9 bytes by better iteration over colors - i.e. iterating over indices, not actual characters (thanks @movatica)






                                share|improve this answer











                                $endgroup$












                                • $begingroup$
                                  Does not run without import re. The import is required and thus adds to the bytecount!
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  @movatica - you're right, added it
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  Save 1 byte by hardcoding '#' instead of x[0].
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
                                  $endgroup$
                                  – movatica
                                  6 hours ago






                                • 1




                                  $begingroup$
                                  Thanks! range(1,6,2) is even better with [1,3,5]
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  6 hours ago















                                1












                                $begingroup$

                                Python 2 (109 101 97 85 83 74 bytes)



                                lambda x:'#'+''.join(hex(int(int(x[i:i+2],16)/17.+.5))[2:]for i in[1,3,5])


                                The "nearest distance" is handled by division by 17 and rounding.



                                Improvements:



                                -8 bytes by using the int(...+.5) trick instead of int(round(...))



                                -4 bytes by using list comprehension instead of map()



                                -1 byte by hardcoding # in the output (thanks @movatica)



                                -10 bytes by not using re.findall("..",...) in favor of explicit String splicing



                                -2 bytes by not using list comprehension, but an inline generator expression in join (thanks @movatica)



                                -1 byte by not splicing the :7 ending for blue part



                                -9 bytes by better iteration over colors - i.e. iterating over indices, not actual characters (thanks @movatica)






                                share|improve this answer











                                $endgroup$












                                • $begingroup$
                                  Does not run without import re. The import is required and thus adds to the bytecount!
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  @movatica - you're right, added it
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  Save 1 byte by hardcoding '#' instead of x[0].
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
                                  $endgroup$
                                  – movatica
                                  6 hours ago






                                • 1




                                  $begingroup$
                                  Thanks! range(1,6,2) is even better with [1,3,5]
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  6 hours ago













                                1












                                1








                                1





                                $begingroup$

                                Python 2 (109 101 97 85 83 74 bytes)



                                lambda x:'#'+''.join(hex(int(int(x[i:i+2],16)/17.+.5))[2:]for i in[1,3,5])


                                The "nearest distance" is handled by division by 17 and rounding.



                                Improvements:



                                -8 bytes by using the int(...+.5) trick instead of int(round(...))



                                -4 bytes by using list comprehension instead of map()



                                -1 byte by hardcoding # in the output (thanks @movatica)



                                -10 bytes by not using re.findall("..",...) in favor of explicit String splicing



                                -2 bytes by not using list comprehension, but an inline generator expression in join (thanks @movatica)



                                -1 byte by not splicing the :7 ending for blue part



                                -9 bytes by better iteration over colors - i.e. iterating over indices, not actual characters (thanks @movatica)






                                share|improve this answer











                                $endgroup$



                                Python 2 (109 101 97 85 83 74 bytes)



                                lambda x:'#'+''.join(hex(int(int(x[i:i+2],16)/17.+.5))[2:]for i in[1,3,5])


                                The "nearest distance" is handled by division by 17 and rounding.



                                Improvements:



                                -8 bytes by using the int(...+.5) trick instead of int(round(...))



                                -4 bytes by using list comprehension instead of map()



                                -1 byte by hardcoding # in the output (thanks @movatica)



                                -10 bytes by not using re.findall("..",...) in favor of explicit String splicing



                                -2 bytes by not using list comprehension, but an inline generator expression in join (thanks @movatica)



                                -1 byte by not splicing the :7 ending for blue part



                                -9 bytes by better iteration over colors - i.e. iterating over indices, not actual characters (thanks @movatica)







                                share|improve this answer














                                share|improve this answer



                                share|improve this answer








                                edited 6 hours ago

























                                answered 8 hours ago









                                Grzegorz OledzkiGrzegorz Oledzki

                                1737 bronze badges




                                1737 bronze badges











                                • $begingroup$
                                  Does not run without import re. The import is required and thus adds to the bytecount!
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  @movatica - you're right, added it
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  Save 1 byte by hardcoding '#' instead of x[0].
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
                                  $endgroup$
                                  – movatica
                                  6 hours ago






                                • 1




                                  $begingroup$
                                  Thanks! range(1,6,2) is even better with [1,3,5]
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  6 hours ago
















                                • $begingroup$
                                  Does not run without import re. The import is required and thus adds to the bytecount!
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  @movatica - you're right, added it
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  Save 1 byte by hardcoding '#' instead of x[0].
                                  $endgroup$
                                  – movatica
                                  7 hours ago






                                • 1




                                  $begingroup$
                                  You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
                                  $endgroup$
                                  – movatica
                                  6 hours ago






                                • 1




                                  $begingroup$
                                  Thanks! range(1,6,2) is even better with [1,3,5]
                                  $endgroup$
                                  – Grzegorz Oledzki
                                  6 hours ago















                                $begingroup$
                                Does not run without import re. The import is required and thus adds to the bytecount!
                                $endgroup$
                                – movatica
                                7 hours ago




                                $begingroup$
                                Does not run without import re. The import is required and thus adds to the bytecount!
                                $endgroup$
                                – movatica
                                7 hours ago




                                1




                                1




                                $begingroup$
                                @movatica - you're right, added it
                                $endgroup$
                                – Grzegorz Oledzki
                                7 hours ago




                                $begingroup$
                                @movatica - you're right, added it
                                $endgroup$
                                – Grzegorz Oledzki
                                7 hours ago




                                1




                                1




                                $begingroup$
                                Save 1 byte by hardcoding '#' instead of x[0].
                                $endgroup$
                                – movatica
                                7 hours ago




                                $begingroup$
                                Save 1 byte by hardcoding '#' instead of x[0].
                                $endgroup$
                                – movatica
                                7 hours ago




                                1




                                1




                                $begingroup$
                                You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
                                $endgroup$
                                – movatica
                                6 hours ago




                                $begingroup$
                                You can skip the list comprehension inside ''.join(...), as it also handles a generator expression. Just remove the [] and save 2 more bytes :)
                                $endgroup$
                                – movatica
                                6 hours ago




                                1




                                1




                                $begingroup$
                                Thanks! range(1,6,2) is even better with [1,3,5]
                                $endgroup$
                                – Grzegorz Oledzki
                                6 hours ago




                                $begingroup$
                                Thanks! range(1,6,2) is even better with [1,3,5]
                                $endgroup$
                                – Grzegorz Oledzki
                                6 hours ago











                                1












                                $begingroup$


                                PHP, 75 67 bytes





                                #<?php for($m=3;$m;)echo dechex((hexdec($argn)>>--$m*8&255)/17+.5);


                                Try it online! or verify all test cases.






                                share|improve this answer











                                $endgroup$

















                                  1












                                  $begingroup$


                                  PHP, 75 67 bytes





                                  #<?php for($m=3;$m;)echo dechex((hexdec($argn)>>--$m*8&255)/17+.5);


                                  Try it online! or verify all test cases.






                                  share|improve this answer











                                  $endgroup$















                                    1












                                    1








                                    1





                                    $begingroup$


                                    PHP, 75 67 bytes





                                    #<?php for($m=3;$m;)echo dechex((hexdec($argn)>>--$m*8&255)/17+.5);


                                    Try it online! or verify all test cases.






                                    share|improve this answer











                                    $endgroup$




                                    PHP, 75 67 bytes





                                    #<?php for($m=3;$m;)echo dechex((hexdec($argn)>>--$m*8&255)/17+.5);


                                    Try it online! or verify all test cases.







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited 6 hours ago

























                                    answered 7 hours ago









                                    gwaughgwaugh

                                    3,2861 gold badge8 silver badges23 bronze badges




                                    3,2861 gold badge8 silver badges23 bronze badges





















                                        0












                                        $begingroup$


                                        Retina 0.8.2, 88 bytes



                                        (w)(.)
                                        $1,$2;
                                        [A-F]
                                        1$&
                                        T`L`d
                                        d+
                                        $*
                                        +`1,
                                        ,16$*
                                        ,
                                        8$*
                                        (117)*1*;
                                        $#1;
                                        T`d`L`1d
                                        BB|;



                                        Try it online! Link includes test cases. Explanation:



                                        (w)(.)
                                        $1,$2;


                                        Pair up the hex digits.



                                        [A-F]
                                        1$&
                                        T`L`d


                                        Convert each digit separately to decimal.



                                        d+
                                        $*


                                        Convert each decimal digit to unary.



                                        +`1,
                                        ,16$*


                                        Finish the hexadecimal conversion of the pair of digits.



                                        ,
                                        8$*
                                        (117)*1*;
                                        $#1;


                                        Add 8 and divide by 17.



                                        T`d`L`1d
                                        BB|;



                                        Convert back to hexadecimal.






                                        share|improve this answer









                                        $endgroup$

















                                          0












                                          $begingroup$


                                          Retina 0.8.2, 88 bytes



                                          (w)(.)
                                          $1,$2;
                                          [A-F]
                                          1$&
                                          T`L`d
                                          d+
                                          $*
                                          +`1,
                                          ,16$*
                                          ,
                                          8$*
                                          (117)*1*;
                                          $#1;
                                          T`d`L`1d
                                          BB|;



                                          Try it online! Link includes test cases. Explanation:



                                          (w)(.)
                                          $1,$2;


                                          Pair up the hex digits.



                                          [A-F]
                                          1$&
                                          T`L`d


                                          Convert each digit separately to decimal.



                                          d+
                                          $*


                                          Convert each decimal digit to unary.



                                          +`1,
                                          ,16$*


                                          Finish the hexadecimal conversion of the pair of digits.



                                          ,
                                          8$*
                                          (117)*1*;
                                          $#1;


                                          Add 8 and divide by 17.



                                          T`d`L`1d
                                          BB|;



                                          Convert back to hexadecimal.






                                          share|improve this answer









                                          $endgroup$















                                            0












                                            0








                                            0





                                            $begingroup$


                                            Retina 0.8.2, 88 bytes



                                            (w)(.)
                                            $1,$2;
                                            [A-F]
                                            1$&
                                            T`L`d
                                            d+
                                            $*
                                            +`1,
                                            ,16$*
                                            ,
                                            8$*
                                            (117)*1*;
                                            $#1;
                                            T`d`L`1d
                                            BB|;



                                            Try it online! Link includes test cases. Explanation:



                                            (w)(.)
                                            $1,$2;


                                            Pair up the hex digits.



                                            [A-F]
                                            1$&
                                            T`L`d


                                            Convert each digit separately to decimal.



                                            d+
                                            $*


                                            Convert each decimal digit to unary.



                                            +`1,
                                            ,16$*


                                            Finish the hexadecimal conversion of the pair of digits.



                                            ,
                                            8$*
                                            (117)*1*;
                                            $#1;


                                            Add 8 and divide by 17.



                                            T`d`L`1d
                                            BB|;



                                            Convert back to hexadecimal.






                                            share|improve this answer









                                            $endgroup$




                                            Retina 0.8.2, 88 bytes



                                            (w)(.)
                                            $1,$2;
                                            [A-F]
                                            1$&
                                            T`L`d
                                            d+
                                            $*
                                            +`1,
                                            ,16$*
                                            ,
                                            8$*
                                            (117)*1*;
                                            $#1;
                                            T`d`L`1d
                                            BB|;



                                            Try it online! Link includes test cases. Explanation:



                                            (w)(.)
                                            $1,$2;


                                            Pair up the hex digits.



                                            [A-F]
                                            1$&
                                            T`L`d


                                            Convert each digit separately to decimal.



                                            d+
                                            $*


                                            Convert each decimal digit to unary.



                                            +`1,
                                            ,16$*


                                            Finish the hexadecimal conversion of the pair of digits.



                                            ,
                                            8$*
                                            (117)*1*;
                                            $#1;


                                            Add 8 and divide by 17.



                                            T`d`L`1d
                                            BB|;



                                            Convert back to hexadecimal.







                                            share|improve this answer












                                            share|improve this answer



                                            share|improve this answer










                                            answered 8 hours ago









                                            NeilNeil

                                            85.7k8 gold badges46 silver badges183 bronze badges




                                            85.7k8 gold badges46 silver badges183 bronze badges





















                                                0












                                                $begingroup$


                                                Jelly, 20 bytes



                                                ḊØHiⱮs2ḅ⁴÷17+.ḞịØHṭḢ


                                                Try it online!






                                                share|improve this answer









                                                $endgroup$

















                                                  0












                                                  $begingroup$


                                                  Jelly, 20 bytes



                                                  ḊØHiⱮs2ḅ⁴÷17+.ḞịØHṭḢ


                                                  Try it online!






                                                  share|improve this answer









                                                  $endgroup$















                                                    0












                                                    0








                                                    0





                                                    $begingroup$


                                                    Jelly, 20 bytes



                                                    ḊØHiⱮs2ḅ⁴÷17+.ḞịØHṭḢ


                                                    Try it online!






                                                    share|improve this answer









                                                    $endgroup$




                                                    Jelly, 20 bytes



                                                    ḊØHiⱮs2ḅ⁴÷17+.ḞịØHṭḢ


                                                    Try it online!







                                                    share|improve this answer












                                                    share|improve this answer



                                                    share|improve this answer










                                                    answered 5 hours ago









                                                    Nick KennedyNick Kennedy

                                                    3,8697 silver badges12 bronze badges




                                                    3,8697 silver badges12 bronze badges





















                                                        0












                                                        $begingroup$


                                                        05AB1E, 13 bytes



                                                        ćs2ôH8+17÷hJ«


                                                        Try it online!



                                                        How?



                                                        ćs2ôH8+17÷hJ« | string, S e.g. stack: "#B23F08"
                                                        ć | decapitate "B23F08", "#"
                                                        s | swap "#", "B23F08"
                                                        2 | two "#", "B23F08", 2
                                                        ô | chuncks "#", ["B2", "3F", "08"]
                                                        H | from hexadecimal "#", [178, 63, 8]
                                                        8 | eight "#", [178, 63, 8], 8
                                                        + | add "#", [186, 71, 16]
                                                        17 | seventeen "#", [186, 71, 16], 17
                                                        ÷ | integer divide "#", [10, 4, 0]
                                                        h | to hexadecimal "#", ["A", "4", "0"]
                                                        J | join "#", "A40"
                                                        « | concatenate "#A40"
                                                        | print top of stack





                                                        share|improve this answer











                                                        $endgroup$

















                                                          0












                                                          $begingroup$


                                                          05AB1E, 13 bytes



                                                          ćs2ôH8+17÷hJ«


                                                          Try it online!



                                                          How?



                                                          ćs2ôH8+17÷hJ« | string, S e.g. stack: "#B23F08"
                                                          ć | decapitate "B23F08", "#"
                                                          s | swap "#", "B23F08"
                                                          2 | two "#", "B23F08", 2
                                                          ô | chuncks "#", ["B2", "3F", "08"]
                                                          H | from hexadecimal "#", [178, 63, 8]
                                                          8 | eight "#", [178, 63, 8], 8
                                                          + | add "#", [186, 71, 16]
                                                          17 | seventeen "#", [186, 71, 16], 17
                                                          ÷ | integer divide "#", [10, 4, 0]
                                                          h | to hexadecimal "#", ["A", "4", "0"]
                                                          J | join "#", "A40"
                                                          « | concatenate "#A40"
                                                          | print top of stack





                                                          share|improve this answer











                                                          $endgroup$















                                                            0












                                                            0








                                                            0





                                                            $begingroup$


                                                            05AB1E, 13 bytes



                                                            ćs2ôH8+17÷hJ«


                                                            Try it online!



                                                            How?



                                                            ćs2ôH8+17÷hJ« | string, S e.g. stack: "#B23F08"
                                                            ć | decapitate "B23F08", "#"
                                                            s | swap "#", "B23F08"
                                                            2 | two "#", "B23F08", 2
                                                            ô | chuncks "#", ["B2", "3F", "08"]
                                                            H | from hexadecimal "#", [178, 63, 8]
                                                            8 | eight "#", [178, 63, 8], 8
                                                            + | add "#", [186, 71, 16]
                                                            17 | seventeen "#", [186, 71, 16], 17
                                                            ÷ | integer divide "#", [10, 4, 0]
                                                            h | to hexadecimal "#", ["A", "4", "0"]
                                                            J | join "#", "A40"
                                                            « | concatenate "#A40"
                                                            | print top of stack





                                                            share|improve this answer











                                                            $endgroup$




                                                            05AB1E, 13 bytes



                                                            ćs2ôH8+17÷hJ«


                                                            Try it online!



                                                            How?



                                                            ćs2ôH8+17÷hJ« | string, S e.g. stack: "#B23F08"
                                                            ć | decapitate "B23F08", "#"
                                                            s | swap "#", "B23F08"
                                                            2 | two "#", "B23F08", 2
                                                            ô | chuncks "#", ["B2", "3F", "08"]
                                                            H | from hexadecimal "#", [178, 63, 8]
                                                            8 | eight "#", [178, 63, 8], 8
                                                            + | add "#", [186, 71, 16]
                                                            17 | seventeen "#", [186, 71, 16], 17
                                                            ÷ | integer divide "#", [10, 4, 0]
                                                            h | to hexadecimal "#", ["A", "4", "0"]
                                                            J | join "#", "A40"
                                                            « | concatenate "#A40"
                                                            | print top of stack






                                                            share|improve this answer














                                                            share|improve this answer



                                                            share|improve this answer








                                                            edited 3 hours ago

























                                                            answered 4 hours ago









                                                            Jonathan AllanJonathan Allan

                                                            56.5k5 gold badges41 silver badges178 bronze badges




                                                            56.5k5 gold badges41 silver badges178 bronze badges





















                                                                0












                                                                $begingroup$


                                                                Perl 5 -p, 35 bytes





                                                                s|ww|sprintf'%X',.5+(hex$&)/17|ge


                                                                Try it online!



                                                                Reads from STDIN, replaces each pair of items that is not # with the appropriate single character using the division by 17 method for finding the nearest, then implicitly outputs (-p) the result.






                                                                share|improve this answer









                                                                $endgroup$

















                                                                  0












                                                                  $begingroup$


                                                                  Perl 5 -p, 35 bytes





                                                                  s|ww|sprintf'%X',.5+(hex$&)/17|ge


                                                                  Try it online!



                                                                  Reads from STDIN, replaces each pair of items that is not # with the appropriate single character using the division by 17 method for finding the nearest, then implicitly outputs (-p) the result.






                                                                  share|improve this answer









                                                                  $endgroup$















                                                                    0












                                                                    0








                                                                    0





                                                                    $begingroup$


                                                                    Perl 5 -p, 35 bytes





                                                                    s|ww|sprintf'%X',.5+(hex$&)/17|ge


                                                                    Try it online!



                                                                    Reads from STDIN, replaces each pair of items that is not # with the appropriate single character using the division by 17 method for finding the nearest, then implicitly outputs (-p) the result.






                                                                    share|improve this answer









                                                                    $endgroup$




                                                                    Perl 5 -p, 35 bytes





                                                                    s|ww|sprintf'%X',.5+(hex$&)/17|ge


                                                                    Try it online!



                                                                    Reads from STDIN, replaces each pair of items that is not # with the appropriate single character using the division by 17 method for finding the nearest, then implicitly outputs (-p) the result.







                                                                    share|improve this answer












                                                                    share|improve this answer



                                                                    share|improve this answer










                                                                    answered 2 hours ago









                                                                    XcaliXcali

                                                                    6,1975 silver badges23 bronze badges




                                                                    6,1975 silver badges23 bronze badges



























                                                                        draft saved

                                                                        draft discarded
















































                                                                        If this is an answer to a challenge…



                                                                        • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


                                                                        • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
                                                                          Explanations of your answer make it more interesting to read and are very much encouraged.


                                                                        • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.


                                                                        More generally…



                                                                        • …Please make sure to answer the question and provide sufficient detail.


                                                                        • …Avoid asking for help, clarification or responding to other answers (use comments instead).




                                                                        draft saved


                                                                        draft discarded














                                                                        StackExchange.ready(
                                                                        function ()
                                                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f187465%2ffind-the-closest-three-digit-hex-colour%23new-answer', 'question_page');

                                                                        );

                                                                        Post as a guest















                                                                        Required, but never shown





















































                                                                        Required, but never shown














                                                                        Required, but never shown












                                                                        Required, but never shown







                                                                        Required, but never shown

































                                                                        Required, but never shown














                                                                        Required, but never shown












                                                                        Required, but never shown







                                                                        Required, but never shown







                                                                        Popular posts from this blog

                                                                        19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

                                                                        Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

                                                                        Кастелфранко ди Сопра Становништво Референце Спољашње везе Мени за навигацију43°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.5588543°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.558853179688„The GeoNames geographical database”„Istituto Nazionale di Statistica”проширитиууWorldCat156923403n850174324558639-1cb14643287r(подаци)