十六进制和字母


45

在此挑战中,您将收到输入,将其转换为十六进制,进行一些更改,然后输出结果。

因为它们只有十六进制的16个字符,所以您的代码将需要尽可能短。


例子

示例用空白行分隔。第一行输入,第二行显示步骤,第三行显示输出

234589
234589 -> 3945D -> 39454 -> 9A1E -> 9115 -> 239B -> 2392 -> 958
958

435234
435234 -> 6A422 -> 61422 -> EFEE -> 5655 -> 1617
1617

153
153 -> 99 -> 99 -> 63
1617

脚步

输入将始终为正整数


为了生成输出,您将遵循以下步骤:

  1. 将输入转换为十六进制
  2. 将所有字母替换为其字母索引(例如a -> 1, b -> 2
  3. 将结果转换回十六进制
  4. 如果结果中包含字母,请转到步骤2。否则,请输出结果

这是因此以字节为单位的最短代码胜出!


27
理由+1:“因为它们只有16个字符(十六进制),所以您的代码必须尽可能短。”

1
一个通过零数字的测试用例(这对我当前的方法而言是一个重要的优势):749699 -> B7083 -> 27083 -> 69CB -> 6932 -> 1B14 -> 1214 -> 4BE -> 425 -> 1A9 -> 119 -> 77
Martin Ender 2015年

5
测试用例153。步骤1> 99,步骤2-> 99,步骤3-> 63,输出63。对吗?
edc65

是的,对于153,我没有看到代码流程说明...
RosLuP

对于它的价值...前4个答案中的3个在输入153上返回99,在当前版本的Jelly上返回Dennis的段错误。我将继续前进时退出测试:)我们确定该示例正确吗?
dana

Answers:


13

果冻,18字节

b⁴µ:⁵©+¹%⁵ḅ⁵ß¹®S¤?

在线尝试!

源代码的二进制18字节版本具有xxd转储

0000000: 62 b6 8c 3a b7 85 2b 8e 25 b7 a3 b7 95 8e 88 53 83 3f b..:..+.%......S.?

并与此版本的Jelly解释器一起使用

这个怎么运作

b⁴µ:⁵©+¹%⁵ḅ⁵ß¹®S¤?  Define the main link -- Left input: a (number)

b⁴                  Convert from integer to base 16.
  µ                 Start a new, monadic link.
   :⁵               Divide all base 16 digits by 10.
     ©              Save the result in a register.
      +¹            Add the quotients to the base 16 digits.
        %⁵          Take all resulting sums modulo 10.
          ḅ⁵        Convert from base 10 to integer.
              ®S¤   Take the sum of the quotients from the list in the register.
                 ?  If the result is non-zero:
            ß         Recursively call the main link.
             ¹        Else, apply the identity function.

(十进制到整数)应该是的简写形式ḅ⁵,但是在撰写本文时,最新版本的Jelly有一个错误使我无法使用它。


3
那是什么....?
J Atkin

1
使用哪种编码?它看起来不像UTF-8或ISO-8859
Downgoat 2015年

2
@Downgoat不是。果冻使用自己的自定义编码。源代码可以UTF-8或二进制文件的形式提供。
丹尼斯

2
@Timwi公平。我都将其添加到了帖子中。
丹尼斯

2
在Dennis的辩护中:由于Jelly使用的字符数少于256个,因此可以轻松定义仅使用ANSI字符的Jelly的派生。唯一的区别是可读性和易于记忆每个功能的作用。
2015年

8

的JavaScript ES6,98 92 67 64字节

@Downgoat节省了3个字节,@ user81655节省了3个字节

找到了一个短得多的版本,放弃了递归循环:

h=x=>(y=x.toString(16))>(r=y.replace(/\D/g,z=>'0x'+z-9))?h(+r):r

该程序最有趣的部分可能是replace函数:

z=>     // Implicit: z = one of "a", "b", "c", "d", "e", "f"
'0x'+z  // Add '0x' to the beginning of z.
        // If z == "a", this results in "0xa".
-9      // Subtract 9. JavaScript automatically coerces the string to a number,
        // and because the prefix "0x" means "convert from hexadecimal",
        // the "a" is converted to 10, which then becomes 1 because of the subtraction.

测试片段

(从这里拍摄)

