ব্রেইনফ *** অনন্য আউটপুট সহ উপ-প্রোগ্রাম


19

আপনার একটি 100 বাইট দীর্ঘ ব্রেনফাক (বিএফ) প্রোগ্রাম লিখতে হবে।

একটি চরিত্র এটি থেকে সম্ভাব্য প্রতিটি উপায়ে 100 নতুন (99-বাইট দীর্ঘ) প্রোগ্রামগুলি মুছে ফেলা হবে। প্রোগ্রামের জন্য যেমন ++.>.5 subprograms হয় +.>., +.>., ++>., ++..এবং ++.>

আপনার স্কোরটি 100 টি প্রোগ্রাম তৈরি করে এমন অনন্য ফলাফলের সংখ্যা হবে। উচ্চতর স্কোর ভাল।

বিস্তারিত

  • আপনার প্রোগ্রামগুলি প্রথম অক্ষর আউটপুট দেওয়ার পরে সমাপ্ত হবে।
  • অবৈধ বা নন-টার্মিনেটিং প্রোগ্রাম এবং প্রোগ্রামগুলি খালি আউটপুট তৈরি করে স্কোরের জন্য গণনা করা হয় না।
  • বিএফ কোষগুলি 8 বিট মোড়ানো রয়েছে। (255 + 1 = 0, 0-1 = 255)
  • আপনার প্রোগ্রামটি কোনও ইনপুট দেওয়া হয়নি। আপনি যদি ,কোডটি ব্যবহার করেন তবে এটির বর্তমান সেলটি সেট করে 0
  • প্রারম্ভিক অবস্থানের বাম দিকে কোনও ঘর নেই। উদাহরণস্বরূপ <.অবৈধ তবে কার্যনির্বাহী .<সমাপ্ত হওয়ায় বৈধ .। টেপটি অন্য দিকে সীমাহীন।
  • ভারসাম্যহীন বন্ধনী ( [এবং ]) সহ প্রোগ্রামগুলি অবৈধ।
  • আপনার আসল প্রোগ্রামটি 100 বাইটের চেয়ে কম হতে পারে কারণ স্কোর পরিবর্তন না করে এটি 100 বাইটে বাড়ানো সহজ।
  • আপনার আসল প্রোগ্রামটি বৈধ বিএফ কোড হতে হবে না।

আপনার উত্তরের স্কোর নির্ধারণ করতে আপনি এই পাইথন 3 প্রোগ্রামটি (আইডোন লিঙ্ক) ব্যবহার করতে পারেন । (দীর্ঘ-চলমান প্রোগ্রামগুলির জন্য আপনাকে maxstepভেরিয়েবলটি সংশোধন করতে হতে পারে ))

উদাহরণ

(সরলতার জন্য এই প্রোগ্রামটি 100 বাইটের চেয়ে কম)

Solution: ++,+[-]+><.-,-.

Score: 3

Explanation:

Subprogram     => Output

