একটি ইউনিভার্সাল-বাইনারি-ফাংশন লুকআপ সারণী তৈরি করুন


19

এটি স্পর্শকাতরভাবে প্রোগ্রামিংয়ের একটি ভাষা আবিষ্কারের জন্য আমার অনুসন্ধানের সাথে সম্পর্কিত ।

বাইনারি সংখ্যা 0 .. 15 এর একটি সারণী সূচীকরণ ক্রিয়াকলাপগুলি ব্যবহার করে ইউনিভার্সাল বাইনারি ফাংশন প্রয়োগ করতে ব্যবহার করা যেতে পারে। দুটি 1-বিট ইনপুট এক্স এবং ওয়াই দেওয়া, সমস্ত 16 টি সম্ভাব্য ফাংশন 4-বিট অপকোডে এনকোড করা যাবে।

X Y  F|0 1 2 3 4 5 6 7 8 9 A B C D E F
- -    - - - - - - - - - - - - - - - -  
0 0    0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1    0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0    0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
       -     -   - -   -   -   -   - -
       0    ~X  ~Y ^   &   Y   X   | 1
      ZERO    NOT-Y   AND         OR
          NOT-X   XOR              ONE

সুতরাং 16 টি ফাংশনের এই সেটটি ফাংশন হিসাবে বাইনারি ইনপুটগুলিতে প্রয়োগ করা যেতে পারে

ইউ (এফ, এক্স, ওয়াই): (চ >> ((x << 1) | y)) এবং 1 ,

অথবা

ইউ (এফ, এক্স, ওয়াই): (চ / ২ ^ (x × 2 + y))% 2 ,

বা ইনডেক্সিং বা ম্যাট্রিক্স পার্টিশন সহ।

এই ধরণের বাইনারি ক্রিয়াকলাপের জন্য যে কোনও সম্ভাব্য ভাষা তৈরির জন্য এই জাতীয় মানগুলির একটি সারণী উপস্থাপন বা উত্পন্ন করার সর্বাধিক কমপ্যাক্ট উপায়টি জানা দরকারী।

লক্ষ:

এই সঠিক পাঠ্য আউটপুট উত্পাদন করুন:

0101010101010101
0011001100110011
0000111100001111
0000000011111111

এটাই! সংক্ষিপ্ত-কোড জিতেছে।


2
আমার একটি অন্তর্দৃষ্টি ছিল যে এপিএল-পরিবার এখানে ভাল করবে। :)
লুসার droog


নেতৃস্থানীয় বা অগ্রগামী নিউলাইন গ্রহণ করা হয়?
তিতাস

হ্যাঁ, অতিরিক্ত নতুনলাইনগুলি ঠিক আছে।
লুসার ড্রুগ

উত্তর:


20

জে, 10 (13?) টি অক্ষর

|.|:#:i.16

