আপনার ল্যাং এর ব্যাখ্যা, কিন্তু নিজেকে না?


21

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

চ্যালেঞ্জ

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

একটি কম্পাইলার / অনুবাদক লিখুন জন্য $LANGলেখা $LANGevalএই সংকলকটি লেখার জন্য উপলভ্য আপনার ভাষার সমস্ত সুবিধা ( এবং বন্ধুদের সহ ) ব্যবহার করতে পারেন । কার্যটিকে আরও চ্যালেঞ্জিং করার জন্য, এখানে একটি বিধিনিষেধ রয়েছে: আপনার প্রোগ্রামটি $LANGআপনার দোভাষী / সংকলক নিজেই ব্যতীত সমস্ত বৈধ প্রোগ্রামগুলির ব্যাখ্যা / সংকলন করতে সক্ষম হবে । যদি এমনটি ঘটে থাকে যে প্রোগ্রামটি ব্যাখ্যা / সংকলিত হতে হবে তা হ'ল আপনার দোভাষী বা সংকলক নিজেই (ফাইল নাম নির্বিশেষে), আপনার প্রোগ্রামটি কোনও দোভাষী বা সংকলকের কার্যকারিতার সাথে পুরোপুরি সম্পর্কিত নয় এমন কিছু করা উচিত (যেমন বারফিং বা মুদ্রণ Hello, world!)।

এই কাজটিকে আরও জটিল করার জন্য, সংকলন বা ব্যাখ্যা করার সময় আপনার প্রোগ্রামটি অবশ্যই নিজের উত্সটি পড়বে না।

বিশেষ উল্লেখ

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

এতক্ষণ ট্যুরিং শেষ হওয়ার পরেও কি আমরা কোনও ভাষা এর জন্য সংজ্ঞা দিতে পারি?
ক্রંચার

@ ক্রাঙ্কার হ্যাঁ, আপনি আছেন। আরও বিশদে বিশদগুলির শেষ বুলেট পয়েন্টটি দেখুন।
FUZxxl

উত্তর:


8

রুবি, 63

b=$<.read
t="b=$<.read\nt=%p\nb!=t%%t&&eval(b)"
b!=t%t&&eval(b)

যতক্ষণ পর্যন্ত কোনও ছোট সমাধান না থাকে উত্তর গৃহীত হয়।
FUZxxl

11

পার্ল, 89 টি চর, কোনও প্রতারণা নয়

$_=q($_=q(Q);s/Q/$_/;($q=join"",<>)eq$_?die:eval$q);s/Q/$_/;($q=join"",<>)eq$_?die:eval$q

এই কোডটি নোট করুন "নিজেকে" হিসাবে গণনা করে সে সম্পর্কে চূড়ান্ত y বিশেষত, ইনপুটটিতে কোনও অনুচক্রী নিউলাইন বা অন্যান্য অতিরিক্ত শ্বেত স্পেস থাকলে এটি নিজেকে চিনতে পারে না। এটি পরীক্ষা করতে, এটি নামের একটি ফাইলে সংরক্ষণ করুন (উদাহরণস্বরূপ) unquine.plএবং এটি করুন:

$ perl unquine.pl unquine.pl
Died at unquine.pl line 1, <> line 1.

মনে রেখ unquine.pl ফাইলটি ঠিক 89 বাইট দীর্ঘ হওয়া উচিত , আর কোনও নয়, কমও নয়। ইনপুট হিসাবে এটি অন্য কয়েকটি পার্ল স্ক্রিপ্টের সাথে চালানো কেবল অন্য স্ক্রিপ্টকে চালিত করে যেমন এটি হওয়া উচিত:

$ perl unquine.pl hello.pl
Hello, world!

নামটি বলতে পারে যে, বাস্তবায়নটি একটি কুইনের উপর ভিত্তি করে - বিশেষত, এটি:

$_=q($_=q(Q);s/Q/$_/);s/Q/$_/

