希望能够使用所需的任何格式将其拥有的任何数字快速转换为自己的数字基础的能力。
输入值
您的程序必须接受3个参数。
- Number:要转换的字符串号
- InputFormat:数字当前所在的基本字符串
- OutputFormat:要将数字转换为的基本字符串。
输出量
您的程序必须将Number
旧的基数InputFormat
转换为新的基数OutputFormat
例子
("1","0123456789","9876543210") = "8"
("985724","9876543210","0123456789ABCDEF") = "37C3"
("FF","0123456789ABCDEF","0123456789") = "255"
("FF","0123456789ABCDEF","01234567") = "377"
("18457184548971248772157", "0123456789","Aa0Bb1Cc2Dd3Ee4Ff5Gg6Hh7Ii8Jj9Kk,Ll.Mm[Nn]Oo@Pp#Qq}Rr{Ss-Tt+Uu=Vv_Ww!Xx%Yy*Zz") = ",sekYFg_fdXb"
额外
如果可以,新的base 77测试不是必需的道具
- 如果您使用的语言必须先转换为数字并且被锁定在32Bit以内,则可以跳过它。
- 因为这是一项附加测试。
所有示例都是由PHP 7.2使用bcmath扩展名使用以下代码生成的(vars mins,但代码已格式化)。可能会有一个更短的方法,这只是我针对需要使用此系统的系统提出的方法,很高兴看看是否有人可以提出一个较短的版本。
PHP 7.2(bcmath-扩展名)614字节
<?php
function f($a, $b, $c)
{
$d= str_split($b,1);
$e= str_split($c,1);
$f= str_split($a,1);
$g=strlen($b);
$h=strlen($c);
$k=strlen($a);
$r='';
if ($c== '0123456789')
{
$r=0;
for ($i = 1;$i <= $k; $i++)
$retval = bcadd($retval, bcmul(array_search($f[$i-1], $d),bcpow($g,$k-$i)));
return $r;
}
if ($b!= '0123456789')
$l=f($a, $b, '0123456789');
else
$l= $a;
if ($l<strlen($c))
return $e[$l];
while($l!= '0')
{
$r= $e[bcmod($l,$h)].$r;
$l= bcdiv($l,$h,0);
}
return $r;
}
计分
这是代码高尔夫;最短的代码胜出。有标准漏洞。
["zX", "tXdsyqzSDRP02", "brFNC02bc"] => "cb"
。(或者,如果不正确的话,实际上应该是什么)