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


15

কাঠকয়লা হ'ল ASCII- এবং DLosc দ্বারা নির্মিত এমন একটি ভাষা যা ASCII শিল্প চ্যালেঞ্জগুলিতে বিশেষীকরণ করে।

চারকোলে গল্ফ করার জন্য আপনার কাছে কী টিপস রয়েছে? স্পষ্টতই আমি কাঠকয়ালের সাথে সম্পর্কিত বিশেষভাবে টিপস সন্ধান করছি, সেগুলি নয় যা বেশিরভাগ ক্ষেত্রে - যদি না হয় তবে - ভাষাতে প্রয়োগ করা যেতে পারে।


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

উত্তর:


5

ডিভেরবোসিফায়ারের সুবিধা নিন

ডিভেরবোসিফায়ার ব্যবহারের অর্থ আপনি ASCII এ লিখতে পারেন ( --dvবা --deverbosifyডিভের্বোসাইফাই করতে, -vবা ভার্বোজ --verboseকোড হিসাবে কার্যকর করতে)। তদ্ব্যতীত, এটি আপনার জন্য স্ট্রিংগুলি সংকুচিত করে, যখন সংকোচন করার স্ট্রিংটি দীর্ঘ হয় তখন কিছু ASCII- শিল্প চ্যালেঞ্জগুলিতে কার্যকর হতে পারে।

@ নীল-vl বা ব্যবহারের পরামর্শ দেয় -v --sl। এটি সংক্ষিপ্ত --verbose --showlength, এর অর্থ এটি ভার্জোজ চারকোল হিসাবে ব্যাখ্যা করা হবে এবং সাধারণ কাঠকয়ালের কোডটির দৈর্ঘ্য প্রদর্শিত হবে। এছাড়াও, ডাইভারবোসিফাই করার সময়, ইনপুটটি সঠিকভাবে পার্স করা হয়েছে তা নিশ্চিত করার জন্য আউটপুটটি পরীক্ষা করে দেখুন, যেহেতু চারকোল সাধারণত পার্স ত্রুটি উপেক্ষা করে। যদি হয় একটি বাক্য গঠন ত্রুটি, ব্যবহার -a( --astify) অথবা --oa( --onlyastify) সমস্যা সাহায্য চিত্র।


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

3

অতিরিক্ত বোঝা ব্যবহার করুন

উদাহরণস্বরূপ, অনেক কমান্ডের কেবল একটি যুক্তি প্রয়োজন:

  • Rectangle, Oblongএবং Boxএকটি মাত্র যুক্তি দেওয়া থাকলে একটি বর্গাকার তৈরি করুন
  • Reflect ডান প্রতিফলিত করতে ডিফল্ট আদেশ
  • Rotate ডিফল্টকে 90 ডিগ্রি ঘড়ির কাঁটার বিপরীতে কমান্ড দেয়
  • Polygonএবং PolygonHollowএকটি বহুমাত্রিক এবং একটি পক্ষের দৈর্ঘ্য গ্রহণ করতে পারে। পক্ষের সমস্ত একই দৈর্ঘ্য হলে এটি ব্যবহার করা যেতে পারে।

আমি ঘটনাটি PolygonHollowদুর্ঘটনাক্রমে আবিষ্কার করেছিলাম । এমনকি আপনি বেশ কয়েকটি বহুমাত্রিকও থাকতে পারেন, তবে এগুলি স্বাভাবিক তীরগুলির আগে আসতে হবে (এই সীমাটি উদ্দেশ্যমূলক কিনা তা আমি জানি না)। আমি এটি "কিউব আঁকুন" চ্যালেঞ্জের জবাবে আমার উত্তরটিতে ব্যবহার করেছি।
নিল

হুম সীমাবদ্ধতা বিনীত ইচ্ছাকৃত, তবে আমার ধারণা এটি পরিবর্তন করা উচিত কারণ এটি কোনওভাবেই ক্ষতি করবে না
এএসসিআইআই-