এই কোডটি $_নিজের সমান সেট করে; প্রোগ্রামের বাকি অংশগুলি (যা অবশ্যই ভিতরে ডুপ্লিকেট করা আবশ্যক $_) কেবল ইনপুটটির $_সাথে তুলনা করে, যদি তারা মেলে এবং অন্যথায় ইনপুটটির মূল্যায়ন করে তবে মারা যায়।


আপনি সেই &&/ ;জোড়টিকে একটি বার্নিশ দিয়ে প্রতিস্থাপন করতে পারেন (এক চারের বন্ধ, কোয়াইন দিয়ে দ্বিগুণ)। দুর্দান্ত ধারণা এবং বাস্তবায়ন!
জেবি

@ জেবি: ভাল ধরা! 89 টি চর এখন নিচে।
ইলমারি করোনেন

5

গল্ফস্ক্রিপ্ট, 30 টি অক্ষর

{`".~"+"#{$<.read}".@=!{~}*}.~

এই প্রোগ্রামটি কমান্ড লাইনে নামক কোনও ফাইলের বিষয়বস্তু পড়ে এবং যদি এটি উপরের কোডের সাথে ঠিক সমান না হয় তবে এটিকে গল্ফস্ক্রিপ্ট হিসাবে ব্যাখ্যা করে। যদি ইনপুটটি উপরের কোডের সাথে ঠিক সমান হয়, তবে এটি কেবল অপরিবর্তিতভাবে মুদ্রণ করা হবে (শেষের দিকে সংযুক্ত একটি নতুন লাইন বাদে)।

এটি এই স্ব-সনাক্তকরণ প্রোগ্রামটির মোটামুটি সোজা অভিযোজন । বিশেষ করে:

  • { } গল্ফস্ক্রিপ্টে একটি কোড ব্লক আক্ষরিক।
  • .~, একটি কোড ব্লকে প্রয়োগ করা হয়, ব্লকটি সদৃশ করে এবং অনুলিপি কার্যকর করে।

কোড ব্লকের ভিতরে:

  • ` কোড ব্লকের অনুলিপিটিকে শক্ত করে তোলে।
  • ".~"+এতে অক্ষরগুলি সংযোজন করা হয় .~, প্রোগ্রামটির উত্স কোড সহ একটি স্ট্রিং দেয়।
  • "#{$<.read}"একটি নথিভুক্ত হ্যাক যা গল্ফস্ক্রিপ্টের মধ্যে রুবি কোডটি কার্যকর করার অনুমতি দেয়। এই ক্ষেত্রে এটি রুবি বিবৃতি কার্যকর করে $<.read( লোজ্যাকারের রুবি সমাধান থেকে নির্লজ্জভাবে চুরি হয়ে গেছে ), যা কমান্ড লাইনে নির্দিষ্ট কোনও ফাইলের বিষয়বস্তু পড়ে এবং প্রদান করে। এই হ্যাকটির প্রয়োজন কারণ গল্ফস্ক্রিপ্ট নিজেই কোনও স্পষ্ট ফাইল I / O ক্ষমতা সরবরাহ করে না।
  • .@ স্ট্যাকের উপরে থাকা উপাদানগুলিকে নকল করে এবং এলোমেলো করে তোলে যাতে স্ট্যাকটিতে এই প্রোগ্রামটির উত্স কোড অনুসারে ফাইল সামগ্রীর দুটি অনুলিপি থাকে।
  • =! স্ট্যাকের শীর্ষ দুটি আইটেমের তুলনা করুন (অর্থাত্ ফাইলের বিষয়বস্তু এবং উত্স), পৃথক হলে 1 এবং যদি একই হয় তবে 0 প্রদান করে।
  • {~}*গল্ফস্ক্রিপ্ট কোড হিসাবে ফাইলের সামগ্রীর বাকী অনুলিপিটি মূল্যায়ন করে, তবে কেবল যদি তুলনার ফলাফল 1 হয় (প্রযুক্তিগতভাবে, এটি {~}স্ট্যাকের সংখ্যার দ্বারা প্রদত্ত কোড ব্লককে , যেমন 0 বা 1 বার প্রয়োগ করে Ins ব্লকটি ~হ'ল গল্ফস্ক্রিপ্ট ইভাল অপারেটর))

গীত। যদি স্টিডিন থেকে কার্যকর করার কোডটি পড়ার অনুমতি দেওয়া হয় তবে রুবিকে শেল আউট না করে এই চ্যালেঞ্জটি 21 টি অক্ষরে সমাধান করা যেতে পারে :

{`".~"+1$=!{""\~}*}.~

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


দেখতে দুর্দান্ত লাগছে, তবে মনে হয় না আপনি কোনও ফাইল থেকে ইনপুট পড়েছেন।
FUZxxl

স্থির, এখন এটি লোজ্যাকারের সমাধানের মতো কোনও ফাইল (ঠিক) থেকে পড়ে।
ইলমারি করোনেন

5

পাইথন, 167 130 118 বাইট

এটি গল্ফ করার আমার প্রথম প্রচেষ্টা, তাই এখানে যায়! এটি নিজে ছাড়া কোনও প্রোগ্রামকে ব্যাখ্যা করে

উন্নত সংস্করণ:

i=open(raw_input()).read();q='i=open(raw_input()).read();q=%s;i==q%%repr(q)and a;exec(i)\n';i==q%repr(q)and a;exec(i)

যদি এটি নিজে হয়ে যায় তবে এটি বারফেস করে:

Traceback (most recent call last):
  File "pygolf.py", line 1, in <module>
    i=open(raw_input()).read();q='i=open(raw_input()).read();q=%s;i==q%%repr(q)and a;exec(i)\n';i==q%repr(q)and a;exec(i)
NameError: name 'a' is not defined

আমি মনে করি ইলমারি করোনেনের মতো এই সমাধানটি বেশ কার্যকরভাবে কাজ করে, মূল ধারণাটি হ'ল:

input = read_some_file()
if input == some_quine()
    barf()
interpret(input)

আমি ব্যবহৃত কুইনটি এটির উপর ভিত্তি করে তৈরি হয়েছিল:

(lambda x: x + repr((x,)))('(lambda x: x + repr((x,)))',)

তবে আমি যেহেতু বুঝতে পেরেছি একটি খুব ছোট কুইন তা হ'ল:

q='q=%s;q%%repr(q)';q%repr(q)

আপনি যদি ইন্টারেক্টিভ পাইথন শেলটিকে অনুমতি দেন তবে এটি আরও খাটো হতে পারে, এক্ষেত্রে আপনি যা করতে পারেন:

'%s;_%%repr(_)';_%repr(_)

যেহেতু অজগরটির কমান্ড লাইন আরোগুলি পাওয়ার কোনও সংক্ষিপ্ত পথ নেই, তাই আমি কাঁচা-ইনপুট () যা এখনও বেশ দীর্ঘ, তবে যতক্ষণ না

import sys;sys.argv[1]

ব্যবহার হ'ল:

echo "foobar.py" | python quinterpretter.py

অথবা

python quinterpretter.py
<type filename and hit enter>

আমি ব্যবহারের জন্য একটি ছোট্ট কুইন পেয়েছি, তবে এখানে আমার পুরানো সংস্করণ (উত্তরোত্তর জন্য):

i=open(raw_input()).read();a if i==(lambda x,y:x+repr((x,y))+y)('i=open(raw_input()).read();a if i==(lambda x,y:x+repr((x,y))+y)', ' else 1;exec(i)\n') else 1;exec(i)

% S এর সাথে% r প্রতিস্থাপন করুন এবং পুনরায় সরান। % r এর অর্থ কাঁচা এবং এটি মূলত তিনি একই জিনিস।
লুভজো

4

আমি জাভাস্ক্রিপ্ট ব্যবহার করে কোনও ফাইল থেকে ঠিকঠাক পড়তে পারি না (ঠিক আছে, আমি HTML5 ফাইল-রিডার জিনিসটি ব্যবহার করতে পারতাম, তবে এটি আমার প্রয়োজনের চেয়ে জিনিসগুলিকে আরও জটিল করে তোলে)। সুতরাং, এটি একটি ফাংশন যা জাভাস্ক্রিপ্ট প্রোগ্রামটিকে স্ট্রিং হিসাবে গ্রহণ করে এবং এটি চালায়।

এটি সম্ভবত এটি যতটা গল্ফ ছিল না তবে এখানে এটি যাইহোক:

জাভাস্ক্রিপ্ট, 252

function c(p){q='\"';s='\\';a="function c(p){q='\"';s='\\';a=%;a=a.slice(0,17)+s+a.slice(17,24)+a[23]+a.slice(24);a=q+a.replace('%',q+a+q)+q;alert(a);}";a=a.slice(0,17)+s+a.slice(17,24)+a[23]+a.slice(24);a=a.replace('%',q+a+q);alert(a);if(p!=a)eval(p)}

যদি কেউ জাভাস্ক্রিপ্টে একটি কুইন গঠনের জন্য আরও ভাল কৌশল জানেন তবে আমাকে জানান।


1
আমি আপনার কোড এবং আমার পার্ল সমাধানের উপর ভিত্তি করে নীচে একটি 135-চর জেএস সমাধান পোস্ট করেছি। অনুপ্রেরণার জন্য +1!
ইলমারি করোনেন

2
read p<p;read c<c;[ "$p" = "$c" ]||. ./c

Sh এর 45 টি অক্ষর (POSIX শেল)। চালানো কোডটি অবশ্যই ফাইলে থাকতে হবে./c

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

এমন একটি সরঞ্জাম ব্যবহার করে যা সাধারণত বহিরাগত সম্পাদনযোগ্য, তবে তাত্ত্বিকভাবে শেলটিতে নির্মিত হতে পারে, কোডটি ছোট করা যেতে পারে:

cmp -s p c||. ./c

এটি 18 অক্ষর, এবং -s বিটটি কেবল এমন একটি লাইন দমন করার জন্য যা অন্যথায় সর্বদা বৈধ (স্ব-স্ব) প্রোগ্রামগুলির জন্য মুদ্রিত হত।

এবং তারপরে আপনি সর্বদা শেল ভাষার এমন একটি সংস্করণ তৈরি করতে পারেন যা আরও সংক্ষিপ্ত বাক্য গঠন সহ উপরেরটি করে।

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

read code; if [ "$code" ]; then eval "$code"; else . ./othercode; fi

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

সমস্যা?


2
চ্যালেঞ্জটি বলে যে "আপনার প্রোগ্রামটি অবশ্যই এটি নিজস্ব উত্সটি পড়বে না"।
ইলমারি করোনেন

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

@ টায়লানুব ওয়েল, আপনাকে দোভাষী ছাড়া নিজেই সমস্ত বৈধ ল্যাং প্রোগ্রামের ব্যাখ্যা করতে হবে।
FUZxxl

@FUZxxl হ্যাঁ, "sh + খালি স্ট্রিং" ভাষাটি অন্যথায় শ এর সমতুল্য (যদি কোডটি খালি স্ট্রিং না হয়), এবং এতে লেখা খালি স্ট্রিং প্রোগ্রামটিও sh কোড (যা অবশ্যই প্রবেশ করাতে হবে ./othercode) এর ব্যাখ্যা করে এবং করে কোড শূন্য স্ট্রিং যখন কিছুই না। আমার কাছে ফাইলটি কল করা উচিত ছিল না। / অন্য কোড, এটি বিভ্রান্তিকর; এটি কেবলমাত্র কোড যা ফাঁকা স্ট্রিং ভাষায় লিখিত দোভাষী অনুবাদ করবেন।
টেলানুব

2

জাভাস্ক্রিপ্ট, 135 অক্ষর

function c(p){q='function c(p){q=%27Q%27;p!=unescape(q).replace(/Q/,q)?eval(p):alert()}';p!=unescape(q).replace(/Q/,q)?eval(p):alert()}

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

এটা আমার জাভাস্ক্রিপ্ট মধ্যে সুষম স্ট্রিং বিভেদক অভাবে সঙ্গে মোকাবিলা করার জন্য আউট একটি ভালো উপায় চিত্র কিছুটা সময় লেগেছিল, যতক্ষণ না আমি পাওয়া সংঘটনের পরে বোধোদয় কি সুস্পষ্ট সমাধান: unescape()

সুবিধাজনকভাবে, আমার কোডটিতে কোনও ব্যাকস্ল্যাশ বা ডাবল উদ্ধৃতি নেই, তাই এটি নিরাপদে একটি ডাবল উদ্ধৃত স্ট্রিংগুলিতে সংরক্ষণ করা যেতে পারে। এটি পরীক্ষা করা সহজ করে তোলে:

e = "function c(p){q='function c(p){q=%27Q%27;p!=unescape(q).replace(/Q/,q)?eval(p):alert()}';p!=unescape(q).replace(/Q/,q)?eval(p):alert()}"
h = "alert('Hello, world!')"

eval(e)  // defines the function c()

c(h)     // evaluates h
c(e)     // does not evaluate e, alerts "undefined" instead

আপনি প্রতিস্থাপন করতে পারে alert()সঙ্গে 0এটি পরিবর্তে সতর্ক এর কিছুই করতে পারবো না করতে undefinedএবং 13 অক্ষর সংরক্ষণ।
পিটার ওলসন

@ পিটারলসন: হ্যাঁ, তবে কার্যটি বলে যে "যদি আপনার প্রোগ্রামটি সনাক্ত করে তবে এটি সম্পূর্ণরূপে সম্পর্কিত নয় এমন কিছু করা উচিত"। আমি ব্যাখ্যা করি যে এটির কিছু অর্থ হওয়া উচিত - ব্যবহারকারী হিসাবে দৃশ্যমান এমন কিছু, আমি অনুমান করি। তদতিরিক্ত, আমি এইভাবে এটি আরও ভাল পছন্দ করি। :) (গীত। হ্যাঁ, বাইরে তুষারপাত হচ্ছে! শীতের অবশেষে এখানে!)
ইলমারি করোনেন

1
@ ইলমারী জাভাস্ক্রিপ্ট আইএমএইচও-র ব্যাখ্যা করার সাথে কিছুই করা সম্পর্কযুক্ত নয়।
FUZxxl

আপনি এর p=>...পরিবর্তে যেতে পারেনfunction c(p)
ফায়ারকিউজ

2

কমন লিস্প, 59

#+~ #.(#:a)(defun L(p)(compile-file p))(push :~ *features*)
  • একটি নতুন লিস্প রিপাবলীতে আপনার ফাইল সংকলন করুন (উদাঃ sbcl --load)
  • আপনার এখন একটি ফাংশন আছে L যা প্রচলিত লিস্প ফাইলগুলি সংকলন করতে পারে
  • তবে, আপনি যদি কল করেন (L <your file>), ফাইলটি পড়ার সময় একটি ত্রুটি সংকেত দেওয়া হয় ।

কেন?

কারণ প্রথমবার, আপনি :~কীওয়ার্ডটি ভিতরে into োকালেন *features*। এখন, আপনার পরিবেশটি ~বৈশিষ্ট্য সম্পর্কে জানে এবং পাঠক ম্যাক্রো #+, ~ বৈশিষ্ট্যটির অভিব্যক্তিটি মূল্যায়ন করার পরে , সফল হবে এবং প্রথম বারের মতো এড়িয়ে যাওয়ার পরিবর্তে নীচের ফর্মটি পড়বে। আপনার ফাইল, নিম্নলিখিত ফর্ম #.(#:a), নির্ণয় করা জিজ্ঞেস করল যা (#:a)পঠিত সময় এবং কোড পড়া হচ্ছে হিসাবে ফলে মান ব্যবহার। কিন্তু (#:a)নিরবচ্ছিন্ন প্রতীকের সাথে যুক্ত ফাংশনটিকে কল করে #:a। যেহেতু #:aনিরবিচ্ছিন্ন তাই এটি একটি তাজা প্রতীক যা কোনও ফাংশনের (যেমন না fboundp) আবদ্ধ নয় । ত্রুটি।


1

স্কিম, 48 বা 51 টি অক্ষর

স্কিম অনেকগুলি বাস্তবায়ন সহ একটি ভাষা। সর্বশেষতম আরএনআরএসের সাথে সামঞ্জস্য রেখে বাস্তবায়ন করা সত্ত্বেও, সর্বনিম্ন কার্যকারী মান (আর 6 আরএস) এর ন্যূনতমতার কারণে অজনপ্রিয় হয়েছে। আর -7 আরএস খুব শীঘ্রই একটি প্রতিকার হিসাবে প্রকাশিত হবে, যখন ভাষায় 2 বিভক্ত হয় প্রথম ভাষা শক্তিশালী এবং সংক্ষিপ্ত এবং দ্বিতীয়টি, বাস্তবায়নের মধ্যে আন্তঃব্যবহারের জন্য বৈশিষ্ট্য বর্ধিতকরণ সরবরাহ করার উদ্দেশ্যে প্রথম উদ্দেশ্যে একটি সুপারসেট supers ততক্ষণ পর্যন্ত, আমরা এসআরএফআই (বাস্তবায়নের জন্য স্কিম রিকোয়েস্টস) এর উপর নির্ভর করি, যা সাধারণ কাজের কার্য বহন করার জন্য (হোস্ট বাস্তবায়নে বা ম্যানুয়ালি প্রয়োগ করা হয়) হিসাবে সরবরাহ করে) এগুলি বলার জন্য যে প্রথম কোড স্নিপেট (৫১ টি অক্ষর) পোর্টেবল হিসাবে যতটা সম্ভব পারা যায়, কমান্ড-লাইন আর্গুমেন্টের অ্যাক্সেসের জন্য এসআরএফআই -২২ (ইউএনআইএক্স-এ স্কিম স্ক্রিপ্টগুলি কার্যকর করে) এর উপর নির্ভর করে:

(define(main x y)(case y(x => error)(else => load)))

বা আরও সহজে পাঠযোগ্য:

(define (main current-file arg)
  (case arg
    [current-file => error]
    [else => load]))

দ্বিতীয় (৪৮ টি অক্ষর) হ'ল ব্যাখ্যার একটি ফাইল-কম উপায় যা নিজেকে মূল্যায়ন করতে পারে না (নাল পরিবেশে):

(define(e)(write(eval(read)null-environment))(e))

বা আরও সহজে পাঠযোগ্য:

(define (interpret)
  (write (eval (read) null-environment))
  (interpret))

আপনি যদি আপনার দোভাষীর অনুলিপি করেন তবে আপনার কোড কাজ করে না।
FUZxxl

1
এর গদ্যে নেস্টেড প্যারেন্টিথিকালগুলি ধারণ করতে একটি স্কিম উত্তরে ছেড়ে দিন answer
সাইয়েস

1

গ্রোভি, 13 বাইট

{Eval.me(it)}

এটি গ্রোভির একটি উপসেট ব্যাখ্যা করতে হবে।

পরীক্ষার কেস:

p={Eval.me(it)}

p'''
    (0..37).each{println"1234567890JIHGFEDCBAKLMNOPQRST!?,.ZYXWVU"[it..it+2]}
'''

p'''
    {Eval.me(it)}
'''

দুর্ভাগ্যক্রমে যখন এটি অবশ্যই বারফ করে, এটি পুরোপুরি দোভাষী-জাতীয় উপায়ে এটি করে এবং এটি বেশ কিছু ইনপুট জন্য এটি করে।


আপনি কোন লাইনে প্রোগ্রামটি ব্যাখ্যার জন্য পড়েছেন? আপনার কোডটি আকর্ষণীয় যদিও এটি এই কাজের জন্য বৈধ জমা নেই।
FUZxxl

আমি ধরেছি ত্রুটিটি "পুনরাবৃত্তির সীমা অতিক্রম" এর মতো কিছু?
ইলমারি করোনেন

1

জাভাস্ক্রিপ্ট ES6, 45 বাইট

$=(_=prompt())=>eval(_==`$=${$};$()`?0:_);$()

তবুও প্রতিযোগিতামূলক! (thx @ ডাউনগোট)



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