সীমাবদ্ধ বহুগ্লট


20

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

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

কংক্রিটের নিয়মগুলি নিম্নরূপ:

  1. (আউটপুট)। আপনার প্রোগ্রামটি অবশ্যই আপনার প্রতিটি ভাষার অধীনে কনসোলে কিছু আউটপুট তৈরি করতে পারে। এটি হ'ল, আপনার প্রোগ্রামটি কোনও কিছুই প্রিন্ট না করে কেবল প্রস্থান করার অনুমতি নেই।
  2. (ভ্যারিয়েন্স)। স্ট্যান্ডার্ড বহুগ্লোট সংজ্ঞাটি শিথিলকরণ হিসাবে, প্রোগ্রামের আউটপুট বিভিন্ন ভাষার মধ্যে পৃথক হতে পারে।
  3. (ত্রুটি)। আপনার প্রোগ্রামটি অবশ্যই আপনার কোনও ভাষার অধীনে কোনও ত্রুটি (বিস্তৃতভাবে সংজ্ঞায়িত) উত্পাদন করতে পারে না। বেশিরভাগ ভাষার ক্ষেত্রে এটি সংকলক এবং / বা দোভাষী থেকে শূন্য-বহির্গমন কোড ফেরত হিসাবে সংজ্ঞায়িত।
  4. (সীমাবদ্ধতা)। আপনার কোড থেকে কোন একক অ হোয়াইটস্পেস অক্ষর অপসারণের অধীনে তার আচরণ পরিবর্তন করার জন্য আপনার প্রোগ্রাম কারণ উচিত যে আপনার ভাষার একটি। প্রোগ্রামটি সেই ভাষার জন্য অবৈধ হয়ে, বা উত্পাদিত আউটপুট পরিবর্তন করে "পরিবর্তন" করতে পারে।
  5. এটি একটি কোড চ্যালেঞ্জ । বিজয়ী হ'ল প্রোগ্রাম যা বেশিরভাগ প্রোগ্রামিং ভাষায় বৈধ। সংক্ষিপ্ত প্রোগ্রাম দৈর্ঘ্যের পক্ষে বন্ধনগুলি ভাঙ্গা হবে।

সীমাবদ্ধতার বিধিটি বেশ কয়েকটি অক্ষর অপসারণ করতে প্রযোজ্য নয়। এটি হ'ল ঠিক আছে যদি এক সাথে বেশ কয়েকটি অক্ষর অপসারণ করা হয় তবে আপনার কোনও ভাষার কোনও পরিবর্তন হবে না change

লক্ষ্য করুন যে সীমাবদ্ধতার বিধিটি সূচিত করে যে আপনি হোয়াইটস্পেসকে আপনার কোনও একটি ভাষা হিসাবে ব্যবহার করতে পারবেন না, কারণ কোনও অ-শ্বেতস্পেস অক্ষর অপসারণ করা হোয়াইটস্পেস প্রোগ্রামের আচরণকে পরিবর্তন করবে না।

পাইথন 2 এবং পাইথন 3 ভাষার জন্য উপরের সমস্ত বিধিনিষেধ পূরণ করে এমন একটি প্রোগ্রামের একটি সাধারণ উদাহরণ এখানে:

print("Hello World!")

কোনও অক্ষর মুছে printফেলা উভয় ভাষাকে একটি নিক্ষেপ করবে NameError; যে কোনও ব্র্যাকেট বা উদ্ধৃতি SyntaxErrorঅপসারণ করা একটি নিক্ষেপ করবে এবং কোনও স্ট্রিং অক্ষর অপসারণ করলে উভয় ভাষায় আউটপুট পরিবর্তন হবে। (উল্লেখ্য print("hello", "world")এটি উপরের নিয়মের অধীনে আরও সূক্ষ্ম, তবে এখনও বৈধ প্রোগ্রাম)।

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


@ ইনগোবার্ক: এই নিয়মটি আপনাকে কার্যকরী বহুগ্লোট লিখতে বাধা দেয় যা হোয়াইটস্পেসের সাথে জড়িত, যদি না অন্য কোনওভাবে আপনার অন্য ভাষাও কেবল শ্বেতক্ষেত্র না থাকে ।
nneonneo

1
আপনার উদাহরণ print("Hello World!")
এফডব্লিউআইডাব্লু

এটি একটু বিরক্তিকর যে একটি [বহুভুত] এর সাধারণ উত্তরগুলি (আমার মতো) এতগুলি ভাষা থাকতে সক্ষম হয়।
জাস্টিন

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

