ROT-47… ROT-47 প্রয়োগ করুন


23

চ্যালেঞ্জ: কোডে ROT-47 প্রয়োগ করুন যা নিজেই এবং নিজেরাই ROT-47 সংস্করণ হিসাবে কাজ করে।

স্কোরিং:

আপনার স্কোর ব্যবহারের শতাংশ হিসাবে গণনা করা হয়, উভয় সংস্করণের মোট বাইটগুলি (সমস্ত অক্ষর) দ্বারা বিভক্ত প্রোগ্রামের মোট দুটি সংস্করণে ROT-47 যোগ্য বাইট

একটি ব্যবহৃত, রট-47 eligible যোগ্য বাইট হ'ল এমন কোনও অক্ষর যা রট-47 c সিফার দ্বারা রূপান্তরিত হবে যা কোনও মন্তব্যের অংশ নয় বা সংকলক / দোভাষী দ্বারা উপেক্ষা করা হবে। উদাহরণস্বরূপ, একটি ব্রেইনফাক প্রোগ্রামের যে কোনও চরিত্র যা +-<>[],.ব্যবহৃত বাইট হিসাবে বিবেচিত হয় না এবং সি প্রোগ্রামে এবং এর বাইরে //বা পরে কোনও অক্ষর /* */ব্যবহৃত বাইট হিসাবে বিবেচিত হয় না। এপিএলে সমস্ত বিশেষ চিহ্নগুলি ব্যবহার হিসাবে বিবেচিত হয় না, যেমন একটি হোয়াইটস্পেস প্রোগ্রামের সমস্ত অক্ষর (দুঃখিত)।

সর্বাধিক উন্নতির মাধ্যমে প্রোগ্রামগুলি দ্বারা বন্ধনগুলি ভেঙে ফেলা হবে। যদি এখনও একটি টাই থাকে, তবে সংক্ষিপ্ততম প্রোগ্রামটি জয়ী হয়।

স্কোরিং উদাহরণ:

সি: 62/64 = 96.875%

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

main(){printf("Hello World!");}

4
এবং কোন ভাষায় >2:?WXLAC:?E7WQw6==@ (@C=5PQXjNসংকলন করে?
হোছ 250

@ होस्চ 250 এলওএল, এটি ছিল কেবল বোবা উদাহরণ
durron597

1
"রট-47 eligible যোগ্য" বলতে কি আপনার কি "ASCII পরিসীমা 33 থেকে 126" এর মধ্যে রয়েছে? অর্থ্যাৎ যদি আমার সি প্রোগ্রামটির ফাঁকা জায়গা বা নতুন লাইন বা ট্যাব থাকে তবে যারা ROT-47 হিসাবে গণ্য হবে তারা যোগ্য কিনা? প্রোগ্রামটি অনেক ভাষায় সঞ্চালনের জন্য কিছু স্পেস অপরিহার্য - এই বিষয়টি কী হবে যে প্রোগ্রামগুলি তাদের ব্যতীত ভেঙে গেলেও তারা আর--৪-যোগ্য নয় বলে ব্যবহৃত হিসাবে গণনা করা হয় না?
জোনাথন ভান মাত্রে

@ জোনাথনভানম্যাট্রে স্পেস বা নিউলাইন বা ট্যাবগুলি গণনা করা হচ্ছে না কারণ আমার মনে হয় স্কোরিং অন্যথায় জটিল হবে; এবং আমি চাই না যে হোয়াইটস্পেস 100% স্কোর করতে সক্ষম হোক, কারণ এটি উদ্দেশ্যকে পরাস্ত করবে।
durron597

2
আমার পাগল স্কোরিং নিয়মের বিষয়ে যারা আপত্তি করছেন তাদের প্রত্যেককে, দয়া করে এখানে মন্তব্য / উত্তর দিন: meta.codegolf.stackexchange.com/questions/1167/…
durron597

উত্তর:


28

রুবি, ১০০% (characters৪ টি অক্ষর)

STDIN এ ইনপুট, STDOUT এ আউটপুট।

Vj=s=gets;puts(s.tr'!-~','P-~!-O');Vj;'lDl86EDjAFEDWD]ECVP\OV[V!\OP\~VXj;'

দ্বিতীয় লাইনটি প্রথম লাইনটি ROT-47'd। অতএব, পুরো প্রোগ্রামটি আরটি -৪ing করার সময় এটি হয়ে যায়:

';lDl86EDjAFEDWD]ECVP\OV[V!\OP\~VXj';jV=s=gets;puts(s.tr'!-~','P-~!-O');jV

আমার কৌশল এখানে নির্ভর করে যে:

  • V'ROT-47'd যখন হয়

  • j;ROT-47'd যখন হয়

  • অতএব, Vj=...Vj;রূপান্তরিত হয় ';l...';যা মূলত কোনও অনিঃপত্তি

    • এখন আপনি যে কোনও স্বেচ্ছাসেবক কোড তৈরি করতে পারেন যা সাধারণভাবে কিছু করে এবং ROT-47'd হলে কোনও বিকল্প নেই। এটি কারণ যে কোনও কোডকে Vj=...Vj;আপনার মতো চালানো সমর্থন করতে পারে Vj=0;{INSERT ANY CODE};Vj;এবং এটি '...';যখন ROT-47'd হয়ে উঠবে। আপনাকে কেবল Vসেই কোডটি ব্যবহার না করার বিষয়ে সতর্কতা অবলম্বন করতে হবে, যেহেতু এটি এটি ভেঙে দেবে।
  • দ্বিতীয়টি অর্ধ উত্পাদন করতে jVপরিবর্তে অনুরূপ যুক্তি ব্যবহার করা যেতে পারে ( পরিবর্তে Vj)


ঠিক আছে আপনি ঠিক বলেছেন আমি কখনই এটি নির্দিষ্ট করেছিলাম এবং আমি প্রত্যাবর্তন করব না। তবে স্পেসগুলি এখনও যোগ্য চরিত্র হিসাবে গণনা করে না; এটি আমার 136/140 হওয়া উচিত।
durron597

1
@ durron597 স্থির; আর কোনও জায়গা নেই।
ডুরকনব

ডাং রুবি একটি সেমিকোলন দিয়ে শেষ হওয়ার জন্য লাইনের প্রয়োজন নেই :)
durron597

