এমএটিএলে গল্ফ করার টিপস


20

MATL দ্বারা নির্মিত একটি golfing ভাষা লুইস Mendo । MATL, অত্যন্ত প্রতিযোগিতামূলক হতে প্রমাণিত হয়েছে প্রায়ই মারধর যেমন Pyth, CJam এবং জেলি হিসাবে অন্যান্য golfing ভাষায় জমা।

এমএটিএল এ গল্ফ করার জন্য কিছু দরকারী টিপস কি? (সর্বদা হিসাবে, উত্তর প্রতি এক টিপ, দয়া করে!)


5
আপনি যদি কিছু মতলব / অক্টাভা জানেন তবে এটি অবশ্যই একটি দুর্দান্ত সুবিধা। থেকে কিছু কৌশল মতলব মধ্যে golfing জন্য টিপস এবং অক্টেভ মধ্যে golfing জন্য টিপস MATL খুব ব্যবহার করা হয়েছে।
flawr

পরামর্শ: দেখে মনে হচ্ছে accumarray( XQ) যথেষ্ট শক্তিশালী হতে পারে (সম্ভবত ম্যাটল্যাব / অক্টাভের চেয়েও বেশি যেহেতু এই দৈর্ঘ্যের ফাংশন হ্যান্ডলগুলির হাতে রয়েছে খুব সহজে সংখ্যাযুক্ত কোড) তবে ভাল উদাহরণগুলির সাথে বর্ণনা করার জন্য আমি এটিকে যথেষ্ট ভাল জানি না। যদি এটি আসলে কার্যকর হয় তবে কেউ কীভাবে এটি ব্যবহার করবেন সে সম্পর্কে ধারণা সহ একটি উত্তর তৈরি করতে পারে?
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

উত্তর:


7

পূর্বনির্ধারিত আক্ষরিক জানুন

যদিও তাদের মধ্যে কিছু ক্লিপবোর্ডে অনুলিপি করার সময় তথ্য রাখেন, তাদের সবার পূর্বনির্ধারিত মান রয়েছে।

  • F, 0 ঠেলা (আসলে মিথ্যা )
  • T, 1 ঠেলা (আসলে সত্য )
  • H, পুশ 2 (পূর্বনির্ধারিত ক্লিপবোর্ড মান)
  • I, 3 ঠেলা (পূর্বনির্ধারিত ক্লিপবোর্ড মান)
  • K, 4 ঠেলা (পূর্বনির্ধারিত ক্লিপবোর্ড মান)
  • J, 0 + 1 জে পুশ করে (পূর্বনির্ধারিত ক্লিপবোর্ড মান)

আমি যদিও সমস্ত পূর্বনির্ধারিত মানগুলি আবৃত করেছি তা নিশ্চিত নয়।


কেবল সম্পূর্ণতার জন্য (এবং আপনি যদি নিজের উত্তরে যুক্ত করতে চান): ক্লিপবোর্ডের প্রতিটি Lস্তরেরও একটি পূর্বনির্ধারিত মান থাকে তবে সেগুলি বিশেষ ব্যবহারের জন্য (সাধারণ, সাধারণ মানের পরিবর্তে) উদ্দেশ্যে তৈরি হয়। উদাহরণস্বরূপ, 1Lদেয় [1 0](যা সূচক হিসাবে ব্যবহৃত হয় 1:end) 2Lদেয় [0 -1 1](জন্য 1:-1:end)। এছাড়াও, ফাংশন lএবং Oডিফল্ট এবং উত্পাদন দ্বারা 0 ইনপুট নিতে 0এবং 1যথাক্রমে
লুইস Mendo

আমি দেখতে পাচ্ছি না এটি কীভাবে কার্যকর ... আমি কি শুধু লিখতে পারি না 4?
সাইয়েস

