এক শত স্কয়ার!


10

প্রাথমিক স্তরে ফিরে আসা...

স্থানীয় প্রাথমিক (গ্রেড?) স্কুলে একজন শিক্ষক হিসাবে আপনার ক্লাসকে তাদের টাইম সারণী শেখানোর একটি উপায় প্রয়োজন। আপনার নিষ্পত্তি হিসাবে, আপনার কাছে একশ স্কোয়ার এবং লোড লাল কলম রয়েছে। আপনার ক্লাসে সঠিক উত্তরগুলি দ্রুত দেখাতে সক্ষম হওয়া দরকার।

এখন, আপনি এমন কোনও প্রোগ্রাম লিখতে যথেষ্ট চালাক যা টাইম সারণীগুলি করতে পারে তবে আপনি কি এগুলিকে একশ স্কয়ারে আঁকতে পারবেন?

চ্যালেঞ্জ

ইনপুটটির বহুগুণ এমন সংখ্যায় শেড করতে আনসিস-এস্কেপ কোড ব্যবহার করে একশত বর্গকে স্টডআউট বা সমমানের আউটপুট দিন ।

  • 1-100 নম্বরযুক্ত 10x10 গ্রিড আউটপুট করুন।
    • যতক্ষণ না এটি সংবেদনশীল ততক্ষণ প্রতিটি বাক্সে 2 ডিজিটের সংখ্যার প্রান্তিককরণের বিষয়টি বিবেচনা করে না
    • 1 ডিজিটের সংখ্যার জন্য, আপনি 2 টি সংখ্যায় প্যাড করতে পারেন এবং একই ফর্ম্যাটিংটি 2 ডিজিটের সংখ্যার মতো বা বাক্সের মাঝখানে কেন্দ্রীভূত করতে পারেন।
  • যদি বাক্সে নম্বরটি ইনপুটটির একাধিক হয় তবে পুরো বাক্সটি লাল রঙ করুন।
    • এর অর্থ পুরো সংখ্যাটি, কেবল সংখ্যা অংশ নয়

উদাহরণস্বরূপ, ইনপুট দেওয়া 3, প্রদত্ত শত বর্গ মুদ্রণ করুন

শত বর্গ 3

এটি কোড গল্ফ তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তরটি জেতে!


2
2, ইত্যাদি ইত্যাদির জন্য আমরা 1
টির

1
সুতরাং আমি <table>উদাহরণস্বরূপ ব্যবহার করতে পারি না ?
নিকেল

1
সংখ্যার রঙের বিষয়টি কী বিবেচনা করে? এটা হতে পারে whiteনাকি grey?
বাসড্রপ কম্বারবুবউবউব

1
@ কিটেইঞ্জ আমি এখনও সিদ্ধান্ত নিইনি - আমি হ্যাঁ @ এনিকায়েল নংয়ের দিকে ঝুঁকছি, এটি অ্যানসি-পলায়ন ব্যবহার করতে হবে বা উত্তরগুলি একই খেলার মাঠে থাকবে না, @ বাসড্রপকম্বারউবউবউব আপনি বিভিন্ন রঙ ব্যবহার করতে পারেন তবে আপনি যদি না থাকেন ' cursesএটি ব্যবহার করে পুনরায় ব্যবহার করা উচিত নয় - যাইহোক লাল রঙ ছোট।
নীল

@ কিটইঞ্জ হ্যাঁ আপনি প্যাডিং ব্যবহার করতে পারেন - তবে কেবল শূন্য এবং এক অঙ্কের সংখ্যার সাথে
ব্লু

উত্তর:


8

পাইথন 2, 166 বাইট

R=range;n=input()
for y in R(21):print''.join('♥[%dm%s♥[m'%(any(5>x-k%10*4>-1<y-k/10*2<3for k in R(n-1,100,n))*41,('+---|%2d '%(x/4+y*5-4))[y%2*4+x%4])for x in R(41))

অষ্টাল দ্বারা প্রতিস্থাপন 033(এএনএসআই পলায়ন চরিত্র)।

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

আমরা আউটপুটটিকে 41×21গ্রিড হিসাবে বিবেচনা করি এবং প্রতিটি বিন্দুতে অক্ষর এবং বর্ণকে সরাসরি গণনা করি।

অর্থাৎ কোডের কাঠামোটি হ'ল:

n = input()
for y in range(21):
    print ''.join(F(x, y) for x in range(41))

কিছু ফাংশন জন্য F

ফলাফল Fসর্বদা নিম্নলিখিত ফর্মের:

