2 ডি ভাষায় গল্ফ করার টিপস


18

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

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


এই প্রশ্নটি মেটাতে থাকা উচিত নয়?
মিস্টার লিস্টার

2
কি আছে: এখানে একটি সংশ্লিষ্ট মেটা প্রশ্ন হল একটি 2 ডি প্রোগ্রামের আকার? ঢাকা এলাকা? উত্তল হলের ক্ষেত্রফল? অক্ষের সমন্বয়ে আয়তক্ষেত্রযুক্ত ক্ষেত্রফল? সমস্ত কিছু ASCII আকারের কিছু ফর্মের চেয়ে ভাল ব্যবস্থা হতে পারে।
এমসাল্টাররা

@ শ্রীলিস্টার টিপসের প্রশ্নগুলি মূল সাইটের জন্য বিষয়বস্তুতে রয়েছে। আপনি যদি তাকান তবে দেখতে পাবেন যে ইতিমধ্যে আমাদের টিপস ট্যাগের অধীনে প্রশ্নগুলির একটি ভাল চুক্তি রয়েছে।
গম উইজার্ড

@ এসএমএলটাররা যেমন প্রতিটি অন্যান্য প্রোগ্রামিং ভাষার দৈর্ঘ্য বাইটগুলি পরিমাপ করে। কিছু ভাষা ডিজাইনার সেখানে 2D টি ভাষা হেক্সাগনি বা কিউবিক্সের মতো বিভিন্ন শিষ্টাচারে সাজানোর অনুমতি দেয় এবং সেগুলি পর্যন্ত চালিয়ে যায়।
গম উইজার্ড

উত্তর:


19

অনুভূমিক ফাঁকগুলি এড়িয়ে চলুন

প্রায়শই, কোডটি প্রোগ্রামের বাম হাতের মতো সাদা জায়গার ফাঁকে ফাঁকে ছেড়ে যায়।

abc
  d
  e

এটি 4 বাইট যুক্ত করে, যখন এটি বাম সারিবদ্ধকরণ এড়ানো যায়।

cde
b
a

যদি আপনার সাদা স্পেসের বৃহত ফাঁকগুলি ব্যবহার করার প্রয়োজন হয় তবে অনুভূমিকের পরিবর্তে এগুলি উল্লম্ব করার চেষ্টা করুন।

########
#      #
#      #
#      #

বনাম

####
#
#
#
#
#
#
####

11

সম্ভব হলে একটি মাত্রা ব্যবহার করুন

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

>iv
^o<

তবে কেউ মোড়ানো আচরণের অপব্যবহার করতে পারে এবং এটি তৈরি করতে পারে:

io

বা, এমন মোড়ানো আচরণ ছাড়া ভাষাগুলিতে:

> ?oi<

(ধরে নিচ্ছি ?পপ হয় না)) মোড়কবিহীন ভাষার ক্ষেত্রে একটি স্পষ্টত লুপ প্রায়শই ভাল।

জাম্প কমান্ড সহ

জাম্প এবং শর্তসাপূর্ণ জাম্প কমান্ড সহ 2 ডি ভাষায় একটি প্রোগ্রাম এর মতো দেখতে পেল:

abc >de?v;
    ^hgf<

এটিও হতে পারে:

abc de?!;hgf04&

(যদি !ট্রাম্পোলিন হয়, এবং &অবস্থানের দিকে ঝাঁপ দাও)


আপনার তৃতীয় উদাহরণ ioiioiioiইত্যাদি না?
ASCII-

@ ASCII- কেবল এটিই করে। উফ।
কনর ও'ব্রায়েন

1
কিছু কম নিয়মিত কমান্ড কী করে তা আপনার সম্ভবত বলা উচিত। উদাহরণস্বরূপ আমি কী জানি io;না এবং আমি কেবল জানি এটি ?পপ হয় না। দেখে মনে হচ্ছে এগুলি ফিশ কমান্ড, তবে আমি এগুলি খুব মানক বলে মনে করি না।
গম উইজার্ড

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

10

ক্যারিজের রিটার্নগুলিও বাইটস খুব বেশি

