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


16

প্রোলোগে গল্ফ করার জন্য আপনার কাছে কোন সাধারণ টিপস রয়েছে? আমি এমন ধারণাগুলি সন্ধান করছি যা সাধারণত গল্ফ সমস্যার ক্ষেত্রে প্রোগল-এর জন্য অন্তত কিছুটা নির্দিষ্ট ক্ষেত্রে প্রয়োগ করা যেতে পারে (যেমন প্রোগ্রামগুলির আকার হ্রাস করার জন্য একটি বর্ণের ভেরিয়েবলগুলি প্রোলোগের সাথে সুনির্দিষ্ট নয়)।

দয়া করে আপনার টিপসগুলিতে ইঙ্গিত করুন যদি এটি প্রোলোগের কোনও প্রয়োগের ক্ষেত্রে নির্দিষ্ট হয় (যেমন SWI-Prolog নির্দিষ্ট বিল্ট-ইনগুলি)

দয়া করে প্রতি উত্তরে কেবল একটি টিপ, বা একই মূল ধারণার সাথে নিবিড়ভাবে সম্পর্কিত টিপসের একটি তালিকা পোস্ট করুন।


1
prologট্যাগ ধরণ অনর্থক। আমাদের কাছে ইন্টারপ্লেট প্রোলজ চ্যালেঞ্জ না থাকলে আমাদের এটির দরকার নেই।
বিড়াল

উত্তর:


11

প্রিডিকেট নামগুলির জন্য অপারেটরগুলি ব্যবহার করুন

ভবিষ্যদ্বাণীকারী অপারেটরদের নাম হিসাবে দেওয়া সম্ভব যতক্ষণ অপারেটর পূর্বনির্ধারিত অপারেটরগুলির মধ্যে একটি ( এখানে তালিকাভুক্ত ) এবং ইতিমধ্যে একটি প্রাকটিক হিসাবে সংজ্ঞায়িত হয়নি। এটি প্রিকিকেট সংজ্ঞায়িত করার সময় এবং কল করার সময় কয়েকটি বাইট সাশ্রয় করে যেহেতু অপারেটর পূর্বাভাসগুলি স্বাভাবিকভাবে লেখার প্রয়োজন হয় নাname(arg1,arg2,etc..) আকারে এবং অপারেটরদের সাথে প্রত্যাশা করা যেতে পারে তাকে বলা যেতে পারে।

এক এবং দুটি যুক্তি পূর্বাভাস হিসাবে, তারা যথাক্রমে অ্যানারি এবং বাইনারি অপারেটরগুলির নাম দেওয়া যেতে পারে। উচ্চতর আরিতির পূর্বাভাসের জন্য, আমরা এখনও প্যাটার্ন ম্যাচিং ব্যবহার করে বন্ধনী এড়াতে পারি। উদাহরণস্বরূপ, যদি আমাদের কোনও ভবিষ্যদ্বাণী থাকে A+B+C:-..., প্রোলোগ এটির রূপান্তর করতে তার অপারেটর অগ্রাধিকার এবং সাহসীতার নিয়ম ব্যবহার করবে (A+B)+C:-...যা একটি অপারেটর ভবিষ্যদ্বাণী যেখানে প্রথম যুক্তির সাথে প্যাটার্নটির সাথে মেলে A+B। বা A-B+C*D:-...যা হয়ে যায় (A-B)+(C*D)তাই এর প্রথম যুক্তিটি প্যাটার্নের সাথে মেলানো হয় A-Bএবং এটির দ্বিতীয়টি প্যাটার্নের সাথে মেলেC*D

উদাহরণ

_+_+_.
A-B+C*D:-between(A,B,C),C+D.
\X:-X>1,X<10.
X+Y:-length(Y,X),member(X,Y).



5+[10,5,3,2,5],a+b+c,0-20+X*[2,4,6,5,40],\9.

আউটপুট হবে X = 5.

অনলাইনে চেষ্টা করে দেখুন!

অনুসিদ্ধান্ত