আমি দেখতে পেয়েছি যে আপনি কোনও ক্রমে তীর এবং বহু-দিকনির্দেশ গ্রহণ করার জন্য বহুভুজকে স্থির করেছেন, ধন্যবাদ! আমি এখানে থাকাকালীন আমি প্রতিটি দিকনির্দেশের জন্য ReflectButterfly dlsকল করার প্রত্যাশা করছিলাম ReflectButterflyতবে (উইকিটি সঠিকভাবে নথি হিসাবে) এটি আসলে কল করে ReflectOverlap
নীল

@ নীল লোল উফ, আমি এএসএপি ঠিক করার চেষ্টা করব (আমার মনে হয় এটি খুব কাকতালীয়)
এএসসিআই-কেবল

3

একই ধরণের ধারাবাহিক ধ্রুবক এড়িয়ে চলুন

উদাহরণস্বরূপ, Plus(Times(i, 2), 1)হিসাবে অনুবাদ⁺×鲦¹ , কিন্তু আপনি পরামিতি সুইচিং দ্বারা একটি বাইট সংরক্ষণ করতে পারেন: Plus(1, Times(i, 2))যেমন অনুবাদ ⁺¹×ι²এবং Plus(Times(2, i), 1)যেমন ⁺ײι¹উভয় যার একটি বাইট সংরক্ষণ করুন। Plus(1, Times(2, i))(যা এর হিসাবে অনুবাদ করে ⁺¹×²ι) আরও ভাল হবে যদি এটির অনুসরণ করে আরও একটি সংখ্যক ধ্রুব থাকে।


3

পূর্বনির্ধারিত ভেরিয়েবলগুলি ব্যবহার করুন

এখানে সংযুক্ত গ্রীক চিঠি এবং এটি প্রতিনিধিত্ব করে এমন ক্রিয়াপদ পত্র প্রদান করে এমন সমস্ত ভেরিয়েবলের একটি তালিকা এখানে রয়েছে।

α/a: The uppercase alphabet
β/b: The lowercase alphabet
γ/g: A string of all the ASCII characters from space to ~
δ/d: The fifth input
ε/e: The fourth input
ζ/z: The third input
η/h: The second input
θ/q: The first input
υ/u: An empty array
φ/f: 1000
χ/c: 10
ψ/y: The null character
ω/w: The empty string

পর্যাপ্ত ইনপুট না থাকলে ইনপুট উপস্থাপন করে ভেরিয়েবলগুলি খালি থাকবে, তবে এখানে প্রদর্শিত না হওয়া সমস্ত অন্যান্য ভেরিয়েবলগুলি অবশ্যই ব্যবহারের আগে বরাদ্দ করতে হবে।


এগুলি এখন টিআইও-তে স্থির করা উচিত, এটির কাজটি যাচাই করতে পারলে ভাল লাগবে
এএসসিআইআই-

@ এএসসিআইআই-কেবল আপনি কি তা নিশ্চিত করতে পারবেন yএবং fআমি যা আটকিয়েছি তার থেকে অন্যভাবে? (আমি মূলত এটি লেখার সময় গ্রীক চিঠিগুলি ভুলভাবে লিখতে পারি))
নিল

হ্যাঁ তারা অন্য উপায়ে
ASCII- কেবল

3

আপনার প্রতিচ্ছবি এবং আবর্তন শিখুন

