এমন একটি প্রোগ্রাম লিখুন যা এর মিরর স্তরকে ছাড়িয়ে যায়


31

95 টি মুদ্রণযোগ্য ASCII অক্ষর রয়েছে:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

ইন Consolas ফন্ট (স্ট্যাক এক্সচেঞ্জ কোড ব্লক ডিফল্ট), অক্ষরের কিছু প্রতিসাম্য একটি উল্লম্ব অক্ষের চারপাশে আয়না আছে:

  • এই জোড়া অক্ষর একে অপরের আয়না: () [] {} <> /\
  • এই অক্ষরগুলি নিজেরাই আয়না: ! "'*+-.8:=AHIMOTUVWXY^_ovwx|(মনে রাখবেন যে স্থানটি একটি।
  • এগুলির আয়না নেই: #$%&,012345679;?@BCDEFGJKLNPQRSZ`abcdefghijklmnpqrstuyz~

( i, l, 0, #, এবং সম্ভবত অন্যান্য অক্ষরের তাদের নিজস্ব আয়না কিছু হরফ আছে কিন্তু আমরা Consolas আকার বিদ্ধ করব।)

একটি স্ট্রিংকে নিজেকে একটি আয়না বলা হয়, যদি এটি কেবল 39 টি আয়না অক্ষর দিয়ে তৈরি করা হয় , এমনভাবে সাজানো হয় যে স্ট্রিংটির প্রতিসামগ্রীটির কেন্দ্রীয় উল্লম্ব রেখা থাকে। তাই ](A--A)[নিজের একটি আয়না কিন্তু ](A--A(]না।

এক-লাইন সম-দৈর্ঘ্যের প্রোগ্রাম লিখুন যা নিজেরাই একটি আয়না। যখন এর বাম অর্ধেকের অনুলিপিগুলি এতে যুক্ত হয়ে গেছে এবং ডান অর্ধের এন কপিগুলি এতে যুক্ত করা হয়েছে, তখন এটি এন + 1 আউটপুট করা উচিত। এন একটি অ-নেতিবাচক পূর্ণসংখ্যা।

উদাহরণস্বরূপ, যদি প্রোগ্রামটি ছিল ](A--A)[(বাম অর্ধ:, ](A-ডান অর্ধ -A)[:), তবে:

  • চলমান ](A--A)[আউটপুট করা উচিত 1। (এন = 0)
  • চলমান ](A-](A--A)[-A)[আউটপুট করা উচিত 2। (এন = 1)
  • চলমান ](A-](A-](A--A)[-A)[-A)[আউটপুট করা উচিত 3। (এন = 2)
  • চলমান ](A-](A-](A-](A--A)[-A)[-A)[-A)[আউটপুট করা উচিত 4। (এন = 3)
  • । । ।
  • চলমান ](A-](A-](A-](A-](A-](A-](A-](A-](A-](A--A)[-A)[-A)[-A)[-A)[-A)[-A)[-A)[-A)[-A)[আউটপুট করা উচিত 10। (এন = 9)
  • প্রভৃতি

বিধি

  • অবিরাম বা আপনার ভাষার নিকটতম বিকল্প আউটপুট। Anচ্ছিক ট্রেলিং নিউলাইন থাকতে পারে। কোনও ইনপুট নেওয়া উচিত নয়।
  • প্রক্রিয়াটি তাত্ত্বিকভাবে N এর পক্ষে 2 15 -1 অবধি বা তার বাইরেও পর্যাপ্ত মেমরি এবং কম্পিউটিং পাওয়ার সরবরাহ করা উচিত।
  • একটি পূর্ণ প্রোগ্রাম প্রয়োজন, কেবল একটি আরপিএল কমান্ড নয়।

বাইট জেতে সংক্ষিপ্ততম প্রাথমিক প্রোগ্রাম (এন = 0 কেস)।


কিছু ফন্টে, #এটির নিজস্ব প্রতিচ্ছবিটিও, তবে, আপনি ঠিক বলেছেন, কনসোলে নেই।
সুপারজেডি ২৪

1
Repls ব্যবহার অনুমোদিত? অন্য কথায়: আমরা একটি সম্পূর্ণ বৈধ প্রোগ্রাম লিখতে হবে বা একটি অভিব্যক্তি যথেষ্ট? আমি হাস্কেল এন্ট্রি সম্পর্কে ভাবছি যা ঘিচসিতে চলার সময় কাজ করবে তবে একটি বৈধ সম্পূর্ণ প্রোগ্রাম নয়।
বাকুরিউ

@ বাকুরিউ একটি পূর্ণাঙ্গ প্রোগ্রামের প্রয়োজন। হাস্কেল উত্তরটি অবৈধ।
ক্যালভিনের

4
কেন প্রতিটি খানের 'বি' এবং 'ডি' আয়না হয় না? এটি আমার পরিকল্পনাটিকে অসম্ভব করে
তুলেছে

1
@ থিজস্টারহর আমি আসলে এটি বিবেচনা করি নি তবে দেখে মনে হচ্ছে তাদের কনসোলসের আকারগুলি কিছুটা আলাদা, দুঃখিত: পি
ক্যালভিনের

উত্তর:


20

পিপ, 12 8 4 বাইট

এখন 66% কম বাইট সহ!

x++x
  • xএকটি পরিবর্তনশীল, পূর্বনির্ধারিত ""। সংখ্যার প্রসঙ্গে, এটি হয়ে যায় 0
  • প্রথমার্ধ, ফাইনালের সান করে +, ফর্মের একটি প্রকাশ করে x+x+...+x। এটি একটি বৈধ বিবৃতি যা কিছুই করে না।
  • প্রথমার্ধ +থেকে ফাইনাল সহ দ্বিতীয়ার্ধটি ফর্মের একটি প্রকাশ করে ++x+x+...+x++xএতে বর্ধিত xহয় 1, এবং বাকিগুলি এটিকে এন বারে যুক্ত করে। যেহেতু পিপগুলিতে এক্সপ্রেশনগুলি বাম থেকে ডানকে মূল্যায়ন করা হয়, বর্ধিতকরণটি প্রথমে হওয়ার নিশ্চয়তা দেওয়া হয়, এবং ফলাফলটি আয়না স্তরের সংখ্যার সমান।
  • শেষে, এই অভিব্যক্তিটির মানটি স্বয়ংক্রিয়ভাবে মুদ্রিত।

দুর্ভাগ্যক্রমে, পাইপ বিশাল আকারের এক্সপ্রেশনগুলি ভালভাবে প্রক্রিয়াকরণ করে না: এই সমাধানটি maximum recursion depth exceeded500 বা তার বেশি N এর জন্য একটি ত্রুটির কারণ করে । এখানে একটি পূর্ববর্তী সমাধান যা 8 বাইটের জন্য হয় না :

x++oo++x

পাইপে আরও


ঠিক আছে, যদি না কেউ 2 বাইট উত্তর পোস্ট না করে, দেখে মনে হচ্ছে আপনি এটি একটি ব্যাগে পেয়েছেন। যাইহোক, আমি জানি না আপনি এটি এন = 32767 দিয়ে চালিত করেছেন , তবে আসল আউটপুট Fatal error: maximum recursion depth exceeded while calling a Python object
ডেনিস

@ ডেনিস হ্যাঁ, আমি আসলে এটির মধ্যে দৌড়েছি - এটি খুব তাড়াতাড়ি শুরু হয়, এর আগে না হলে প্রায় 600 600 কারণটি হ'ল প্রথমে সমস্ত subexpressions পুনরাবৃত্তিমূলক মূল্যায়ন করে এক্সপ্রেশনগুলি মূল্যায়ন করা হয়, সুতরাং x+x+...+xপুনরাবৃত্তির ও (এন) গভীরতা তৈরি করে। হতে পারে যে এই উত্তর অবৈধ। আমি একটি নোট যুক্ত করব।
ডিএলসাস

পুনরাবৃত্তি সীমাটি পাইথনে সহজেই নিয়মিত হয়, তাই না?
ডেনিস

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

আমি চেষ্টা করেছিলাম. আমার মেশিনে, পুনরাবৃত্তি সীমা 20000 ইতিমধ্যে segfaults বৃদ্ধি করা। তবে যেহেতু উত্তরটি কেবলমাত্র যথেষ্ট মেমরি এবং কম্পিউটিং শক্তি দিয়ে কাজ করতে হবে করতে হবে, তাই সমস্যা হওয়া উচিত নয়।
ডেনিস

34

গল্ফস্ক্রিপ্ট, 10 বাইট

!:{)::(}:!

ওয়েব গল্ফস্ক্রিপ্ট সহ এটি অনলাইনে চেষ্টা করুন: এন = 0 , এন = 1 , এন = 2 , এন = 3 , এন = 41

ওয়েব গল্ফস্ক্রিপ্টের একটি 1024 চরিত্রের সীমা রয়েছে, তবে রুবি ইন্টারপ্রেটার এন = 32767 পুরোপুরি পরিচালনা করে :

$ curl -Ss http://www.golfscript.com/golfscript/golfscript.rb > golfscript.rb
$ echo '"!:{):"32768*":(}:!"32768*' | ruby golfscript.rb > mirror-level-32767.gs
$ ruby golfscript.rb mirror-level-32767.gs
32768

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

কোনও ইনপুট ছাড়াই গল্ফস্ক্রিপ্টের শুরুতে স্ট্যাকটিতে একটি খালি স্ট্রিং থাকে।

প্রথম বামার্ধে, নিম্নলিখিতটি ঘটে:

  • !ফাঁকা স্ট্রিংয়ের জন্য লজিক্যাল নয় প্রয়োগ করে। এই ধাক্কা 1

  • :{ভেরিয়েবলের স্ট্যাকের উপর পূর্ণসংখ্যা সংরক্ষণ করে {

    হ্যাঁ, এটি বৈধ শনাক্তকারী, যদিও সঞ্চিত মান পুনরুদ্ধার করার কোনও উপায় নেই।

  • ) স্ট্যাকের পূর্ণসংখ্যা বৃদ্ধি করে।

  • : এটি একটি অসম্পূর্ণ নির্দেশ।

পরবর্তী বাম অংশগুলি, নিম্নলিখিতটি ঘটে:

  • :! (কোথায় : আগে থেকে কোন অবশিষ্টাংশ ) ভেরিয়েবলের স্ট্যাকের উপর পূর্ণসংখ্যা সংরক্ষণ করে !

    হ্যাঁ, এটিও একটি বৈধ শনাক্তকারী। এটি বিরতি! কমান্ডটি তবে আমরা এটি আর ব্যবহার করি না।

  • :{, ) এবং :আগের মত কাজ।

প্রথম ডান অংশে, নিম্নলিখিতটি ঘটে:

  • :: (কোথায় : আগে থেকে কোন অবশিষ্টাংশ ) ভেরিয়েবলের স্ট্যাকের উপর পূর্ণসংখ্যা সংরক্ষণ করে :

    হ্যাঁ, এমনকি বৈধ শনাক্তকারী। যেমনটি রয়েছে {, সঞ্চিত মানটি পুনরুদ্ধার করার কোনও উপায় নেই।

  • ( স্ট্যাকের পূর্ণসংখ্যা হ্রাস করে, বাম অর্ধেকের সংখ্যা দেয়।

  • }, যেহেতু এটি তুলনামূলক নয় এবং অবিলম্বে মৃত্যুদন্ড কার্যকর করে।

    এটি একটি অনিবন্ধিত বৈশিষ্ট্য। আমি তাদের সুপার কমেন্টস বলি ।

বাকি কোডগুলি কেবল উপেক্ষা করা হয়।


}আয়নার প্রতিযোগিতায় আপনার কোডের ২ য় অর্ধেকের সাথে মিল না পাওয়া সত্যিই অদ্ভুত বলে মনে হচ্ছে ।
বলস্টে 25

এটি প্যালিনড্রোমের বৈকল্পিকগুলির একটি সাধারণ কৌশল। ইন "\""/", চতুর্থ ডাবল উদ্ধৃতিটি একই সাথে মেলে যেমন দ্বিতীয়টি পালানো হয়েছে।
ডেনিস

27

জেড 80 মেশিন কোড, 8 6 বাইট *

<8ww8> * আমস্ট্রাদ বেসিক থেকে প্রবেশ করে কিছু শর্ত অনুমান করে

<   INC A         // A=A+1
8w  JR C, #77     ## C is unset unless A has overflowed, does nothing

w   LD (HL), A    // Saves A to memory location in HL (randomly initialised)
8>  JR C, #3E     ## C is still unset, does nothing

Aবেসিক থেকে প্রবেশ করার সময় প্রাথমিকভাবে 0 হয়। এটা তোলে বৃদ্ধি A এন বার, তাহলে এটি লিখেছেন এন (যা বেসিক দ্বারা সামান্য যেকোনো অবস্থানে সেট করা হয়) একই মেমরির অবস্থান গুণ! JRযেহেতু ঝাঁপ দাও আপেক্ষিক অপারেশন কখনো কিছু না Cপতাকা সবসময় সেট করা থাকে না, তাই "আউট মন্তব্য" নিম্নলিখিত বাইট ব্যবহার করা হয়! এই সংস্করণটি নির্দিষ্ট প্রবেশের শর্ত ধরে ধরে কিছুটা প্রতারণা করছে, যথা Aসর্বদা BASIC গ্যারান্টি থেকে প্রবেশ করে 0 এর অবস্থানটি (HL)নিরাপদ হওয়ার গ্যারান্টি নেই, এবং সম্ভবত এটি সম্ভবত একটি বিপজ্জনক অবস্থান। নীচের কোডটি অনেক বেশি শক্তিশালী কারণ এটি এত দীর্ঘ।

জেড 80 মেশিন কোড, 30 বাইট

ASCII হিসাবে: o!.ww.!>A=o>{))((}<o=A<!.ww.!o

মূলত, প্রথমার্ধটি একটি শূন্য মান তৈরির গ্যারান্টি দেয় এবং দ্বিতীয়ার্ধ এটি বৃদ্ধি করে এবং স্মৃতিতে লিখে দেয়। নীচের প্রসারিত সংস্করণে ##কোডটি বোঝায় যা আয়নার অর্ধেক অংশে কোনও উদ্দেশ্য করে না।

o   LD L, A       ## 
!.w LD HL, #772E  // Load specific address to not corrupt random memory!
w   LD (HL), A    ## Save random contents of A to memory
.!  LD L, #21     ## 
>A  LD A, #41     // A=#41
=   DEC A         // A=#40
o   LD L, A       // L=#40
>{  LD A, #7B     ## 
)   ADD HL, HL    // HL=#EE80
)   ADD HL, HL    // HL=#DD00. L=#00 at this point

((  JR Z, #28     ## 
}   LD A, L       // A=L
<   INC A         // A=L+1
o   LD L, A       // L=L+1
=   DEC A         // A=L
A   LD B, C       ## 
<   INC A         // A=L+1
!.w LD HL, #772E  // Load address back into HL
w   LD (HL), A    // Save contents of A to memory
.!  LD L, #21     ## 
o   LD L, A       // L=A

অনুমোদিত নির্দেশাবলী ভঙ্গ:

n   op    description
--  ----  -----------
28  LD    LoaD 8-bit or 16-bit register
3   DEC   DECrement 8-bit or 16-bit register
1   INC   INCrement 8-bit or 16-bit register
1   ADD   ADD 8-bit or 16-bit register

Available but useless instructions:
3   JR    Jump Relative to signed 8-bit offset
1   DAA   Decimal Adjust Accumulator (treats the A register as two decimal digits
          instead of two hexadecimal digits and adjusts it if necessary)
1   CPL   1s ComPLement A
1   HALT  HALT the CPU until an interrupt is received

অনুমোদিত 39 টি নির্দেশাবলীর মধ্যে 28 টি লোড অপারেশন (0x40 থেকে 0x7F অবধি সমস্ত একক বাইট LDনির্দেশ রয়েছে), যার বেশিরভাগ এখানে কোনও সহায়ক নয়! এখনও মেমরির নির্দেশের একমাত্র লোডের অনুমতি দেওয়া হ'ল LD (HL), Aএর অর্থ হল আমাকে মানটি সঞ্চয় করতে হবে A। যেহেতু Aঅনুমোদিত INCনির্দেশের সাথে একমাত্র নিবন্ধক বাকি রয়েছে এটি আসলে বেশ কার্যকর!

আমি A0x00 দিয়ে শুরু করতে লোড করতে পারি না কারণ ASCII 0x00 অনুমোদিত অনুমতিযুক্ত অক্ষর নয়! সমস্ত উপলভ্য মানগুলি 0 থেকে অনেক দূরে এবং সমস্ত গাণিতিক এবং যৌক্তিক নির্দেশনা বাতিল করা হয়েছে! বাদে ... আমি এখনও করতে পারি ADD HL, HL, HLনিজের মধ্যে 16-বিট যুক্ত করুন ! সরাসরি লোডিং মানগুলি ছাড়া (এখানে কোনও ব্যবহার নেই!), আইএনক্রিমেন্টিং Aএবং ডেক্রেমেন্টিং A, Lবা HLকোনও রেজিস্ট্রারের মান পরিবর্তন করার একমাত্র উপায় আমার! আসলে একটি বিশেষ নির্দেশ রয়েছে যা প্রথমার্ধে সহায়ক হতে পারে তবে দ্বিতীয়ার্ধে কাজ করার জন্য একটি ব্যথা এবং একটি পরিপূরক নির্দেশ যা এখানে প্রায় অকেজো এবং কেবল স্থান গ্রহণ করবে।

সুতরাং, আমি 0 এর পার্শ্ববর্তী মানটি পেয়েছিলাম: 0x41। কিভাবে 0 এর কাছাকাছি? বাইনারি এটি 0x01000001। সুতরাং আমি এটিকে হ্রাস করছি, এটিকে লোড করুন Lএবং ADD HL, HLদু'বার করুন! Lএখন শূন্য, যা আমি আবার লোড করব A! দুর্ভাগ্যবশত, জন্য ASCII কোড ADD HL, HLহল )তাই আমি এখন ব্যবহার করতে হবে (দুইবার। সৌভাগ্যবসত, (হয় JR Z, e, যেখানে eপরবর্তী বাইট। সুতরাং এটি দ্বিতীয় বাইট আপ গব্বল এবং আমি ঠিক নিশ্চিত করা প্রয়োজন যে Zপতাকা সঙ্গে সতর্কতা অবলম্বন করে এটি কিছু না করে ! Zপতাকাটি প্রভাবিত করার জন্য সর্বশেষ নির্দেশটি ছিল DEC A(পাল্টা স্বজ্ঞাত, ADD HL, HLএটি পরিবর্তন করে না) এবং যেহেতু আমি জানি যে A0x40 ছিল যে সময়ে এটির গ্যারান্টিটি Zসেট করা হয়নি।

দ্বিতীয়ার্ধে প্রথম নির্দেশনাটি JR Z, #28প্রথম 255 বার কিছুই করবে না কারণ জে ফ্ল্যাগটি কেবল তখনই সেট করা যায় যদি A 255 থেকে 0 থেকে প্রবাহিত হয় তবে তার পরে আউটপুটটি ভুল হবে, তবে যেহেতু এটি কেবল 8-বিট মানগুলিকেই সংরক্ষণ করছে যে কোন ব্যাপার না। কোডটি 255 বারের বেশি প্রসারিত করা উচিত নয়।

কোডটি স্নিপেট হিসাবে কার্যকর করতে হবে যেহেতু পরিষ্কারভাবে ফেরার সমস্ত উপলভ্য উপায় বাতিল করা হয়েছে। সমস্ত পুনর্নির্দেশের নির্দেশাবলী 0x80 এর উপরে এবং অনুমোদিত কয়েকটি ঝাঁপ অপারেশন কেবল একটি ইতিবাচক অফসেটে ঝাঁপিয়ে উঠতে পারে, কারণ সমস্ত 8-বিট নেতিবাচক মানগুলিও বঞ্চিত করা হয়েছে!


6
কি. এটা কি.
ক্লাউডফিট

4
এখন আমি এই উত্তরটি দেখেছি, গল্ফস্ক্রিপ্ট / জে / ইত্যাদি ব্যবহার করে। প্রতারণার মতোই মনে হচ্ছে। : পি
ক্লাউডফিট

একটি 16-বিট এ রেজিস্টার সহ Z80- সামঞ্জস্যপূর্ণ প্রসেসর রয়েছে? আমি জিজ্ঞাসা করছি যেহেতু প্রশ্নের দরকার কোডটি এন = 32767 এর জন্য কাজ করা উচিত ।
ডেনিস

1
@ ডেনিস কোনও প্রোগ্রামে এন = 32767 এর জন্য কাজ করার জন্য এটি কমপক্ষে 2 x 32767 বা 65534 বাইট দীর্ঘ হতে হবে। জেড 80 কেবল মেমরির 65536 বাইটকে সম্বোধন করতে পারে, এটি একটি অসম্ভব কাজ যেহেতু আমি বিশ্বাস করি না যে আমি প্রোগ্রামটি 6 বাইটের চেয়ে ছোট করতে পারি! Aরেজিস্টার সবসময় 8 বিট, অন্যথায় প্রসেসর Z80 সঙ্গে সামঞ্জস্যপূর্ণ হবে না। আমি বলব যে যথেষ্ট মেমরি দেওয়া এবং কম্পিউটিং শক্তি এখানে বন্ধ করা হয়েছে!
সিজে ডেনিস

1
@ ডেনিস আপনি বুঝতে পারেন কেন কোনও Z80 সামঞ্জস্যপূর্ণ প্রসেসরের A8 বিট ব্যতীত অন্য কোনও কিছুর একটি নিবন্ধ থাকবে না? এটি 16-বিটগুলিতে পরিবর্তন করলে 255 + 1 = 0 এর উপর নির্ভরশীল কোডটি ভেঙে যায় । আপনাকে একটি সিপিইউ উদ্ভাবন করতে হবে, এটিকে Z160 বলুন, এটি একটি ডিফল্ট 16-বিট রেজিস্টার ব্যবহার করে তবে এখনও Z80 থেকে একই 8-বিট নির্দেশিকা সেট ব্যবহার করে। অদ্ভুত!
সিজে ডেনিস

19

জে, 16 14 বাইট

(_=_)]++[(_=_)

রীতিনীতি:

   (_=_)]++[(_=_)
1
   (_=_)]+(_=_)]++[(_=_)+[(_=_)
2
   (_=_)]+(_=_)]+(_=_)]++[(_=_)+[(_=_)+[(_=_)
3

ব্যাখ্যা:

  • জে ডান থেকে বামে মূল্যায়ন করে।

  • (_=_)হয় inf equals infযা সত্য, একটি মান আছে 1, তাই অভিব্যক্তি হয়ে 1+]...[+1। ( (8=8)এছাড়াও কাজ করবে তবে এটি শীতল দেখায় :)

  • [এবং ]তাদের 2 টি যুক্তি থাকলে যথাক্রমে তাদের বাম এবং ডান যুক্তি ফিরিয়ে দিন। যদি তারা কেবল 1 পায় তারা তা ফেরত দেয়।

  • +2 টি যুক্তি যুক্ত করে। যদি এটি কেবল 1 পায় তবে এটি ফেরত দেয়।

এখন আসুন একটি স্তর 3 এক্সপ্রেশন মূল্যায়ন (ডান থেকে বাম দিকে):

(_=_)]+(_=_)]++[(_=_)+[(_=_)  NB. (_=_) is 1

1]+1]+1]++[1+[1+[1  NB. unary [, binary +

1]+1]+1]++[1+[2  NB. unary [, binary +

1]+1]+1]++[3  NB. unary [, unary +

1]+1]+1]+3  NB. unary +, binary ]