16

সি - 54.6%

Y;BW;XL;jNj;AW(){XL^Y;};main(int i,char**v){char*x=v[1];while(*x){if(*x>32&&*x<128)*x=(*x+15)%94+32;putchar(*x++);}}//Y^Nj>2:?W:?E :[492CYYGXL492CYIlG,`.jH9:=6WYIXL:7WYImbaUUYIk`agXYIlWYIZ`dXThcZbajAFE492CWYIZZXjNN

ROT-47-অনুবাদ করা হলে, আমরা পাই

*jq(j){j;};jp(WXL){/*jNj>2:?W:?E :[492CYYGXL492CYIlG,`.jH9:=6WYIXL:7WYImbaUUYIk`agXYIlWYIZ`dXThcZbajAFE492CWYIZZXjNN^^*/};main(int i,char**v){char*x=v[1];while(*x){if(*x>32&&*x<128)*x=(*x+15)%94+32;putchar(*x++);}}

উভয় প্রোগ্রামই সংকলন করে এবং ROT-47-প্রথম যুক্তিটি অনুবাদ করে:

$ ./a "hello world"
96==@ H@C=5

আদর্শের কাজ করতে আমার এটি পেতে সমস্যা হয়েছিল trouble আমি 50% এর উপরে স্কোর দেখে খুব মুগ্ধ!
durron597

@ durron597 এটি আদর্শের উপর কাজ করবে না কারণ এটি যুক্তির মাধ্যমে ইনপুট গ্রহণ করে, স্টিডিন নয়
এমনিপ

1
কেবল স্ব-অনুবাদের জন্য নয়, আর্গুমেন্টের জন্য ROT-47 বাস্তবায়নের জন্য উত্সাহ দিন। যে অনুমান করা উচিত ছিল।
জোনাথন ভ্যান মাত্রে

10

গল্ফস্ক্রিপ্ট, 120/120 বাইট = 100%

{:&&32>&&+254<*{7+7+94%33+}*}%LiUUbamUUZadckYLfZfZhcTbbZNYNT

বা, ROT-47 এ:

LiUUbamUUZadckYLfZfZhcTbbZNYNT{:&&32>&&+254<*{7+7+94%33+}*}%