উত্তর:


13

বাশ + গল্ফস্ক্রিপ্ট + সিজেম

"echo" []
{ cat<&3;} \
3<""<("echo" 'p'~)

আউটপুট

ব্যাশ:

[]
p~

GolfScript:

"echo"
echo{ cat<&3;}0

CJam:

echo{ cat<&3;}-1echop

একটা হল \x7fCJam আউটপুট শেষে হবে।


... অপেক্ষা করুন, এলোপাতাড়ি না হয়ে তিনটি ভাষায় কীভাবে এটি কাজ করে?
nneonneo

@ নিওনিও এটি অন্য ভাষাতে সমস্ত অব্যবহৃত কোড প্রিন্ট করে।
jimmy23013

8

বাশ + বেফুঞ্জ

"echo" $,$,"ol":,,,@

বেফুঞ্জে 'হ্যালো' মুদ্রণ করুন।


1
আমি প্রমাণ করতে পারি যে প্রতিটি চরিত্র (স্থান ব্যতীত) বেফুঞ্জে কিছু না কিছু করে। যদিও আমি বাশের পক্ষে এটি করতে পারি না। এটি চিত্তাকর্ষক।
জাস্টিন 5

7

বিসি, গল্ফস্ক্রিপ্ট, হোমস্প্রিং, হু, অক্টাভা, সায়্লাব (0 বাইট)

বিধি 4 মেনে চলার গ্যারান্টিযুক্ত 4 বিজয়ী নয়, তবে টাই বিরতিতে ভাল করবে।

আউটপুট

খ্রিস্টপূর্ব

Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

GolfScript


Homespring

In Homespring, the null program is not a quine.

হাহ

?

অষ্টক

GNU Octave, version 3.6.4
Copyright (C) 2013 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

Octave was configured for "x86_64-redhat-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/get-involved.html

Read http://www.octave.org/bugs.html to learn how to submit bug reports.

