ঘোরানো কুইন তৈরি করুন


26

একটি স্ট্রিংয়ের একটি ঘূর্ণন একটি স্ট্রিংকে দুটি টুকরো করে বিভক্ত করে এবং তাদের ক্রমটি বিপরীত করে তৈরি করা হয়, উদাহরণস্বরূপ "world! Hello,"একটি ঘূর্ণন "Hello, world!"। বিভিন্ন, তবে এখনও বৈধ প্রোগ্রাম গঠনের জন্য ঘোরানো যায় এমন প্রোগ্রামগুলি তৈরি করা সম্ভব। অজগর এই উদাহরণ বিবেচনা করুন:

print ")import sys; sys.stdout.write("

এটি ফর্ম ঘোরানো যেতে পারে

import sys; sys.stdout.write("print ")

যা নিজেই একটি বৈধ অজগর প্রোগ্রাম।

আপনার চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম লিখুন যা নিজেই একটি ঘূর্ণনকে বহন করে, যা রান করার পরে আসল প্রোগ্রামটিকে আউটপুট দেয়। বোনাস দুটি চক্রের দৈর্ঘ্যের সাথে কোনও প্রবেশের দিকে নির্দেশ করে!

এটি কোড গল্ফ, সঠিক স্কোরিংটি হবে: (কোডের দৈর্ঘ্য) / (চক্রের দৈর্ঘ্য - 1)।

সম্পাদনা: আমাদের একজন বিজয়ী আছে (অন্য কেউ যদি স্কোর 4 টি করতে না পারে)! আমি এখনও অন্য কোনও সমাধান দেখতে আগ্রহী, তারা প্রার্থী হোক বা না হোক।


2
নিস! আপনি আপনার (চক্র দৈর্ঘ্য -1) ওজন দিয়ে সস্তা কনটেনটেশন বাদ দিয়েছেন।
বুথবি

3
আক্ষরিক ঘোরার সাথে বেফুঙ্গে এটি করার চেষ্টা করুন ।
যান্ত্রিক শামুক

মুরগী ​​এবং ডিম ব্যবহার করাও এটির জন্য একটি ভাল স্পর্শ।
meawoppl

উত্তর:


21

এপিএল (158 টি অক্ষর, স্কোর = 4)

'''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 

আমি এখানে ডায়ালগ এপিএল ব্যবহার করছি। এক্সপ্রেশনটির শেষে এবং স্ট্রিংয়ের শেষে (পূর্বে ''') শেষে (0 স্পেস অনুসরণ করে) যোগ করে চক্রের সংখ্যা বাড়ানো যেতে পারে । চক্রের দৈর্ঘ্য (# 0's) + 1, এবং প্রকাশের দৈর্ঘ্য 150 + 4*(cycle length))। ধরে নিই আমরা চিরতরে শূন্য যুক্ত করা চালিয়ে যাচ্ছি, স্কোরটি Limit[(150 + 4*n)/(n - 1), n -> Infinity] = 4যেখানে nচক্রের দৈর্ঘ্য।

চক্র দৈর্ঘ্য = 6 সহ একটি উদাহরণ এখানে:

      '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 
 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0

      0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0
 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0

      0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0
 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0

      0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0
 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0

      0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0
 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1

      0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1
'''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 0 0 0 0

192 টি অক্ষর, স্কোর = 2

'''{2≠⍴⍺:¯3⌽(2×1+⍴⍺)⍴(1+⍴⍺)⍴⍺ ⋄ a←⊃2⌷⍺ ⋄ ⍵=0:¯2⌽(2×1+⍴a)⍴(1+⍴a)⍴a⋄(-4+⌊10⍟⊃⍺)⌽(2×1+⍴a)⍴(1+⍴a)⍴a}01'''{2≠⍴⍺:¯3⌽(2×1+⍴⍺)⍴(1+⍴⍺)⍴⍺⋄a←⊃2⌷⍺⋄⍵=0:¯2⌽(2×1+⍴a)⍴(1+⍴a)⍴a⋄(-4+⌊10⍟⊃⍺)⌽(2×1+⍴a)⍴(1+⍴a)⍴a}01

বাস্তবায়নের উপর নির্ভর করে, স্ট্রিংয়ের সাথে পূর্বের পূর্ণসংখ্যাটি খুব বড় হলে ব্যর্থতার একটি বিন্দু হতে পারে। তাত্ত্বিকভাবে, যদিও, আমরা দুটি অক্ষর যুক্ত করে একটি চক্র যুক্ত করতে পারি - একটি 1স্ট্রিংয়ের শেষে (পূর্বে ''') এবং একটি 1সম্পূর্ণ লাইনের শেষে।

