হোয়াইটস্পেসে গল্ফ করার টিপস


14

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

দয়া করে উত্তর প্রতি একটি টিপ পোস্ট করুন।


82
অপ্রয়োজনীয় সাদা স্থান সরান।
কেএসএফটি

1
এস / [^ [: স্পেস:]] // জি
ডিজিটাল ট্রমা

উত্তর:


11

এটি কোনও কৌতুকপূর্ণ প্রশ্ন কিনা তা আমি পুরোপুরি নিশ্চিত নই, তাই আমি আশা করি এটি গুরুত্ব সহকারে নেওয়ার জন্য আমি উপহাস করব না, তবে ...

টিপ 1: আপনার প্রোগ্রাম শেষ করবেন না

অনুমানটি বলছে যে একটি প্রোগ্রাম তিনটি লাইন-ফিড দ্বারা সমাপ্ত করা উচিত [LF][LF][LF], যেখানে প্রথমটি ফ্লো কন্ট্রোল আইএমপি, এবং পরের দুটি হ'ল প্রস্থান কমান্ড, তবে অনেক দোভাষী আপনার সঠিক কোড শেষ না করেই চালাবেন। যে কোনও প্রোগ্রামে আপনাকে 3 টি অক্ষর বাঁচায়।


6

টিপ 2: যতটা সম্ভব সম্ভব হ্যাপটি ব্যবহার করুন

আমি আমার লুপগুলি এবং এ জাতীয় গণনার জন্য হিপগুলি প্রচুর ব্যবহার করতাম তবে বুঝতে পেরেছিলাম যে এটি আসলে অত্যন্ত অদক্ষ; প্রথমে কোনও ঠিকানা ঠেকানো, বর্তমান গণনা পাওয়া, একটি নেওয়া / যুক্ত করা, ঠিকানা পুনরায় চাপানো ইত্যাদি

লুপ কাউন্টার হিসাবে কাজ করার জন্য আমি এখন স্ট্যাকের উপর একটি মান চাপছি, তারপরে [Space][LF][Tab]যখন আমার প্রয়োজন হবে তখন এটিতে ফিরে যেতে সোয়াপ কমান্ডটি ব্যবহার করুন । এটি / আশেপাশে প্রচুর পরিশ্রমী লাগে, তবে আপনি যখন এটি পাবেন এটি আপনার চর গণনাটি হ্রাস করতে পারে।


5

যথেচ্ছ হিপ ঠিকানা ব্যবহার করুন

অনেক দোভাষী আপনাকে 0 বা 1 থেকে শুরু করে গণনা শুরু করার পরিবর্তে স্বেচ্ছাসেবক হিপ ঠিকানাগুলিতে পড়তে / লিখতে অনুমতি দেয় allow নতুন মান (ন্যূনতম 4 বাইট) চাপানোর পরিবর্তে ঠিকানা হিসাবে ব্যবহার করার জন্য আপনি বিদ্যমান স্ট্যাক মান (3 বাইট) সদৃশ করতে পারেন


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

5

খালি ক্রমটি একটি বৈধ লেবেল

[LF][Space][Space][LF](ফ্লো কন্ট্রোল - '' লেবেলটির সাথে চিহ্নিত করুন) একটি খালি লেবেল তৈরি করে যা জাম্প বা সাব্রোটিন কলগুলির জন্য একটি বৈধ লক্ষ্য। এটি লেবেল ঘোষণা করার সময় এবং বাইট যখনই ডাকা হয় ততক্ষণে এটি একটি বাইট সংরক্ষণ করে।

( ট্রুথ মেশিন বাস্তবায়নের জন্য সাদা জায়গার উত্তরে পর্যবেক্ষণ করা )


5

একটি নির্দিষ্ট পরিমাণ দ্বারা সমস্ত অক্ষর হ্রাস করুন এবং একটি লুপে মুদ্রণের আগে ডানদিকে যুক্ত করুন

@ লকস্টোরমসকে ক্রেডিট , যিনি হ্যালো ওয়ার্ল্ড চ্যালেঞ্জের জন্য তাঁর উত্তরে অনুরূপ পন্থা ব্যবহার করেন

( STNযথাক্রমে স্পেস, ট্যাব এবং নতুন লাইনের জন্য ব্যবহৃত))

বর্ণগুলির জন্য মানগুলি ধাক্কা সর্বদা 11 বাইট (যেমন 'A' অক্ষরটির 65 SSSTSSSSSTNটির জন্য চাপ দেওয়া; 'z' অক্ষরের জন্য 122 মানটি চাপানো হয়)SSSTTTTSTSN )। যখন আপনি বড় পরিমাণে পাঠ্য আউটপুট করতে চান এটি ব্যয়বহুল হতে পারে। পরিবর্তে, আপনি একটি নির্দিষ্ট পরিমাণে মুদ্রণ করতে চান এমন সমস্ত অক্ষরের মান কমিয়ে আনতে পারেন এবং তারপরে মুদ্রণের জন্য এই নির্দিষ্ট পরিমাণটি যুক্ত করুন।