নম্বর তালিকা:

   i.16
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15`

বাইনারি:

   #:i.16
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

TRANSPOSE:

   |:#:i.16
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

বিপরীত:

   |.|:#:i.16
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

আমাদের কি স্থানগুলি সরিয়ে ফেলতে হবে? অন্যান্য জে জবাবের দিকে তাকালে মনে হয় আমরা এটি করি তাই আমাদের জেনের উত্তর1": থেকে 3 টি অক্ষর যুক্ত করা এবং ধার নেওয়া দরকার ।


1
ব্যাখ্যার খুব সুন্দর স্টাইল। +1 (জঘন্য সংক্ষিপ্ত, খুব!)
লুসার droog

যত তাড়াতাড়ি আমি দেখেছি পিটার্স Golfscript উত্তর আমি অনেক ভালো কাজ করতে পারে না। ঠিক আছে, আপনি ইতিমধ্যে এটি সম্পন্ন করেছেন।
জন ডিভোরাক

গল্ফস্ক্রিপ্টের চেয়ে খাটো কিছু দেখে ভাল লাগছে ...
ফুয়েনফুন্ডচটজিগ


নিবন্ধন করুন এটা অনেক কোড। জে উত্স কোডের চেয়ে অনেক বেশি পঠনযোগ্য। :-) খুব ঠান্ডা.
গ্যারেথ


7

এপিএল (14)

ধরে নিচ্ছি ⎕IO=0(এটি একটি সেটিংস):

⎕D[⊖(4⍴2)⊤⍳16]

ব্যাখ্যা:

  • ⍳16: সংখ্যা [0,16)
  • (4⍴2)⊤: 4 সংখ্যা ব্যবহার করে বেস 2 তে প্রতিটি সংখ্যা এনকোড করুন
  • : অনুভূমিক বিপরীত (সুতরাং এমএসবি উপরে থাকবে)
  • ⎕D[... ]: ⎕Dস্ট্রিং যা থেকে এই মান নির্বাচন করুন 0123456789। (একটি সংখ্যাসূচক ম্যাট্রিক্স মানগুলির মধ্যে ফাঁক দিয়ে প্রদর্শিত হয়, একটি অক্ষর ম্যাট্রিক্স হয় না So সুতরাং এটি প্রতিটি সংখ্যার বিটকে বর্ণের একটিতে রূপান্তর করে '0' '1')।

উত্সের প্রথম চরিত্রটি কি বর্গক্ষেত্রের মতো মনে হচ্ছে, বা আমি এখনও কিছু ফন্ট মিস করছি?
টিম সেগুইন

@ টিমসেইগাইন হ্যাঁ, এটি একটি বর্গ, এপিএল সাহিত্যে কোয়াড নামে পরিচিত । কোয়াড দিয়ে শুরু হওয়া পরিবর্তনশীল নামগুলি সিস্টেম ভেরিয়েবল যা পরিবেশ পরিবর্তন করে। আইও = "সূচক উত্স"।
luser droog

একটি বাইট সংরক্ষণ করুন: (4⍴2)⊤2⊥⍣¯1
অ্যাডম

6

জেলি , 42 7 বাইট (প্রতিদ্বন্দ্বী)

⁴ḶBUz0Y

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

ডেনিসকে তার সহায়তার জন্য ধন্যবাদ। এখানে প্রথম বার্তা, এখানে সর্বশেষ (অন্যান্য আলোচনাও ঘটেছিল)। তার সাহায্যে, আমি স্পষ্টতই (প্রায়) স্কোর-শিকড়যুক্ত।


ভাষা যেহেতু প্রশ্নের চেয়ে নতুন, তাই আমি এটি উত্তর হিসাবে গ্রহণ করতে পারি না। নিশ্চয়ই অনুগ্রহের জন্য দৌড়ে, তাই!
luser droog

পছন্দ করুন তবে, আমি ভেবেছিলাম চ্যালেঞ্জটি আরও নতুন।
এরিক আউটগলফার

আমি জানি আপনি কী বোঝেন, এটি পোস্ট করার আগে এতটা মনে হয় না। এমনকি আমার নিজের ইনকা 2, 2 বছর বয়সেও খুব ছোট ভাষা।
luser droog

42 থেকে 7 কোডগল্ফের জন্য +1। এটি এমন কিছু যা আপনি প্রতিদিন দেখেন না (উদ্দেশ্য অনুযায়ী না করে)।
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন কেন এটি কখনই উদ্দেশ্য অনুযায়ী করা উচিত? আমি কেবল জেলি নবাবী (আমি পাইথন 2 এবং 3 ভাল জানি) তাই আমি এটি স্ট্রিংয়ের উপায়ে করেছি, যখন "জেলিকে অ্যারে-ম্যানিপুলেটিং ভাষা হিসাবে দেখা দরকার"।
এরিক দ্য আউটগল্ফার

5

/// , 51 বাইট

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

/a/0101/aaaa
/b/0011/bbbb
/z/0000//o/1111/zozo
zzoo

1
পিপিসিজিতে আপনাকে স্বাগতম! তুমি আমাকে এটা দ্বারা মেরেছ.
এরিক আউটগল্ফার

@ এরিক্থে গল্ফার উন্নত হতে বোধ করেন তবে আমি মনে করি এটিই সবচেয়ে সংক্ষিপ্ত সংস্করণ। :)
সিড্রিক রেইচেনবাচ

আমি স্প্রেটস এ পোর্ট করছি।
এরিক আউটগলফার

4

গল্ফস্ক্রিপ্ট ( 18 17 15 অক্ষর)

(হাওয়ার্ডকে ধন্যবাদ সহ)

16,zip{','-~n}%

10-চর কেন বুঝতে পারছি না char

16,zip{n}/

কাজ করে না; আমি সন্দেহ করি যে স্ট্যান্ডে স্ট্যান্ডে স্ট্যান্ডে অসম্পর্কিত প্রকারের জন্য স্ট্যান্ডার্ড ইন্টারপ্রেটারে একটি বাগের ফলে অসমর্থিত ধরণের ফলাফল হয়।

18 টি অক্ষরের একটি বিকল্প যা আমি পুরোপুরি বুঝতে পারি তা হ'ল:

4,{2\?.2,*$8@/*n}%

আরও একটি গাণিতিক পদ্ধতির 28 টি অক্ষরে কিছুটা লম্বা:

4,{2.@??)2.4??.@/+2base(;n}/

এর অনেকগুলি বেস রূপান্তর এবং শূন্য-প্যাডিংয়ের জন্য। এগুলি ব্যতীত এটি 19 টি অক্ষরে নেমে আসে,

4,{2.@??)2.4??\/n}/

আউটপুট সহ

21845
13107
3855
255

এটি সঠিক পাঠ্য আউটপুট জন্য জিজ্ঞাসা করা হয়েছিল - কেন 16,zip{n}/তখন কাজ করা উচিত ?
হাওয়ার্ড

অন্যদিকে আপনি করতে পারেন16,zip{','-~n}%
হাওয়ার্ড

@ হাওয়ার্ড, আমি মনে করি এটি zipঅ্যারের অ্যারে ফিরিয়ে আনবে, তবে এটি আসলে রুবি অ্যারের অ্যারে ফিরিয়ে দেয় বলে মনে হয় (এটি আমার সেরা অনুমান)। উপাদানগুলি যাই হোক না কেন, তাদের কাছে `` `` applying প্রয়োগ করা তাদের মুদ্রণের যেভাবে প্রভাবিত করে তা প্রভাবিত করে না, যা 4 গল্ফস্ক্রিপ্ট ডেটা ধরণের কোনও মত নয়। আপনি ঠিক বলেছেন যে ','-এগুলি সাধারণ অ্যারেগুলিতে পরিণত হয়েছে বলে মনে হচ্ছে: দুর্দান্ত কৌশল।
পিটার টেলর

এখানে 4 টি অতিরিক্ত শূন্যের লাইন আউটপুট বলে মনে হচ্ছে
অদিতসু

@ অ্যাডিটসু, অনলাইন ডেমোতে কাজ করে । আমি ভাবছি কেন পার্থক্য। রুবি সংস্করণ, হতে পারে?
পিটার টেলর

3

সিজেম - 16

4,{G,f{\m>2%}N}/

সমতুল্য জাভা কোড (ব্যাখ্যা হিসাবে):

public class Lookup {
    public static void main(final String... args) {
        for (int i = 0; i < 4; ++i) {
            for (int j = 0; j < 16; ++j) {
                System.out.print((j >> i) % 2);
            }
            System.out.println();
        }
    }
}

3

জাভাস্ক্রিপ্ট (ECMA6), 67

s=(k,n)=>n-.5?s((k<<n/2)^k,n/2)+"0".repeat(n)+k.toString(2)+"\n":"" 

এটি ব্যবহার করতে, কল করুন

s(255,8)

Bitshift!
এবং এছাড়াও এক্সওআর এবং কিছুটা পুনরাবৃত্তি।

প্রথমটি লক্ষ্য করার বিষয়টি হ'ল আমরা যদি কোনও লাইন নিয়ে যাই এবং আপনি এটি (ক্রমাগত 0 এর #) / 2 বামে স্থানান্তরিত করেন, পরের লাইনটি পেতে আমরা একটি দুর্দান্ত এক্সওআর পাই।

উদাহরণ স্বরূপ,

0000000011111111 //line 4
0000111111110000 //shifted 4 to the left

এক্সওআর এই বিটওয়াইজ আমাদের দিন

0000111100001111 //XOR'ed. This is line 3!

যা পরের লাইন আপ (লাইন 3)
3 লাইনের জন্য একই প্রক্রিয়া প্রয়োগ করা, 2 বাম দিকে স্থানান্তরিত করুন এবং আমরা পাই ...

0000111100001111
0011110000111100

XOR'ed দেয়

0011001100110011

যা লাইন ২.
লক্ষ্য করুন যে আমরা প্রতিবার যে পরিমাণ স্থানান্তরিত করি তা অর্ধেক হয়ে যায়।
এখন আমরা কেবল 2 টি যুক্তি সহ এই ফাংশনটিকে পুনরাবৃত্তভাবে কল করি। এই লাইনের পূর্ণসংখ্যা মান এবং এন, যা আমাদের কতটা স্থানান্তরিত করতে হবে। যখন আমরা কেবল পুনরাবৃত্তি করি তখন স্থানান্তরিত XOR'ed মান এবং n / 2 তে পাস করি।

"0".repeat(n)

প্রতি লাইনের শুরুর দিকে 0 এর প্যাড করা কারণ টুস্ট্রিং 0 টি অগ্রণী করে।


+1 খুব দুর্দান্ত। আমি আগে সেই প্যাটার্নটি লক্ষ্য করিনি।
লুসার droog

: একটি দম্পতি byes বিট এন নাড়াচাড়া পরিবর্তে এটা বিভাজক এবং একটি টেম্পলেট স্ট্রিং সঙ্গে নতুন লাইন প্রতিস্থাপন করে এই কাটা বন্ধ করা যাবেs=(k,n)=>n?s((k<<n/2)^k,n>>1)+"0".repeat(n)+k.toString(2)+` `:""
শন এইচ

2

জে, 21 অক্ষর

1":<.2|(2^i.4)%~/i.16
  • i.16 ০.১৫ এর একটি তালিকা
  • 2^i.4 একটি তালিকা (1,2,4,8)
  • %~/ বিভাগগুলির সারণি তৈরি করে যেখানে বাম আর্গুমেন্ট সারি তৈরি করে তবে বিভাগে ডান যুক্তি
  • 2| [প্রতিটি কক্ষ] দুটি করে ভাগ করার পরে অবশিষ্ট গণনা করে
  • <. মেঝে যে 0 বা 1 মান
  • 1": প্রতি ঘরে প্রতিটি অক্ষর দিয়ে টেবিলটি ফর্ম্যাট করে

আমি মনে করি যে floorপ্রয়োজন হবে না। এর ডোমেনটি 2|ইতিমধ্যে 0 বা 1, তাই না?
luser droog

@ লেজারড্রোগ ফ্লোটে |কাজ করে2|3.25হয় 1.25। আমরা এটা চাই না।
জন ডিভোরাক

2

গল্ফস্ক্রিপ্ট, 19 টি অক্ষর

আর একটি গল্ফস্ক্রিপ্ট পদ্ধতির

4,{2\?{&!!}+16,%n}%

2

রুবি (44)

বিরক্তিকর এবং দীর্ঘ: কেবল 0 টি প্যাডযুক্ত সংখ্যাগুলির বাইনারি উপস্থাপনা মুদ্রণ করা হচ্ছে।

[21845,13107,3855,255].map{|i|puts"%016b"%i}

2

পুনশ্চ 108 177 126 77 74 70

[43690 52428 61680 65280]
{16{dup 2 mod =only 2 idiv}repeat<>=}forall

একটি সহজ মোড- অফ পদ্ধতির জন্য মানগুলি বিপরীত ।

151 131 119

আরও বেশি এপিএল- পদ্ধতি প্রয়োগ করা । সম্পাদনা: ইনডেক্সিং এবং ফর লুপগুলির সাথে স্ট্রিং চপিং এবং অ্যারে জিপিং প্রতিস্থাপন করা হয়েছে।

[[0 1 15{}for]{16 add 2 5 string cvrs}forall]4 
-1 1{0 1 15{2 index exch get 1 index 1
getinterval =only}for pop<>=}for

ইন্ডেন্টযুক্ত:

[[0 1 15{}for]{16 add 2 5 string cvrs}forall]
4 -1 1{ % [] i
    0 1 15{ % [] i j
        2 index exch get % [] i [](j)
        1 index 1  % [] i [](j) i 
        getinterval  % [] i [](j)<i>
        =only  % [] i
    }for 
    pop<>= % []
}for

বিজয়ী জে জবাবগুলিতে ব্যবহৃত ফাংশনগুলিকে পুনরায় প্রয়োগ করা এর দিকে পরিচালিত করে (প্রচুর সমর্থন কোড সহ )।

-1 16 i + #: |: |.{{==only}forall()=}forall

iএখানে Iverson এর প্রাথমিক কার্যাদি বর্ণিত 1 ভিত্তিক ভেক্টর , সুতরাং -1 ... +উত্পাদন করতে হবে 0 .. 15


2

পার্ল (36 + 1)

sayযথারীতি +1 ডবল 0একটি টাইপো নয় :)

map say((00x$_,1x$_)x(8/$_)),1,2,4,8

জন্য 1 যোগ করার প্রয়োজন নেই sayperl -e'...'মানসম্পন্ন এবং এটি perl -E'...'বাইট গণনায় কোনও বৃদ্ধি প্রয়োজন । যাই হোক, আমার মনে হয় এটা উপর সিদ্ধান্ত নেওয়া হয় কোড গলফ মেটা যে -M5.01মুক্ত।
msh210

2

জাভাস্ক্রিপ্ট (ECMA6), 108

এখানে একটি ভিন্ন পদ্ধতির চেষ্টা করছেন। বাইনারি অপারেটরগুলি ব্যবহার করতে উত্সাহিত করা হলেও, আমি নিজেই এই সমাধানটি জমা দেওয়ার অনুমতি দিয়েছিলাম যেহেতু চ্যালেঞ্জটিও এবং আমি ভাবছিলাম - আমি কীভাবে এই মানগুলির প্রতিনিধিত্বকারী কোডের পরিমাণ হ্রাস করতে পারি ...? বেসগুলি

['gut','a43','2z3','73'].forEach(n=>{a=parseInt(n,36).toString(2);
alert(('00000000'+a).substr(a.length-8))})

(সুবিধার জন্য লাইন ব্রেক)।

নেতৃস্থানীয় শূন্যগুলির সাথে প্যাডিংয়ের সাথে আমার গোলমাল হতে হয়েছিল এটি লজ্জাজনক, তবে এই কোডটির বিন্দুটি বেস ৩ 36 এ কেবল লক্ষ্য বাইনারি ফলাফলের প্রতিনিধিত্ব করে যা হুবহু সেই gut, a43, 2z3, 73মানগুলি।

দ্রষ্টব্য: আমি বুঝতে পারি এটি বিজয়ী উত্তরের কাছাকাছি কোথাও হবে না, তবে কেবল ধারণার জন্য ...


1
আমি যখন আপনার দেখলাম তখন আমি মূলত একই জিনিসটি করতে যাচ্ছিলাম। আমি এটা 92 থেকে টেকনিক ব্যবহার বাইট নিচে একটি অনুরূপ প্রশ্নের আমার উত্তর : alert(['gut','a43','2z3',73].map(n=>(1e8+parseInt(n,36).toString(2)).slice(-16)).join('\n'))। এই পদ্ধতির চারটি পরিবর্তে newlines ব্যবহার করে alert()
নিনজাবিয়ারমনেকি



2

সিজেএম ( প্রতিযোগিতা না করা ), 10 9 বাইট

@ ডেনিসকে 1 বাইট বন্ধের জন্য ধন্যবাদ!

Y4m*zW%N*

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

ব্যাখ্যা

Y     e# Push 2
4     e# Push 4
m*    e# Cartesian power of 2 (interpreted as [0 1]) with exponent 4
z     e# Zip
W%    e# Reverse the order of rows
N*    e# Join with newlines. Implicitly display

2

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

পুনরাবৃত্তভাবে স্ট্রিং তৈরি করে।

f=(n=64)=>n--?f(n)+(!n|n&15?'':`
`)+(n>>(n>>4)&1):''

কিভাবে এটা কাজ করে

এই পুনরাবৃত্তিটি নীবলেস 0x0 থেকে 0xF এর উল্লম্ব বাইনারি উপস্থাপনার মাধ্যমে তৈরি করা হয়েছে তার উপর ভিত্তি করে:

  0101010101010101 bit #0 <- Y = 0
  0011001100110011 bit #1
  0000111100001111 bit #2
  0000000011111111 bit #3 <- Y = 3
  ----------------
  0123456789ABCDEF
  ^              ^
X = 0          X = 15

অতএব, এই প্যাটার্ন প্রতিটি অবস্থানে (x, y) ওয়াই তম এক্স বিট হিসাবে প্রকাশ করা যেতে পারে: X & (1 << Y)। এছাড়া আমরা যাদের কাছে এই বিট বিছিন্ন করতে পারেন: (X >> Y) & 1। বরং X এবং Y সম্পর্কে অবগত থাকার চেয়ে, আমরা বারবার একটি একক পরিবর্তনশীল উপর nছোটো 0 থেকে 63. সুতরাং, সূত্র হয়ে: (n >> (n >> 4)) & 1। এটি 63 থেকে 0 পর্যন্ত পুনরাবৃত্তি করা খুব সহজ, সুতরাং স্ট্রিংটি বিপরীত ক্রমে নির্মিত। অন্য কথায়, চরিত্র এন -1 চরিত্রের বামে যোগ করা হয় এন

পার্শ্ব নোট হিসাবে, পুনরাবৃত্তি সংক্ষিপ্ত কোড ব্যতীত এখানে কিছুই আনবে না।

লাইন ব্রেক ছাড়াই কোডটি 35 বাইট দীর্ঘ:

f=(n=64)=>n--?f(n)+(n>>(n>>4)&1):''

লাইনব্র্যাকগুলি sertোকাতে আমাদের আরও 17 বাইট দরকার। যদি একটি অগ্রণী লাইনব্রেক গ্রহণযোগ্য হয় তবে এটি 14 বাইটে সংক্ষিপ্ত করা যেতে পারে।

ডেমো

f=(n=64)=>n--?f(n)+(!n|n&15?'':`
`)+(n>>(n>>4)&1):''

console.log(f());


উভয় ভাষার সাথে জাভাস্ক্রিপ্টের সংক্ষিপ্ত বিবরণে উপরের এক্সপমে সংকলন নেই আরও একটি আছে .... এটি একটি পুনরাবৃত্ত ফাংশন সম্পর্কে ধারণা ভাল ...
রোজলুপি

35 বাইটের পরে বিভাজনে কী লাগবে?
টাইটাস

@ টিটাস - ভাল প্রথম নজরে, এর জন্য আমার কোনও ভাল সমাধান নেই। এখানে একটি (খুব খারাপ) প্রচেষ্টা: (f=(n=64)=>n--?f(n)+(n>>(n>>4)&1):'')().match(/.{16}/g).join`\n` (
by৩

হুম ... এবং .replace(/.{16}/g,"$0\n")একই দৈর্ঘ্য রয়েছে। খুব খারাপ.
টাইটাস


1

NARS2000 এপিএল, 22

"01"[⊖1+(4⍴2)⊤(⍳16)-1]

মেরিনাসের এপিএল উত্তর থেকে প্রাপ্ত, যা NARS2000 এ কাজ করছে বলে মনে হয় না।

ভেক্টর উত্পন্ন

      ⍳16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

শূন্য-ভিত্তিতে পরিবর্তন করুন

      (⍳16)-1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

এনকোডের জন্য আকার তৈরি করুন

      (4⍴2)
2 2 2 2

সঙ্কেতাক্ষরে লিখা

      (4⍴2)⊤(⍳16)-1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1-ভিত্তিক সূচকের জন্য সামঞ্জস্য করুন

      1+(4⍴2)⊤(⍳16)-1
1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2
1 1 1 1 2 2 2 2 1 1 1 1 2 2 2 2
1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2
1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

বিপরীত প্রাথমিক অক্ষ

      ⊖1+(4⍴2)⊤(⍳16)-1
1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2
1 1 1 1 2 2 2 2 1 1 1 1 2 2 2 2
1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2

সূচক

      "01"[⊖1+(4⍴2)⊤(⍳16)-1]
0101010101010101
0011001100110011
0000111100001111
0000000011111111

আপনি OIO 0 তে সেট করতে পারেন, যাতে আপনার 1-ভিত্তিক সূচকের জন্য সামঞ্জস্য করতে না হয়। এটি এটিকে 16 টি অক্ষরে নামিয়ে আনে।
ইলিয়াস মার্টেনসন

হ্যাঁ, তবে তবে আমি আশঙ্কা করি যে এটি অন্যান্য এপিএল উত্তরের মতো এবং এটি এখানে মোটেও পাওয়ার যোগ্য নয়।
লুসার droog

1

সি, 73 অক্ষর

i;main(){for(;i<64;)i&15||puts(""),putchar(48|1&~0xFF0F0F33335555>>i++);}

চারটি 16 বিট ব্লকে 64৪ বিট আউটপুট দেওয়ার জন্য এটি কেবল একটি সাধারণ সমাধান; আপনাকে কেবল 0xFF0F0F33335555অন্য বিট ক্রমটি আউটপুট করতে নম্বরটি পরিবর্তন করতে হবে ।

সরলীকৃত এবং অবরুদ্ধ:

int main() {
    int i;
    for(i = 0; i < 64; i++) {
        if(i % 16 == 0) {
            puts("");
        }
        int bit = ~0xFF0F0F33335555 >> i;
        bit &= 1;
        putchar('0' + bit);
    }
}

1

হাস্কেল, 73

হ্যাঁ, 73 চর! আমি godশ্বরের ভালবাসার জন্য যদিও এই আরও ছোট পেতে পারি।

r=replicate
f n=r(div 8n)("01">>=r n)>>=id
main=mapM(putStrLn.f)[1,2,4,8]

এ সম্পর্কে আসল দুঃখের বিষয় হ'ল যদি আপনি ব্যাশ ব্যবহার করে আউটপুট প্রতিধ্বনি করতে চান তবে আপনার কেবল 74৪ টি অক্ষর প্রয়োজন।


1

জাভাস্ক্রিপ্ট (ES5) 69

for(x="";4>x;x++){z="";for(n=0;16>n;)z+=1-!(n++&1<<x);console.log(z)}


1

inca2 ,33 27 24

4 16#(,`2|(~16)%.2^~4){D

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

ব্যাখ্যা:

4 16#(,`2|(~16)%.2^~4){D
          (~16)               integers 0 .. 15 
                 2^~4         first 4 powers of 2: 1 2 4 8
          (~16)%.2^~4         division table
        2|                    mod 2 (and floor)
       `                      transpose
      ,                       ravel
     (               ){D      map to chars '0'..'9'
4 16#                         reshape to 4x16

কিছু প্রথম বন্ধনী অপ্রয়োজনীয় হওয়া উচিত, তবে স্পষ্টতই আমার ব্যাকরণের ব্যাখ্যা দিয়ে কিছু বাকী বিষয় রয়েছে। এবং "রেভেল => মানচিত্র => পুনঃ আকার" সত্যিই আনাড়ি: মানচিত্রটি আরও স্মার্ট হওয়া দরকার। সম্পাদনা: বাগফিক্সগুলি প্যারেন্সকে বাদ দেওয়ার অনুমতি দেয়।


একটি পৃথক ফাংশনে বেস রূপান্তর ফ্যাক্টরিং এর N:x|y%.x^~1+[]/x.yফলন19 16 চর সংস্করণ।

4 16#(,`2N~16){D

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

inca2, 2

U0

1

পাইথ 24/26

সংক্ষিপ্ততম পদ্ধতিটি ছিল জিআরসি-র উত্তর পাইথের অনূদিত যা আমার কাছে মনে হয়েছিল যে সস্তা, তাই আমি নিজের পদ্ধতিটিও করেছি:

খনি: 26 টি অক্ষর

 mpbjk*/8dS*d[0 1)[1 2 4 8

grc এর: 24 টি অক্ষর

Fd[1 2 4 8)*/8d+*\0d*\1d

1

সি ++ 130

হেক্সকে বাইনারি রূপান্তরিত করে

#define B std::bitset<16>
#define C(x) cout<<x<<endl;
void main(){
B a(0xFF),b(0xF0F),c(0x3333),d(0x5555);
C(d)C(c)C(b)C(a)
}

1

হাস্কেল (ল্যাম্বডাবোট), 47 বাইট

unlines$reverse$transpose$replicateM 4['1','0']

ধরণ cheaty কারণ এটি ব্যবহার করে TRANSPOSE Data.List থেকে replicateM Control.Monad থেকে অবশ্য উভয় Lambdabot থেকে ডিফল্টরূপে লোড করা হয়।

এছাড়াও, আমি নিশ্চিত যে উন্নতির কোনও জায়গা আছে, কেবল ধারণাটি ভাগ করে নিতে চেয়েছি


1

জুলিয়া (39 বাইট)

দ্বিতীয় স্ক্রিপ্ট আমি কখনও জুলিয়ায় লিখেছি, স্বীকার করতে হবে আমি জুলিয়াকে পছন্দ করছি, সে খুব সুন্দর জানোয়ার।

hcat(map(x->collect(bin(x,4)),0:15)...)

রিটার্নস

[0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 
 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 
 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1]  

ব্যাখ্যা:

  • bin(x,4) - 4 টি অক্ষরে প্যাডিং সহ বাইনারি পূর্ণসংখ্যায় রূপান্তর করুন।
  • collect(_) - স্ট্রিংটি চর অ্যারেতে বিভক্ত করুন।
  • map(x->_,0:15) - পরিসরে প্রথম 16 ডিজিটের জন্য এটি করুন।
  • hcat(_...) - স্প্ল্যাট এবং অনুভূমিকভাবে একটি ম্যাট্রিক্সে সংযুক্ত করা।

1

সি 83 77 76 74 71

x;f(n){for(;x<4;x++,puts(""))for(n=0;n<16;)putchar(49-!(n++&(1<<x)));}

অনেকটাই অকপট.

x;
f(n){
    for(;x<4;x++,puts(""))
        for(n=0;n<16;)
            putchar(49-!(n++&(1<<x)));
}

1
ব্যবহার না করে 2 জনের সহজ সাশ্রয় হয় ?:এবং এ-তে সরানোর মাধ্যমে আরও 1 টি সঞ্চয় হয় ++
পিটার টেলর

এতে পরিবর্তন mainকরে 3 সংরক্ষণ করা হয়েছে f। lol
luser droog

1

আর, 53 41 বাইট

@ গ্রিসের পাইথন উত্তরের একটি অনুবাদ। ব্যবহারের মাধ্যমে মূল অনুবাদ থেকে 12 বাইট কামিয়ে rep()এর eachএবং lengthআর্গুমেন্টগুলি (এবং আংশিক যুক্তি ম্যাচিং), এবং মনে রাখার যে 0:1সমতূল্য c(0,1)

for(n in 2^(0:3))print(rep(0:1,e=n,l=16))

for(n in 2^(0:3))print(rep(c(rep(0,n),rep(1,n)),8/n))

আপনি @ গ্যারেথের জে উত্তরের একটি অনুবাদ চেষ্টা করতে পারেন, এরকম কিছু (34 বাইট):

t(e1071::bincombinations(4))[4:1,]

তবে এটি এমন একটি ফাংশন ব্যবহার করে যা বেস আর এর অংশ নয়, এবং একটি ম্যাট্রিক্স আউটপুট করে যা স্পেসিফিকেশনের মতো নির্ভুল মুদ্রিত পাঠ্যে ফর্ম্যাট করা শক্ত।

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