@ কিয়েস দরকারীতা হ'ল বিভাজনকারী হিসাবে কোনও স্থান এড়ানো। আপনি যদি ধাক্কা দিতে চান 1, তাহলে 4, 14করবেন না। আপনি প্রয়োজন চাই 1 4। বা 1Kএকটি বাইট সংরক্ষণ করতে
লুইস মেন্ডো

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

1
Kপরিবর্তে কার্যকর যখন অন্য ক্ষেত্রে 4হ'ল: 1-4অর্থ: ধাক্কা 1, তারপর ধাক্কা -4; যেহেতু 1-Kমাধ্যম: ধাক্কা 1যাই হোক না কেন স্ট্যাকের নীচে থেকে বিয়োগ, তারপর ধাক্কা4
লুইস Mendo

5

&মেটা-ফাংশন (বিকল্প ইনপুট / আউটপুট স্পেসিফিকেশন)

কোনও ফাংশনে পাস করার জন্য ইনপুট আর্গুমেন্টগুলির সংখ্যা নির্দিষ্ট করার traditionalতিহ্যগত উপায় হ'ল $মেটা-ফাংশন ব্যবহার করা

2$:     % Two-input version of :

একইভাবে, আউটপুট আর্গুমেন্টগুলির সংখ্যা নির্দিষ্ট করতে আপনি আউটপুট আর্গুমেন্টের সংখ্যা নির্দিষ্ট করে #মেটা-ফাংশন ব্যবহার করতে পারেন ,

2#S     % Two-output version of sort

অথবা যদি আপনি একটি সংখ্যা যে পাস তার চেয়ে অনেক বেশী আউটপুট আর্গুমেন্ট একটি ফাংশন জন্য সংজ্ঞায়িত সংখ্যা, শুধুমাত্রmod(N, numberOfOutputs) + 1 আউটপুট সরবরাহ করা হয়।

4#S     % Get only the second output of sort

আপনি #কেবলমাত্র নির্দিষ্ট আউটপুট আর্গুমেন্টগুলি পুনরুদ্ধার করতে ইনপুট হিসাবে লজিকাল অ্যারে নির্দিষ্ট করে দিতে পারেন।

TFT#u   % Three output version of unique and discard the second output

এই সমস্ত ইনপুট / আউটপুট স্পেসিফিকেশন সুবিধাজনক তবে তারা আপনার বাইট-কাউন্টটি খুব দ্রুত চালনা করে। এটি মোকাবেলা করতে, এমএটিএল 17.0.0 প্রকাশে& মেটা-ফাংশনটি প্রবর্তন করে । এই মেটা-ফাংশন কোনও ফাংশনের জন্য নির্দিষ্ট ইনপুট বা আউটপুট স্পেসিফিকেশনের শর্টকাট হিসাবে কাজ করে। আসুন দেখুন এর অর্থ কী।&

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

10      % Push 10 to the stack
12      % Push 12 to the stack
2$:     % Create an array: [10, 11, 12] 

এখন নীচে পরিণত হয়, একটি বাইট সংরক্ষণ !

10 12 &:

যুক্তিগুলির বিকল্প সংখ্যা কীভাবে আমরা নির্ধারণ করতে পারি?

ইনপুট / আউটপুট স্পেসিফিকেশন যা &অনুবাদ করে ফাংশন নির্দিষ্ট যেমন আমরা বাইট-সঞ্চয়কে অনুকূলিত করি।

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

এখানে সহায়তা বর্ণনার ইনপুট / আউটপুট আর্গুমেন্ট বিভাগ :

 +- Min-Max range of # of inputs
 |        +----- Alt. Default # of inputs
 |        |
 V        V
1--3 (1 / 2); 1 <--- Possible / Default # of outputs
      ^       
      |       
  Default # of inputs

আপনি &প্রতিটি ফাংশনটির অর্থ কীভাবে নির্ধারণ করলেন ?

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

আমরা যে স্ক্রিপ্টটি ব্যবহার করেছি এটি এখানে রয়েছে (দুর্ভাগ্যক্রমে এটি ম্যাটল্যাবে লেখা হয়েছে এবং এমএটিএল নয় )।

