Los poderes que desean poder convertir rápidamente cualquier número que tengan en su propia base de números usando cualquier formato que deseen.
Entrada
Su programa debe aceptar 3 parámetros.
- Número: el número de cadena que se convertirá
- InputFormat: la cadena base en la que se encuentra actualmente el número
- OutputFormat: la cadena base a la que se convertirá el número.
Salida
Su programa debe convertir la Number
base de números anterior InputFormat
a la nueva base de númerosOutputFormat
Ejemplos
("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"
Adicional
La nueva prueba de base 77 no requiere accesorios si funciona
- si está en un idioma donde primero tiene que convertir a un número y está bloqueado dentro de 32 bits, puede omitirlo.
- ya que es una prueba adicional.
Todos los ejemplos fueron generados por PHP 7.2 con la extensión bcmath usando el siguiente código (vars minutos pero con formato de código). probablemente habrá una forma más corta, esta es la forma en que se me ocurrió el sistema con el que necesitaba hacer esto, sería bueno ver si alguien podría llegar a una versión más corta.
PHP 7.2 (bcmath - extensión) 614 bytes
<?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;
}
Tanteo
Este es el código de golf; el código más corto gana. Se aplican lagunas estándar.
["zX", "tXdsyqzSDRP02", "brFNC02bc"] => "cb"
. (o lo que sea que debería ser, si eso es incorrecto)