বেসিক প্রতিবিম্ব এবং ঘূর্ণনের অনেকগুলি বৈচিত্র রয়েছে, তাই সূক্ষ্ম পার্থক্য কী তা জানার জন্য এটি অর্থ প্রদান করে। সারণীর কী:

  • কমান্ড: ভার্বোস মোডে কমান্ডের নাম।
  • রূপান্তর: চরকোলগুলি আয়না বা ঘোরার সাথে অক্ষরগুলি উল্টাতে বা ঘোরানোর চেষ্টা করা উচিত। উদাহরণস্বরূপ, একটি ঘোরানো বা উল্টানো পরে /হতে পারে \
  • আসল রাখুন: চারকোলের ফলাফলটি মূল ক্যানভাসের সাথে একীভূত করা উচিত।
  • ওভারল্যাপ: (কীপটি আসল আসল হ্যাঁ হলে কেবল তখনই প্রযোজ্য) প্রতিচ্ছবিগুলির ক্ষেত্রে, সারি / কলামগুলির সংখ্যার সমতুল্য যেগুলি প্রভাবিত হয় না এবং ফলাফলের মাঝখানে শেষ হয়। আবর্তনের ক্ষেত্রে, ঘোরানো অনুলিপিটি মূলতে পরিষ্কার অঞ্চলগুলি (তবে ফাঁকা নয়) ওভাররাইট করার অনুমতি দেয়।

ভাবনা

|         Command         | Transform | Keep Original | Overlap |
|-------------------------|-----------|---------------|---------|
| Reflect                 | No        | No            | n/a     |
| ReflectCopy             | No        | Yes           | 0       |
| ReflectOverlap          | No        | Yes           | 1       |
| ReflectOverlapOverlap   | No        | Yes           | n       |
| ReflectTransform        | Yes       | No            | n/a     |
| ReflectMirror           | Yes       | Yes           | 0       |
| ReflectButterfly        | Yes       | Yes           | 1       |
| ReflectButterflyOverlap | Yes       | Yes           | n       |

প্রতিবিম্বের দিকটি optionচ্ছিক। ডিফল্ট হ'ল একবার ডান প্রতিফলিত। সেই প্রতিবিম্বগুলির জন্য যা মূল রাখে, একাধিক দিক অনুমোদিত হয় যা প্রতিটি নির্দেশের জন্য কেবল কমান্ডটি পুনরাবৃত্তি করে। (এর অর্থ হল উদাহরণস্বরূপ ReflectMirror(:¬)মোট চারটি অনুলিপি তৈরি হবে create)

কার্সারটি প্রতিবিম্বের সাথে সরানো হয় (মূলটি রাখার পরেও)।

ঘুর্ণন

|         Command         | Transform | Keep Original | Overlap |
|-------------------------|-----------|---------------|---------|
| Rotate                  | No        | No            | n/a     |
| RotateCopy              | No        | Yes           | 0       |
| RotateOverlap           | No        | Yes           | 1       |
| RotateOverlapOverlap    | No        | Yes           | n       |
| RotateTransform         | Yes       | No            | n/a     |
| RotatePrism             | Yes       | Yes           | 0       |
| RotateShutter           | Yes       | Yes           | 1       |
| RotateShutterOverlap    | Yes       | Yes           | n       |

আসলটি রাখে এমন ঘূর্ণনগুলির জন্য, ঘূর্ণনের একটি optionচ্ছিক উত্স রয়েছে। ডিফল্টটি ক্যানভাসের নীচে ডানদিকে। অনুমোদিত মানগুলি হ'ল যে কোনও তির্যক দিক।

ঘূর্ণনের পরিমাণ (45 ° ইনক্রিমেন্টে) alচ্ছিক। ডিফল্টটি 2, অর্থাৎ 90 ° অ্যান্টিক্লকওয়াইজ (বিপরীত দিকে)। আসলটি ধরে রাখে এমন ঘূর্ণনগুলির জন্য, দুটি বিকল্প বিকল্প রয়েছে: একটি মাল্টিডিজিট পূর্ণসংখ্যা প্রতিটি অঙ্কের জন্য একবার ক্যানভাস ঘোরানোর জন্য নির্দিষ্ট করে এবং ফলাফলগুলি মার্জ করে, যখন একটি পূর্ণসংখ্যা তালিকা প্রতিটি ঘোরার জন্য কমান্ডটি কেবল পুনরাবৃত্তি করে, তার পরিবর্তনের ফলাফলের উপর নির্ভর করে চলক ফলাফলগুলি ক্যানভাস মধ্যে পরিবর্তন।