1]+1]+3  NB. unary +, binary ]

1]+3  NB. unary +, binary ]

3

আমরা যেমন দেখতে পাই যে এর ডান অর্ধেক 1যোগ হয়ে গেছে এবং বাম দিকটি 1বাদ পড়ে যায় যার ফলে কাঙ্ক্ষিত পূর্ণসংখ্যা N, আয়না স্তরটি ঘটে ।

এটি এখানে অনলাইনে চেষ্টা করুন।


12

হাস্কেল, 42 বাইট

(8-8)-(-(8-8)^(8-8))--((8-8)^(8-8)-)-(8-8)

ভাগ্যক্রমে হাস্কেলের একটি লাইন মন্তব্য (-> --) মিররযোগ্য এবং এর অর্ধেক (-> -) একটি বৈধ ফাংশন। বাকি সংখ্যাগুলি পাওয়ার জন্য কিছু গণিত 0এবং 1। মূলত আমাদের প্রতিটি পদক্ষেপের (0)-(-1)জন্য একটি মন্তব্য N=0এবং প্রিপেন্ড (0)-(-1)-রয়েছে।

ফ্লোটিং পয়েন্ট সংখ্যার আউটপুট অনুমতি দেওয়া হয়, তাহলে আমরা নির্মাণ করতে পারেন 1থেকে 8/826 বাইট এর মাধ্যমে পাবেন:

হাস্কেল, 26 বাইট

(8-8)-(-8/8)--(8\8-)-(8-8)

আউটপুটস 1.0, 2.0ইত্যাদি


2
এটি প্রযুক্তিগতভাবে অবৈধ কারণ এটি অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম হতে হবে।
ক্যালভিনের

@ ক্যালভিনের শখগুলি: আমি দেখছি। একটি পূর্ণ কর্মসূচির ন্যূনতম প্রয়োজনীয়তার বিষয়ে আমাদের কী একমত আছে? আমি মেটা অনুসন্ধান করেছি, তবে কেবল কর্মসূচি সম্পর্কে আলোচনা করেছি, প্রোগ্রামগুলি নয়। একটি পূর্ণ প্রোগ্রামের সংজ্ঞা অনুসারে আমি আমার সমাধানটি ঠিক করতে সক্ষম হতে পারি।
নিমি

আমি এটিকে একটি পূর্ণ প্রোগ্রাম বলব যদি আপনি এটি কোনও ফাইলে সংরক্ষণ করতে পারেন program.hsএবং $ runhaskell program.hsকমান্ড লাইন থেকে চালিয়ে আউটপুট দেখতে পারেন। আমি হাস্কেলকে চিনি না তাই পরিবর্তনের দরকারের মতো সঠিকভাবে বলতে পারি না।
ক্যালভিনের