For information about changes from previous versions, type `news'.

Scilab

Startup execution:
  loading initial environment

-->

2
আমি জানি যে এমন একটি এসোলাং রয়েছে যা এই ধরণের কাজ করে 0 দৈর্ঘ্যের কুইনগুলিকে বিশেষভাবে বাধা দেয় (ওহ অপেক্ষা করুন, এটি হোমস্প্রিং )। আমি বিশ্বাস করি ? কিছু আউটপুট।
জাস্টিন

ধন্যবাদ! দুঃখের বিষয়, আমি হাহাকে বোঝাতে পারি না? লিনাক্সে চালানোর জন্য ...
ডেনিস

1
আমার যা দরকার ছিল তা ছিল মনোর জন্য অতিরিক্ত প্যাকেজ। আপনার প্রোগ্রামটি প্রিন্ট What?\n?করে।
ডেনিস

1
জিএনইউ make: *** No targets. Stop.
মেকেও

1
@ ব্যবহারকারী23013: ঠিক: সেক্ষেত্রে এটি বৈধ প্রবেশ নয়, যেহেতু
ডেনিস

6

GolfScript + + পিএইচপি + + CJam + + ম্যাথামেটিকাল + + BC + + Pyth + + /// + + TI তৈরি-বেসিক + + r + অক্টেভ + + মতলব + + Scilab + + সাংখ্যিক Topline + +? Fueue + হাহ?

10

গোলস্ক্রিপ্টে, পিএইচপি, সিজেম, ম্যাথমেটিকা, বিসি, পাইথ, ///, এবং টিআই-বেসিক, এটি আউটপুট করে 10

আর এ, এটি আউটপুট [1] 10

অক্টাভে, এটি আউটপুট দেয় ans = 10

মতলব এবং সায়লাব-এ এটি আউটপুট হয় ans = 10

সংখ্যা টপলাইনে এটি আউটপুট দেয় 0

যদি আমি Fueue সঠিকভাবে বুঝতে পারি তবে এটি একটি নতুন লাইন আউটপুট দেয়, তারপরে একটি বিড়াল প্রোগ্রাম হিসাবে কাজ করে।

হাহ ?, এটি আউটপুটস

What?
?

1
এছাড়াও সিজেমে কাজ করে
আগস্ট

5
আমি মনে করি না ইন্টারেক্টিভ দোভাষীদের গণনা করা উচিত।
nneonneo

2
এটি প্রচুর ভাষায় দুর্দান্ত চলছে, তবে অনেকের কাছে আউটপুট সরবরাহ করে না ...
জাস্টিন

1
এটি এইচটিএমএল , বিসি , মতলব এবং সায়লাব- তেও বৈধ । আপনি পরিবর্তন করেন তাহলে 72থেকে 10, এটা মুদ্রণ উচিত 0মধ্যে সাংখ্যিক Topline
ডেনিস

এইচটিএমএল মেটা আলোচনা অনুযায়ী প্রোগ্রামিং ভাষা নয় কারণ এর কোনও সরল পাটিগণিত বা লুপের কোনও উপায় নেই।
ইনগো বার্ক

3

মনে হচ্ছে এই উত্তরটি সম্পূর্ণ সঠিক নয়।
আমি এটি আংশিকভাবে ঠিক করেছি এবং কয়েক দিনের মধ্যে অন্য অংশটি উন্নত করতে চলেছি।

সি ++ এবং জাভাস্ক্রিপ্ট

ধারণাটি হ'ল:

void eval(bool="main=function(){alert('Hi from Javascript!')};puts=function(){};int=0");
int
main()
{
puts("Hi from C++!");
}

সি ++: http://codepad.org/SK2wbIDL
জাভাস্ক্রিপ্ট: ব্রাউজার কনসোলে কেবল কোডটি অনুলিপি করুন

এবং এটি সন্তুষ্ট করতে সংশোধনকারীদের একটি সেট

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

জাভাস্ক্রিপ্ট দিক থেকে:

পরিবর্তন করা int, mainবা putsঅঘোষিত ভেরিয়েবল পড়ার সাথে ক্রাশ হবে। তবে boolএবং Hi from C++!নিরাপদে পরিবর্তন হতে পারে। আসুন এটি ঠিক করুন:

puts=function(){}
puts=function(s){s=='Hi from C++!'?bool:nope}

স্ট্রিংগুলি সমান হলে এটি অস্তিত্বের পরীক্ষা করে bool, অন্যথায় এটি অঘোষিত সহ ক্র্যাশ হয় nope

এখন, এখানে 2 টি পেছনের সেমিকোলন রয়েছে যা সরানো যেতে পারে। প্রথমটি নির্ধারিতভাবে স্থির করা হয়েছে - এর আগে কেবল নিউলাইনটি সরিয়ে ফেলুন int:

void eval(bool="main=function(){alert('Hi from Javascript!')};puts=function(){};int=0");int

দ্বিতীয়টি এর আগে }, সুতরাং আমার কিছু সংকোচনের প্রয়োজন, উভয় ভাষায় বৈধ এবং সি ++ এর শেষে সেমিকোলন প্রয়োজন হয় না বা জেএসে একটি সেমিকোলন ত্যাগ করা উচিত। ফাইন:

while(0);

whileশরীরের প্রয়োজন অনুযায়ী জেএসে সেমিকোলন বাদ দেওয়া অসম্ভব ।

সুতরাং এই মুহূর্তে প্রোগ্রামটি হ'ল:

void eval(bool="main=function(){alert('Hi from Javascript!')};puts=function(s){s=='Hi from C++!'?bool:nope};int=0");int
main()
{
puts("Hi from C++!");while(0);
}

সি ++ দিক থেকে:

এখানে 2 টি সমস্যা রয়েছে: evalযে কোনও নাম থাকতে পারে এবং সমস্ত জেএস কোড পরিবর্তন করা যায়।

আমি কয়েক দিনের মধ্যে এগুলি ঠিক করার চেষ্টা করব।


2

সিজাম + গল্ফস্ক্রিপ্ট

ঠিক আছে, এটি কিছুটা বিরক্তিকর, তবে এটি একটি শুরু।

1,

উভয় ভাষায় "0" মুদ্রণ করে। " 1মুছে ফেলা ," এর পরিবর্তে প্রিন্টগুলি মুছে ফেলা হলে কারণগুলি অপসারণ একটি ত্রুটির কারণ ঘটায় ।

একই সঙ্গে 1)বা করা যেতে পারে 1(। অনেক বিকল্প আছে।

(হ্যাঁ, আমি জানি এটি কোড-গল্ফ নয়)


2

সি এবং সি ++

#include <stdio.h>
int main() { puts("Hello!"); return 0; }

সি এবং সি ++ হ'ল আলাদা আলাদা ভাষা যা একে অপরের সাথে প্রায় সামঞ্জস্যপূর্ণ - আপনি যা শুনতে পাচ্ছেন তার বিপরীতে সি ++ সি-র সুপারাস্টেট নয়, কিছু পার্থক্যের জন্য http://en.wikedia.org/wiki/Compatibility_of_C_and_C%2B%2B দেখুন । উপরের উদাহরণটি আইডোমেটিক সি ++ নয় তবে এটি কাজ করে এবং সি এবং সি ++ উভয় ক্ষেত্রে একই আউটপুট উত্পাদন করে।


আপনি 0সি এর জন্য অপসারণ করতে পারেন
ডেনিস


@ গিলস: যদি মূল ফাংশন কোনও রিটার্ন কার্যকর করে যা কোনও মূল্য নির্দিষ্ট করে না, তবে হোস্ট পরিবেশে প্রত্যাশিত সমাপ্তির স্থিতি অপরিবর্তিত। ( সি 89 খসড়া - ২.১.২.২ হোস্ট করা পরিবেশ ) এটি প্রোগ্রামটিকে অবৈধ করে না এবং এটির আউটপুটও পরিবর্তন করে না, সুতরাং এই প্রশ্নের প্রয়োজনে, 0মুছে ফেলা যায়।
ডেনিস

@ ডেনিস আমি মনে করি যে একটি অনির্ধারিত প্রস্থান কোড এই প্রশ্নের বিধি অনুসারে প্রোগ্রামটিকে অবৈধ করে তুলেছে। যদি এটি না ঘটে তবে একটি সি 89 বাস্তবায়ন করুন যেখানে এই প্রোগ্রামটি নুনজারো প্রস্থান কোডটি যেমন gcc -ansix86 (বা অন্যান্য অনেকগুলি আর্কিটেকচারে) ফেরত দেয়: যা ঘটে তা হ'ল putsরানটাইমের মানটি যেখানে রেজিস্টারে পড়ে সেখানে রেজিস্টারে শেষ হয় mainফাংশন থেকে ফিরে )
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস: আমার বিধি 3 এর ব্যাখ্যাটি হ'ল সংকলকটি অবশ্যই প্রোগ্রামটি নয়, 0 প্রদান করবে।
ডেনিস

2

জাভাস্কিপ্ট, লুয়া, আর এবং পাইথন 3 - 24 বাইট

অন্য কিছু ভাষায় কাজ করতে পারে, আমি পরে পরীক্ষা করব।

alert=print;alert(1)

ফায়ারফক্সের কনসোল এবং এখানে , এখানে এবং এখানে অন্যান্য ভাষায় জাভাস্ক্রিপ্ট পরীক্ষা করা হয়েছিল


1

পার্ল + রুবি + পাইথন

আমি মনে করি পিএইচপি-তে এইটির জন্য একটি সেমিকোলন দরকার হবে যদি আপনি চলতে থাকেন -R

print "Hello World!"

এটি পাইথনেও কাজ করে।
আগস্ট

1
লুয়ার সাথেও কাজ করে।
ট্রেবুচেট

1

বাশ + sh + zsh + ksh, 4 বাইট:

echo

সত্যই সহজ এবং প্রতিটি নিয়ম সন্তুষ্ট:

  1. প্রতিটি ভাষায় একটি নতুন লাইন আউটপুট দেয়।
  2. আউটপুট বর্তমানে ভাষার মধ্যে কোনওভাবেই আলাদা হয় না
  3. কোনও একটি ভাষায় ত্রুটি তৈরি করে না ...
  4. ... কেবলমাত্র যখন কোনও অক্ষর মুছে ফেলা / পরিবর্তন করা হয়।

0

বাশ + শ + জেড + কেএস + উইন্ডোজ ব্যাচ, 4 বাইট:

echo

সত্যই সহজ এবং প্রতিটি নিয়ম সন্তুষ্ট:

একটি নতুন লাইন আউটপুট দেয় যা প্রতিটি ভাষারই আলাদা হয় না (তবে উইন্ডোজ ব্যাচ, যা ECHO is onআপনি যে ভাষা ব্যবহার করেন) তাতে ত্রুটি হয় না, যখন কোনও অক্ষর অপসারণ বা পরিবর্তন করা হয়।


1
: আপনার উত্তর এই এক প্রায় অনুরূপ উপস্থিত হতে পারে codegolf.stackexchange.com/a/100654/65326
ঊরীয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.