+,+[-]+><.-,-. => 1
+,+[-]+><.-,-. => 1
+++[-]+><.-,-. => 1
++,[-]+><.-,-. => 1
++,+-]+><.-,-. => None
++,+[]+><.-,-. => None
++,+[-+><.-,-. => None
++,+[-]><.-,-. => 0
++,+[-]+<.-,-. => None
++,+[-]+>.-,-. => 0
++,+[-]+><-,-. => 255
++,+[-]+><.,-. => 1
++,+[-]+><.--. => 1
++,+[-]+><.-,. => 1
++,+[-]+><.-,- => 1

Unique outputs are [0, 1, 255]    
Score is 3 for ++,+[-]+><.-,-. (length = 15)

টাই করার ক্ষেত্রে বিজয়ী হ'ল সংক্ষিপ্ত কোড সহ। (বিশদ বিভাগে বর্ণিত হিসাবে আপনার প্রোগ্রামটি 100 বাইটের চেয়ে কম হতে পারে)) কোডগুলি সমান দৈর্ঘ্য হলে বিজয়ী পূর্ববর্তী পোস্টার।

বোনাস ধাঁধা: সাহসী বিধিনিষেধ ছাড়াই আপনি কি 100 নম্বর স্কোর সহ একটি প্রোগ্রাম খুঁজে পেতে পারেন?


আমি বোনাস ধাঁধা সমাধান; উত্তরটি (সেন্সর করা)।
এজেম্যানসফিল্ড

@ আজেমনসফিল্ড আপনি কী নিজের মন্তব্য সম্পাদনা করতে পারবেন যাতে অন্যরাও ধাঁধাটি সম্পর্কে ভাবতে পারে? উদাহরণস্বরূপ আপনার সমাধানটি একটি পেস্টবিন ডটকম লিঙ্কে পরিবর্তন করে যার উত্তর রয়েছে।
এলোমেলো

3
হুম। বিদ্যমান প্রশ্নের উত্তরে মাইক্রো-উন্নতি সন্ধান করার চেষ্টা করার জন্য আমি এই প্রশ্নের জন্য একটি জেনেটিক অপ্টিমাইজার লিখেছিলাম , তবে এটি এখন পর্যন্ত খুব বেশি সফল হয়নি। তারা যথাক্রমে 79 এবং 43 এ আটকে যাচ্ছে। আহ ভাল - এটি একটি শট মূল্য ছিল!
wchargin

উত্তর:


12

স্কোর: 35 41 69 78 79 83

(নিউলাইন সরান।)

-->+>->+>->+>->+>->+>->+>->+>->+>->+>->+>->+>->+>-
>+>->+>->+>->+>->+>->+>->+>->+>++[>[-<+++>]<<++]>.

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

আমি ঠিক জানি না কেন এটি কাজ করে ...

স্কোর: 79

X->>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>
+>+>+>+>+>+>+>+>+>+>+>+[>[-<+>>+<]+>[-<+>]<<<+]>>.

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

এটা তোলে ছিল অনুমিত 2 যোগফল * Mem [আমি] * আমি এবং কোষের সংখ্যা (+ + const) যেখানে অ্যাড্রেস বাঁদিকে ডান দিক থেকে গণনা করা হয় যোগ করুন। গুণক 2 এবং কক্ষের সংখ্যাগুলি + এবং> আলাদা সমতা থাকার অপসারণ করতে পারে।

এটি সত্যই the৯ পয়েন্টের সংস্করণে কাজ করেছে। তবে সর্বশেষতম সংস্করণটি এটি ভেঙে দিয়েছে এবং কাকতালীয়ভাবে অন্য কিছু পেয়েছে। এটি যোগফল গণনা করে (মেমরি [i] * i + i + 1) এবং অপসারণ + এবং> প্রায় একই কাজ করে, সমষ্টি (i) ব্যতীত যা কোষের সংখ্যার পার্থক্য রাখে, যা বিভিন্ন আউটপুট সংখ্যারও হয় + এবং> অপসারণের জন্য।

বোনাসের জন্য:

+ +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +। + +।


দ্রষ্টব্য: আপনি যদি সরবরাহকারীর স্কোরার প্রোগ্রামটির সাথে এটি পরীক্ষা করেন তবে কিছু উপ- প্রোগ্রাম দীর্ঘ সময়ের জন্য চলমান হিসাবে maxstepমান (ইন def evaluate(r,maxstep=20000):) বাড়ানোর বিষয়টি নিশ্চিত করুন ।
এলোমেলোভাবে

1
79->+>+> ...->,>+> ...
স্কোরটি

@ ব্রেনস্টিল আমি সবেমাত্র এটিকে একটি নো-ওপিতে পরিবর্তন করেছি।
jimmy23013

9

স্কোর: 37 43

+>-,->,+-><->-[>---+-+<[--->>+><,+>>>++<><<<+<[>--]]><><+-+>+<<+<><+++<[[<[---->-<-]>++>],>,]<,]<+-.

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

এটি সিতে লেখা একটি প্রোগ্রাম দ্বারা উত্পাদিত হয়েছিল C.

Nসরানো প্রতিটি অক্ষরের জন্য, ফলাফলগুলি এখানে:

N = 0 => 158
N = 1 => 158
N = 2 => 158
N = 3 => 187
N = 4 => 129
N = 5 => 100
N = 6 => 158
N = 7 => 13
N = 8 => 1
N = 9 => 211
N = 10 => 129
N = 11 => 1
N = 12 => 57
N = 13 => 255
N = 14 => Mismatched Braces
N = 15 => 59
N = 16 => 11
N = 17 => 11
N = 18 => 11
N = 19 => 117
N = 20 => 11
N = 21 => 117
N = 22 => 166
N = 23 => Mismatched Braces
N = 24 => 206
N = 25 => 206
N = 26 => 206
N = 27 => 147
N = 28 => 147
N = 29 => 158
N = 30 => 148
N = 31 => 188
N = 32 => 51
N = 33 => 17
N = 34 => 84
N = 35 => 84
N = 36 => 84
N = 37 => 158
N = 38 => 158
N = 39 => 94
N = 40 => 46
N = 41 => 94
N = 42 => 94
N = 43 => 94
N = 44 => 17
N = 45 => 196
N = 46 => Mismatched Braces
N = 47 => 149
N = 48 => No Termination
N = 49 => No Termination
N = 50 => Mismatched Braces
N = 51 => Mismatched Braces
N = 52 => 45
N = 53 => 77
N = 54 => 45
N = 55 => 77
N = 56 => 50
N = 57 => 209
N = 58 => 50
N = 59 => 251
N = 60 => 249
N = 61 => 99
N = 62 => 99
N = 63 => 117
N = 64 => 89
N = 65 => 207
N = 66 => 89
N = 67 => 115
N = 68 => 115
N = 69 => 115
N = 70 => 95
N = 71 => Mismatched Braces
N = 72 => Mismatched Braces
N = 73 => 104
N = 74 => Mismatched Braces
N = 75 => No Termination
N = 76 => No Termination
N = 77 => No Termination
N = 78 => No Termination
N = 79 => Left Overflow
N = 80 => 3
N = 81 => 2
N = 82 => No Termination
N = 83 => Mismatched Braces
N = 84 => No Termination
N = 85 => 133
N = 86 => 133
N = 87 => 0
N = 88 => Mismatched Braces
N = 89 => 158
N = 90 => 0
N = 91 => 4
N = 92 => Mismatched Braces
N = 93 => 0
N = 94 => 158
N = 95 => Mismatched Braces
N = 96 => 0
N = 97 => 157
N = 98 => 159
N = 99 => None

সর্বমোট ৩ unique টি অনন্য আউটপুট রয়েছে যা (সংখ্যাসূচকভাবে):

0, 1, 2, 3, 4, 11, 13, 17, 45, 46, 50, 51, 57, 59, 77, 84, 89, 94, 95, 99,
100, 104, 115, 117, 129, 133, 147, 148, 149, 157, 158, 159, 166, 187, 188, 
196, 206, 207, 209, 211, 249, 251, 255

আমি 90% 100% নিশ্চিত এই সমাধানটি সর্বোত্তম নয় , তবে এটি প্রমাণ করা যে খুব কঠিন হতে পারে । কয়েকটি বিষয় পরিষ্কার আছে। .শেষ চরিত্রটি না হওয়া পর্যন্ত কোনও চিহ্ন না থাকা চলার উপায় বলে মনে হচ্ছে এবং বর্গাকার বন্ধনীগুলি ( []) বরং অপ্রয়োজনীয় বলে মনে হচ্ছে । আমি এখানে কিছুটা চিন্তাভাবনা করেছি, যা আমি উল্লেখ করতে চাই:

Lবাইটে কোডের দৈর্ঘ্য হওয়া যাক (চ্যালেঞ্জের মধ্যে 100), এবং nসাব প্রোগ্রামগুলির অনন্য আউটপুটগুলির সংখ্যা হয়ে উঠুন।

জন্য L=3, সেখানে ফর্মের বিভিন্ন সন্তোষজনক সমাধান হয় +-., যেখানে n=2(এই ক্ষেত্রে, আউটপুট 1 এবং 255 জন্য +.এবং -.জন্য শ্রেষ্ঠ অনুপাত যথাক্রমে।) এই রাখে L = 3n/L = 66.67%। নোট করুন যে এই অনুপাতটি কমপক্ষে পিটানো যাবে না L<10

কারণ L=10, সমাধানগুলি এটি কার্যকর করার পক্ষে যথেষ্ট সহজ। এখানে সর্বোত্তম সমাধানগুলি এখানে n = 6:

++>-->+<+. => 6
++>-->+<+. => 6
+++>->+<+. => 6
--->->+<+. => 6
++>---><+. => 6
+++>--><+. => 6
-->++>-<-. => 6
+++>+>-<-. => 6
--->+>-<-. => 6
-->+++><-. => 6
--->++><-. => 6

যা এর স্কোর রেশিও দেয় n/L = 60%

হিসাবে L->infinity, এটি স্পষ্ট যে অনুপাতটি 0 টিতে পৌঁছাতে হবে, যেহেতু সম্ভাব্য অসীমের জন্য কেবলমাত্র 255 সম্ভাব্য আউটপুট রয়েছে L

অনুপাতটি অবশ্য সমানভাবে হ্রাস পায় না। এটির জন্য একটি সমাধান গঠন করা সম্ভব নয় n=6, L=9, তাই সম্ভাব্য সর্বোত্তম অনুপাত L=9হয় 5/9 = 55.56% < 60%

এটি প্রশ্নটি উত্থাপন করে, কত তাড়াতাড়ি এবং কোন ক্ষেত্রে অনুপাতটি নেমে আসে? জন্য L = 100, এবং 10^9 checks/second, এটা মহাবিশ্বের জীবনকাল চেয়ে দীর্ঘতর মাত্রার বিভিন্ন আদেশ নিতে একটি অনুকূল সমাধান bruteforce হবে। এই সম্পর্কে যেতে একটি মার্জিত উপায় আছে? আমি খুব সন্দেহ এটি ডাউন যে 37%জন্য L = 100

অনুপাতটি আসলে বেড়ে যায়, পর্যন্ত L=100। নিশ্চিত করার জন্য অন্যান্য উত্তর দেখুন।

আমি উপরের আপনার মূল্যায়ন শুনতে পছন্দ করি। আমি অত্যাচারী ভুল হতে পারে , সর্বোপরি।

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