h=x=>(y=x.toString(16))>(r=y.replace(/\D/g,z=>'0x'+z-9))?h(+r):r
<!--                               Try the test suite below!                              --><strong id="bytecount" style="display:inline; font-size:32px; font-family:Helvetica"></strong><strong id="bytediff" style="display:inline; margin-left:10px; font-size:32px; font-family:Helvetica; color:lightgray"></strong><br><br><pre style="margin:0">Code:</pre><textarea id="textbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><pre style="margin:0">Input:</pre><textarea id="inputbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><button id="testbtn">Test!</button><button id="resetbtn">Reset</button><br><p><strong id="origheader" style="font-family:Helvetica; display:none">Original Code Output:</strong><p><div id="origoutput" style="margin-left:15px"></div><p><strong id="newheader" style="font-family:Helvetica; display:none">New Code Output:</strong><p><div id="newoutput" style="margin-left:15px"></div><script type="text/javascript" id="golfsnippet">var bytecount=document.getElementById("bytecount");var bytediff=document.getElementById("bytediff");var textbox=document.getElementById("textbox");var inputbox=document.getElementById("inputbox");var testbtn=document.getElementById("testbtn");var resetbtn=document.getElementById("resetbtn");var origheader=document.getElementById("origheader");var newheader=document.getElementById("newheader");var origoutput=document.getElementById("origoutput");var newoutput=document.getElementById("newoutput");inputbox.value="234589";textbox.style.width=inputbox.style.width=window.innerWidth-50+"px";var _originalCode=null;function getOriginalCode(){if(_originalCode!=null)return _originalCode;var allScripts=document.getElementsByTagName("script");for(var i=0;i<allScripts.length;i++){var script=allScripts[i];if(script.id!="golfsnippet"){originalCode=script.textContent.trim();return originalCode}}}function getNewCode(){return textbox.value.trim()}function getInput(){try{var inputText=inputbox.value.trim();var input=eval("["+inputText+"]");return input}catch(e){return null}}function setTextbox(s){textbox.value=s;onTextboxChange()}function setOutput(output,s){output.innerHTML=s}function addOutput(output,data){output.innerHTML+='<pre style="background-color:'+(data.type=="err"?"lightcoral":"lightgray")+'">'+escape(data.content)+"</pre>"}function getByteCount(s){return(new Blob([s],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"})).size}function onTextboxChange(){var newLength=getByteCount(getNewCode());var oldLength=getByteCount(getOriginalCode());bytecount.innerHTML=newLength+" bytes";var diff=newLength-oldLength;if(diff>0){bytediff.innerHTML="(+"+diff+")";bytediff.style.color="lightcoral"}else if(diff<0){bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgreen"}else{bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgray"}}function onTestBtn(evt){origheader.style.display="inline";newheader.style.display="inline";setOutput(newoutput,"");setOutput(origoutput,"");var input=getInput();if(input===null){addOutput(origoutput,{type:"err",content:"Input is malformed. Using no input."});addOutput(newoutput,{type:"err",content:"Input is malformed. Using no input."});input=[]}doInterpret(getNewCode(),input,function(data){addOutput(newoutput,data)});doInterpret(getOriginalCode(),input,function(data){addOutput(origoutput,data)});evt.stopPropagation();return false}function onResetBtn(evt){setTextbox(getOriginalCode());origheader.style.display="none";newheader.style.display="none";setOutput(origoutput,"");setOutput(newoutput,"")}function escape(s){return s.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}window.alert=function(){};window.prompt=function(){};function doInterpret(code,input,cb){var workerCode=interpret.toString()+";function stdout(s){ self.postMessage( {'type': 'out', 'content': s} ); }"+" function stderr(s){ self.postMessage( {'type': 'err', 'content': s} ); }"+" function kill(){ self.close(); }"+" self.addEventListener('message', function(msg){ interpret(msg.data.code, msg.data.input); });";var interpreter=new Worker(URL.createObjectURL(new Blob([workerCode])));interpreter.addEventListener("message",function(msg){cb(msg.data)});interpreter.postMessage({"code":code,"input":input});setTimeout(function(){interpreter.terminate()},1E4)}setTimeout(function(){getOriginalCode();textbox.addEventListener("input",onTextboxChange);testbtn.addEventListener("click",onTestBtn);resetbtn.addEventListener("click",onResetBtn);setTextbox(getOriginalCode())},100);function interpret(code,input){window={};alert=function(s){stdout(s)};window.alert=alert;console.log=alert;prompt=function(s){if(input.length<1)stderr("not enough input");else{var nextInput=input[0];input=input.slice(1);return nextInput.toString()}};window.prompt=prompt;(function(){try{var evalResult=eval(code);if(typeof evalResult=="function"){var callResult=evalResult.apply(this,input);if(typeof callResult!="undefined")stdout(callResult)}}catch(e){stderr(e.message)}})()};</script>


使用一个函数可以节省一些字节.toString(16)x=>eval("for(x=(j=n=>n.toString(16))(x);/\\D/.test(x);)x=j(+x.replace(/\\D/g,z=>+('0x'+z)-9))")。使用递归还可以节省一些字节
Downgoat 2015年

@Downgoat谢谢!.replace在评估字符串之前,我曾尝试过在字符串上使用a ,但是结果却更长。
ETHproductions 2015年

还记得你可以把它匿名函数,省略h=
康纳尔奥布莱恩

@CᴏɴᴏʀO'Bʀɪᴇɴ谢谢您的建议,但是那行不通,因为它需要自行调用。
ETHproductions 2015年

加!没有看到递归。我是白痴> _ <
Conor O'Brien

6

CJam,21个 19字节

r{siGb_{(9%)}%_@#}g

在这里测试。

说明

一个非常负面模结果极少数情况下是有帮助的。:)

r       e# Read input.
{       e# While the condition on top of the stack is truthy...
  s     e#   Convert to string. This is a no-op in the first iteration, but necessary
        e#   on subsequent iterations.
  i     e#   Convert to integer.
  Gb    e#   Get base-16 digits.
  _{    e#   Copy and map over the copy...
    (   e#   Decrement.
    9%  e#   Modulo 9. If the digit was originally in the range 0 to 9, it will remain
        e#   unchanged because -1 % 9 == -1. If the digit was in 10 to 15, it will become
        e#   0 to 5, respectively.
    )   e#   Increment. Undoes the decrement for unchanged digits and fixes the letter
        e#   digits because A corresponds to 1, not 0.
  }%
  _     e#   Duplicate result.
  @#    e#   Pull up original digits and try to find them in the array. This will be zero,
        e#   i.e. falsy, if they are equal and -1, i.e. truthy, if they are not.
}g

好像其他人可能失败了153?在前4个答案中有3个会出现同样的问题似乎很奇怪?cjam.aditsu.net/...
达纳

4

红宝石,35 +1 = 36

使用命令行标志p,运行

$_='%x'%$_
redo if$_.tr!'a-f','1-6'

说明:

-p标志创建一个循环,将输入和最终输出存储在变量中$_'%x'进行十六进制转换,并tr!进行数字替换,如果没有任何更改,则返回假值。重做从新开始$_


4

朱莉娅78 74字节

f(x)=(h=hex(x);isdigit(h)?h:f(parse(replace(h,r"[a-z]",c->Int(c[1])-96))))

这是一个接受整数并返回字符串的递归函数。

取消高尔夫:

function f(x::Integer)
    # Get the hexadecimal representation of x as a string
    h = hex(x)

    # Check whether all characters are digits
    if isdigit(h)
        # Return the hexadecimal representation of the input
        h
    else
        # Replace each letter with its position in the alphabet,
        # parse as an integer, and call f on the result
        f(parse(replace(h, r"[a-z]", c -> Int(c[1]) - 96)))
    end
end

4

MATL,23 25字节

免责声明

在编写此答案时,我注意到MATL dec2base函数中的一个错误,对其进行了更正,并发布了包含该更正的新版本(以及其他一些累积的,不相关的更改)

由于我使用的版本晚于此挑战,因此根据对Meta的共识,此答案不符合要求

i`0:15YAt9X\t10ZQbb=~a]

>> matl i`0:15YAt9X\t10ZQbb=~a]
> 234589
958

说明

i             % input number
`             % do...while
  0:15YA      % convert number to representation with base defined by symbols 0,...,15
  t9X\        % duplicate vector. Modulus 9 with 0 replaced by 9      
  t10ZQ       % duplicate vector and convert to number using base 10
  bb=~a       % are second- and third-top stack elements different? (If so, next iteration)
]             % end        

您可以用该语言的旧版本编写答案!
lirtosiast,2015年

@ThomasKwa问题是在旧版本中,编译器存在错误。我在新版本中,切向其中包含一些(无关)的新功能纠正它
路易斯Mendo

3

Dyalog APL,37 36 33字节

{∧/9≥X←16⊥⍣¯1⊢⍵:10⊥X⋄∇10(⊣⊥|+≤)X}

由于亚当NGN的建议。我保留的16⊥⍣¯1⊢⍵⍵⊤⍨⍴⍨16-这是一个额外的字节,但允许我们对任意大小的数字进行操作,而不是64位。


-2通过选择合适的不平等功能:{∧/9≥X←16⊥⍣¯1⊢⍵:10⊥X⋄∇10⊥10|X+9<X}
亚当

1
甚至更短:10⊥10|X+10≤X-> 10(⊣⊥|+≤)X(技术上不等效,但适用于十六进制数字)
ngn

1
16⊥⍣¯1⊢⍵->⍵⊤⍨⍴⍨16
ngn

2

Python,118105字节

def f(n):h=hex(n)[2:];return h if h.isdigit()else f(int(''.join(map(lambda x:chr((ord(x)-47)%48+47),h))))

2

PHP 140 126 122 114 112 87或84个字节(包括-r

并不是完全确定有关此规则的方式,因为这是我第一次尝试代码高尔夫,但是可以在php -r不需要<??>

$b=readline();while($c!=$b)$b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));echo$c

格式化的

$b=readline();
while($c!=$b){
  $b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));
}
echo "$b\n";

备用代码(使用argv代替stdin)

for($b=$argv[1];$c!=$b;)$b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));echo$b

格式化的

for($b=$argv[1];$c!=$b;) {
  $b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));
}
echo $b;

笔记

编辑1:我打了个电话以intval()保存14个字符,因为PHP会很乐意将数字字符串视为数字。
编辑2:我\n从输出中删除了测试后忘记删除的内容,并从最终回显中删除了引号,以节省总共4个字符。
编辑3:删除最后呼叫intval()
编辑4:保存2个字节通过从正则表达式线去除引号
编辑5:改变[a-f]\D保存3个字符,除去strval从呼叫preg_replace8以上; 补充版本使用argv[]的,而不是STDIN,移动循环终结到while语句(哎呀!)节省11多个字符,而移动电话dechex入subject的一部分preg_replace另外3个,总共25个;还添加了一个非标准输入版本,作为使用少于3个字符的替代版本。感谢您的帮助,@ Blackhole


欢迎来到Code Golf!由于没有打开标签的文件是有效的PHP文件,因此我们总是在PHP中对标签进行计数(或者,我们对-r选项的两个字节进行计数)。但是领导;总是比领导更短?>,所以请不要忘记它。顺便说一下,这是一个较短的代码:for($a=$argv[1];$b!=$a;)$a=preg_replace('#\D#e','ord($0)-96',$b=dechex($a));echo$b;(-29字节)。
Blackhole,2015年

输入153应该给出63,而不是99。但是-r是免费的。(见codegolf.meta.stackexchange.com/a/2428/55735
提图斯

2

[R 106个 103 102字节

使用-3个字节if代替while

-1字节感谢Giuseppe使用as.double代替as.integer

a=function(y){x=as.hexmode(as.double(y))
if(grepl("[a-f]",x)){x=chartr("a-f","1-6",x);return(a(x))};x}

在线尝试!

只需添加a(your_integer_here)到TIO即可查看结果。

> a(234589)
[1] "958"
> a(435234)
[1] "1617"
> a(99999)
[1] "4908"

我使用递归将函数重新应用于每个连续的迭代,条件是它在字符串中找不到任何字母“ abcdef”,当此条件为False时,它将结果作为字符串输出。最好的部分是我对chartr函数的发现,它使我可以将元素与字符串中的相应元素交换。该字符串来自将十六进制强制转换为字符串格式的函数。

编辑:我尝试使用sprint("%x",y)而不是as.hexmode(as.double(y)),但是我仍然需要as.double在代码中的某个地方使用,它长2 1字节。


as.double短于as.integer
Giuseppe '18

还有更多的高尔夫球要做,但是我现在正在移动。随时加入我们的R高尔夫聊天室,别忘了查看(并有助于)R高尔夫技巧!
朱塞佩

2

05AB1E,12 个字节

h[Au₂L‡hÐþQ#

在线尝试验证所有测试用例

说明:

h              # Convert the (implicit) integer-input to a hexadecimal string
               #  i.e. 234589 → "3945D"
 [             # Start an infinite loop:
  Au           #  Push the uppercase alphabet "ABC...XYZ"
    L         #  Push a list in the range [1,26]
              #  Transliterate: replace all letters with the integers at the same index
               #   i.e. "3945D" → "39454"
               #   i.e. "239B" → "2392"
       h       #  Convert the integer to a hexadecimal string again
               #   i.e. "39454" → "9A1E"
               #   i.e. "2392" → "958"
        Ð      #  Triplicate it
         þ     #  Leave only the digits of the last copy
               #   i.e. "9A1E" → "91"
               #   i.e. "958" → "958"
          Q    #  Check if these digits and the hexadecimal string are equal
               #   i.e. "9A1E" and "91" → 0 (falsey)
               #   i.e. "958" and "958" → 1 (truthy)
           #   #  And if they are: stop the infinite loop
               # (and output the remaining copy from the triplicate implicitly as result)

ÐþQ对于相同的字节数,也可以是D.ïD:Duplicate; :is_int?)。


1
[hÐþQ#Au₂L‡不幸的是,@ MagicOctopusUrn 并不总是工作。挑战要求首先转换为十六进制,然后在每次迭代中转换为十六进制。如果我将代码粘贴到测试套件中,则前三个测试用例正确,但是后两个失败。
凯文·克鲁伊森

2

C#(Visual C#交互式编译器),92字节

n=>{var s=$"{n:x}";for(;(s=$"{s.Aggregate(0,(a,c)=>10*a+c%48):x}").Any(c=>c>57););return s;}

在线尝试!

减少打高尔夫球的代码:

// anonymous function with
// input integer n
// output is a string
n=>{
  // 1) Convert the input to hexadecimal
  var s=$"{n:x}";
  for(;
    (s=$"{
      // 2) replace letters with their index in the alphabet
      s.Aggregate(0,(a,c)=>10*a+c%48)
      // 3) Convert the result back to hexadecimal
      :x}"
    // 4) If the result contains any letters, go to step 2
    ).Any(c=>c>57););
  // If not, output the result
  return s;
}

按照问题末尾的算法,153必须导致63而不是99,就我看来,您的函数在一段时间前返回
RosLuP

1
@RosLuP-使它与153一起工作,尽管现在我的解决方案更长了:)我将努力使它变小,但至少目前它可以正确处理这种情况。
dana

1

Mathematica,107个字节

(b=FromDigits)@NestWhile[b[#/.Thread[10~Range~15->Range@6]]~a~16&,#~(a=IntegerDigits)~16,MemberQ[a_/;a>9]]&

想不出更多的高尔夫方式...


1

Mathematica,80个字节

i=IntegerDigits;f=FromDigits;f[#~i~16//.l_/;Max@l>9:>f[If[#>9,#-9,#]&/@l]~i~16]&

这对我从alephalpha中学到的while循环使用了巧妙的技巧。的//.是“经常将此替换规则尽可能”。然后,我们使用一种模式,l_/;Max@l>9该模式仅在十六进制数字列表仍包含大于9的数字时才匹配。


1

Japt,45个 40字节

根据我的JS答案:

I=_nG -9}H=_=ZsG)f/\D/ ?H$($ÂZr"\\D"I):Z

对高尔夫语言颇为可悲,是吗?在这场挑战中,似乎有很多人意识到他们的解释器有错误,现在我也包括其中。这应该能够以30个字节或更少的字节数完成,但是有一个错误使之不可能。

这将创建一个H可以这样调用的函数:

I=_nG -9}H=_=ZsG)f/\D/ ?H$($ÂZr"\\D"I):Z}
$H(234589)$

另外,这是一个完整的程序,它从STDIN输入:

I=_nG -9}H=_=ZsG)f/\D/ ?H$($ÂZr"\\D"I):Z}H$(U

在线尝试!


1

GNU Sed(具有eval扩展名),44

:
y/ABCDEF/123456/
s/^/printf %X /e
/[A-F]/b

我希望sed可以y/A-F/1-6/。但事实并非如此。


1

Python 3,101 89字节

总体而言,这与Boomerang的解决方案非常相似,但是它在各个方面采用了几种不同的方法。

def d(n):n=hex(int(n))[2:];return n.isdigit()and n or d(str([ord(c)%12for c in n])[1::3])

这是我原始代码的扩展版本:

def d(n):
    n = int(n)                        # Interpret input as a decimal integer.
    n = hex(n)[2:]                    # Convert it to hex, stripping the '0x'.
    if n.isdigit():                   # If every character is a digit...
        return n                      # ...we're done.
    else:                             # Otherwise...
        n = ''.join(c if c < ':' else # ...don't change digits (':' is after
                    chr(ord(c - 48))  # '9'), but do change letters ('1' is 48
                    for c in n)       # characters before 'a').
        return d(n)                   # Then follow the process again.

由于使用了@pacholik,减少了11个字节(用对join数字和字母都有效的单个操作替换了innard的内在函数)。替换了另一个字节后join,用电灯泡瞬间打到我的切弦技巧代替了,(但该技巧已经存在于Python高尔夫球技巧中,尽管在指定Python 2的标题下)。


join可缩短至str(ord(c)%12)for c in n
pacholik 2015年

1

Java,201字节

String f(int a){String s=Long.toString(a,16);while(s.matches(".*[a-z].*")){char[]b=s.toCharArray();for(int i=0;i<b.length;i++)if(b[i]>96)b[i]-=48;s=Long.toString(new Long("".valueOf(b)),16);}return s;}

1

Japt,21个字节

ìG
®+zA
eV ?U:ßVmuA ì

在线尝试!

与现有的Japt答案相比有显着改进。它无法处理153 -> 63评论中建议的情况,但是似乎没有其他答案,因此除非操作员明确说明,否则我将不予理会。

输出为十进制数字列表,可以更改为输出1个字节的十进制数字

说明:

ìG               #Get a list of base-16 digits, each as a base-10 number
                    e.g. 234589 -> [3,9,4,5,13]

®+zA             #Increment the numbers greater than 10
                    e.g. [3,9,4,5,13] -> [3,9,4,5,14]

eV ?             #If the second step didn't change any digit:
    U            # Output the digits from step 1
     :           #Otherwise
      ß          # Repeat the program with new input:
       V         #  The result of step 2
        muA      #  With each digit modulo 10
            ì    #  Treated as a base-10 number

1

APL(NARS)104个字符,208个字节

f←{k←10⊥{⍵≤9:⍵⋄1+10∣⍵}¨q←{(16⍴⍨⌊1+16⍟⍵)⊤⍵}⍵⋄9≥⌈/q:k,0⋄k,1}
t←{⍵≤0:0⋄0=2⊃v←f⍵:↑f↑v⋄{k←f⍵⋄0=2⊃k:↑k⋄∇↑k}⍵}

测试:

  t 153
63
  t 0
0
  t 234589
958
  t 435234
1617
  t ¯123
0

我不知道是否可以...可能对于标准的质量答案来说还不够...


0

认真地,42个字节

1╤╝4ª╗,$1WX╛@¿╜@¡;`╜@¿;)╛;(\(+%$`Mεj;)=YWX

十六进制转储:

31d1bc34a6bb2c24315758be40a8bd40ad3b60bd40
a83b29be3b285c282b2524604dee6a3b293d595758

在线尝试

肯定有比这更短的方法,但这就是我得到的...(这是我希望自己W突然出现的地方,因为;如果您不希望在最后一个方法之前放一个,则比将其短X在EACH之后放一个W。在这里,用Wpop代替peek可以节省三个字节。)



0

PHP,71字节

while($n++<2|$b-$a=&$argn)$a=strtr($b=dechex($a),abcdef,123456);echo$a;

与管道一起运行-nR在线尝试

对PHP 7.1及更高版本中的某些输入产生警告;替换-!=要修复。
在PHP 7.2中产生另一个警告;把abcdef引号来解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.