দশমিক এবং 2 ** আই বেসগুলিতে সংখ্যার একটি সারণী মুদ্রণ করুন


9

কম্পিউটার বাইনারি দ্বারা বাস। সমস্ত প্রোগ্রামার বাইনারি জানেন।

তবে 2**xঘাঁটিগুলি প্রায়শই অ-ব্যবহারিক হিসাবে অবহেলা করা হয়, তবে বাইনারিগুলির সাথে তাদের সুন্দর সম্পর্ক রয়েছে।

আপনাকে এ জাতীয় সুন্দর সম্পর্কের একটি উদাহরণ দেখাতে 19 আমার প্রশংসাপত্র হবে।

19 10011 103 23 13 j
  • 19 দশমিক, স্পষ্টতার জন্য অন্তর্ভুক্ত।

  • 10011 বাইনারি 19 হয়।

  • 103, বেস 4 এ বাইনারি থেকে এইভাবে তৈরি করা হয়:

    • লগ 2 (4) == 2, আসুন দুটি স্মরণ করি।
    • প্যাড 10011 যাতে এটির দৈর্ঘ্যের একাধিক -> 010011 থাকে
    • বাম থেকে ডানে 2 বাই 2 সংখ্যাগুলি নিন এবং তাদের 2-সংখ্যার বাইনারি সংখ্যা হিসাবে গণ্য করুন:

      • 01 -> 1
      • 00 -> 0
      • 11 -> 3

    সম্পন্ন , বেস -4 এ 10011 103।

বেস 8 এর জন্য, লগ 2 (8) = 3 হিসাবে একই তবে 3-বাই -3 করুন।

  • প্যাড 010011
  • 010 -> 2
  • 011 -> 3

    23, সম্পন্ন

বেস 16 এর জন্য, লগ 2 (16) = 4 হিসাবে একই তবে 4-বাই -4 করুন।

  • প্যাড 00010011
  • 0001 -> 1
  • 0011 -> 3

    13, সম্পন্ন

কার্য

ইনপুট হিসাবে সর্বাধিক নম্বর দেওয়া, আপনি একটি টেবিল আউটপুট করা উচিত

base-ten-i base-two-i base-four-i base-eight-i base-sixteen-i base-thirtytwo-i

আমি যে 0 থেকে এন অন্তর্ভুক্ত। বাইনারি সংখ্যাগুলি কাজ করার জন্য নিখুঁত ন্যূনতমের প্রতিচ্ছবি, সুতরাং আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত।

সীমাবদ্ধতা এবং বোনাস

  • বেস-টেন -> বাইনারি এবং বাইনারি -> বেস-দশটি বিল্ট-ইনগুলি বেস-এ -> বেস-বি হিসাবে লুফোলস হিসাবে বিবেচিত হয়।

  • 2**iউল্লিখিত সম্পর্কগুলি ব্যবহার করে যদি আপনি সমস্ত (i> 2) বেস তৈরি করেন তবে আপনি *0.6বোনাস পান, তবে সাধারণ বেস রূপান্তরগুলি (নিজের লিখিত) অনুমোদিত।

উদাহরণ সারণী

> 32
0 0 0 0 0 0
1 1 1 1 1 1
2 10 2 2 2 2
3 11 3 3 3 3
4 100 10 4 4 4
5 101 11 5 5 5
6 110 12 6 6 6
7 111 13 7 7 7
8 1000 20 10 8 8
9 1001 21 11 9 9
10 1010 22 12 a a
11 1011 23 13 b b
12 1100 30 14 c c
13 1101 31 15 d d
14 1110 32 16 e e
15 1111 33 17 f f
16 10000 100 20 10 g
17 10001 101 21 11 h
18 10010 102 22 12 i
19 10011 103 23 13 j
20 10100 110 24 14 k
21 10101 111 25 15 l
22 10110 112 26 16 m
23 10111 113 27 17 n
24 11000 120 30 18 o
25 11001 121 31 19 p
26 11010 122 32 1a q
27 11011 123 33 1b r
28 11100 130 34 1c s
29 11101 131 35 1d t
30 11110 132 36 1e u
31 11111 133 37 1f v
32 100000 200 40 20 10

4
"আপনাকে অবশ্যই উপরোক্ত সম্পর্কগুলি ব্যবহার করে সমস্ত 2 ** আই (i> 2) বেসগুলি তৈরি করতে হবে" বলে স্বীকৃত। একটি নির্দিষ্ট অ্যালগরিদম প্রয়োজন কোড গল্ফ আকর্ষণীয় করে তোলে যা অনেকগুলি সরিয়ে দেয়। আপনি এখনও অ্যালগরিদমের পছন্দকে অনুমতি দেওয়ার সময় বিল্ট ইন বেস রূপান্তর ফাংশন নিষিদ্ধ করতে পারেন।
xnor

