একটি Brainf_ck প্রোগ্রাম তৈরি করুন যা প্রদত্ত দৈর্ঘ্যের একটি স্ট্রিংকে আউটপুট দেয়


11

আপনার বন্ধুটি একটি ভল্টে প্রবেশের চেষ্টা করছে যা একটি অদ্ভুত লকিং সিস্টেম রয়েছে: এটি একটি নির্দিষ্ট স্থানে নির্দিষ্ট সংখ্যক মৃদু কানের প্রয়োজন। আপনার বন্ধুটি নম্বরটি আবিষ্কার করেছে (যা 1 ... 99999 এর মধ্যে রয়েছে) এবং এমন একটি গ্যাজেট রয়েছে যা প্রয়োজনীয় নকশ তৈরি করে। তবে গ্যাজেটটি একজন ব্রেনফাক দোভাষী! সুতরাং আপনার বন্ধুর এটিকে একটি ব্রেনফাক প্রোগ্রাম খাওয়াতে হবে, যা সম্ভবত স্পষ্টতই সংক্ষিপ্ত হওয়া উচিত (গ্যাজেটের আই / ওটি ধীর গতির)।

আপনার কাজ তাকে সাহায্য করা! কোনও প্রোগ্রাম বা একটি সাবউটাইন লিখুন, যে কোনও ভাষায়, কোনও সংখ্যাকে ইনপুট হিসাবে গ্রহণ করে Nএবং একটি ব্রেনফাক প্রোগ্রামকে আউটপুট দেয়, যা কোনও ইনপুট নেয় না এবং প্রিন্টযোগ্য এএসসিআইআই অক্ষরের একটি স্ট্রিংকে আউটপুট দেয় (স্পেস অক্ষর বাদে - 33 পরিসরের কোডগুলি ... দৈর্ঘ্যের 126) N

উদাহরণ: ইনপুট জন্য 10, আউটপুট হতে পারে

+++++++++++++++++++++++++++++++++..........

(তবে আমি নিশ্চিত যে এটি ছোট করা যেতে পারে!)

আপনার স্কোর হ'ল নিম্নলিখিত মানগুলির জন্য আউটপুটগুলির দৈর্ঘ্যের সমষ্টি N(তারা এলোমেলো সংখ্যা):

55
68
15
28
841
838
522
846
4898
9004
9363
3810
13230
67175
37231
44701

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


পিএস ব্রেনফাক ভাষার বিভিন্ন রূপ রয়েছে। ধরে নেওয়া যাক টেপ উভয় দিকেই অসীম (বা "প্রচলিত এবং যথেষ্ট বড়"), এবং কোষগুলির 32-বিট ইনট ক্ষমতা রয়েছে (সীমাবদ্ধ এবং 99999 পর্যন্ত সংখ্যা ধরে রাখতে সক্ষম)। এছাড়াও, কোনও মোড়ক নেই: যখন কোনও ঘর উপচে পড়ে, মেশিনটি স্ব-ক্ষতি করে!


2
"এন এর নিম্নোক্ত মানগুলি (তারা এলোমেলো সংখ্যা)" আমাকে xkcd.com/221
সিরপিস

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

3
আমরা কি ব্রেইনফাকের সেলগুলি নির্বিচারে প্রস্থের পূর্ণসংখ্যার হিসাবে ধরে নিতে পারি? যদি তা না হয় তবে তারা কখন এবং কখন গুটিয়ে রাখবে?
orlp

1
কমপক্ষে 67175 + কয়েক থাকতে পারে বলে ধরে নেওয়া ভাল লাগবে।
orlp

@নাটোলিগ আমি পরে বুঝতে পারি দুঃখিত।
ফলমূল Esolanging

উত্তর:


3

পাইথন 2, স্কোর: 1021

আমি ঠিক বুঝতে পেরেছি যে এই প্রতিযোগিতাটি বেশ পুরানো তবে এখনও, যেহেতু আমি পোস্ট হওয়াগুলির চেয়ে ভাল সমাধান নিয়ে এসেছি, আমি এটি পোস্টও করেছি।

এখানে একটি 102 বাইট অজগর স্ক্রিপ্ট যা কাজটি করে:

n=input()
s='>'
while n:
    s+='>'+'+'*(n%5+1);n/=5
print s+'[->[-<+++++>]<<]<+++++++[>+++++<-]>>[-<.>]'

ধারণাটি হ'ল এন এর জন্য বেস 5 টি এনকোডিং (কমপক্ষে বর্তমান ইনপুটগুলির জন্য সর্বোত্তম বেস, যা উপায় দ্বারা খুব "এলোমেলো" বলে মনে হয় না, মনে হয় এগুলি নির্বিচারে বেছে নেওয়া হয়েছিল ওপেন দ্বারা), এবং জেনেরিক ব্রেইনফাক অ্যালগরিদম লিখতে হবে বহু সংখ্যক নির্ধারিত দৈর্ঘ্যের ডিকোড করুন (রূপান্তরের শেষটি সনাক্ত করতে প্রতিটি ডিজিটের সাথে সংখ্যাটি এক দ্বারা বাড়ানো হয়েছে) dec আমি 35 অক্ষর মুদ্রণ করতে বেছে নিয়েছি #, অক্ষর 36 $সমতুল্য।