200 টি অক্ষর, স্কোর = 1

'''{a←{2=⍴⍵:⊃2⌷⍵⋄⍵}⍺⋄(⍺{⍵=9:⍬⋄⍕1+{2=⍴⍵:10×⊃⍵⋄0}⍺}⍵),(¯2⌽(2×1+⍴a)⍴(1+⍴a)⍴a),⍺{⍵=9:(⍕9),⍕⊃⍺⋄⍕⌊⍵÷10}⍵}'''{a←{2=⍴⍵:⊃2⌷⍵⋄⍵}⍺⋄(⍺{⍵=9:⍬⋄⍕1+{2=⍴⍵:10×⊃⍵⋄0}⍺}⍵),(¯2⌽(2×1+⍴a)⍴(1+⍴a)⍴a),⍺{⍵=9:(⍕9),⍕⊃⍺⋄⍕⌊⍵÷10}⍵}91

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

সংক্ষিপ্ত বিবরণ (একটি সংক্ষিপ্ত কুইন সহ)

আমি প্রথম সংস্করণটির একটি সংক্ষিপ্ত বিবরণ দিতে যাচ্ছি কারণ আমি মনে করি এটি সম্ভবত বোঝা সহজ। তবে, সংস্করণটি মোকাবেলার আগে আমরা এপিএলে একটি সাধারণ কুইন বিবেচনা করব :

1⌽22⍴11⍴'''1⌽22⍴11⍴'''

আমি খুঁজে পেয়েছি যে কয়েকটি এপিএল এক্সপ্রেশন বোঝার সেরা উপায়গুলির মধ্যে একটি হ'ল অপারেটর / ফাংশনগুলির ক্যাসকেড জুড়ে আউটপুটটি দেখে। এপিএলে সমস্ত অপারেটর এবং ফাংশনগুলি ডান-অ্যাসোসিয়েটিভ এবং একই নজির রয়েছে, সুতরাং ডান থেকে বামে এখানে রয়েছে:

  • '''1⌽22⍴11⍴''': এটি কেবল একটি স্ট্রিং আক্ষরিক (অক্ষরের একটি তালিকা)। ''একক উদ্ধৃতি চিহ্নগুলি পালানোর এপিএল উপায়। আউটপুট: '1⌽22⍴11⍴'
  • 11⍴'''1⌽22⍴11⍴''': এখানে, আমরা দৈর্ঘ্যের হতে হবে স্ট্রিং পুনরায় আকার ( ) 11। স্ট্রিংয়ের দৈর্ঘ্য 11-এর নিচে হওয়ায় এটি পুনরাবৃত্তি হয়েছে (যেমন, 5⍴'abc'ফলন হবে 'abcab')। আউটপুট: '1⌽22⍴11⍴''। সুতরাং আমাদের এখন দুটি উদ্ধৃতি চিহ্ন রয়েছে - আমরা কোথাও পাচ্ছি!
  • 22⍴11⍴'''1⌽22⍴11⍴''': একইভাবে, আমরা এখন আমাদের আগের আউটপুট পুনর্নির্মাণ দৈর্ঘ্যের হতে 22। আউটপুট: '1⌽22⍴11⍴'''1⌽22⍴11⍴''। আমরা প্রায় সেখানে রয়েছি - আমাদের কেবল প্রথম একক উদ্ধৃতিটি শেষের দিকে যেতে হবে।
  • 1⌽22⍴11⍴'''1⌽22⍴11⍴''': এখানে, আমরা অক্ষরগুলির তালিকাটি ঘোরান 1। এটি স্ট্রিংয়ের প্রথম অক্ষরটিকে শেষের দিকে নিয়ে যায়। অন্য উদাহরণ হিসাবে, 2⌽'abcdef'ফেরত 'cdefab'। আউটপুট: 1⌽22⍴11⍴'''1⌽22⍴11⍴'''

ঘোরানো কুইন

সেই সংক্ষিপ্ত কুইনই আমাদের ঘোরানো কুইনের মূল ভিত্তি। এখন, এই বিষয়টি মনে রেখে, আসুন আমাদের কুইনটি একবার দেখুন:

