16-বিট বাইনারি গ্রিড


29

যে কোনও স্বাক্ষরযুক্ত 16 বিট পূর্ণসংখ্যা দেওয়া হয়েছে, তার দশমিক ফর্মটি (যেমন, বেস -10) নম্বরটিকে তার বিটের 4x4 ASCII গ্রিডে রূপান্তর করুন , উপরের বামে সর্বাধিক-উল্লেখযোগ্য বিট (এমএসবি), কমপক্ষে-তাত্পর্যপূর্ণ বিট (এলএসবি) এর সাথে নীচে ডানদিকে, পড়ুন এবং তারপরে নীচে (ইংরেজি পাঠ্যের মতো)।

উদাহরণ

ইনপুট: 4242

+---+---+---+---+
|   |   |   | # |
+---+---+---+---+
|   |   |   |   |
+---+---+---+---+
| # |   |   | # |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+

ইনপুট: 33825

+---+---+---+---+
| # |   |   |   |
+---+---+---+---+
|   | # |   |   |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+

সুনির্দিষ্ট চাহিদাবলী

  1. ইনপুট অবশ্যই দশমিক (বেস -10) এ থাকা উচিত, তবে আপনি যে কোনও উপায়ে বাইনারি রূপান্তর করতে পারেন (ভাষা বিল্ট-ইনগুলি সহ, যদি উপলভ্য থাকে তবে)।

  2. আউটপুট টেবিল বিন্যাস মেলানো ঠিক । এর অর্থ হল আপনি নির্দিষ্ট ASCII অক্ষর (ব্যবহার করা আবশ্যক -, +এবং |দেখানো হয়েছে টেবিল গ্রিড লাইন জন্য), প্রতিটি কোষের অভ্যন্তর 3 টি অক্ষর, এবং সত্য বিট দ্বারা প্রতিনিধিত্ব করা হয় #যখন মিথ্যা একটি স্থান দ্বারা প্রতিনিধিত্ব করা হয় ( )।

  3. শীর্ষস্থানীয় বা পূর্ববর্তী সাদা অংশের অনুমতি নেই। চূড়ান্ত নিউলাইন প্রয়োজন

  4. বিট অর্ডার বর্ণিত উদাহরণগুলির সাথে অবশ্যই মিলবে।

তৃপ্তি

  1. কমান্ড লাইন, স্ট্যান্ডার্ড ইনপুট, বা ব্যবহারকারী ইনপুটটিতে ইনপুট অবশ্যই বেস -10 নম্বর হতে হবে তবে তা অবশ্যই হবে না হতে আপনার উত্স কোডটিতে হার্ড কোডিং করা ।

মে স্পষ্ট সবচেয়ে কম কোড জয়! :-)



2
প্রথম বাক্যটি আমার কাছে বিভ্রান্ত মনে হচ্ছে, যেখানে এটি "এর দশমিক রূপকে রূপান্তর করুন " বলে। পোস্টের বাকী উদাহরণ এবং উদাহরণের ভিত্তিতে, দেখে মনে হচ্ছে ইনপুট দশমিক আকারে দেওয়া হয়েছে, তবে আপনাকে মানটির বাইনারি ফর্মটি গ্রিডে রূপান্তর করতে হবে ।
রেটো কোরাডি

1
@ রিটোকোরাদি আপনি মূলত সঠিক, তবে প্রশ্নের জন্য আপনাকে দশমিক সংখ্যাটিকে বাইনারি গ্রিডে রূপান্তর করতে হবে । বাইনারি নম্বর নিয়ে কখনও কাজ করার কোনও সুস্পষ্ট প্রয়োজন নেই , কেবলমাত্র সম্ভাব্য প্রয়োগের বিশদ।
টাইপ_আউটকাস্ট

ফাংশন আর্গুমেন্ট হিসাবে বেস -10 নম্বর দিয়ে কোনও ফাংশন লিখতে কি ব্যবহারকারী ইনপুট হিসাবে গণনা করা হয়?
অ্যালেক্স এ

2
যেহেতু আপনি বলছেন যে প্রদত্ত নম্বরটি "স্বাক্ষরবিহীন 16 বিট পূর্ণসংখ্যা", তাই এটি বাইনারি আকারে সংজ্ঞা দ্বারা। আমি যখন এটি প্রথম পড়ি তখন আসলে এটির মতো মনে হয়েছিল ইনপুটটি বাইনারি আকারে দেওয়া হবে। এটি সব শেষের দিকে পরিষ্কার হয়ে যায়। তবে কমপক্ষে আমার জন্য, প্রথম অনুচ্ছেদটি আসলেই সমস্যাটি ক্যাপচার করে না।
রেটো কোরাডি

উত্তর:


21

জে, 26 বাইট