এবং এখানে একটি হল হিস্টোগ্রাম উদাহরণ কয়েক $/ #ব্যবহার


1
এই বৈশিষ্ট্যটি @ স্যুভার দ্বারা প্রস্তাবিত হয়েছিল। মূলত &"ডিফল্টের প্রতি সম্মানের সাথে ইনপুট সংখ্যা 1 বৃদ্ধি" বলতে যাচ্ছিল। তার পরামর্শটি আরও কার্যকর হতে দেখা গেল
লুইস মেন্ডো

5

এমএটিএল-এর সত্যবাদী / মিথ্যা সংজ্ঞাগুলির সাথে পরিচিত হন

যদিও true( T) এবং false( F) স্পষ্টভাবে truthy এবং falsy আউটপুট প্রতিনিধিত্ব, যথাক্রমে ব্যাপকভাবে truthy সংজ্ঞা একমত / falsy আমাদের দেয় একটু MATL আরও নমনীয়তা বিট।

সংজ্ঞাটি বলে:

if (x)
    disp("x is truthy");
else
    disp("x is falsy");
end

সুতরাং আমরা একটি দ্রুত এমএটিএল সত্যবাদী / মিথ্যা পরীক্ষা লিখতে পারি যা সমস্ত ইনপুট লুপ করে প্রদর্শন করবে যে তারা সত্যবাদী বা মিথ্যা বলে বিবেচিত হয়েছিল কিনা