@xnor এখন আমার পদ্ধতিটি ব্যবহার করে গল্ফারদের আরও বেশি স্বাধীনতা দিতে কেবল একটি বোনাস দেয়
ক্যারিডর্ক

1
আমিও বোনাসের অনুরাগী নই। এর কার্যকরভাবে অর্থ হল আপনাকে একটি অন্তর্নির্মিত বা আপনার অ্যালগরিদম ব্যবহার করতে হবে এবং অন্য কোনও অ্যালগরিদম व्यवहार্য হতে পারে না।
xnor

@ এক্সনোর বিল্ট-ইনগুলি অনুমোদিত নয়। একটি সাধারণ রূপান্তরকর্তা সংক্ষিপ্ত হবে, সুতরাং আপনি যদি আমার
স্বীকৃত

উত্তর:


2

সিজেএম, 54 * 0.6 = 32.4 বাইট

q~){_5,f{)L@{2md@+\}h(%/Wf%W%{{\2*+}*_9>{'W+}&}%S\}N}/

এটি এখানে পরীক্ষা করুন।

রেফারেন্সের জন্য, এখানে একটি সংক্ষিপ্ত সমাধান যা বোনাসের জন্য যোগ্য নয় (39 বাইটে):

q~){:X5{SLX{2I)#md_9>{'W+}&@+\}h;}fIN}/

আমি চ্যালেঞ্জটি আপডেট করেছি, আপনি যদি আমার পদ্ধতিটি ব্যবহার করেন তবে আপনি 0.6 * বোনাস দাবি করতে পারেন
ক্যারিডরক


0

পিএইচপি, 232 230 233 217 * 0.6 = 130.2

গল্ফিং ভাষাগুলি মারার কোনও সুযোগ নেই, তবে আমি চ্যালেঞ্জটি পছন্দ করেছি।

for(;$d<=$n;$d++){echo'
',$d|0;for($k=$d,$b='';$k;$k>>=1)$b=($k&1).$b;for($w=1;$w<6;$w++,print" $z"|' 0')for($z='',$k=strlen($b);-$w<$k-=$w;$z=($e>9?chr($e+87):$e).$z)for($e=0,$y=1,$j=$w;$j--;$y*=2) $e+=$y*$b[$j+$k];}
  • ব্যবহার: (বা অন্য কোনও নেতিবাচক পূর্ণসংখ্যার) এর সাহায্যে $n=32;প্রতিস্থাপন বা প্রতিস্থাপন ; ক্লিয়ার মাধ্যমে কল করুন$n32
  • যদি তা গ্রহণ না করা $nহয় তবে $_GET[n](+ 6 / + 3.6) দিয়ে প্রতিস্থাপন করুন এবং ব্রাউজারে
    বা ক্লায়ারে কল করুনphp-cgi -f bases.php -n=32
  • লাইন <br>ব্রেকটি প্রতিস্থাপন করুন বা <pre>ব্রাউজারে পরীক্ষা করতে প্রিপেন্ড করুন
  • নতুন পিএইচপি সংস্করণগুলিতে অপরিজ্ঞাত ভেরিয়েবল এবং নিরবিচ্ছিন্ন স্ট্রিং অফসেটের জন্য বিজ্ঞপ্তি নিক্ষেপ করতে পারে।
    এগুলিকে error_reporting(0);দমন করতে E_NOTICE ত্রুটি_বিকৃতি (প্রিপেন্ড ) থেকে সরান ।
  • 5.6 এ পরীক্ষা করা হয়েছে

ভাঙ্গা:

for(;$d<=$n;$d++) // loop decimal $d from 0 to $n
{
    echo'
',$d|0; // print line break and decimal
    for($k=$d,$b='';$k;$k>>=1)$b=($k&1).$b; // convert $d to binary
    for($w=1;$w<6;$w++,
        print" $z"|' 0' // print number generated in inner loop (echo doesn´t work here)
    )
        for($z='',$k=strlen($b);-$w<$k-=$w; // loop from end by $w
            $z=($e>9?chr($e+87):$e).$z // prepend digit created in body
        )
            for($e=0,$y=1,$j=$w;$j--;$y*=2) $e+=$y*$b[$j+$k]; // convert chunk to 2**$w
}

প্রধান সম্পাদনা:

  • অভ্যন্তরীণ লুপটি পুনর্নির্মাণের জন্য কিছু সূচক যাদু ব্যবহার করেছে -> এখন পুরো স্ট্রিংয়ের পিছনে পিছনে কাজ করে (কোনও প্যাডিং হবে না, বাইনারিটি আর বিভক্ত হবে না বা বাইনারি অনুলিপি করা হবে না)
  • ধনুর্বন্ধনী দূর করতে লুপের দেহের অংশগুলি মাথায় সরিয়ে নিয়েছিল
  • যোগ করার জন্য ছিল 7 0 ফলাফল পুনর্গঠন পর 4 বাইট দশমিক ঠিক করতে

নন-বোনাস সংস্করণ, 142 বাইট

for(;$d<=$n;$d++,print'
',$d|0)for($w=1;$w<6;$w++,print" $z"|' 0')for($k=$d,$y=1,$z='';$k&&$y<<=$w;$k>>=$w)$z=(9<($e=$k%$y)?chr($e+87):$e).$z;

পিএইচপি পাইথনকে মারছে?
স্নিপেটকে একটি প্রোগ্রাম তৈরি করতে আমি 6 (3.6) বাইট যুক্ত করেও আইড এখনও পাইথনকে (223 * 0.6 = 133.8 বা 148 নন-বোনাস বনাম 158) পরাজিত করেছি। অ্যামেজিং।


আমি একটি ত্রুটি পেয়েছি 'অপরিবর্তিত ভেরিয়েবল: এন: 1' এবং আমি মনে করি যে আপনি forলুপের বহিরাগতের মধ্যে কীওয়ার্ডের পরে একটি স্থান সরিয়ে 1 বাইট সংরক্ষণ করতে পারবেন ।
ইয়াতসি

@ টুকুএক্সএক্স: ব্যবহার দেখুন: ni n স্নিপেটের আগে অবশ্যই সংজ্ঞায়িত করা উচিত। আমি যে বাইট পেয়েছি, কিন্তু ধন্যবাদ। এবং আরও একটি: "\n"-> শারীরিক লাইন বিরতি।
তিতাস

তবে প্রথম 0 টি মুদ্রণের জন্য আমাকে 3 বাইট যুক্ত করতে হয়েছিল (যেটি বা ভেরিয়েবলটি চালাতে 5 বাইট)।
টাইটাস

0

রুবি, ৮০ বাইট (নন-বোনাস সংস্করণ)

m=ARGV[0].to_i;(0..m).each{|n|puts [10,2,4,8,16,32].map{|b|n.to_s(b)}.join(' ')}

0

পাইথন 3 - 189, 167, 166 150 বাইট

for i in range(int(input())+1):f=lambda b,n=i,c="0123456789abcdefghijklmnopqrstuv":n<b and c[n]or f(b,n//b)+c[n%b];print(i,f(2),f(4),f(8),f(16),f(32))

@ LeakyNun এর সাহায্যে 16 বাইট সংরক্ষণ করা হয়েছে !

বোনাস সংস্করণ - 296 * 0.6 = 177.6 279 * 0.6 = 167.4 বাইট

p=lambda b,c:"".join(str(int(b[i:i+c],2))for i in range(0,len(b),c))
z=lambda s:len(s)%2 and s or "0"+s
for i in range(int(input())+1):f=lambda n,b,c="0123456789abcdefghijklmnopqrstuv":n<b and c[n]or f(n//b,b)+c[n%b];v=f(i,2);d=z(v);print(i,v,p(d,2),p(d,3),p(d,4),p(d,5),f(i,32))

বোনাস সংস্করণের সামান্য আরও পঠনযোগ্য সংস্করণ।

p=lambda b,c:"".join(str(int(b[i:i+c],2))for i in range(0,len(b),c))
z=lambda s:len(s)%2 and s or "0"+s
for i in range(int(input())+1):
    f=lambda n,b,c="0123456789abcdefghijklmnopqrstuv":n<b and c[n] or f(n//b,b) + c[n%b]
    v=f(i,2)
    d=z(v)
    print(i,v,p(d,2),p(d,3),p(d,4),p(d,5),f(i,32))

আমি বেশ নিশ্চিত যে বোনাস প্রযোজ্য নয়। আপনি বেস 2 ** x সংখ্যা তৈরি করতে বাইনারি ব্যবহার করছেন না।
টাইটাস

@ টিটাস ওহ, আমি তখন বোনাসটি ভুল বুঝতে পেরেছিলাম। আমি বাইট গণনা সম্পাদনা করব। ধন্যবাদ!
ইয়াতসি

খুব নিশ্চিত এর "0123456789abcdefghijklmnopqrstuv"চেয়ে খাটোfrom string import* digits+ascii_lowercase
লিকি নুন

নিবন্ধন করুন তুমি ঠিক বলছো. আমি কেবল এটি লিখতে কত সংক্ষিপ্ত তা ভেবেছিলাম digits+ascii_lowercase: ডি। ধন্যবাদ!
ইয়াতসি

150 বাইট: for i in range(int(input())+1):f=lambda n=i,b,c="0123456789abcdefghijklmnopqrstuv":n<b and c[n]or f(n//b,b)+c[n%b];print(i,f(2),f(4),f(8),f(16),f(32))(এক লাইন)
লিকি নুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.