প্রশ্ন: Transformমানে কি?
ক্যালকুলেটরফলাইন

পছন্দ করুন যেসব ক্ষেত্রে ট্রান্সফর্ম নেই সেগুলি কেবল একটি চরিত্রের জন্য-চরিত্রের অনুলিপি। উদাহরণস্বরূপ, "4> 2" এর একটি আদর্শ প্রতিবিম্ব কেবল বিপরীত ক্রমের অক্ষর, যেমন "2> 4"। এটি সর্বদা কাম্য নয়, সুতরাং অক্ষরগুলি সর্বাধিক উপযুক্ত পদ্ধতিতে স্যুইচ করার চেষ্টা করুন, সুতরাং "4> 2" এর প্রতিচ্ছবি "2 <4" হয়ে উঠবে। রূপান্তর এটির সেরা বিবরণ নাও হতে পারে, তাই আরও ভাল কিছু প্রস্তাব দিতে নির্দ্বিধায়।
নিল

এর থেকে ভাল কিছু ভাবতে পারে না, সুতরাং Transformউত্তরটি কীভাবে কোথাও কাজ করে তা আপনাকে কেবল ব্যাখ্যা করা উচিত ।
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন আমি টেবিলে একটি কী যুক্ত করেছি, যদি অন্য কলামগুলিও পরিষ্কার না হয়।
নীল

বাগগুলি এখনই ঠিক করা উচিত। এছাড়াও এই ব্যাখ্যা লেখার জন্য সময় দেওয়ার জন্য আপনাকে অনেক ধন্যবাদ!
ASCII-

2

কমান্ড অক্ষর ছাড়াই কমান্ড ব্যবহার করুন

একটি অভিব্যক্তি যা কোনও কমান্ডের অংশ নয় এটি মুদ্রিত হয়।
যদি এটি কোনও দিকের আগে থাকে তবে এক্সপ্রেশনটি নির্দিষ্ট দিকটিতে মুদ্রিত হয়।
নম্বরগুলি নির্দিষ্ট করা দৈর্ঘ্যের সাথে রেখা হিসাবে নির্বাচিত একটি অক্ষর ব্যবহার করে মুদ্রিত হয় \/-|

কোনও দিকটি যদি কোনও অভিব্যক্তি অনুসরণ না করে, তবে এটি নির্দিষ্ট দিকের এক স্থান স্থানান্তর হিসাবে গণ্য করা হয়।

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


1
যদিও আপনাকে পূর্ববর্তী কমান্ডটি একটি alচ্ছিক পরামিতি গ্রহণ করতে পারে তবে আপনাকে অস্পষ্টতার জন্য নজর রাখতে হবে।
নিল

2

বহুমাত্রিক ব্যবহার করুন

কিছু কমান্ড multidirectionals স্বীকার করতে পারেন: +X*|-\/<>^KLTVY7¬⌊⌈। তারা এখানে প্রসারিত কি । সাধারণভাবে, দিকনির্দেশটি উপরে থেকে শুরু হয় এবং ঘড়ির কাঁটার দিকে চালিয়ে যায়।


কোনও বিশেষ কারণ কেন কিছু কমান্ডগুলি বহুমাত্রিক স্বীকৃতি দেয় তবে অন্যদের জন্য কোনও দিকনির্দেশের তালিকা প্রয়োজন? (এর জন্য একটি ভাল কারণ থাকতে পারে যে আমি উপেক্ষা করছি, কিন্তু আমি চেষ্টা করে যাচ্ছিলাম ReflectButtterflyOverlap(:¬, Modulo(g, 2));))
নীল

@ নীল আমি এটি মনে করি না, ASAP
ASCII- কেবল

0

এর সম্পূর্ণ ব্যবহার করুন Sum