যত কম 2 ডি এটি তৈরি করতে পারবেন তত ভাল। একটি গাড়িবহর রিটার্ন হ'ল অন্য কোনও বিকল্প। কেবলমাত্র @ATaco এবং @ ASCII- এর পরামর্শগুলি উপেক্ষা না করে চেষ্টা করুন এবং Y এর মাত্রা যতটা সম্ভব ছোট রাখুন।

এই

###
####
########

বেশী ভালো

###
###
###
##
#
#
#
#

গাড়ীর রিটার্ন সবসময় বাইট হয় না। \n(লাইন-ফিড) হ'ল একটি লাইন-এন্ডিং নিয়মিতভাবে পসিক্স সিস্টেমে বাম-সংযুক্ত পাঠ্যে ব্যবহৃত হয়, যদিও উইন্ডোজ এবং ম্যাক ওএস (প্রাক-ম্যাকোস) \n(লাইন-ফিড) এবং \r(ক্যারিজ-রিটার্ন) সংমিশ্রণ ব্যবহার করে ।
wizzwizz4

9

DRY (নিজেকে পুনরাবৃত্তি করবেন না)

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


8

ইন্টারলেভ পাথ

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


2

আয়না ব্যবহার করুন

আয়নাগুলি মাঝে মাঝে একই সাথে দুটি পথে ব্যবহার করা যেতে পারে (প্রতিটি পাথ আয়নাটির একপাশে বাউন্স করে)। এটি আপনাকে সাহায্য করবে বলে মনে হচ্ছে না তবে এটি আপনাকে আপনার প্রোগ্রামটি পুনরায় সাজানোর অনুমতি দিতে পারে বা দিকনির্দেশ পরিবর্তন হলে আপনার যদি কিছু থাকে তবে তারা কম আয়নাতে প্রতিস্থাপন করতে সক্ষম হতে পারে।


2

মূর্তিগুলি মুখস্থ করুন

এখানে ভাষার "স্বরূপ" নির্ভর করে কিছু "বুদ্ধিমান" রয়েছে যা কিছু নির্দিষ্ট কাজ করে।

সিউডো-লিনিয়ার কোড

যদি ডায়নামিক কোড জেনারেশন প্রয়োজন হয় তবে এটি সিউডো-লিনিয়ার কোড মডেলটি ব্যবহার করতে পারে:

v
\"line 1"
\"line 2"
.
.
\"line N"

তারা সাধারণত কি করে তা ধরে নেওয়া \এবং vবোঝানো।

অগণিত চক্র

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

>v
^<

আসলে, আপনি যদি আপনার কোডকে 1-লাইনার করেন তবে আপনি কেবল ব্যবহার করতে পারেন ^বা vযেমন:

i?vo;

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

কুইন কাঠামো

সাধারণত, স্ট্রিং / কোট ফ্রেমওয়ার্ক সহ ভাষাগুলির মধ্যে এই জাতীয় কুইন থাকতে পারে:

<quote><generate "><output stack><terminate>

> <> এর জন্য এগুলি দেখতে পাবেন:

":1-r>o<#

এই ব্যতীত সমাপ্তি হিসাবে ত্রুটি সহ প্রস্থান করে। এটি সম্ভবত সবচেয়ে সংক্ষিপ্ত > <> কুইন বা কমপক্ষে, আমি খুঁজে পাওয়া সবচেয়ে স্বল্পতম।


এটি আসলে এক টিপের মতো মনে হয় না।
গম উইজার্ড

@ ওয়েট উইজার্ড আমি এগুলিকে একসাথে রেখেছি কারণ এগুলি বিভক্ত করা আমার কাছে সাধারণ ধারণা নেই, সমস্ত সাধারণ প্রোগ্রাম-লেআউট আইডিয়াম।
কনর ও ব্রায়ান

আপনার কাছে <> <> কুইনে কেন?
জো কিং

@ জোকিং আমি বিশেষত নিশ্চিত নই
কনর ও ব্রায়েন

এছাড়াও, "প্রান্তগুলি ভুল দিকে। টিপটি অন্যথায় ভাল, আমি আমার প্রচুর উত্তরে সেই সাধারণ কাঠামোটি ব্যবহার করেছি
জো কিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.