('   ';' # '){~4 4$_16{.#:

একটি বেনাম ক্রিয়া ধন্যবাদ, জে অঙ্কন বাক্সে খুব ভাল। আসুন এটি ব্যবহার করে দেখুন:

   f =. ('   ';' # '){~4 4$_16{.#:
   f 4242
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+
|   |   |   |   |
+---+---+---+---+
| # |   |   | # |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+

কিছু মন্তব্যকারী উল্লেখ করেছেন যে, জে যেভাবে বক্সগুলি আঁকেন তা সিস্টেম-নির্ভর: কিছু প্ল্যাটফর্মে, এই কোডটি ডিফল্ট সেটিংসের অধীনে কাজ করবে, তবে অন্যদের উপর, ইউনিকোড লাইন অঙ্কনের অক্ষরগুলি ব্যবহার করে বাক্সগুলি আঁকানো হবে। (কমান্ডগুলি 9!:6এবং9!:7 আপনাকে যথাক্রমে বাক্সের মানগুলি আঁকার জন্য অক্ষরগুলি জিজ্ঞাসা করতে এবং সেট করতে দেয়।)


আপনি (বা অন্য কেউ) জানেন যে গল্ফ স্কোরিংয়ের জন্য বক্স অঙ্কন কমান্ডে sensক্যমত্য আছে কিনা? আমি ব্যক্তিগতভাবে মনে করি কোড গল্ফের সাথে অনুমানটি হ'ল যে সমাধানগুলি বেশিরভাগ সিস্টেমে কাজ করে যা সমাধানের ভাষা চলে, তাই না? এর মতো সমাধানটি কী দেখতে পাবে যে সমস্ত (বা প্রায় সবগুলি) জে স্থাপনাগুলিতে সঠিক বক্সগুলি আউটপুট করে? আমি আসলেই আপনার সমাধানটি পছন্দ করি ! আমার মস্তিষ্ক এখনও তার পথে কাজ করছে যা কোড গল্ফ সম্পর্কে ঠিক আমার পছন্দ।
টাইপ_আউটকাস্ট

5
@type_outcast আমাদের কোড গল্ফ চ্যালেঞ্জগুলির জন্য বহনযোগ্যতার প্রয়োজন নেই। যতক্ষণ না এটি একটি প্ল্যাটফর্মে কিছু প্রয়োগের সাথে কাজ করে ততক্ষণ এটি বৈধ।
ডেনিস

@ ডেনিস প্রতিক্রিয়া জন্য ধন্যবাদ। আমি খুশি যে আমার অনুমানটি ভুল ছিল, তবে, কারণ আমি (এখনও) সত্যিই মরিসের সমাধান পছন্দ করি! :-)
টাইপ_আউটকাস্ট

14

জাভাস্ক্রিপ্ট (ES6), 102

... বা 96 এর returnপরিবর্তে ব্যবহার করা console.log

নীচে স্নিপেট চলমান পরীক্ষা করুন একমাস্ক্রিপ্ট l অনুবর্তী ব্রাউজারে।

f=n=>{for(o=h=`
+---+---+---+---+
`,z=16;z--;n/=2)o=(z&3?'':h+'|')+` ${' #'[n&1]} |`+o;console.log(o)}

// TEST
console.log=x=>O.innerHTML=x+O.innerHTML

function test(n) { f(n); console.log(n); }
<input id=I value=4680><button onclick='test(+I.value)'>-></button>
<pre id=O></pre>


6
Is "JavaScripy" কিছু অদ্ভুত জাভাস্ক্রিপ্ট / পাইথন ম্যাশআপ? ;-)
ডিজিটাল ট্রমা

6
@ ডিজিটাল ট্রুমা অবশ্যই কিন্তু এই নতুন বিবর্তনের জন্য বিশ্ব প্রস্তুত না হওয়ায় ( tvtropes.org/pmwiki/pmwiki.php/Main/TheWorldIsNotReady ) আমি জাভাস্ক্রিপ্টে ফিরে যাব
edc65

শীতল, এড এ কাজ করে!
আর্টুরো টরেস সানচেজ

অবশ্যই ... ক্লিক করুন ... টিভিট্রপস ...
আরকে

14

বেফুঞ্জ -93, 196 218 বাইট

&00p12*v>>4>"---+",v v <
v*:*:*:<   | :-1,,,< #
>:*2/10p^  >"+",25*,10g|
     > #v^#         $< @
 25*,^  >4" |",,v ,*<>
v>"#",00g10g-00p 10g
 |`-1g01g00     <>48^
v>" ",10g
>2/10p>"| ",,1-:#^_$>^

প্রোগ্রামটি চালাতে ...

  1. অনলাইন দোভাষীর কাছে যান
  2. বড় পাঠ্য বাক্সে এই কোডটি আটকান।
  3. ক্লিক করুন Show
  4. Inputবাক্সে কাঙ্ক্ষিত নম্বরটি ইনপুট করুন ।
  5. ক্লিক করুন Run। (বা Slow5 মিলিসেকেন্ডের মতো কিছুতে পরিবর্তন করুন এবং তারপরে ক্লিক করুন Show))
  6. Ta-দা!

4242 এর জন্য আউটপুট:

+---+---+---+---+
|   |   |   | # |
+---+---+---+---+
|   |   |   |   |
+---+---+---+---+
| # |   |   | # |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+

33825 এর জন্য আউটপুট:

+---+---+---+---+
| # |   |   |   |
+---+---+---+---+
|   | # |   |   |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+

ব্যাখ্যা

ওহ সদা, আমি নিজেকে কী করে ?ুকিয়েছি? ভাল, এখানে যায়! (অপ্রাসঙ্গিক কোড .গুলি এর সাথে প্রতিস্থাপিত হয়েছে ))

পর্ব 1: ইনপুট পান (0,0 এ সঞ্চয় করুন) এবং 32768 গণনা করুন (1,0 এ সঞ্চয় করুন)।

&00p12*v>
v*:*:*:< 
>:*2/10p^

পার্ট 2: "+ --- + --- + --- + ---" মুদ্রণ করুন।

>4>"---+",v
  | :-1,,,<

পার্ট 3: "+" এবং একটি নতুন লাইন মুদ্রণ করুন এবং (1,0) 0 হয় (যেমন আমরা সম্পন্ন করেছি) তা পরীক্ষা করে দেখুন। যদি তাই হয় তবে শেষ করুন। অন্যথায়, চালিয়ে যান।

 ........... v <
   | ....... # 
   >"+",25*,10g|
v.#         $< @
>4" |",,v ...

অংশ 4: ইনপুট বাইনারি অঙ্কগুলি পান, আপডেট করার সাথে সাথে (0,0) এবং (1,0) আমাদের সাথে যেতে হবে। সঠিক জিনিস মুদ্রণ করুন। আমি বেফুঞ্জের মোড়কের চারপাশের আচরণের সুযোগ নিই।

 .....  >4" |",,v ,*<.
v>"#",00g10g-00p 10g
 |`-1g01g00     <>48^
v>" ",10g
>2/10p>"| ",,1-:#^_...

পর্ব 5: একটি নতুন লাইন মুদ্রণ করুন এবং সেই অংশে ফিরে যান যা "+ --- + --- + --- + --- +" মুদ্রণ করে। মোড়ানো-চারপাশের কৌশল ব্যবহার করা হয়।

     > #.^.         .. .
 25*,^  ......... ...>
................ ...
 .........      .....
........
.................._$>^

Ta-দা!


10

জুলিয়া, 156 143 বাইট

n->(p=println;l="+"*"---+"^4;for i=1:4 p(l,"\n| ",join([j>"0"?"#":" "for j=reshape(split(lpad(bin(n),16,0),""),4,4)[:,i]]," | ")," |")end;p(l))

Ungolfed:

function f(n::Int)
    # Convert the input to binary, padded to 16 digits
    b = lpad(bin(n), 16, 0)

    # Split b into a 4x4 matrix
    m = reshape(split(b, ""), 4, 4)

    # Store the line separator for brevity
    l = "+" * "---+"^4

    # Print each column of the matrix as a row
    for i = 1:4
        println(l, "\n| ", join([j > "0" ? "#" : " " for j = m[:,i]], " | "), " |")
    end

    # Print the bottom of the table
    println(l)
end

এটি অনলাইনে চেষ্টা করুন


10

পাইথন 2, 157 153 151 146 বাইট

J=''.join;R='+---'*4;i=format(input(),'016b')
print J(R+'+\n|'+J(' '+('#'if int(l)else' ')+' |'for l in i[n*4:-~n*4])+'\n'for n in range(4)),R+'+'

4 বাইট বাঁচানোর জন্য মরগান থ্র্যাপ এবং 5 টি সাশ্রয়ের জন্য জোনাথন ফ্রেঞ্চকে ধন্যবাদ।

ব্যবহার

$ python test.py
33825
+---+---+---+---+
| # |   |   |   |
+---+---+---+---+
|   | # |   |   |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+

আপনি যদি '+---'*4ভেরিয়েবলের দিকে j=''.join
টানেন

সমস্যা নেই! আমি আসলে খুব অনুরূপ সমাধানে কাজ করছিলাম।
মরগান থ্র্যাপ

@ ডাউনভোটার কেয়ার ব্যাখ্যা করার জন্য?
জ্যাচ গেটস 21

যেহেতু আপনি পাইথন 3 ব্যবহার করবেন না, আপনি প্রতিস্থাপন করতে পারেন int(input())সঙ্গে input()এবং পাঁচ বাইট সংরক্ষণ করুন।
জোনাথন ফ্রেচ

9

রুবি, 118 114

b="%016b"%gets
l=?++"---+"*4
1.upto(16){|i|puts l if i%4==1
print"| #{b[i-1]==?0?' ':?#} "
puts ?|if i%4<1}
puts l

কিছু অক্ষর সংরক্ষণ করার জন্য @ w0lf এর জন্য ধন্যবাদ


1
আপনি ?স্বরলিপিটি ব্যবহার করে আক্ষরিক অক্ষর লিখলে আপনি কিছু বাইট সংরক্ষণ করতে পারেন ( উদাহরণস্বরূপ : ?|পরিবর্তে '|')। এটি স্থান ব্যতীত সমস্ত কিছুর জন্য কাজ করে।
ক্রিশ্চিয়ান লুপাস্কু

@ w0lf আমি খুঁজে পেয়েছি যে ?\sস্থানের জন্য কাজ করে, তবে এটি এখানে বাস্তবে সহায়ক নয়।
এমএমএইচএম

7

জিএনইউ সেড + ডিসি, 116

স্কোরটিতে -rপতাকাগুলির জন্য +1 অন্তর্ভুক্ত রয়েছে sed:

s/.*/dc -e2o&p/e
:
s/^.{,15}$/0&/;t
s/./| & /g
s/.{16}/\n+---+---+---+---+\n&|/g
y/01/ #/
s/\n([-+]+)(.*)/\1\2\n\1/

পরীক্ষার আউটপুট:

$ { echo 4242 ; echo 33825 ; } | sed -rf 16bitgrid.sed
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+
|   |   |   |   |
+---+---+---+---+
| # |   |   | # |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+
+---+---+---+---+
| # |   |   |   |
+---+---+---+---+
|   | # |   |   |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+
$ 

বিকল্পভাবে:

খাঁটি সেড, 146

আপনি হয়ত ভাবেন যে sedকোনও dcকমান্ড প্রকাশের জন্য এটির জিএনইউ এক্সটেনশন ব্যবহার করা প্রতারণা করছে । সেক্ষেত্রে আমরা এই মেটা-উত্তর অনুসারে কিছুটা আলাদাভাবে এটি করতে পারি । অবশ্যই প্রশ্নটি পরিষ্কারভাবে জানিয়েছে যে ইনপুটটি অবশ্যই বেস 10 এ থাকা উচিত , তবে আমি এখানে দাবি করার চেষ্টা করছি যে আমরা sedউত্তরগুলির জন্য সেটি ওভাররাইড করতে পারি এবং পরিবর্তে আনারি (বেস 1) ব্যবহার করতে পারি।

:
s/11/</g
s/<([ #]*)$/< \1/
s/1/#/
y/</1/
t
:a
s/^.{,15}$/0&/;ta
s/./| & /g
s/.{16}/\n+---+---+---+---+\n&|/g
y/01/ #/
s/\n([-+]+)(.*)/\1\2\n\1/

টেস্ট আউটপুট

printfপ্রয়োজনীয় আনরি স্ট্রিং উত্পন্ন করতে ব্যবহার :

$ printf "%33825s" | tr ' ' 1 | sed -rf 16bitgrid.sed 
+---+---+---+---+
| # |   |   |   |
+---+---+---+---+
|   | # |   |   |
+---+---+---+---+
|   |   | # |   |
+---+---+---+---+
|   |   |   | # |
+---+---+---+---+
$ 

সুন্দর. এটি পার্ল সমাধানের সাথে কিছুটা মিল বলে মনে হচ্ছে প্রশ্নটি সূক্ষ্ম-টিউন করার সময় আমি ধারণার (প্রাইভেট) প্রমাণ হিসাবে এসেছি।
টাইপ_আউটকাস্ট

@ টাইপ_আউটকাস্ট বিটিডাব্লু উত্তর হিসাবে নিজের সমাধান পোস্ট করা একেবারে ঠিক আছে :)
ডিজিটাল ট্রমা

আমি জানি :-) আমি এটি গল্ফ করতে খুব বেশি সময় ব্যয় করিনি, কারণ আমি একটি ভাল প্রশ্ন উত্থাপনের বিষয়ে বেশি মনোযোগী ছিলাম, তবে আমি এখনও এটিটি আবার ঘুরে দেখতে পারি এবং যদি আমি কমপক্ষে অর্ধেকটা সম্মানজনক কোনও কিছুতে গল্ফ করতে পারি তবে এটি পোস্ট করতে পারি। এই মুহুর্তে আমি প্রত্যেকের উত্তর ক্র্যাক করাতে খুব মজা করছি।
টাইপ_আউটকাস্ট 21

6

সি ++ 11, 193 191 190 176 172 বাইট

কোডগল্ফে আমার প্রথম সমাধান, তাই আমাকে দোষ দিবেন না।

#include<iostream>
int n,j,i=65536;int main(){std::cin>>n;for(;j<9;){for(int k:{0,0,0,0})if(j%2)printf("| %s",n&(i/=2)?"# ":"  ");else printf("+---");puts(j++%2?"|":"+");}}

Ungolfed

#include <iostream>
int n, i = 65536, j;

int main()
{
    std::cin >> n;

    for (; j < 9;)
    {
        for(int k:{0,0,0,0})
        {
            if (j % 2)
            {
                printf("| %s", n & (i /= 2) ? "# " : "  ");
            }
            else
            {
                printf("+---");
            }
        }
        puts(j++ % 2 ? "|" : "+");
    }
}

পূর্ববর্তী সংস্করণ

#include <iostream>
using namespace std;

int n, i = 65536, j;
int main()
{
    cin >> n;

    for (; j < 9;)
    {
        for(int k:{0,0,0,0})
        {
            if (j % 2)
            {
                cout << "| " << (n & (i /= 2) ? "# " : "  ");
            }
            else
            {
                cout << "+---";
            }
        }
        cout << (j++ % 2 ? "|\n" : "+\n");
    }
}

ইঙ্গিত: 0x10000 65536, '0x' উপসর্গ রয়েছে, হেক্স সর্বদা দশমিকের চেয়ে দীর্ঘ হয়
edc65

ইঙ্গিত 2: আপনার using namespace stdপ্রডাকশন কোড এড়ানো উচিত । এবং এটি এখানেও দরকারী নয়।
edc65

@ edc65 ডিসি-> হেক্স ভাল ধারণা, আমি সবসময়ই হেক্সের সংক্ষিপ্ত উপস্থাপনা থাকার কথা ভেবেছিলাম তবে ভুলে যাব 0xusing namespace stdকয়েক বাইট সংরক্ষণ করে, কারণ আমি উপসর্গ হবে না coutএবং cinসঙ্গে std::। এমনকি সবেমাত্র using std::cout;অভ্যাস সাহায্য ব্যবহার করে ।
জেরেজেস

আরে জেরেগেস আপনি অন্তর্ভুক্ত এবং লাইব্রেরির মধ্যবর্তী স্থানটি মুছে ফেলতে পারেন .. এবং মূল ফাংশনের জন্য রিটার্নের ধরণটি সরাতে পারেন।
wendelbsilva

C++অটো ইনটকে সমর্থন করে না।
জেরেজস

6

পাইথ, 37 বাইট

Jj*3\-*5\+JVc4_m@" #".>Qd16jd.i*5\|NJ

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

ব্যাখ্যা:

Jj*3\-*5\+J
  *3\-                       the string "---"
      *5\+                   the string "+++++"
 j                           join second by first string: 
                                "+---+---+---+---+"
J                            save in J
          J                  print J

Vc4_m@" #".>Qd16jd.i*5\|NJ
    m         16             map each d in [0, 1, ..., 15] to:
          .>Qd                 input number Q shifted to the right by d
     @" #"                     and take the ^th char in " #" (modulo 2)
   _                         reverse this list of chars
 c4                          split into 4 groups
V                            for each group N in ^:
                    *5\|       the string "|||||"
                  .i    N      interleave ^ with N
                jd             join chars with spaces and print
                         J     print J

5

সিজেম, 43 41 বাইট

'+5*'-3**N+ri2bG0e[4/{" #"f='|5*.\S*N2$}/

অবশ্যই গল্ফযোগ্য, তবে এটি আমার অনুমানের একটি সূচনা। উপরের সারিটি তৈরি করে, তারপরে প্রতিটি 4 টি বিটের জন্য এটি একটি এমনকি সারি তৈরি করে এবং পূর্ববর্তী বিজোড় সারিটি অনুলিপি করে।

এটি অনলাইনে চেষ্টা করুন


4

পাইথন 2, 122 121 120 বাইট

n=bin(4**8+input())[3:]
i=0
exec"print'| %s |'%' | '.join(' #'[x>'0']for x in n[:4])*i or'+---'*4+'+';n=n[4*i:];i^=1;"*9

-1 বাইট @ xnor এর ঝরঝরে 4**8+কৌতুক ধন্যবাদ । মূল মুদ্রণটি 9 বার লুপ করে, বিজোড় / এমনকি জন্য উপযুক্ত সারিটি নির্বাচন করে করা হয়।


আমি মনে করি যে bin(4**8+input())[3:]একটি বাইট ওভার সংরক্ষণ করেformat
xnor

@ এক্সনর ওহ, এটি ঝরঝরে :)
এসপি 3000

4

পাইথন 2, 94

n=input()
s=();exec"s=(' #'[n%2],)+s;n/=2;"*16
a='+---'*4+'+\n'
print(a+'| %s '*4+'|\n')*4%s+a

ধারণাটি প্যাটার্নটি নিতে হবে

+---+---+---+---+
| _ | _ | _ | _ |
+---+---+---+---+
| _ | _ | _ | _ |
+---+---+---+---+
| _ | _ | _ | _ |
+---+---+---+---+
| _ | _ | _ | _ |
+---+---+---+---+

সাধারণ আলোচনা ছাড়া %sঐ খালি জায়গায় এবং tuple প্রতিকল্পন সঞ্চালন। টিপল মত দেখাচ্ছে

('#', ' ', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#')

এটি বাইনারি ইনপুট থেকে অঙ্কগুলি সরিয়ে এবং টিপলটির সামনের দিকে সম্পর্কিত প্রতীক যুক্ত করে তৈরি করা হয়। সুস্পষ্ট টিপল সহ একটি অভিব্যক্তি সমান দৈর্ঘ্য দিয়েছে।

%tuple(' #'[c>'0']for c in bin(input()+4**8)[3:])

2 বাইটের জন্য Sp3000 ধন্যবাদ।


4

পাওয়ারশেল, 203 188 182 বাইট

param($a)$l="+---+---+---+---+";$l;$b=([int64][convert]::ToString($a,2)).ToString(@(,"0"*16)-join'');@(1..16|%{if($b[$_-1]-eq'1'){"| # "}else{"|   "};if($_%4-eq0){"|`n$l`n"}})-join''

সম্পাদনা করুন - |আঁকা ক্রমটি পরিবর্তন করে 15 বাইট সংরক্ষণ করা হয়েছে , সুতরাং আমরা .TrimEnd("|")আউটপুটটিতে ডাম্প করতে পারি এবং পরিবর্তে ফর-লুপটিকে একটি সাবকোড ব্লকে রূপান্তর করতে পারি যা অ্যারে তৈরি করে

সম্পাদনা 2 - $oভেরিয়েবলের সংরক্ষণের প্রয়োজন এবং কেবল আউটপুট দিয়ে সংরক্ষণ করে আরও 6 বাইট সংরক্ষণ করেছে-join'' সরাসরি সরাসরি ।

Ooooooooof।

পাওয়ারশেলে আঁকানো শক্ত । PowerShell মধ্যে বাইনারি ডিজিট সঙ্গে কাজ করছে কঠিন

[convert]বাইনারিটিতে স্ট্রিং উপস্থাপনায় ইনপুট পূর্ণসংখ্যার বিল্ট-ইনগুলি ব্যবহার করে , তারপরে আবার কাস্ট করুন [int64]যাতে আমরা .ToString()যথাযথ সংখ্যাটি শূন্যে প্রিপেন্ড / প্যাড করতে পুনরায় কল করতে পারি । (নোট করুন যে স্ট্রিংগুলির একটি অ্যারে তৈরি করা এবং সেগুলিতে যোগদান করা @(,"0"*16)-join''আক্ষরিক স্ট্রিংয়ের চেয়ে 1 অক্ষর কম "0000000000000000")

তারপরে, 1..16|%{...}আমাদের আউটপুট অ্যারে তৈরি করতে প্রতিটি অঙ্কের জন্য সাধারণ লুপ লুপ নিন এবং তারপরে শেষ পর্যন্ত -join''একসাথে ফিরে আসুন।


পূর্ববর্তী, 188

param($a)$l="+---+---+---+---+";$l;$b=([int64][convert]::ToString($a,2)).ToString(@(,"0"*16)-join'');$o=@(1..16|%{if($b[$_-1]-eq'1'){"| # "}else{"|   "};if($_%4-eq0){"|`n$l`n"}});$o-join''

পূর্ববর্তী-এর, 203

param($a)$l="+---+---+---+---+`n|";$o=$l;$b=([int64][convert]::ToString($a,2)).ToString(@(,"0"*16)-join'');1..16|%{if($b[$_-1]-eq'1'){$o+=" # |"}else{$o+="   |"};if($_%4-eq0){$o+="`n$l"}};$o.TrimEnd('|')

1
আমি আশা করি এটি একটি "মজাদার হার্ড" ছিল। :-) আপনার ব্যাখ্যার জন্য +1; এটি পাওয়ারশেলের সম্পর্কে আমার সীমিত ধারণাটিকে সহায়তা করেছিল।
টাইপ_আউটকাস্ট

3

জাভাস্ক্রিপ্ট (ES6), 216 207 বাইট

একটি বেনামী ফাংশন সংজ্ঞায়িত করে।

i=>(","+("0".repeat(16)+i.toString(2)).slice(-16).split``.map((v,l,a)=>l%4<1?"| "+a.slice(l,l+4).map(v=>v?"#":" ").join` | `+" |":"").filter(v=>!!v).join`,`+",").replace(/,/g, `
+---+---+---+---+
`).slice(1)

টিপস জন্য ETH প্রডাকশন ধন্যবাদ!


চমৎকার কাজ! যেহেতু আপনি ইএস using ব্যবহার করছেন, এখানে কয়েকটি টিপস রইল: ১. যে কোনও সময় আপনাকে কোনও ফাংশনের একমাত্র পরামিতি হিসাবে স্ট্রিংটি ব্যবহার করার প্রয়োজন হয়, আপনি যেমন টেমপ্লেট স্ট্রিং ব্যবহার করতে পারেন: .join` | `​২. আপনি ইন্টারপোলটিং মানগুলির জন্যও টেমপ্লেট স্ট্রিং ব্যবহার করতে পারেন: i=>`,${"0".repeat....join`,`},`.replace...3 এই থ্রেডটিতে আপনি আরও ES6 টিপস পেতে পারেন ।
ETH প্রোডাকশনগুলি

এটি কাজ করা বন্ধ করে দিয়েছে বলে মনে হচ্ছে, তবে আরও কিছুটা গল্ফ করে, আমি সঠিক ফলাফল দিয়ে ১৯ 197 টি পেতে পারি:i=>`,${("0".repeat(16)+i.toString(2)).slice(-16).split``.map((v,l,a)=>l%4?"":"| "+a.slice(l,l+4).map(v=>' #'[v]).join` | `+" |").filter(v=>v).join`,`},`.replace(/,/g,`<line break>+---+---+---+---+<line break>`).slice(1)
ETH প্রোডাকশনস

2
("0".repeat(16)+i.toString(2)).slice(-16) ->(65536|i).toString(2).slice(1)
edc65

আপনার সঠিক যুক্তিবিজ্ঞান রাখা, এই 169 golfed করা যেতে পারে, দেখতে jsfiddle.net/76fp7aw6
edc65


2

পাইথ, 50 বাইট

j.i*5]<3*5"+---"ms.i*5\|dc4mj@" #"qd\1*2\ .[Z16.BQ

ব্যাখ্যাটি অন্য সময় পর্যন্ত অপেক্ষা করতে হবে, আমি এটি আমার ফোনে পোস্ট করছি!


2

রুবি, ১০২

n=gets.to_i
print j="+---"*4+"+
" 
19.downto(0){|i|print i%5>0?"| #{((n>>i*4/5)%2*3+32).chr} ":"|
"+j}

অ্যালগরিদম

একটি অনুভূমিক বিভাজক মুদ্রণ করুন

20 বার লুপ (19..0)

লুপ সংখ্যাটি 5 দ্বারা বিভক্ত না হলে 4/5 দ্বারা গুণ করে 16..0 পরিসরে একটি সংখ্যায় রূপান্তর করুন। এর আগে একটি স্থান (ascii 32) বা #(ascii 32 + 3 = 35) মুদ্রণ করুন| এবং পরে একটি স্পেস থাকবে।

যদি লুপ সংখ্যাটি 5 দ্বারা বিভক্ত হয় তবে প্রথমটির মতো একটি সমাপ্তি |, নতুন লাইন এবং একটি অনুভূমিক বিভাজক মুদ্রণ করুন।


2

পার্ল, 103 বাইট

$_=(($l='+---'x4 .'+
').'| x 'x4 .'|
')x4 .$l;@n=(sprintf'%016b',<>)=~/./g;s/x/$n[$x++]?'#':$"/eg;print

স্ট্রিং পুনরাবৃত্তি প্রচুর একটি গ্রিড করতে xএস, বাইনারি এবং তারপর ইনপুট রূপান্তর করতে গুলি বা ( ) নির্দিষ্ট অবস্থানে থাকা পতাকা উপর নির্ভর করে ( )।s///x#$"$x


2

পিএইচপি, 159 বাইট

bingrid16.php:

<?$r=10;while(--$r){if($r%2){echo str_repeat('+---',4).'+';}else{$c=9;echo'|';while(--$c){echo' '.($c%2?'|':($argv[1]&pow(2,$r*2+$c/2-5)?'#':' '));}}echo"\n";}

ব্যবহার:

php bingrid16.php 4242

অভিনব কিছু নয়, কেবল নিষ্ঠুর-বাধ্যভাবে রেন্ডারিং করা।

আমি লুপের পরিবর্তে অ্যারে ব্যবহার করে অন্য একটি কোণ চেষ্টা করেছি, তবে এটি 224 বাইটে বেশি ছিল:

<?=implode(array_map(function($r)use($argv){return($r%2?str_repeat('+---',4).'+':'|'.implode(array_map(function($c)use($r,$argv){return' '.($c%2?'|':($argv[1]&pow(2,$r*2+$c/2-5)?'#':' '));},range(8,1))))."\n";},range(9,1)));

2

পার্ল 5 , 85 84 বাইট

84 83 কোড + এর বাইট -pপতাকা

-1 বাইট পরে ডোম আমাকে একটি নতুন লাইন ব্যবহারের জন্য মনে করিয়ে দিয়েছে

say$\='+'."---+"x4,"
| ",map y/01/ #/r.' | ',/./g for(sprintf"%016b",$_)=~/..../g}{

এটি অনলাইন চেষ্টা করুন!


ভাল, আমার চেয়ে অনেক ভাল পদ্ধতির! একটি আক্ষরিক নিউলাইন আপনাকে অতিরিক্ত বাইটও বাঁচিয়ে দেবে $/!
ডম হেস্টিংস

1

c99 263 বাইট

golfed:

main(int argc,char **argv){short i=atoi(argv[argc-1]);char *t="| # ", *f="|   ",*a[16],**p=a,*b="+---+---+---+---+\r\n";while(p<a+16){if((i|0x8000)==i)(*(p++))=t;else(*(p++))=f;i<<=1;}for(p=a;p<a+16;p+=4)printf("%s%s%s%s%s|\n",b,*p,p[1],p[2],p[3]);printf("%s",b);}

ungolfed:

main(int argc, char **argv)
{
    short i=atoi(argv[argc -1]);
    char *t ="| # ", *f="|   ",*a[16],**p=a,*b="+---+---+---+---+\r\n";

    while (p<a+16)
    {
        if((i|32768)==i)
            (*(p++))=t;
        else
            (*(p++))=f;

        i<<=1;
    }

    for (p=a;p<a+16;p+=4)
        printf("%s%s%s%s%s|\n",b,*p,p[1],p[2],p[3]);
    printf("%s",b);
}

আমি কেবল কিছুটা শিফটিং বৈকল্পিক উপস্থাপন করতে পছন্দ করেছি এবং অনুভব করেছি যে এটি প্রথমবারের মতো উপযুক্ত (এমনকি এটি আমাকে কিছু বাইটের জন্যও ব্যয় করতে পারে, তবে সি এই সুযোগটি এমনকি বাইটে চ্যালেঞ্জ করতে পারে না তাই আমি যত্ন করি না) আর্গ ব্যবহার করার জন্য / argv হয়


1

রুবি, 95

সংক্ষিপ্ত স্ট্রিং রূপান্তরকরণের জন্য এমএইচএমডে হ্যাঁ, তবে আমি সংখ্যা পদ্ধতির পরিবর্তে স্ট্রিং পদ্ধতি ব্যবহার করার চেষ্টা করতে চেয়েছিলাম।

->i{puts g='+---'*4+?+;("%016b"%i).scan(/.{4}/){puts$&.gsub(/./){"| #{$&<?1?' ':?#} "}+"|
"+g}}

1

রুবি, 93

কেবল সংখ্যাসূচক ক্রিয়াকলাপগুলি ব্যবহার করে একটি সামান্য সংক্ষিপ্ত সংস্করণ।

->i{n=g='+---'*4+"+
";15.downto(0){|m|n+="| #{[' ',?#][1&i>>m]} "
n+="|
"+g if m%4<1}
puts n}

1

সি # 227 বাইট

Golfed:

class B{public static string G(short v){string s="",b=System.Convert.ToString(v,2).PadLeft(16,'0');for(int i=9;i>0;){s+=i--%2!=0?"+---+---+---+---+\n":"| "+b[i*2+1]+" | "+b[i*2]+" | "+b[i*2-1]+" | "+b[i*2-2]+" |\n";}return s;}}

খাঁজকাটা:

class B
{
    public static string G(short v)
    {
        string s="",b=System.Convert.ToString(v, 2).PadLeft(16,'0');
        for(int i=9;i>0;)
            s+=i--%2!=0?"+---+---+---+---+\n":"| "+b[i*2+1]+" | "+b[i*2]+" | "+b[i*2-1]+" | "+b[i*2-2]+" |\n";
        return s;
    }
}

প্রথমবার আমি এই জাতীয় কিছু চেষ্টা করছি, টিপস স্বাগত হবে!


প্রথমত, আমি 286 বাইট গণনা করি এবং আপনি ইনডেন্টেশন স্পেসগুলি সরাতে পারেন।
নীল

আপনি কিভাবে এটি গণনা? আমি সেখানে ফাইলের আকার দেখতে সম্পত্তিগুলিতে যাচ্ছি, তবে আমি নিশ্চিত নই যে এটি করার উপায় এটিই! ইন্ডেন্টেশন ছাড়াই আমি 230 বাইটে নেমে এসেছি!
অ্যান্থনিটিমার্স

মোটেরেফ.আইন.বিটি / কাউন্টার-এর মতো কিছু ব্যবহার করুন বা আপনি যদি লিনাক্সে থাকেন তবে wcকমান্ডটি ব্যবহার করুন
ব্লু

1

পাইথন 3, 145 144 বাইট

সারিতে:

a="|";b="+"+"---+"*4+"\n";r=0,1,2,3;(lambda x:print(b+b.join(a+a.join(" %s "%'# '[x&2**(i+j*4)<1]for i in r)+a+"\n"for j in r)+b))(int(input()))

নতুন লাইনের সাথে:

a="|"
b="+"+"---+"*4+"\n"
r=0,1,2,3
lambda x:print(b+b.join(a+a.join(" %s "%'# '[x&2**(i+j*4)<1]for i in r)+a+"\n"for j in r)+b)
x(int(input()))

সম্পাদনা করুন: 1 বাইট সংরক্ষণের জন্য ট্যাঙ্কগুলি @ মান্যাটওয়ার্ক


1
উপর ভিত্তি করে gnibbler এর ডগা , hardcoding r=0,1,2,3সঙ্গে এটি উৎপাদিত চেয়ে 1 টি অক্ষর খাটো r=range(4)
manatwork

0

কোটলিন , 192 বাইট

{val v=it.toString(2).padStart(16,'0')
fun p(){(0..3).map{print("+---")}
println("+")}
(0..3).map{p()
v.subSequence(it*4,(it+1)*4).map{print("| ${if(it>'0')'#' else ' '} ")}
println("|")}
p()}

শোভিত

{
    val v = it.toString(2).padStart(16, '0')
    fun p() {
        (0..3).map { print("+---") }
        println("+")
    }
    (0..3).map {
        p()
        v.subSequence(it *4, (it +1) *4).map {print("| ${if (it > '0') '#' else ' '} ")}
        println("|")
    }
    p()
}

পরীক্ষা

var b:(Int) -> Unit =
{val v=it.toString(2).padStart(16,'0')
fun p(){(0..3).map{print("+---")}
println("+")}
(0..3).map{p()
v.subSequence(it*4,(it+1)*4).map{print("| ${if(it>'0')'#' else ' '} ")}
println("|")}
p()}

fun main(args: Array<String>) {
    b(255)
}

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