এটি নিম্নলিখিত কোড দিয়ে করা যেতে পারে (আসুন ধরা যাক এই ক্ষেত্রে নির্ধারিত মানটি 100):

  1. বিপরীত ক্রমে অক্ষরের জন্য সমস্ত মানকে (নির্ধারিত পরিমাণ 100 বিয়োগ) টিপুন
  2. NSSN (একটি লেবেল তৈরি করুন; মূলত লুপটি শুরু করুন)
    1. SSSTTSSTSSN (স্থির পরিমাণ 100 চাপুন)
    2. TSSS (একসাথে স্ট্যাকের শীর্ষ দুটি মান যুক্ত করুন)
    3. TNSS (চরিত্র হিসাবে এখন সঠিক মানটি পপ এবং মুদ্রণ করুন)
    4. NSNN (লেবেলটিতে ঝাঁপুন; লুপের পরবর্তী পুনরাবৃত্তিতে যান)

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

100 এর স্থির পরিমাণের সংক্ষিপ্ততম পদ্ধতির কিনা আপনি কী মুদ্রণ করছেন তার উপর নির্ভর করে। উদাহরণস্বরূপ @ লুক্সটর্ম তার হ্যালো ওয়ার্ল্ড উত্তরে 107 ব্যবহার করেছেন।

লক্ষ্য করুন উপরের মান (কপি SNS) একই সংলগ্ন অক্ষরের দুই জন্য (যেমন lমধ্যে Hello), অথবা অন্য অবস্থান থেকে কপি মান এখনও ছাড়াও এই গলফ আরো ব্যবহার করা যেতে পারে বাইট।


4

অপরিবর্তিত লেবেলে জাম্পিং প্রোগ্রামটি শেষ করে (কিছু দোভাষীতে)

এই বাস্তবায়ন নির্দিষ্ট আচরণ ঢোকা শুরু হয়, কিন্তু আমি বিশ্বাস করি এই অনুমতি দেওয়া হয়

টিআইও (এবং সম্ভবত অন্যান্য দোভাষী অনুবাদকগুলিতে কমপক্ষে আদর্শে কাজ করে না) কার্যকর করা বন্ধ করে দিবে যখন অস্তিত্ব নেই এমন কোনও লেবেলে ঝাঁপ দেওয়ার চেষ্টা করা হবে। লুপটি ভেঙে ফেলার জন্য যদি আপনার তুলনা করার দরকার হয় তবে এটি ব্রেক লেবেলটি ঘোষণা না করে আপনাকে বাইটস সংরক্ষণ করতে দেয়। ( উদাহরণ হিসাবে মুদ্রণ অদৃশ্য পাঠ্যে আমার মন্তব্য দেখুন ।)


4

মান 0 কোনও বাইনারি সংখ্যাসহ একটি সংখ্যা হিসাবে ঘোষণা করা যেতে পারে

হোয়াইটস্পেস টিউটোরিয়ালটিতে উল্লেখ করা হয়েছে যে সংখ্যাগুলি বিট / বাইনারি সংখ্যার প্রশস্ত পরিমাণের হতে পারে। এর অর্থ বিটবিহীন একটি সংখ্যা (প্রয়োজনীয় সাইন বিটের বাইরে) মান 0 এর একটি বৈধ উপস্থাপনা [Space][Space][Space][LF]এবং [Space][Space][Space][Space][LF]উভয়ই 0 মানটিকে স্ট্যাকের দিকে ঠেলে দেয় তবে পূর্ববর্তীটি একটি বাইট সংক্ষিপ্ত হয়।


0

পূর্ববর্তী পূর্ণসংখ্য অনুলিপি করা নতুন তৈরির চেয়ে ছোট হতে পারে

( STNযথাক্রমে স্পেস, ট্যাব এবং নতুন লাইনের জন্য ব্যবহৃত))

STS+ নাম্বার যুক্তি ব্যবহার করা যেতে পারে অনুলিপি এন স্ট্যাক (যুক্তি দেওয়া) স্ট্যাকের উপরে সম্মুখের উপর তম আইটেমটি । এটি কিছু ক্ষেত্রে বাইটগুলি সংরক্ষণ করতে ব্যবহৃত হতে পারে।

উদাহরণস্বরূপ, আমার এই উত্তরে আমি 4 র্থ আইটেমগুলিতে ব্যাখ্যা করেছি যে আমি কীভাবে 1 STSSTNপি (0-সূচক) মান ( ) অনুলিপি করা 'পি' (12 SSSTTSSN) অক্ষরটি তৈরি করতে 12 টি চাপ দেওয়ার চেয়ে কম, কীভাবে বাইট-কাউন্ট কমিয়েছিলাম? "pop"আউটপুট অংশে । (দ্রষ্টব্য: আমি 'পি' অক্ষরটির জন্য 112 এর পরিবর্তে 12 মানটি ব্যবহার করি, কারণ আমি একটি নির্দিষ্ট পরিমাণ দ্বারা সমস্ত মান হ্রাস করার জন্য এই অন্যান্য টিপটি প্রয়োগ করেছি , যা আমরা লুপে অক্ষরগুলি মুদ্রণের আগে যুক্ত করি ))

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