2
@ ক্যালভিনের শখগুলি: runhaskellএকটি শেল স্ক্রিপ্ট যা কিছু পরিবেশ সেট আপ করে এবং অবশেষে কল করে ghc, হ্যাস্কেল সংকলক। আপনার সাথে সরাসরি আমার কোড রান করতে পারেন ghc: ghc -e "(8-8)-(-8/8)--(8\8-)-(8-8)"। এটি আরম্ভ করে ghcযা আর্গুমেন্ট হিসাবে প্রদত্ত কোডটিকে মূল্যায়ন করে, ফলাফল মুদ্রণ করে এবং প্রস্থান করে। কোনও রেপিএল নয়, কোনও মিথস্ক্রিয়া নেই। অবশ্যই এটির জন্য বাইট গণনাতে +1 যোগ করবে -e
নিমি

@ নিমিমি: এক্ষেত্রে স্কোরটিতে -eঅবদান রাখবে না। আমরা perl -Eবা gcc -std=c99উভয়ের জন্য বাইট গণনা করি না ।
ডেনিস

11

সিজেম, 14 বাইট

]X+:+OooO+:+X[

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে ব্যবহার করে দেখুন: এন = 0 , এন = 1 , এন = 2 , এন = 3 , এন = 41

নোট করুন যে এই কোডটি একটি ত্রুটি বার্তা দিয়ে শেষ হয়েছে। জাভা দোভাষী ব্যবহার করে, ত্রুটি বার্তাটি এসটিডিআরআর বন্ধ বা পুনর্নির্দেশের মাধ্যমে দমন করা যেতে পারে। 1

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

বাম অংশে, নিম্নলিখিতগুলি ঘটে:

  • ] একটি অ্যারেতে পুরো স্ট্যাকটি জড়িয়ে দেয়।

  • X1যে অ্যারে সংযোজন ।

  • :+ সমস্ত অ্যারের উপাদানগুলির যোগফল গণনা করে।

  • Oo খালি অ্যারের সামগ্রীগুলি মুদ্রণ করে (অর্থাত্ কিছুই নেই)।

প্রথম ডান অংশে, নিম্নলিখিতটি ঘটে:

  • o স্ট্যাকের উপর পূর্ণসংখ্যা মুদ্রণ করে, যা পছন্দসই আউটপুট।

  • O+ স্ট্যাকের শীর্ষতম আইটেমটিতে একটি খালি অ্যারে সংযুক্ত করার চেষ্টা করে।

    তবে ধাক্কা দেওয়ার আগে স্ট্যাকটি খালি ছিল O। এটি ব্যর্থ হয় এবং প্রোগ্রামটির সম্পাদন বন্ধ করে দেয়।

বাকি কোডগুলি কেবল উপেক্ষা করা হয়।

1 মেটা পোল অনুসারে সাবমিশনগুলিকে কোনও ত্রুটির সাথে প্রস্থান করার অনুমতি দেওয়া উচিত? , এটি অনুমোদিত।


আমি ত্রুটিযুক্ত জিনিসটির কারণে এটি গ্রহণে সংশয়ী হব, তবে এটি জিতেনি বলে আমি খুব বেশি উদ্বিগ্ন নই।
ক্যালভিনের

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