'''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 

{ ... }একটি নামহীন ফাংশন সংজ্ঞায়িত করে, যেখানে আমরা কাজটি করব। নোট করুন যে এপিএলে ফাংশনগুলি একটি ডান আর্গুমেন্ট গ্রহণ করে , দ্বারা চিহ্নিত করা হয় এবং একটি alচ্ছিক বাম আর্গুমেন্ট গ্রহণ করে (ইনফিক্স ভাবেন) oted আমরা এই ক্রিয়াকলাপটিকে উভয়কে আমাদের কুইন স্ট্রিং এবং কিছু সংখ্যক চক্র তৈরি করতে আমাদের সহায়তা করতে চাই feed জিনিসগুলিকে নিজেরাই আরও সহজ করার জন্য (এবং যে কেউ চক্র যুক্ত করতে চাইছে), আমরা কোয়েন স্ট্রিংকে বাম যুক্তি তৈরি করি। তারপরে সঠিক যুক্তিটি হল যেখানে আমরা আমাদের চক্রের তালিকাটি রেখেছি। একটি স্পেস দ্বারা বিভক্ত 2 বা ততোধিক আইটেম একটি তালিকা তৈরি করে, সুতরাং এই উদাহরণে, আমাদের কাছে 2 1এবং উপাদানগুলির তালিকা রয়েছে যা a এবং a রয়েছে 0

আমরা দেখতে পাচ্ছি যে ফাংশনটি আগের থেকে কুইনের মতো দেখাচ্ছে। আমাদের ...⌽...⍴...⍴...আগে থেকে একই ফর্ম রয়েছে। সুতরাং এটি ভাল - আমরা কমপক্ষে এটি অনেক কিছুই বুঝতে পারি! এর উপবৃত্ত মধ্যে গভীর উপত্যকা, গত পর সবকিছু দিয়ে শুরু করা যাক : ⊃,/(~^/¨⍺=0)/⍺

  • উপরের উদাহরণটি দেখে আপনি দেখতে পাচ্ছেন, আমরা ডান হাতের দিক থেকে 0 এর স্ট্রিংটিকে উপরিভাগ দিয়ে প্রতিটি প্রতিটি পুনরাবৃত্তির সাথে একটি যুক্ত করেছি; তবে আমরা এখনই সেগুলির বিষয়ে চিন্তা করি না। আমরা কেবল স্ট্রিং চাই!
  • প্রথমে, প্রথম বন্ধনীগুলির মধ্যে কী আছে তা বিবেচনা করুন। (তারা উপায় দ্বারা বেশিরভাগ অন্যান্য ভাষায় পছন্দ করে group)
    • ⍺=0এই ক্ষেত্রে একই আকারের সাথে একটি তালিকা প্রদর্শন করে, যেখানে প্রতিটি উপাদান এর সাথে সমান হয় এবং অন্যথায় অন্য দ্বারা প্রতিস্থাপিত হয় । এটি পুনরাবৃত্তভাবে সঞ্চালিত হয়; সুতরাং যদি আমাদের কাছে অক্ষরের তালিকার একটি তালিকার একটি তালিকা থাকে তবে স্বতন্ত্র অক্ষরগুলি 0 এর বিপরীতে পরীক্ষা করা হবে এবং আপনি বাইনারি মানগুলির তালিকার একটি তালিকা ফিরে পাবেন।100
    • সুতরাং যদি কেবল আমাদের স্ট্রিং নিয়ে গঠিত হয় তবে আমরা 0 এর একটি তালিকা ফিরে পাই। অন্যথায়, আমাদের বাম আর্গুমেন্টটির সাথে এর 0 টির পূর্বরূপ রয়েছে (যেমন, 0 0 0 'quinestring'), সুতরাং এটি 0 এর তালিকা এবং অন্য একটি তালিকা, আমাদের স্ট্রিং। তারপরে আমাদের আউটপুটটি দেখে মনে হচ্ছে 1 1 1 <sub-list of zeros>
    • ^/¨⍺=0: আমরা উদ্ভূত ফাংশনটি প্রয়োগ করি ^/, যা প্রতিটি ( ) উপাদানের /লজিকাল এবং ( ^) ফাংশন ব্যবহার করে ( ) হ্রাস করে । এটি শূন্যগুলির উপ-তালিকাটি সমতল করার জন্য যাতে আমরা কুইন স্ট্রিংটিকে একটি বাইনারি মান হিসাবে বিবেচনা করতে পারি। পূর্ববর্তী উদাহরণ বিবেচনা করে, আউটপুট হবে ।¨⍺=01 1 1 0
    • ~: আমরা আগে থেকে প্রতিটি মান বাইনারি না (যেমন, ফিরে 0 0 0 1)।
  • (~^/¨⍺=0)/⍺: প্রতিটি উপাদানের জন্য , আমরা /বাম আর্গুমেন্টে সংশ্লিষ্ট উপাদান দ্বারা প্রদত্ত কতবার এটি প্রতিলিপি করি ( )। এটি 0 এর সমস্তটি সরিয়ে দেয়, আমাদের কেবলমাত্র মূল পংক্তিতে ফেলে।
  • ⊃,/কনকেনটেশন ফাংশন ( ,) এর সাহায্যে ফলাফল হ্রাস করে আমরা অক্ষরের একটি সমতল তালিকা ফিরে পেয়েছি তা নিশ্চিত করার জন্য কিছু প্রয়োজনীয় কাগজপত্র । যদি ইনপুটটি ইতিমধ্যে একটি সমতল তালিকা (যেমন, আমাদের মূল ফাংশনের বাম আর্গুমেন্টটি কেবল স্ট্রিং), আমরা সেই তালিকাটি সহ 1-উপাদান তালিকা পাই। অন্য ক্ষেত্রে, যখন স্ট্রিংয়ের জন্য একটি উপ-তালিকা নিয়ে আমাদের একটি তালিকা থাকে, আমরা একই জিনিসটি ফিরে পাই (উপ-তালিকা সহ একটি তালিকা)। তারপরে আমরা এই ( )টিকে আনপ্যাক করি , কেবলমাত্র তালিকার প্রথম উপাদানটি (যেমন অক্ষরের উপ-তালিকা) দিয়েছি । এটি অপ্রয়োজনীয় বলে মনে হতে পারে তবে অন্যথায় আমরা তখন 1-উপাদান তালিকা পুনরায় আকার দেওয়ার চেষ্টা করব!

এর পরে, প্রথম বন্ধুত্বের মধ্যে আমরা পুনরায় আকারের জন্য প্রদত্ত দৈর্ঘ্যটি দেখি:

  • ⍺,⍵: আমরা প্রথম যুক্তিতে সঠিক যুক্তিটি সম্মতি জানাই
  • ⊃,/⍺,⍵: আগের মতোই - তালিকাটি সমতল করুন।
  • +/0=⊃,/⍺,⍵: যোগ /( +) ফাংশনটি ব্যবহার করে ( ) হ্রাস করে তালিকায় শূন্যের সংখ্যা যুক্ত করুন ।
  • 2×+/0=⊃,/⍺,⍵: এই সংখ্যাটি দুটি দিয়ে গুণ করুন।
  • z←2×+/0=⊃,/⍺,⍵: ফলাফলটি একটি ভেরিয়েবলকে নির্ধারণ করুন z,। পুনরুদ্ধার করতে, zএখন বাম এবং ডান উভয় আর্গুমেন্টে পাওয়া শূন্যের দ্বিগুণ।
  • 77+z←2×+/0=⊃,/⍺,⍵: আমরা 77কুইন স্ট্রিংয়ের অক্ষরগুলির জন্য, পরে স্থানটির পরে সমস্ত কিছু উপেক্ষা করে যুক্ত করব 1। প্রাথমিক কুইনের উদাহরণের মতো, আমরা আরও একটি একক উদ্ধৃতি পেতে স্ট্রিংয়ের দৈর্ঘ্যে 1 যুক্ত করি।
  • এই পুনরায় আকারের আউটপুট, উদাহরণস্বরূপ: '{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 ''

এরপরে পুনর্নির্মাণের পক্ষে যুক্তিটি সহজ এবং সংক্ষিপ্ত কুইনকে আয়না করে (প্রথম পুনর্নির্মাণের জন্য দৈর্ঘ্যের 2 গুণ)। আমাদের আউটপুট এখন:

'{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 '''{(((3+z)×^/⍵)-5+2×+/+/¨⍺=0)⌽(2×77+z)⍴(77+z←2×+/0=⊃,/⍺,⍵)⍴⊃,/(~^/¨⍺=0)/⍺}1 0 ''

