พลังที่ต้องการแปลงตัวเลขใด ๆ ที่พวกเขามีให้เป็นฐานหมายเลขของตนเองอย่างรวดเร็วโดยใช้รูปแบบที่พวกเขาต้องการ
อินพุต
โปรแกรมของคุณต้องยอมรับ 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"
เพิ่มเติม
การทดสอบ 77 ฐานใหม่ไม่จำเป็นต้องใช้อุปกรณ์ประกอบฉากหากใช้งานได้
- หากในภาษาที่คุณต้องแปลงเป็นตัวเลขก่อนและถูกล็อคภายใน 32 บิตคุณสามารถข้ามได้
- มันเป็นการทดสอบเพิ่มเติม
ตัวอย่างทั้งหมดถูกสร้างขึ้นโดย 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"
เช่น (หรืออะไรก็ตามที่ควรจะเป็นถ้าไม่ถูกต้อง)