স্কোরটি পেতে আপনি নিম্নলিখিত বাশ স্ক্রিপ্টটি চালাতে পারেন:

i=0
while read p; do
  i=$((i+`echo $p | python convert.py | wc -m`))
done
echo $i

আরও উন্নত প্রোগ্রামের সাথে যা অল্প সংখ্যার জন্য গুণের সাথে এনকোডিং প্রতিস্থাপন করে এবং প্রতিটি সংখ্যা এনকোডিংয়ের জন্য সর্বোত্তম বেসটি বেছে নেয়, আমি 958 ব্রেইনফাক চরিত্রগুলিতে পৌঁছতে পারি, তবে পাইথন অনেকটা ভার্জোজ (এবং আমি বেশ খারাপ / অলস গল্ফার) করছি কনভার্টারটি 144 বাইটে পেতে!


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

8

ব্রেনএফ ***, স্কোর: 193,313

এটি 140 টি অক্ষরের নীচে নয় (এটি 147, এত কাছে !!), সুতরাং এটি জিততে পারে না, তবে আমি ভেবেছিলাম এটি দুর্দান্ত।

43 টি প্লাস চিহ্নগুলি মুদ্রণ করে তারপরে Nপিরিয়ড। খুব অনুকূল নয়।

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

যদি কেউ এটি সংক্ষিপ্ত করতে সহায়তা করতে পারে তবে আমি এটি পছন্দ করব।


আমার ধারণা, ব্রেইনফাকের সাহায্যে টেপটিতে এটি একটি "সাব্রুটিন" তৈরি করা যথেষ্ট হবে - "স্ট্যান্ডার্ড ইনপুট ডিভাইস" থেকে পড়ার দরকার নেই "
অ্যানাটলিগ

@নাটোলিগ এটি এটিকে আরও সহজ করে তোলে - সম্ভবত প্রায় 80 বা 90 টি অক্ষর। আমি কি এটি পরিবর্তন করব?
এমডিসি 32

5

জে, মোট স্কোর = 1481

(আমার পূর্ববর্তী প্রবেশ এবং ব্যাখ্যার জন্য পুনর্বিবেচনার ইতিহাস পরীক্ষা করুন))

f10=.('>++++++++++<';'')rplc~;@([:(<@('+++++[>+++++++<-]>>+',;@((<'[>++++++++++')#~#)),[<@(']',~'<-','<.>'#~],[,])"0 #-i.@# )10#.inv])

এই ফাংশনটি ইনপুট সংখ্যার বেস 10 সংখ্যার উপর ভিত্তি করে নেস্টেড বিএফ লুপ উত্পন্ন করে। সমস্ত যুক্তিসঙ্গত ঘাঁটি পরীক্ষা করা এবং ক্ষুদ্রতম বিএফ কোড চয়ন করা স্বল্প পরিমাণের সাথে স্কোরকে উন্নত করবে।

পরীক্ষার জন্য BF প্রোগ্রাম:

   f10 every 55 68 15 28 841 838 522 846 4898 9004 9363 3810 13230 67175 37231 44701
+++++[>+++++++<-]>>+[>++++++++++[-<<.....>>]<-<.....>]                                                                                     
+++++[>+++++++<-]>>+[>++++++++++[-<<......>>]<-<........>]                                                                                 
+++++[>+++++++<-]>>+[>++++++++++[-<<.>>]<-<.....>]                                                                                         
+++++[>+++++++<-]>>+[>++++++++++[-<<..>>]<-<........>]                                                                                     
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[-<<<........>>>]<-<<....>>]<-<.>]                                                             
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[-<<<........>>>]<-<<...>>]<-<........>]                                                       
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[-<<<.....>>>]<-<<..>>]<-<..>]                                                                 
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[-<<<........>>>]<-<<....>>]<-<......>]                                                        
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[-<<<<....>>>>]<-<<<........>>>]<-<<.........>>]<-<........>]                      
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[-<<<<.........>>>>]<-<<<>>>]<-<<>>]<-<....>]                                      
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[-<<<<.........>>>>]<-<<<...>>>]<-<<......>>]<-<...>]                              
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[-<<<<...>>>>]<-<<<........>>>]<-<<.>>]<-<>]                                       
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[>++++++++++[-<<<<<.>>>>>]<-<<<<...>>>>]<-<<<..>>>]<-<<...>>]<-<>]                 
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[>++++++++++[-<<<<<......>>>>>]<-<<<<.......>>>>]<-<<<.>>>]<-<<.......>>]<-<.....>]
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[>++++++++++[-<<<<<...>>>>>]<-<<<<.......>>>>]<-<<<..>>>]<-<<...>>]<-<.>]          
+++++[>+++++++<-]>>+[>++++++++++[>++++++++++[>++++++++++[>++++++++++[-<<<<<....>>>>>]<-<<<<....>>>>]<-<<<.......>>>]<-<<>>]<-<.>]          

