Các quyền hạn muốn có thể nhanh chóng chuyển đổi bất kỳ số nào họ có thành cơ sở số riêng của họ bằng bất kỳ định dạng nào họ muốn.
Đầu vào
Chương trình của bạn phải chấp nhận 3 tham số.
- Số: Số chuỗi cần chuyển đổi
- InputFormat: chuỗi cơ sở số hiện đang ở
- OutputFormat: chuỗi cơ sở mà số sẽ được chuyển đổi thành.
Đầu ra
Chương trình của bạn phải chuyển đổi Number
từ cơ sở số cũ InputFormat
sang cơ sở số mớiOutputFormat
Ví dụ
("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"
Bổ sung
Thử nghiệm cơ sở 77 mới không bắt buộc phải có đạo cụ nếu nó hoạt động
- nếu ngôn ngữ của bạn là nơi bạn phải chuyển đổi thành số trước và bị khóa trong 32Bit, bạn có thể bỏ qua ngôn ngữ đó.
- vì nó là một bài kiểm tra bổ sung.
Tất cả các ví dụ được tạo bởi PHP 7.2 với phần mở rộng bcmath bằng cách sử dụng đoạn mã sau (vars phút nhưng mã được định dạng). có lẽ sẽ có một cách ngắn hơn, đây chỉ là cách tôi nghĩ ra cho hệ thống mà tôi cần để làm điều này với nó sẽ rất tuyệt để xem liệu có ai có thể đưa ra một phiên bản ngắn hơn hay không.
PHP 7.2 (bcmath - phần mở rộng) 614 byte
<?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;
}
Chấm điểm
Đây là mã golf; mã ngắn nhất thắng. Tiêu chuẩn áp dụng.
["zX", "tXdsyqzSDRP02", "brFNC02bc"] => "cb"
. (hoặc bất cứ điều gì thực sự nên, nếu điều đó không chính xác)