একটি পূর্ণসংখ্যাকে 2 এবং 62 এর মধ্যে একটি রেডিক্স প্রদত্ত একটি সংখ্যার উপস্থাপনায় রূপান্তর করতে সবচেয়ে সংক্ষিপ্ত ফাংশনটি লিখুন eg যেমন:
to_string(351837066319, 31) => "codegolf"
at 0:00, ডাঙ, নিখুঁত
একটি পূর্ণসংখ্যাকে 2 এবং 62 এর মধ্যে একটি রেডিক্স প্রদত্ত একটি সংখ্যার উপস্থাপনায় রূপান্তর করতে সবচেয়ে সংক্ষিপ্ত ফাংশনটি লিখুন eg যেমন:
to_string(351837066319, 31) => "codegolf"
at 0:00, ডাঙ, নিখুঁত
উত্তর:
[sb[58-]s_[lb~dZ39*+dB3<_9+rd0<xrP]dsxxk]sf
আমরা যদি ধরে নিই যে স্ট্যাকটিতে কেবলমাত্র দুটি যুক্তি রয়েছে We
[[58-]s_dSb~dZ39*+dB3<_9+SadLbr0<fLaPc]sf
স্বতন্ত্র প্রোগ্রাম হিসাবে, আমাদের কেবলমাত্র 37 টি অক্ষর প্রয়োজন:
?o[58-]s_[O~dZ39*+dB3<_9+rd0<xrP]dsxx
ব্যবহারের পরিবর্তে [39+]sz9<z, আমরা কেবল ব্যবহার করি Z39*+, যা একক সংখ্যার জন্য 39 এবং একটি দ্বি সংখ্যার জন্য 78 যুক্ত করবে। পরিবর্তে 113, আমরা ব্যবহার B3( ADএছাড়াও কাজ)।
f=proc{|n,b|(n<b ? "":f[n/b,b])+([*'0'..'9']+[*'a'..'z']+[*'A'..'Z'])[n%b]}
f=proc{|n,b|d=[*'0'..'9']+[*'a'..'z']+[*'A'..'Z'];s=d[n%b];s=d[n%b]+s while(n/=b)>0;s}
(উভয়ই ডগবার্টের 1.9 সমাধানের উপর ভিত্তি করে))
from string import *
d=digits+letters
def t(n,b):
s=''
while n>0:s=d[n%b]+s;n/=b
return s or '0'
সম্পাদনা : "বা '0'" খালি স্ট্রিংয়ের ক্ষেত্রে যোগ করা হয়েছে
[sr[lr~rd0<x]dsxxk[39+]sa[58-]sb[d9<ad78<b48+anz0<p]dspxIP]sf
হিসাবে চালান:
dc -e'[sr[lr~rd0<x]dsxxk[39+]sa[58-]sb[d9<ad78<b48+anz0<p]dspxIP]sf' -e'351837066319 31 lfx'
বা:
dc -f base.dc -e '351837066319 31 lfx'
ব্যাখ্যা: আমরা স্ট্যাকের নম্বর এবং বেস নিই। srনিবন্ধটি আর এ বেস সংরক্ষণ করে। রিকার্সিভ ফাংশন [lr~rd0<x]dsxxএকটি সংখ্যা বিশ্লিষ্ট হয়েছে TOSবেস তার সংখ্যা মধ্যে register r। প্রথম kঅঙ্কটি সর্বদা 0 থাকে, স্ট্যাক থেকে মুছে ফেলা হয় (যথাযথতা নির্ধারণ করুন, যা ডিফল্টরূপে 0 হয়, সুতরাং এটি কোনও নলের সমতুল্য)। তারপরে, পুনরাবৃত্ত ফাংশন [48+d57<ad122<banz0<p]dspxএএসসিআইআই-তে প্রতিটি অঙ্ককে আউটপুট দেয়, ফাংশন এ ( [39+]sa) এবং বি ( [58-]sb) এর সাহায্যে। IPএকটি নতুন লাইন আউটপুট। ফাংশনটি রেজিস্টারে সংরক্ষিত থাকে এবং এর মাধ্যমে fআবেদন করা যেতে পারে lfx।
বা 53 + 46 = 99 টি অক্ষর যদি আপনি নীচে বাম দিক দিয়ে আপনার প্রোগ্রামের অন্যান্য অংশগুলি রুট করতে চান।
11p01-\>:11g%\11g/:#v_$>:1+!#v_:45+`!#v_:75*`!#v_ v
^ < ^, $# +"0" < +"'" <-":"<
প্রথমে স্ট্যাকে রূপান্তর করার জন্য নম্বরটি রাখুন, তারপরে র্যাডিক্স এবং ডানদিকের উপরের বাম থেকে এই ফাংশনটি প্রবেশ করান। আপনার জন্য স্ট্রিং আউটপুট দেবে (যেহেতু বেফুঞ্জ স্ট্রিং ভেরিয়েবল সমর্থন করে না) এবং নীচে থেকে নীচে $চলে যাবে। (1,1)রেডিক্স স্টোরেজের জন্য কক্ষের প্রয়োজন ।
উদাহরণস্বরূপ 351837066319ইনপুট এবং চালানো উদাহরণস্বরূপ দেওয়া :
&56*1+ 11p01-\>:11g%\11g/:#v_$>:1+!#v_:45+`!#v_:75*`!#v_ v
^ < ^, $# +"0" < +"'" <-":"<
@
t = -> n, b {d = ? 0 ..? 9 ,? a ..? z, *? a ..? z; s = ''; (s = d [n% b] + s; n) / = খ) যখন এন> 0; s}
খালি স্ট্রিংয়ের জন্য '0' দিয়ে, 95 89 82 টি অক্ষর:
t=->n,b,s=''{d=*?0..?9,*?a..?z,*?A..?Z;(s=d[n%b]+s;n/=b)while n>0;s.empty?? ?0: s}
রুবি ১.৯ - দুর্ভাগ্যক্রমে কেবল ৩ base বেস পর্যন্ত কাজ করে:
t=->n,b{n.to_s(b)}
]+[এর সাথে প্রতিস্থাপন করতে পারেন ,।
f(){
dc<<<$2o$1p|perl -pe"y/A-Z/a-z/;s/ \d+/chr$&+($&<10?48:$&<36?87:29)/ge"
}
sysconf(_SC_BC_BASE_MAX)আমার সিস্টেমে 99 প্রদান করে, 16 সর্বনিম্ন প্রয়োজনীয়।
dcপরিবর্তে ব্যবহার করে বেস রূপান্তর কিছু সংরক্ষণ করতে পারেন bc।
from string import*
f=lambda n,b:n and f(n/b,b)+printable[n%b]or''
-Minteger -ap , 52 বাইটdo{$\=(0..9,a..z,A..Z)[$_%$F[1]].$\}while$_/=$F[1]}{
function f1(ni,nr){
let s1='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let s2='';
while(ni>0){
s2=s1[ni%nr]+s2;
ni=Math.floor(ni/nr);
}
return s2;
}
let) সরানো এবং সেই দীর্ঘ স্ট্রিং হ্রাস