পরীক্ষার সেটটিতে কম্পিউটিং স্কোর:

   +/#@> f10 each 55 68 15 28 841 838 522 846 4898 9004 9363 3810 13230 67175 37231 44701
1481

3

পাইথ, 1702

N + x এর গুণক ব্যবহার করে সংখ্যাগুলি পুনর্গঠন করুন।

+holN+]++">>"*"+"Q"<<"mjk(">>"j">"m*"+"kP+Qd"<[[->[->+>+<<]>>[-<<+>>]<<<]>[-]>[-<<+>>]<<<]>"*"-"d"<<")50"++++++[>++++++<-]>>[<.>-]"

জন্য 2এই আউটপুট ++। এখন যা বিএফ-তে কিছু মুদ্রণ করে না।
এলোমেলো

@ আরন্ডোমরা ভাল ক্যাচ, আপডেট করার সময় এই ঘটনা ঘটেছে, আমি এটি ঠিক করব, আমাকে কয়েক দিন।
orlp

@ আর্যান্ডোমরা ঠিক করা উচিত, স্কোরটি কিছুটা উচ্চতর করা (অবশ্যই)
orlp

3

সিজেম, 52 74 108 বাইট, মোট = 1304 1244 1210

ri5b_,1>{(_3<{\(@5*+}*\+}*W%)\{T+_2>:T5*-_0>"-+"=\z*}%\T+'+*a+W%{"[->+++++<]>"\}*">x[>x<-]<[->>.<<]"'x/'+6**

একটি পরীক্ষা স্ক্রিপ্ট (অনলাইন ইন্টারপ্রেটারে ধীর):

q~]
{
_[0:T;
5b_,1>{(_3<{\(@5*+}*\+}*W%)\{T+_2>:T5*-_0>"-+"=\z*}%\T+'+*a+W%{"[->+++++<]>"\}*">x[>x<-]<[->>.<<]"'x/'+6**
]s
_[L:RL@0\
"-+><.]"['('){+\_{)}0?@\}{@\+\_{)}0?}{R1$c+:R;}]:`"]a"{{_aa+1$4G#%{:~~1}{;0}?}g}`+a+er:~:~
];R,@=!"Error."N+*o
}%s,

আমি স্ব-ধ্বংস সম্পর্কে অংশটি দেখিনি। তবে এটি কখনই উপচে পড়বে না।
জিমি 23013

এটা কিভাবে কাজ করে?
অ্যানাটলিগ

@ এনাটোলিগ প্রথম সংস্করণটি বেস 5 এ কেবল সংখ্যাটি উত্পন্ন করে পরে সংস্করণগুলি প্রথম দুটি অঙ্কের জন্য একটি বিশেষ কেস যুক্ত করেছে এবং হ্রাসও ব্যবহৃত হয়েছে।
jimmy23013

@ ব্যবহারকারী23013 ওহ, দুঃখিত, অনুমানের পরিবর্তনগুলি দেখেনি। (সেই অনুযায়ী আমার উত্তর আপডেট করা হয়েছে।)
randomra

2

বেফুঞ্জ -98, এন + 41, মোট = 193281

&>'+\:v
v^-1,\_
' >1-:v
>v^,+'_
,'    :
>ff3++^
>2f*+v
^>/9+:,
>'>,61v
, v*6+<
^/2,:<@
v >+2+,
>'<,']^

আমি জানি এটি খারাপ, তবে আমার মনে হয়েছে আজ কিছু বেফুঞ্জ লিখেছি। বেফুঞ্জের সেরা অংশটি হ'ল প্রোগ্রামগুলি প্রকৃত গল্ফ ভাষার চেয়ে কম বোধগম্য হয়, বিশেষত যখন তারা কোডটি পুনরায় ব্যবহার করে: ডি

মার্টিন বাটনার সিজেএম উত্তরের অনুরূপ অ্যালগোরিদম ব্যবহার করে :

(N +'s)>+++++++++++++++++++++++++++++++++<[->.<]


1

বেফুঞ্জ -৩৩ - 24 + এন, মোট = 193009

&>">>]-<]-<++++>[++++>[+++"v
v  ,,,,,,,,,,,,,,,,,,,,,,, <
>:v
,v_@
"1
.-
"
^<

এটি +++[>++++[>++++<-]<-]>>24 টি অক্ষরের সাথে প্রথম টেপ সূচককে '0' এ সেট করতে একটি উপসর্গ ব্যবহার করে । বেফুঞ্জ প্রোগ্রামটি খুব বেসিক এবং এটি এন'র সাথেও আউটপুট দেয় '' চরিত্র.


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