কোন মন্তব্য বা স্ট্রিং আপত্তি নেই। অপরিজ্ঞাত কমান্ডLiUUbamUUZadckYLfZfZhcTbbZNYNT (যা ROT-47-র বাকী কোডের সমান) একটি অপ-অপশন, তবে এটি দোভাষীর দ্বারা কার্যকর করা হয়, তাই আমি বিশ্বাস করি এটি ব্যবহৃত হিসাবে গণ্য।

এটি আসলে গল্ফস্ক্রিপ্টে বেশ সহজ চ্যালেঞ্জ ছিল। মূল 1অসুবিধাটি হ'ল অঙ্কটি এড়ানো ছিল যা আরটি -৪৪ দ্বারা গল্ফস্ক্রিপ্ট কমান্ডে ম্যাপ করা হয়েছে `। কমান্ড ., -, ,, \, [, /, ]এবং ^এছাড়াও এড়ানো করা হয়েছিল, কিন্তু যে যেহেতু কাজটি অ্যারের ভবন প্রয়োজনীয় এই ক্ষেত্রে মোটামুটি সহজ ছিল।

বোনাস:

এখানে একটি গল্ফস্ক্রিপ্ট পিরিয়ড -২ কুইন রয়েছে (অর্থাত্ একটি প্রোগ্রাম যা দ্বিতীয় প্রোগ্রাম প্রিন্ট করে যা আবার প্রথম প্রোগ্রামটি প্রিন্ট করে) যেখানে দুটি প্রোগ্রামই একে অপরের রট-47 47 রূপান্তর:

{`'0$~'+.{7+7+94%33+}%@!{0$@@;}*}0$~L1V_SOVZ]LfZfZhcTbbZNToPL_SoojNYN_SO

এই প্রোগ্রামটি আরটি -৪৪ এনকোডযুক্ত নিজেই আউটপুট দেয়, অন্য গল্ফস্ক্রিপ্ট প্রোগ্রাম দেয়:

L1V_SOVZ]LfZfZhcTbbZNToPL_SoojNYN_SO{`'0$~'+.{7+7+94%33+}%@!{0$@@;}*}0$~

যা ঘুরে ফিরে আর্ট -৪ enc এনকোডযুক্ত নিজেই আউটপুট দেয়, আগের প্রোগ্রামটি আবার দেয়। সুতরাং, এই প্রোগ্রামটিও একটি ঘূর্ণমান কুইন


আপনার ডিনোমিনিটরটি ভুল: "উভয় সংস্করণের মোট বাইট (সমস্ত অক্ষর) দ্বারা বিভক্ত"। 60/120 = 50%
জোনাথন ভান

@ জোনাথনভানম্যাট্রে: উভয় সংস্করণে সমস্ত বাইট ব্যবহার করা হয় (= দোভাষী দ্বারা সম্পাদিত), সুতরাং এটি 120/120 = এখনও 100% হবে।
ইলমারি করোনেন

আমি স্কোরিং সম্পর্কে অনিশ্চিত কারণ আমি গল্ফস্ক্রিপ্ট জানি না। আমি জানি যে, উদাহরণস্বরূপ, Aব্রেইনফাক সংখ্যার মধ্যে গণ্য হবে তবে ডিনোমিনেটর নয়। এটা কি একই জিনিস নাকি আলাদা?
durron597

@ durron597: গল্ফস্ক্রিপ্টে LiUUbamUUZadckYLfZfZhcTbbZNYNTএকটি বৈধ শনাক্তকারী এবং এটি একটি আদেশ হিসাবে কার্যকর করা হবে। যাইহোক, এটি অন্তর্নির্মিত কমান্ডগুলির মধ্যে একটি নয় বা এটি প্রোগ্রাম দ্বারা কোনও অর্থ বরাদ্দ করা হয়নি, তাই ডিফল্টরূপে এটি কিছুই করে না।
ইলমারি করোনেন

6

অজগর, 96.1% (?)

আপনার সংজ্ঞা অনুসারে, স্ট্রিংগুলি ব্যবহৃত কোড হিসাবে গণনা করা হয়?

V=input();print("".join([chr(33+(ord(V[i])+14)%94)for i in range(len(V))]));V
'l:?AFEWXjAC:?EWQQ];@:?W,49CWbbZW@C5WD,:.XZ`cXThcX7@C : :? C2?86W=6?WDXX.XXj'

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