যেহেতু ডিসিজিগুলি পূর্বাভাসের জন্য সিনট্যাকটিক চিনি সেগুলিকেও নামগুলির জন্য অপারেটর দেওয়া যেতে পারে। এটি কোনও ডিসিজি থেকে ডিসিজি হিসাবে কল করার সময় বা phraseভবিষ্যদ্বাণীকারী বা অন্য যেগুলি ডিসিজিগুলির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে তাদের ব্যবহার করার সময় প্রত্যাশা অনুযায়ী কাজ করে। তাদের পূর্বাভাসকারী প্রথম বন্ধনী হিসাবে কল করার সময় (যেমন A+B-->...অবশ্যই বলা উচিত+(A,B,...) ) যেহেতু ডিসিজি পূর্বাভাসগুলি তাদের পার্থক্য তালিকার জন্য অতিরিক্ত দুটি যুক্তি গ্রহণ করে। অপারেটরের প্যাটার্ন ম্যাচিংয়ের সাথে দু'বার বেশি আর্গুমেন্ট যুক্ত DCGs নামের অপারেটরের ক্ষেত্রে প্যাটার্নের সাথে মিলে যাওয়া অপারেটরগুলি সঠিকভাবে বিতরণ করা হয়েছে তা প্রিফিকেট হিসাবে কল করার সময় এটি নিশ্চিত করা গুরুত্বপূর্ণ।

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

উদাহরণ

/ -->a+b+X,X+d+e.
A+B+C-->[A],[B],[C].


X/[],member(c,X),phrase(f+o+o,Y),+(b+a,r,Z,[]).

আউটপুট হবে

X = [a, b, c, c, d, e],
Y = [f, o, o],
Z = [b, a, r].

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

আদেশ সহকারে

অ্যানারি অপারেটরগুলির সাথে +এবং -, প্রোলোগ একটি বা ভবিষ্যদ্বাণীকের কলের পরিবর্তে সংখ্যার হিসাবে ব্যাখ্যা করবে +20বা -20হিসাবে বর্ণনা করবে । অবিবাহিত বা নাম হিসাবে দেওয়া পূর্বাভাসগুলি বন্ধনী ( , ) ব্যবহার করে এখনও নাম্বারে কল করা যেতে পারে । তাহলে প্রথম বন্ধনী কাছ থেকে অতিরিক্ত বাইট এড়ানো যেমন কাম্য অন্যান্য ইউনারী অপারেটর হয় , ইত্যাদি নাম পরিবর্তে ব্যবহার করা যাবে।+/1-/1+-+(20)-(20)\$

পূর্বাভাস দেওয়া প্যাটার্ন মিল এবং অপারেটরের সংমিশ্রণ সম্পূর্ণ ত্রুটি ছাড়াই নয়। যদি আপনার কাছে দুটি পূর্বাভাস থাকে যেগুলির নামের সাথে একই অপারেটর রয়েছে এবং প্যাটার্নের সাথে মিলের সাথে একজনের তুলনায় অন্যটি সাধারণভাবে সাধারণ হয় তবে আরও সাধারণকে প্রথমে বলা যেতে পারে বা যদি কম সাধারণ একটি ব্যর্থ হয় (উত্সে তাদের ক্রম অনুসারে) । উদাহরণস্বরূপ উদাহরণস্বরূপ উদাহরণস্বরূপ যদি এর A-B+C*Dইনপুটটির সাথে মেলে ব্যর্থ হয় তবে প্রোলোগ কল করার চেষ্টা করবে X+Y। এই সময় একটি ত্রুটি পরিণাম ডেকে আনবে কারণ length/2প্রয়োজন Yএকটি পূর্ণসংখ্যা যা যেহেতু এটি আকারে হতে হবে হবে না হতে C*D। কোনও দু'জন পূর্বাভাসীর নাম হিসাবে একই অপারেটর না রয়েছে তা নিশ্চিত করে এড়ানো যায় বা যদি এটি ব্যর্থ হয় তবে উত্সটির কাট এবং সাবধানে ক্রম ব্যবহার করে।


3
কোড গল্ফের জন্য এই কৌশলটি কতটা কার্যকর তা অবাক করে। আমি কেবল এই টিপটি ব্যবহার করে একটি উত্তরের বাইট-কাউন্ট 16% কমিয়েছি!
DLosc

7

প্রতিটি সম্ভাব্য কেসকে একটি নিয়মে রাখার চেষ্টা করুন

প্রোলগ এ প্রোগ্রাম করার পরিষ্কার উপায় হ'ল একই শিকারীর জন্য একাধিক নিয়ম ঘোষণা করা। উদাহরণস্বরূপ, একটি সঞ্চয়ের সাথে একটি তালিকা বিপরীত করার জন্য একটি প্রাক্টিকেট দেখতে দেখতে এই রকম হবে:

r([],Z,Z).
r([H|T],Z,R):-r(T,[H|Z],R).