এখন চূড়ান্ত পদক্ষেপের জন্য, যেখানে আমরা আউটপুট স্ট্রিংটি কতটা ঘোরান তা গণনা করি:

  • পূর্ববর্তী আউটপুটটি দেখে আপনি দেখতে পাচ্ছেন, 2 টি চূড়ান্ত উক্তিটি শুরুতে আনতে আমরা এটি আবার ঘোরানো চাই (একটি নেতিবাচক পরিমাণ)। যেহেতু আমরা একটি 0(এবং অন্য একটি স্থান) পাশাপাশি শুরুতে যেতে চাই, আমরা এটি অতিরিক্ত 3 টি অক্ষর ফিরে ঘোরতে চাই।
  • +/+/¨⍺=0: বাম আর্গুমেন্টে শূন্যের সংখ্যা যুক্ত করুন । প্রথমটি (ডান দিক থেকে) +/¨প্রতিটি উপাদানের গণনার সমষ্টি করে (যেমন, একটি উপ তালিকা বা কেবল একটি পূর্ণসংখ্যা) এবং দ্বিতীয়টি +/আমাদের ফলাফলের তালিকার যোগফল দেয়।
  • 5+2×+/+/¨⍺=0: দুটি দিয়ে গুণ করুন (পাশাপাশি স্পেসগুলি ঘোরানোর জন্য) এবং 5 যোগ করুন (ফলাফলটি আমরা আগে নিয়ে এসেছি)।
  • এখন, আমরা -যখন আমাদের চক্রের শেষের দিকে আঘাত করি তখন কেসটি পরিচালনা করতে আমরা বাম যুক্তি থেকে পূর্বের মানটি বিয়োগ করি :
    • (3+z)×^/⍵: এবং সঠিক যুক্তিতে সমস্ত উপাদান এক সাথে দেখতে আমরা কী আমাদের শেষ ( 1) পৌঁছে গেছি তা দেখতে এবং এটির দ্বারা বহুগুণ 3+z