` ? 'truthy' } 'falsey' ]DT

এখানে একটি অনলাইন সংস্করণ।

এমএটিএল এর অর্থ কী

এটি এমএটিএল (এবং সুতরাং ম্যাটল্যাব এবং অক্টাভাতে) এর মধ্যে যা অনুবাদ করে তা হ'ল যদি শর্তটি খালি না হয় এবং এর সমস্ত মানগুলির প্রকৃত উপাদানগুলি শূন্য হয় না তবে কোনও শর্তটি সত্য বলে বিবেচিত হয় । এর দুটি অংশ রয়েছে যেটিতে জোর দেওয়া উচিত।

  1. শূন্য নয় : এর অর্থ হ'ল শূন্যের সমান নয় ( ==)। এর মধ্যে ইতিবাচক সংখ্যা, নেতিবাচক সংখ্যা, নন-নাল অক্ষর ইত্যাদি অন্তর্ভুক্ত রয়েছে আপনি প্রদত্ত মানটিকে একটি logicalমান ( g) এ রূপান্তর করে সহজেই পরীক্ষা করতে পারেন বা আপনি ব্যবহার করতে পারেন~~

    F           % Falsy
    T           % Truthy
    0           % Falsy
    1           % Truthy
    2           % Truthy
    -1          % Truthy
    'a'         % Truthy
    ' '         % Truthy (ASCII 32)
    char(0)     % Falsy  (ASCII 0)  
    
  2. সমস্ত মান : সাধারণত আমরা স্কেলারগুলিকে সত্য বা মিথ্যা বলে মনে করি, তবে এমএটিএল-তে আমরা স্কেলার, সারি ভেক্টর, কলাম ভেক্টর বা এমনকি বহু-মাত্রিক ম্যাট্রিকগুলি মূল্যায়ন করতে পারি এবং সেগুলি সত্যবাদী হিসাবে বিবেচিত হয় যদি এবং কেবলমাত্র প্রতিটি মান হয় অ-শূন্য (উপরে বর্ণিত হিসাবে), অন্যথায় এগুলি মিথ্যা। এখানে প্রদর্শন করার জন্য কয়েকটি উদাহরণ দেওয়া হল

    [1, 1, 1]           % Truthy
    [1, 0, 0]           % Falsey
    [1, 1, 1; 1, 1, 1]  % Truthy
    [1, 0, 1; 1, 1, 1]  % Falsey
    'Hello World'       % Truthy
    

উপরে উল্লিখিত হিসাবে এক প্রান্তের []কেসটি একটি খালি অ্যারে , যা সর্বদা মিথ্যা বলে বিবেচিত হয় ( উদাহরণস্বরূপ )

আমি কীভাবে এটি গল্ফের জন্য আরও ভালভাবে ব্যবহার করতে পারি?

যদি চ্যালেঞ্জটি কেবল উল্লেখ করে যে আপনার আউটপুট সত্যবাদী বা মিথ্যা হওয়া উচিত, আপনি সম্ভবত উত্তরটি বন্ধ করে কয়েক বাইট ছাঁটাই করতে উপরের সংজ্ঞাটি কাজে লাগাতে পারেন। বিভ্রান্তি বাঁচাতে, আপনাকে এমএটিএল সত্যবাদী / মিথ্যা মানগুলি কীভাবে কাজ করে তা ব্যাখ্যা করতে আপনার উত্তরটিতে উপরের অনলাইন সত্যবাদী / মিথ্যা পরীক্ষার একটি লিঙ্ক অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয়।

কয়েকটি নির্দিষ্ট উদাহরণ:

  • একটি উত্তর শেষ হয় A। চ্যালেঞ্জ একটি truthy বা falsy আউটপুট প্রয়োজনীয় এবং আপনার উত্তর বন্ধ করে দেন all( A) একটি স্কেলার তৈরি করতে, আপনি এই গত বাইট অপসারণ করতে পারেন এবং আপনার উত্তরটি সঠিক থাকবে (যদি না আউটপুট []থেকে []হয় falseকিন্তু []Aহল true)।

  • পর্বত একটি অ্যারের শুধুমাত্র একটি অনন্য মান রয়েছে : ব্যবহার &=স্থানে un1=। যদি অ্যারেতে সমস্ত মান সমান হয় তবে একটি সম্প্রচারিত উপাদান-ভিত্তিক সমতা তুলনা করলে সকলের একটি N x Nম্যাট্রিক্স পাওয়া যায়। যদি সমস্ত মান সমান না হয়, তবে এই ম্যাট্রিক্সটিতে কিছু 0মান থাকবে এবং তাই এটি মিথ্যা বলে বিবেচিত হবে।


4

অন্তর্নির্মিত ইনপুট

বেশিরভাগ ফাংশন কিছু সংখ্যক ইনপুট গ্রহণ করে। এই ইনপুটগুলি স্ট্যাকের শীর্ষ থেকে নেওয়া হয়। যদি স্ট্যাকের শীর্ষে পর্যাপ্ত আর্গুমেন্ট না থাকে তবে এটি ইনপুট থেকে বাকী যুক্তি আঁকবে। (ডকুমেন্টেশনে বিভাগ 7.3 দেখুন) আমি মূল ব্যাখ্যাটি উদ্ধৃত করতে চাই:

অন্তর্নিহিত ইনপুটগুলি নিম্নরূপে দেখা যেতে পারে: স্ট্যাকটি নীচে নীচে অনির্দিষ্টকালের জন্য প্রসারিত হয়, এটি হল 0, −1, −2, পজিশনে ... যে মানগুলি প্রাথমিকভাবে সংজ্ঞায়িত হয় না, তবে উড়ন্ত ইনপুট দিয়ে ফ্লাইয়ে সমাধান করা হয় । এই ইনপুটগুলি যখন প্রয়োজন হয় কেবল তখনই তাদের প্রয়োজন হয় যখন তাদের প্রয়োজন হয়। যদি একই সময়ে বেশ কয়েকটি ইনপুট প্রয়োজন হয় তবে তারা সাধারণ স্ট্যাক ক্রম অনুসরণ করে, অর্থাত্, (বর্ধিত) স্ট্যাকের গভীরতম ইনপুটটি প্রথমে প্রবেশ করা হয়।


2
অন্তর্নিহিত ইনপুটটি এমন একটি বৈশিষ্ট্য যা @ ফ্লোয়ার
লুইস মেন্ডো

6
@ ফ্লোয়ার অবশ্যই একটি চতুর লোক হতে হবে। : ডি
ত্রুটিপূর্ণ

3

লজিকাল অ্যারে প্রায়শই সংখ্যাসূচক অ্যারে হিসাবে ব্যবহার করা যেতে পারে

আপনি প্রায়শই শিরোনামের TFঅ্যারে আক্ষরিকের পরিবর্তে " " স্বরলিপি ব্যবহার করতে পারেন । উদাহরণস্বরূপ, FTFএকই হিসাবে [0,1,0], কেবল যা মান FTFউত্পাদন করে, logicalমানগুলি না double। এটি সাধারণত কোনও সমস্যা হয় না, কারণ কোনও পাটিগণিত ক্রিয়াকলাপটি যৌক্তিক মানকে সংখ্যা হিসাবে বিবেচনা করবে। উদাহরণস্বরূপ, FTFQদেয় [1,2,1]( Q"1 দ্বারা 1 বৃদ্ধি")।

কিছু ক্ষেত্রে, বাইনারিতে কোনও সংখ্যার রূপান্তর সংক্ষিপ্ত হতে পারে। উদাহরণস্বরূপ, [1,0,1], TFTএবং 5Bএকই; আবার সাবধানতার সাথে যে দ্বিতীয়টি logicalমান।


সূচক হিসাবে ব্যবহৃত হলে TF(যৌক্তিক) এবং [1 0](সংখ্যাসূচক) বিষয়গুলির মধ্যে পার্থক্য এমন একটি ক্ষেত্রে । ধরনের একটি অ্যারে logicalএকটি সূচক উপায় হিসেবে ব্যবহৃত: সংশ্লিষ্ট উপাদানের বাছাই T, যারা সংশ্লিষ্ট বাতিল F। সুতরাং [10 20]TF)উত্পাদিত হয় 10(প্রথম উপাদানটি নির্বাচন করুন), যেখানে [10 20][1 0])উত্পাদন করে [10 20](সূচকের [1 0]ব্যাখ্যার অর্থ 1:endহল, অ্যারের সমস্ত উপাদান বেছে নিন)।


3

আকার লুপ জন্য এন -1

প্রতিস্থাপনের জন্য বিবেচনা কর

tnq:"...

সঙ্গে

td"...

একটি সম্পূর্ণ বাইট বা আরও কিছুতে সঞ্চয় করতে ।


@ লুইস সত্য! আমি ভেবেছিলাম যে লুপ করা হচ্ছে এমন একটির আসল ভেক্টরের প্রয়োজন হতে পারে তবে এটি প্রথম পদ্ধতির মধ্যেও সম্ভব নয়। সেই মন্তব্য সরিয়ে দেবে।
সান্চাইজস

তবে আপনি অগত্যা 1 বাইট সংরক্ষণ করবেন না; আপনার প্রয়োজন @/ X@লুপের মধ্যে থাকা বা না দরকার তার উপর নির্ভর করে আপনি 1 বা 2 সঞ্চয় করেন । হতে পারে আপনি কেবল "বাইটস সংরক্ষণ করতে" বলতে পারেন
লুইস মেন্ডো

3

অন্তর্নিহিত শেষটি কাজে লাগানোর জন্য লুপের পরে জিনিসগুলি লুপের মধ্যে নিয়ে যান

লুপ endস্টেটমেন্টগুলি, যদি তাদের পরে কোনও কোড না থাকে তবে এগুলি ছেড়ে] যেতে পারে । এগুলি এমএটিএল পার্সার দ্বারা অন্তর্নিহিতভাবে পূরণ করা হয়।

সুতরাং যদি আপনি লুপের পরে জিনিসগুলি লুপের মধ্যে সরিয়ে নিতে পারেন তবে আপনি ফাইনালটি সংরক্ষণ করতে পারেন ]

সুনির্দিষ্ট উদাহরণ হিসাবে, নীচের কোডটি একটি সংখ্যার ফ্যাক্টরিয়ালটিতে কতগুলি অনুবর্তনকারী শূন্য রয়েছে তা খুঁজে পেয়েছে N(এটি এখানে দেখুন ):

  • কোড থেকে লুপ 1হয় N
  • এই সংখ্যার প্রত্যেকটির জন্য এটি তার মূল কারণগুলি গণনা করে এবং কতবার 5উপস্থিত তা নির্ধারণ করে ।
  • উত্তরটি হ'ল সংক্ষিপ্ত পরিমাণ 5প্রদর্শিত হয় (এটি কাজ করে কারণ প্রত্যেকটির জন্য 5কমপক্ষে একটি রয়েছে 2)।

প্রথম ধারণাটি ছিল :"@Yf5=]vs(লক্ষ্য করুন লুপের পরে বিবৃতি রয়েছে):

:      % Range from 1 to implicit input
"      % For each number in that vector
  @    %   Push that number
  Yf   %   Vector of prime factors (with repetitions)
  5=   %   True for entries that equal `5`, and `false` for the rest
]      % End for
v      % Concatenate all vectors as a column vector
s      % Sum. Implicitly display

যেহেতু vডিফল্টরূপে সমস্ত স্ট্যাকের বিষয়বস্তু সম্মিলিত হয়, তাই এটি লুপে স্থানান্তরিত হতে পারে। এবং যেহেতু সংযোজনটি সহকারী, sতাই খুব সরানো যায়। ]এটি কোডের শেষে চলে যায় এবং সুতরাং এটি বাদ দেওয়া যেতে পারে :"@Yf5=vs:

:      % Range from 1 to implicit input
"      % For each number in that vector
  @    %   Push that number
  Yf   %   Vector of prime factors (with repetitions)
  5=   %   True for entries that equal `5`, and `false` for the rest
  v    % Concatenate all vectors so far as a column vector
  s    % Sum. Inplicitly end loop and display

আমি এই হায়ারোগ্লিফিক-একই মত লিখিত ভাষার একটি ডাইম জানি না তবে আমি আমার সময়ের একটি দুর্দান্ত অংশ আগামী তিন মাস পরের জন্য এটি অধ্যয়ন করব।
16'6 এ

@ আগওয়া 1001 :-) আপনি দেখতে পাবেন এটি মতলবের সাথে বেশ মিল। আপনি এখানে
লুইস মেন্ডো

3

খালি সংখ্যার অ্যারের সংক্ষিপ্ততর উপায়, যদি স্ট্যাকটি খালি থাকে

খালি সংখ্যার অ্যারেটি ধাক্কা দেওয়ার জন্য আপনি সাধারণত ব্যবহার করেন []। তবে, স্ট্যাকটি খালি থাকলে আপনি ব্যবহার করে একটি বাইট সংরক্ষণ করতে পারেন v। এই ফাংশনটি ডিফল্টরূপে সমস্ত স্ট্যাকের বিষয়বস্তু উল্লম্বভাবে সম্মতি দেয়, সুতরাং স্ট্যাকটি খালি থাকলে এটি খালি অ্যারে উত্পাদন করে produces

আপনি উদাহরণস্বরূপ এখানে এটি কর্মে দেখতে পারেন ।


2

কিছু ফাংশন ম্যাটল্যাব বা অক্টেভের সাথে তুলনা করে বাড়ানো হয়েছে

আপনি যদি ম্যাটল্যাব বা অক্টাভা থেকে এসেছেন, আপনি অনেকগুলি এমএটিএল ফাংশনগুলি সেই ভাষাগুলির ফাংশনের অনুরূপ দেখতে পাবেন। তবে এর মধ্যে বেশ কয়েকটিতে কার্যকারিতা বাড়ানো হয়েছে।

উদাহরণ হিসাবে, ম্যাটল্যাবের reshapeফাংশনটি বিবেচনা করুন , যা এমএটিএল এর সাথে সম্পর্কিত e। কোড স্নিপেটস reshape([10 20 30 40 50 60], 2, 3)এবং reshape([10 20 30 40 50 60], 2, [])যথাক্রমে "সারি ভেক্টরকে [10 20 30 40 50 602 × 3 ম্যাট্রিক্সে পুনরায় আকার দিন " বা "2-সারি ম্যাট্রিক্সে প্রয়োজনীয় সংখ্যক কলামের সাথে" রূপান্তর করুন। সুতরাং ফলাফল, উভয় ক্ষেত্রেই 2D অ্যারে হয়

10    30    50
20    40    60

অসামঞ্জস্যপূর্ণ আকারের কারণে এমন কিছু reshape([10 20 30 40 50 60], 2, 2)বা reshape([10 20 30 40 50 60], 5, [])ত্রুটি দেয়। তবে এমএটিএল প্রথম ক্ষেত্রে উপাদানগুলি সরিয়ে ফেলবে ( অনলাইনে এটি ব্যবহার করে দেখুন! ) বা উত্পাদন করতে যথাক্রমে দ্বিতীয়টিতে শূন্যগুলি পূরণ করুন ( অনলাইনে এটি চেষ্টা করুন! ),

10 30
20 40 

এবং

10 60
20  0
30  0
40  0
50  0

অন্যান্য ফাংশন যা তাদের ম্যাটল্যাব অংশগুলির সাথে তুলনা করে কার্যকারিতা বাড়িয়েছে সেগুলি হ'ল (অ-বহনযোগ্য তালিকা) S( sort), Yb( strsplit),m ( ismember), h( horzcat), v( vertcat), Zd( gcd), Zm( lcm), YS( circshift), YA( dec2base), ZA( base2dec), Z"( blanks)।


1

যদি কোনও হয় তবে প্রথম অ-শূন্য উপাদানটির সূচক পান

fফাংশন সব নন-জিরো একটি অ্যারের উপাদানের সূচকের দেয়। প্রায়শই আপনি প্রথম ননজারো উপাদানটির সূচক চান । এটি হ'ল f1): প্রয়োগ করুন fএবং এর প্রথম উপাদানটি চয়ন করুন। তবে যদি মূল অ্যারেটিতে কোনও শূন্য-মান না থাকে তবে fএকটি ফাঁকা অ্যারে ( []) আউটপুট আসবে এবং এর প্রথম উপাদানটি বাছাই করার চেষ্টা করলে ত্রুটি ঘটবে।

একটি সাধারণ, আরও দৃ requirement় প্রয়োজনীয়তা হ'ল প্রথম উপাদানটির সূচক প্রাপ্ত করা যদি কমপক্ষে একটি থাকে এবং []অন্যথায় অন্য । এটি একটি ifশাখার পরেও করা যেতে পারে fতবে এটি বাইট-ব্যয়বহুল। আরও ভাল উপায় হ'ল fX<, X<আউটপুটে সর্বনিম্ন ফাংশন প্রয়োগ করুন fX<এর ইনপুটটি খালি অ্যারে হলে একটি খালি অ্যারে প্রদান করে

এটি অনলাইন চেষ্টা করুন! (দ্রষ্টব্য যে কোনও খালি অ্যারেটি প্রদর্শিত হয় না)। অথবা এখানে কাজ করে এর উদাহরণ দেখুন ।


1

প্রদত্ত অ্যারে যতক্ষণ না একটি ব্যাপ্তি তৈরি করে

টিএল; ডাব্লুআর : ব্যবহার করুনfn: অ্যারেতে কেবল ননজারো উপাদান রয়েছে কিনা তার পরিবর্তে করুন ।


এটি প্রায়শই এমন ক্ষেত্রে ঘটে যে কোনওর জন্য একটি অ্যারে তৈরি করা প্রয়োজন [1 2 ... L]যেখানে Lপ্রদত্ত অ্যারের উপাদানের সংখ্যা। এটি করার মানক উপায় n:। উদাহরণস্বরূপ, কোডtn:* একটি সংখ্যক ভেক্টরকে ইনপুট হিসাবে গ্রহণ করে এবং প্রতিটি সূচকে তার সূচক দ্বারা গুণিত করে utes

যদি প্রদত্ত অ্যারেটি কেবল ননজারো এন্ট্রিগুলি রাখার গ্যারান্টিযুক্ত হয় (উদাহরণস্বরূপ, এটি ইতিবাচক পূর্ণসংখ্যার দ্বারা গঠিত হয়, বা মুদ্রণযোগ্য অক্ষরগুলির সাথে স্ট্রিং হয়), n:প্রতিস্থাপন করা যেতে পারে f, যা ননজারো এন্ট্রিগুলির সূচকগুলির সাথে একটি অ্যারে তৈরি করে। সুতরাং উপরের কোডটি হয়ে যায় tf*, যা 1 বাইট সংরক্ষণ করে।

আরও কয়েকটি বিস্তৃত উদাহরণ: 1 , 2 , 3


1

দক্ষতার সাথে সংখ্যার অ্যারে আক্ষরিক সংজ্ঞা দেওয়া হচ্ছে

অঙ্কের অ্যারে আক্ষরিক সংজ্ঞা দেওয়ার সময় এখানে কয়েকটি উপায় বাইট সংরক্ষণ করতে ব্যবহার করা যেতে পারে। লিঙ্কগুলি উত্তরগুলি দেওয়া হয় যা সেগুলি ব্যবহার করে। এগুলি @ স্যুভার দ্বারা নির্মিত অ্যানালিটিক্স স্ক্রিপ্ট ব্যবহার করে প্রাপ্ত করা হয়েছে ।

সংঘবদ্ধতা এবং পূর্বনির্ধারিত আক্ষরিক

ছোট সংখ্যার অ্যারে জন্য আপনি মাঝে মাঝে সংযুক্তকরণের (ফাংশন ব্যবহার করতে পারেন hএবং vবিভাজক হিসেবে শূণ্যস্থান ব্যবহার এড়াতে), সেইসাথে পূর্বনির্ধারিত লিটারেল: তুলনা [2 4], 2 4hএবং 2Kh, যার মধ্যে সব অ্যারের সংজ্ঞায়িত [2 4]। একইভাবে, 2K1vএকটি খালি স্ট্যাক সংজ্ঞায়িত করে [2; 4; 1]উদাহরণ

সংখ্যাযুক্ত অ্যারে আক্ষরিক মধ্যে অক্ষর

কিছুটা বড় সংখ্যার জন্য আপনি কিছু অক্ষরের অ্যারের লিটারেলের মধ্যে সংখ্যাগত অর্থ রয়েছে এই সত্যটি কাজে লাগিয়ে স্পেসগুলি সংরক্ষণ করতে পারেন। পরিবর্তে [3 5 2 7;-4 10 12 5]আপনি ব্যবহার করতে পারেন [IAHC;dX12A]উদাহরণ

বিশেষত, অ্যারে আক্ষরিক মধ্যে,

  • O, l, H I Kতাদের স্বাভাবিক অর্থ আছে0 , ...,4
  • A, ..., Eমানে5 , ...,9
  • X মানে 10
  • a, ... dমানে-1 , ...,-4
  • Jএবং Gমানে 1jএবং-1j
  • P মানে pi
  • Y মানে inf
  • Nমানে NaN

স্ট্রিং এবং টানা পার্থক্য

বড় সংখ্যার জন্য, একটি স্ট্রিং সংজ্ঞায়িত করা এবং এর ক্রমাগত পার্থক্যগুলি (সহ d) গণনা করা সহায়তা করতে পারে: পরিবর্তে [20 10 35 -6]আপনি ব্যবহার করতে পারেন '!5?b\'d। এটি কার্যকর কারণ dপার্থক্য গণনা করার জন্য অক্ষরের কোড পয়েন্ট ব্যবহার করে। উদাহরণ

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