কোড-গল্ফে, আমরা প্রথম নিয়মটি সরিয়ে দিতে পারি এবং ;পুনরাবৃত্তির শেষের কোডটিতে দ্বিতীয় বিধিটির শেষে একটি যুক্ত করতে পারি:

r([H|T],Z,R):-r(T,[H|Z],R);R=[H|Z].

আমরা জানি যে প্রথম শর্ত r(T,[H|Z],R) টি খালি থাকলে ব্যর্থ হবে, অর্থাত যদি পুনরাবৃত্তিটি শেষ হওয়ার দরকার হয় এবং এইভাবে আমরা তার সমাপ্তিটিকে এর পরে বা ধারা হিসাবে যুক্ত করতে পারি।

একই নীতিটি অনেক পরিস্থিতিতে কাজ করে। তবে খেয়াল করুন যে কখনও কখনও এটি করার পরিবর্তে অন্য কোনও নিয়ম ঘোষণা করা আসলে খাটো।


7

টিপল কনস্ট্রাক্টর এবং কনস পেয়ার হিসাবে পাটিগণিত অপারেটরগুলি ব্যবহার করুন

যদি আপনার দুটি বা ততোধিক মান সমন্বিত একটি একক কাঠামো পাস করতে হয় তবে সর্বাধিক সুস্পষ্ট জিনিসটি হল একটি তালিকা is [A,B] । যদিও এটি সত্যই ভার্জোজ।

একটি বিকল্প আছে। প্রোলোগ মানগুলি একটি বেশ অনেকগুলি স্বেচ্ছাচারিত নেস্টেড কাঠামো সংরক্ষণ করতে পারে, যা মূল্যায়ন করা হয় না। এটি কীভাবে কাজ করে তা দেখানোর একটি উদাহরণ এখানে:

| ?- member(member(A,B),C).
C = [member(A,B)|_] ? ;
C = [_,member(A,B)|_] ? ;
(etc.)

member(A,B) এই পরিস্থিতিতে একটি নামমাত্র tuple, এবং বাইরের member (যা একটি ফাংশন কল) এটি এটিকে আচরণ করে।

যদিও নামযুক্ত টিপলগুলি নন-গল্ফড প্রোলোগ প্রোগ্রামিংয়ে মোটামুটি কার্যকর, তারা তালিকার পদ্ধতির চেয়ে আরও ভার্জিক মনে হতে পারে। তবে, আমরা টিউপল কনস্ট্রাক্টরের নামে যথেষ্ট পরিমাণে স্বেচ্ছাচারিত অক্ষর ব্যবহার করতে পারি (ধরে নিচ্ছি তারা সঠিকভাবে উদ্ধৃত হয়েছে); মত সুন্দর কিছু memberবা একক চরিত্রের পরিবর্তে aআমরা এরকম কিছু করতে পারি:

| ?- A = '-'('/'(1,2), '/'(3,4)).
A = 1/2-3/4