Sum প্রচুর সুবিধাজনক ওভারলোড রয়েছে:

  • স্ট্রিংয়ের তালিকায়, তাদের একসাথে সম্মিলিত করে। যাইহোক, যদি তালিকাটি খালি থাকার সম্ভাবনা থাকে তবে এটি কিছুই দেয় না, সুতরাং এক্ষেত্রে Join(..., "")পরিবর্তে ব্যবহার করুন।
  • সংখ্যাগুলির খালি খালি তালিকায় কেবল তাদের যোগফল নেওয়া হয়।
  • খালি খালি তালিকার তালিকায়, তাদের একসাথে সংমিশ্রণ করুন (গভীরতা 1 এর সমতল)।
  • একটি পূর্ণসংখ্যায়, এর অঙ্কগুলির যোগফল নিয়ে যায়। (ভাসমান-পয়েন্টের মানগুলি পূর্ণসংখ্যার সাথে কাটা হয় you
  • কেবলমাত্র অঙ্ক এবং andচ্ছিকভাবে একটি অক্ষরযুক্ত স্ট্রিংয়ের সাথে অঙ্কগুলির .যোগফল নিয়ে যায়।
  • সংখ্যা এবং বিভাজকযুক্ত স্ট্রিংয়ের উপর, পূর্বে বা ভাসতে সংখ্যার অঙ্কটি যোগ করে (তবে এটি দ্রষ্টব্য - বিভাজক হিসাবে গণনা করা হয়েছে)।

শেষ দুটি নিয়মের একটি সুবিধাজনক পার্শ্ব-প্রতিক্রিয়া হ'ল আপনি যদি Sumকোনও অক্ষর ব্যবহার করেন তবে অঙ্কগুলি 1-9তাদের মান হিসাবে কাস্ট হয়ে যায় এবং সমস্ত কিছু শূন্য ফিরে আসে, বিপরীতে Cast, যা অ-অঙ্কের মানগুলির জন্য ব্যর্থ হয়।


0

একটি স্ট্রিং অ্যারে, স্প্লিট এবং নম্বর অ্যারের জন্য rayালাইয়ের জন্য বিভক্ত ব্যবহার করুন

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

যদি আপনার সংখ্যার অ্যারেতে কেবল 95 এরও কম সংখ্যা থাকে তবে একটি কাস্ট ব্যবহার করুন (যদি সমস্ত সংখ্যা 10 এর চেয়ে কম হয়) বা পূর্বনির্ধারিত ভেরিয়েবলগুলির মধ্যে একটিতে সূচি ব্যবহার করুন।


0

অ্যারে বা স্ট্রিং থেকে প্রথম অক্ষর টুকরা করতে ফিল্টার ব্যবহার করুন

এমনকি যদি আপনি ভাগ্যবান ব্যবহার Sliceএকটি স্ট্রিং থেকে প্রথম অক্ষর যেভাবেই লাগে 2 বাইট: Slice(..., 1)। সংক্ষেপে বিভাজনের সংখ্যায় শেষ হওয়া, পৃথককারীের প্রয়োজন হয় বা নিম্নলিখিত কোডটি যদি সেই ক্ষেত্রে হিসাবে প্রকাশ করা যায় তবে এটি আরও বেশি সময় নিতে পারেSlice এটি অতিরিক্ত পরামিতি হিসাবে গ্রহণ করতে চাইলে এটি বেশি সময় নেয়।

পরিবর্তে, কেবল ব্যবহার করুন Filter(..., k), যা প্রথম উপাদানটি ড্রপ করে, এভাবে পছন্দসই ফলাফল অর্জন করে। (আপনার অভিব্যক্তি অন্য লুপের ভিতরে বাসা বাঁধার ক্ষেত্রে যথাযথ লুপ সূচক ভেরিয়েবলটি ব্যবহার করুন)) এটি সর্বদা 2 বাইট এবং পার্শ্ববর্তী কোড দ্বারা প্রভাবিত হতে পারে না।

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