Die Befugnisse, die in der Lage sein möchten, jede Zahl, die sie haben, schnell in ihre eigene Zahlenbasis umzuwandeln, und zwar in jedem gewünschten Format.
Eingang
Ihr Programm muss 3 Parameter akzeptieren.
- Number: Die zu konvertierende Zeichenfolgennummer
- InputFormat: Die Basiszeichenfolge, in der sich die Nummer derzeit befindet
- OutputFormat: Die Basiszeichenfolge, in die die Zahl konvertiert werden soll.
Ausgabe
Ihr Programm muss Number
die alte InputFormat
in die neue Nummernbasis konvertierenOutputFormat
Beispiele
("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"
Zusätzlich
Der neue Base 77-Test ist keine Requisite, wenn er funktioniert
- Wenn Sie in einer Sprache sind, in der Sie zuerst in eine Zahl konvertieren müssen und die innerhalb von 32 Bit gesperrt ist, können Sie sie überspringen.
- da es ein zusätzlicher test ist.
Alle Beispiele wurden von PHP 7.2 mit der Erweiterung bcmath unter Verwendung des folgenden Codes generiert (vars mins, aber code formatiert). Es wird wahrscheinlich einen kürzeren Weg geben. Dies ist genau der Weg, den ich für das System gefunden habe, mit dem ich dies tun musste. Es wäre schön zu sehen, ob jemand eine kürzere Version finden könnte.
PHP 7.2 (Bcmath - Erweiterung) 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;
}
Wertung
Das ist Code Golf; kürzester Code gewinnt. Es gelten Standardlücken.
["zX", "tXdsyqzSDRP02", "brFNC02bc"] => "cb"
. (oder was auch immer das eigentlich sein sollte, wenn das nicht stimmt)