আমরা ফর্ম্যাট স্ট্রিংটি ব্যবহার করি '\33[%dm%s\33[m', যেখানে প্রথমটি %d0 বা 41 হয় এবং %sআমরা যে অক্ষরটি মুদ্রণ করতে চাই তা হয়।


জন্য রঙ , আমরা নিম্নলিখিত সূত্র আছে:

any(5>x-k%10*4>-1<y-k/10*2<3for k in R(n-1,100,n))*41

আমি এটি পুরোপুরি ব্যাখ্যা করতে যাচ্ছি না, তবে এটি মূলত সমস্ত আয়তক্ষেত্রগুলির উপরে লুপ করে যা লাল বর্ণযুক্ত হওয়া উচিত এবং সেগুলির কোনওটির (x, y)ভিতরে রয়েছে কিনা তা পরীক্ষা করে।

উল্লেখ্য অপারেটর chaining ব্যবহার: আমি rewrote -1<A<5 and -1<B<3মধ্যে 5>A>-1<B<3


জন্য চরিত্র , আমরা নিম্নলিখিত সূত্র আছে:

('+---|%2d '%(x/4+y*5-4))[y%2*4+x%4]

তাহলে y % 2 == 0তারপর জন্য x = 0, 1, …এই উত্পন্ন করবে+---+---+---…

তাহলে y % 2 == 1তারপর জন্য x = 0, 1, …এই উত্পন্ন করবে| p |p+1|p+2…


2
এই দিনগুলির মধ্যে একটি, এমন একটি চ্যালেঞ্জ হতে চলেছে যেখানে আপনাকে কোডে আসলে আক্ষরিক ব্যবহার করতে হবে
ফ্রাইআম দ্য এজিগম্যান

একটি ব্যাখ্যা দেখতে চাই।
শোনাকদে

@ শৈনাকদে আমি কিছু লিখেছি (তবে প্রক্রিয়াটিতে কিছু বাইট সংরক্ষণ করা হয়েছে, তাই এটি অনুসরণ করাও কিছুটা কঠিন হতে পারে… ^^)
লিন

1
@ লিন এই কোডটি ব্যাখ্যা করতে সময় এবং শক্তি দেওয়ার জন্য আপনাকে অনেক ধন্যবাদ। আমি এই ব্যাখ্যার জন্য খুব কৃতজ্ঞ। এটি আমাকে অনেক কিছু শিখতে সহায়তা করেছিল!
শোনাকদে

1
তোমাকে অসংখ্য ধন্যবাদ! :)
লিন

4

জুলিয়া, 219 182 169 167 বাইট

!n=(~j=j%n<1;k(v=j->"---",c=+,s="$c\e[m";l=~)=println([(l(j)?"\e[;;41m$c":s)v(j)for j=10i+(1:10)]...,s);i=0;k();for i=0:9 k(j->lpad(j,3),|);k(l=j->~j|~(j+10(i<9)))end)

এর মতো ব্যবহৃত: !7

Ungolfed:

function !(n::Integer)
     for j=(1:10)     #This loop generates the top of the box
       if (j%n==0)
         print("\e[;;41m+---") #"\e[;;41m" is the ANSI escape code
                               #for red background colour in Julia
       else
         print("+\e[m---")     #"\e[m" resets to original colours
       end
     end
     println("+\e[m")
     for i=0:9
       for j=10i+(1:10)  #This loop generates the rows with the numbers
         if (j%n==0)
           print("\e[;;41m|",lpad(j,3))
         else
           print("|\e[m",lpad(j,3))
         end
       end
       println("|\e[m")
       for j=10i+(1:10)  #This loop generates the other rows
         if (j%n==0)||((j+10)%n==0&&i<9)
           print("\e[;;41m+---")
         else
           print("+\e[m---")
         end
       end
       println("+\e[m")
     end
   end

নোট করুন যে এটি সর্বাধিক পঠনযোগ্যতার জন্য খুব অদম্য।


0

এইচটিএমএল + জাভাস্ক্রিপ্ট, 379

এইচটিএমএল:

<input id=a value=3><pre id=z>

javascript:

for(i=0,s=`\n|`,o='+';i++<109;x=i<10?` ${i} `:i-100?' '+i:i,s+=x+'|',o+=x='---+',i%10||(o+=s+'\n+',s=`\n|`));z.innerHTML=[...o+x].map((x,i)=>`<span id=i${i}>${x}</span>`).join``;f=m=>window['i'+m].style.background='red';for(j=k=+a.value;j<=100;j+=k){p=(j/10|0)*84+((m=j%10)?(m-1)*4:-48);'000102030442434445468485868788'.match(/../g).map(x=>f(+x+p))}

jsfiddle।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.