এখানে, আমাদের টুপল কনস্ট্রাক্টররা হলেন '-'এবং '/'। এবং চমত্কারভাবে মুদ্রকযন্ত্রগুলি তাদের সাথে কী করেছে তা লক্ষ্য করা আকর্ষণীয়; এটি টিপলসগুলির জন্য ইনফিক্স স্বরলিপি ব্যবহার করছে। এটি সত্যই সংক্ষিপ্ত এবং তুলনামূলক পাটিগণিত ক্রিয়াকলাপটি একইভাবে পার্স করে। (এই এছাড়াও ব্যাখ্যা দিয়েছে কেন গাণিতিক ব্যবহারসমূহ isনা =; A = 1+2ঐক্যসাধন হবে Aসঙ্গে tuple '+'(1,2) , তাই পৃথক সিনট্যাক্স আসলে unevaluated গাণিতিক এক্সপ্রেশন নির্ণয় করা প্রয়োজন হয়।) কারণ একটি tuple কন্সট্রাকটর নামক করা হয়েছে কিছু , আপনি ভাল হিসাবে একটি অক্ষর একটি বাহুল্যবর্জিত আছে ব্যবহার করতে পারেন বাক্য গঠন (এবং একটি বোনাস হিসাবে, -এবং/নন-গল্ফ কোডগুলিতে খুব সাধারণ পছন্দগুলি হ'ল তারা যখন অর্থবোধক কিছু না করে দ্রুত নিক্ষেপকারী টুপল কনস্ট্রাক্টর চান, প্রায় একইভাবেi একটি লুপ ভেরিয়েবল হিসাবে প্রায়শই ব্যবহৃত হয়, তাই যদি কোনও কারণে আপনি সেখানে টুপল চান তবে এটি আপনার ইনপুট এবং আউটপুটটিতে ব্যবহার করা সম্পূর্ণ যুক্তিসঙ্গত)

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

| ?- A = '-'('-'(1,2), '-'(3,4)).
A = 1-2-(3-4)

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

এই বাক্য গঠনটির আর একটি সুবিধা হ'ল যদি আপনাকে অভ্যন্তরীণভাবে তালিকাগুলি ব্যবহারের প্রয়োজন হয় (স্ট্যান্ডার্ড পূর্বাভাসের সাথে ইন্টারঅ্যাক্টের চেয়ে); একটি তালিকা মূলত নেস্টেড কনস সেলগুলির একটি সেট, এবং একটি কনস কনস কনস্ট্রাক্টরের সাথে একটি কোষ কেবল '.'এখানে দেখা যায়:

| ?- Q = '.'('.'(A,B),'.'(C,D)).
Q = [[A|B],C|D]

যদি আপনার কোডগুলি "ম্যানুয়ালি" তালিকাগুলি ব্যবহার করে, তবে এর চেয়ে কম ভারী টুপল কনস্ট্রাক্টরটি ব্যবহার করা অনেক অর্থবোধ করতে পারে '.'। আমার পক্ষে একটি সাধারণ পছন্দটি হ'ল কনস কনসকে প্রতিনিধিত্ব করা '/'(Tail,Head)(কারণ এটি অক্ষর নষ্ট না করে আপনি ডিবাগ আউটপুটে পেতে পারেন এমন সর্বাধিক পঠনযোগ্য)। মনে রাখবেন আপনি সম্ভবত নিজের []সমতুল্যও চাইবেন ; আপনি ব্যবহার করতে পারে[] তবে এটি দুটি বাইট দীর্ঘ, এবং এর পরিবর্তে আপনি ব্যবহার করতে পারেন এমন প্রচুর পরিমাণে একটি বাইট পরমাণু (সমস্ত ছোট হাতের অক্ষর) রয়েছে।

সুতরাং উদাহরণস্বরূপ, নিম্নলিখিত তালিকা:

[1,2,3]

একই সংখ্যক অক্ষরগুলিতে ম্যানুয়াল উপস্থাপনায় রূপান্তরিত হতে পারে:

x/3/2/1

[H|T]স্টাইলের প্যাটার্ন ম্যাচগুলি এখন আরও নিখুঁতভাবে লেখা যেতে পারে T/Hএবং এই খালি তালিকার বিরুদ্ধে একটি পরীক্ষার xচেয়ে আরও দীর্ঘায়িত হওয়ার সুবিধাটি অর্জন করে []। (অবশ্যই, এই সুস্পষ্ট অসুবিধা হল যে দিয়ে আসে member, appendইত্যাদি এই প্রতিনিধিত্ব কাজ করবে না।)


+1 টি! ব্যবহার করার সময় -এবং একক উদ্ধৃতিগুলির প্রয়োজন হয় না /। এগুলি ইতিমধ্যে সম্পূর্ণ পরমাণু oms
মাদুর

এবং, আশেপাশে একক উদ্ধৃতিগুলির প্রয়োজন নেই ., তবে নীচের অক্ষরগুলির একটি %বা লেআউট নাও থাকে provided
মিথ্যা

6

একটি কৌশল যা ঘন ঘন কার্যকর হয়: পূর্বাভাসগুলি প্রাপ্ত করতে সিএলপি (এফডি) সীমাবদ্ধতাগুলি ব্যবহার করুন যা বিভিন্ন দিক থেকে স্বয়ংক্রিয়ভাবে ব্যবহার করা যেতে পারে, সুতরাং শর্ত এবং উত্সর্গীকৃত শাখা এবং রূপগুলি এড়িয়ে চলে।

বি-প্রোলগ বা জিএনইউ প্রোলগ ব্যবহার করুন, যেখানে কোনও লাইব্রেরি লোড না করেই এই ধরণের সীমাবদ্ধতা বাক্সের বাইরে পাওয়া যায়।


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

3
আমি যে খুব ঘৃণা, এবং নিশ্চিত জন্য সময় অবশেষে আসবে library(clpfd)হিসেবে পাওয়া যাবে preloaded বা অন্তত autoloaded SWI-Prolog এছাড়াও গ্রন্থাগার। ঘোষিত পাটিগণিত সমস্ত ব্যবহারকারীর দ্বারা সম্পূর্ণরূপে বোঝা এবং প্রশংসা হওয়া অবধি কয়েক বছর সময় লাগতে পারে, যারা এখন পুরানো, নিম্ন-স্তরের বৈশিষ্ট্য সহ কয়েক দশক ধরে অভিজ্ঞতা অর্জন করেছেন। আপনি সিএলপি (এফডি) যত বেশি ব্যবহার এবং সমর্থন করবেন, তত তাড়াতাড়ি আমরা এটি ডিফল্টরূপে পেয়ে যাব। ততক্ষণে, আপনি কেবল :- use_module(library(clpfd)).আপনার ~/.swiplrcএবং ন্যায়বিচারে লিখতে পারেন যে আপনি এসডাব্লুআই-প্রোলোগের "বৈকল্পিক" ব্যবহার করছেন।
মাদুর

5

তালিকার তালিকাগুলির জন্য সংক্ষিপ্ত আকার এবং মানচিত্র ঘোষণার একটি উপায় way

আপনি তালিকার তালিকাগুলিতে বাইট সংরক্ষণ করতে পারেন। আপনার যদি একটি তালিকা থাকে তবে আপনি [[1,2],[3,4]]এটিকে প্রকৃতপক্ষে ঘোষণা করতে পারেন [1:2,3:4]যা 4 টি বন্ধনী = 4 বাইট সংরক্ষণ করে। মনে রাখবেন আপনি :(উদাহরণস্বরূপ ^) ব্যতীত অন্য কিছু ব্যবহার করতে পারেন ।

1:2আসলে সেই ক্ষেত্রে কোনও তালিকা নয় (যেখানে [1,2]ছিল), এটি অভ্যন্তরীণভাবে প্রতিনিধিত্ব করা হয় :(1,2)। অতএব আপনি কলোন ব্যবহার করে এমন সাবলিস্টগুলির তালিকায় কাজ করে এমন পূর্বাভাসগুলি ব্যবহার করতে পারবেন না।

এই কৌশলটি মূলত মানচিত্র ঘোষণার জন্য ব্যবহৃত হয়, অর্থ সংযুক্ত মানগুলির সাথে কীগুলির একটি তালিকা। উদাহরণস্বরূপ, আপনি যদি Mএমন কোনও মানচিত্র ঘোষণা করতে চান যাতে ইংরেজি এবং ফরাসি উভয় ক্ষেত্রেই একটি অঙ্কের বানান থাকে তবে আপনি এরকম কিছু করতে পারেন:

M=[0:'Zero':'Zéro',1:'One':'Un',2:'Two':'Deux', ... ]

তারপরে আপনি উদাহরণস্বরূপ কোনও বিল্ট-ইন প্রিকেটের মতো মানচিত্রের উপাদানগুলি পুনরুদ্ধার করতে পারেন member/2। উদাহরণস্বরূপ, যদি আপনি অঙ্ক ও ইংরেজি শব্দ সংশ্লিষ্ট চান 'Quatre'মধ্যে M, আপনি কি পারে:

member(Digit:Name:'Quatre',M).

1
আপনি এই সাধারণ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি wirte করতে [[1,2],[3,4]]যেমন 1*2+3*4যা, +(*(1,2),*(3,4))এবং এইভাবে এছাড়াও শুধুমাত্র একটি বাইট যেখানে আপনি অন্যথায় খোলার এবং বন্ধ প্রথম বন্ধনী জন্য, দুই হবে ব্যবহার করুন।
মাদুর

ডাবল উদ্ধৃতি তালিকাগুলি আরও খাটো: "abc"স্থির[a,b,c]
মিথ্যা

5

একটি ঝরঝরে কৌশল: আপনার যখন ব্যর্থ হওয়া দরকার তখন এমন কিছু ব্যবহার করুন যা মিথ্যা / 0 এর সমান  , তবে আরও ছোট, যেমন:

? - পুনরাবৃত্তি, লিখন (হাই), 0 = 1

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

যখন আমি এই ;-) লিখেছিলেন আমিও যে উদ্ধৃতি সম্পর্কে চিন্তা ছিল
মাদুর

2
আমাদের সত্যই উভয় সংস্করণ, \+!বামদিকে অন্যান্য গ্রাফিক চরিত্রের 0=1আঠালো প্রয়োজন , অন্যদিকে নামের জন্য আঠালো।
মিথ্যা

5

বিভিন্ন কলিং মোডের সাথে একটি শিকারী পুনরায় ব্যবহার করুন

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

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