এবং আমরা সম্পন্ন করেছি!


বাহ, খুব শীতল, আমি যখন আসল প্রশ্নটি লিখি তখন এ জাতীয় কিছুই আশা করিনি! আমি মোটেও এপিএলে কথা বলি না, আপনি কীভাবে এটির কাজ করে তার একটি ওভারভিউ দিতে পারে এমন কোনও সুযোগ আছে?
গর্ডন বেইলি

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

আপনার চূড়ান্ত ডকুমেন্টেশনের জন্য অনেক ধন্যবাদ, আপনি এখানে কিছু ঝরঝরে কৌশল ব্যবহার করছেন। আমি বিশেষত অপারেটরের ব্যবহার পছন্দ করি (?)। আমি মনে করি পুরোপুরি পুরোপুরি হজমের আগে আরও কয়েকবার পড়তে হবে!
গর্ডন বেইলি

13

গল্ফস্ক্রিপ্ট, 10046/9999 ≈ 1.0047 (অ্যাসিম্পটোটিক স্কোর 1)

ঠিক আছে, আমি এটির সাথে ডিসির এপিএল এন্ট্রিটি চেষ্টা করব এবং পরাজিত করব :

{\''+.,{(;\'.~1'}{'1'9999*@'.~']puts:puts}if}.~

উপরে কোড না প্রকৃত quine - আমি মনে হয়েছে যে, একটি 10KB এক-লাইনের পোস্ট একটি খুব ভাল ধারণা হবে না। বরং উপরের কোডটি চালানো একবারে আসল 10046-চর গল্ফস্ক্রিপ্ট প্রোগ্রাম তৈরি করে, যা প্রশ্নে বর্ণিত পুনরাবৃত্ত হলে নিজের 9999 ঘূর্ণন উত্পন্ন করে এবং শেষ পর্যন্ত নিজেই আবার তৈরি করে।

চক্রের দৈর্ঘ্য (এবং প্রোগ্রাম) ধ্রুবকটি পরিবর্তন করে সামঞ্জস্য করা যেতে পারে 9999। সংক্ষিপ্ততা এবং সুবিধার জন্য, আমি ধ্রুবক হ্রাস করা হলে পুনরাবৃত্ত আউটপুটটি দেখতে কেমন তা দেখাব 9:

111111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~
11111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~1
1111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~11
111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~111
11111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~1111
1111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~11111
111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~111111
11{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~1111111
1{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~11111111
{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~111111111
111111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~
11111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~1
1111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~11
111111{\''+.,{(;\'.~1'}{'1'9*@'.~']puts:puts}if}.~111
etc.

ধ্রুবকটি 9999বাড়ার সাথে সাথে প্রোগ্রামের দৈর্ঘ্য এবং চক্রের দৈর্ঘ্যের অনুপাত (মাইনাস ওয়ান) একের সাথে থাকে। আমি দৃ sure় নিশ্চিত যে এই সমাধানটি পিটানো যাবে না, কমপক্ষে তাত্পর্যপূর্ণভাবে নয়। ;-)

এটা কিভাবে কাজ করে?

গল্ফস্ক্রিপ্ট একটি কুইন লিখতে খুব সহজ ভাষা, যেহেতু মূলত যে কোনও সংখ্যক আক্ষরিক কুইন হিসাবে কাজ করে: উদাহরণস্বরূপ, গল্ফস্ক্রিপ্ট প্রোগ্রাম 12345আউটপুট - আপনি এটি অনুমান করেছিলেন - 12345। এছাড়াও, একাধিক কুইনকে একত্রিত করে সাধারণত একটি কুইন তৈরি করে। সুতরাং, আমি 11111...111আমার চক্রাকার কুইনের পুনরাবৃত্ত অংশ হিসাবে একটি সাধারণ সংখ্যা ব্যবহার করতে পারি।

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

{PAYLOAD'.~'}.~

সুতরাং আমার পরিকল্পনাটি ছিল পুনরাবৃত্ত সংখ্যার ধ্রুবক সহ একটি কুইনটির উপসর্গ করা এবং একটি পে-লোড ব্যবহার করুন যা নম্বরটি থেকে এক অঙ্ক ছাঁটাই করে প্রোগ্রামের শেষের দিকে নিয়ে যায়। যদি প্রোগ্রাম ডিটেক্ট করে যে হয় এটা সামনে কোনো সাংখ্যিক ধ্রুবক (যে ক্ষেত্রে স্ট্যাক নীচের মান একটি খালি স্ট্রিং হতে হবে, কোন ইনপুট অভিমানী), এটা পরিবর্তে সামনে একটি নির্দিষ্ট দৈর্ঘ্যের সাংখ্যিক ধ্রুবক পূর্বে লিখুন হবে নিজেই।

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

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

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


আমার ব্যতীত আমার পক্ষে কাজ করার জন্য মনে হচ্ছে puts{}:puts, যদিও আমি {print}:putsআউটপুটে একটি নতুন লাইনের অর্থ দাঁড়ালো যে এটি কঠোরভাবে সাইকেল চালানো নয় the
পিটার টেলর

@ পিটার: মোড়কের ]puts{}:putsকাছাকাছি থেকে শুরু {STUFF}.~111111111করার জন্য প্রয়োজনীয় 111111111{STUFF}.~, অন্যথায় 1প্রোগ্রামের শেষে এসগুলির সংখ্যা কেবল বাড়ছে এবং বর্ধমান রাখে। ( {}যদিও এটি অপ্রয়োজনীয় বলে মনে হচ্ছে; স্পষ্টতই, গল্ফস্ক্রিপ্ট ইন্টারপ্রেটার খালি স্ট্যাক থেকে অ্যাসাইনমেন্টের অনুমতি দেয়।)
ইলমারি করোনেন

খুব সুন্দর, যদিও দেখে মনে হচ্ছে ডিসি 1 এর একটি এ্যাসিম্পোটিক স্কোর সহ একটি সমাধান পোস্ট করেছে, তাই আমাদের একটি টাই হতে পারে।
গর্ডন বেইলি

-3

এইচটিএমএল, বিয়োগ অনন্ত (প্রায়)

-2

AA

-10

AAAAAAAAAA

এবং এইভাবেই ... কেউ যদি বলে যে এটি প্রতারণা করছে, তবে আমরা এটি নিয়ে তর্ক করতে পারি, তবে আমি একটি প্রশ্ন পেয়েছি :)

সুতরাং আমি অনুমান করি যে প্রত্যেকটি কোড বুঝতে পারে, এর কোনও লুপ নেই, তাই দীর্ঘতম লুপটি 0বিবেচনা করে এবং প্রোগ্রামের দৈর্ঘ্যটি বিবেচনা করে nস্কোর হয় n / (0 - 1)বা -n, আমি এমন প্রোগ্রাম লিখতে পারি যার nমতো বড় ধনাত্মক পূর্ণসংখ্যা থাকে তবে এটি অকেজো, কারণ প্রত্যেকে এটি বোঝে।


7
বলার জন্য দুঃখিত, তবে আপনার চক্রের দৈর্ঘ্য 1 নয়, 0 নয় So সুতরাং আপনার স্কোর n / 0 যা নেতিবাচক বা ছোটও নয়।
পল থোম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.