পটভূমি
বারোজ-হুইলার রুপান্তর (BWT) একটি স্ট্রিং এর অক্ষরের একটি উলটাকর বিন্যাস হয় যে এই ধরনের সাধারণ পাঠ্য হিসাবে স্ট্রিং কিছু নির্দিষ্ট জন্য অনুরূপ অক্ষর বড় রানে ফলাফল নেই। এটি ব্যবহার করা হয়, উদাহরণস্বরূপ, bzip2 সংক্ষেপণ অ্যালগরিদমে ।
BWT নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:
একটি ইনপুট স্ট্রিং দেওয়া যেমন যেমন এর codegolf
সমস্ত সম্ভাব্য ঘূর্ণনগুলি গণনা করুন এবং সেগুলি অভিধানিক ক্রমে সাজান:
codegolf
degolfco
egolfcod
fcodegol
golfcode
lfcodego
odegolfc
olfcodeg
স্ট্রিংয়ের বিডব্লিউটি codegolf
হ'ল স্ট্রিংটি প্রতিটি ক্রমের প্রতিটি অক্ষরের শেষ অক্ষর, অর্থাৎ উপরের ব্লকের শেষ কলামের সমন্বয়ে গঠিত string জন্য codegolf
, এই ফলন fodleocg
।
নিজেই, এই রূপান্তরটি পুনরায় পরিবর্তনযোগ্য নয়, যেহেতু স্ট্রিংগুলি codegolf
এবং golfcode
একই স্ট্রিংয়ের ফলস্বরূপ। তবে, আমরা যদি জানি যে স্ট্রিংটি একটি দিয়ে শেষ হয় f
, তবে কেবলমাত্র একটি সম্ভাব্য প্রিমাইজ রয়েছে।
কার্য
STDIN থেকে বা কমান্ড-লাইন বা ফাংশন আর্গুমেন্ট হিসাবে একটি একক স্ট্রিং পড়ে বা বিডব্লিউটি বা ইনপুট স্ট্রিংয়ের বিপরীতটি প্রিন্ট করে বা ফেরত দেয় এমন একটি অন্তর্ভুক্ত প্রোগ্রাম বা ফাংশন প্রয়োগ করুন।
যদি ইনপুট স্ট্রিংয়ের কোনও ফাঁকা স্থান না থাকে, আপনার জমা দেওয়ার ক্ষেত্রে ইনপুটটিতে একটি একক স্থান যুক্ত করা উচিত এবং BWT গণনা করা উচিত।
যদি ইনপুট স্ট্রিংটিতে ইতিমধ্যে একটি স্থান থাকে, তবে এটি BWT এর প্রিমাইজটি গণনা করা উচিত যা পিছনে স্থান রয়েছে এবং সেই স্থানটি স্ট্রিপ করে।
উদাহরণ
INPUT: ProgrammingPuzzles&CodeGolf
OUTPUT: fs&e grodllnomzomaiCrGgPePzu
INPUT: fs&e grodllnomzomaiCrGgPePzu
OUTPUT: ProgrammingPuzzles&CodeGolf
INPUT: bt4{2UK<({ZyJ>LqQQDL6!d,@:~L"#Da\6%EYp%y_{ed2GNmF"1<PkB3tFbyk@u0#^UZ<52-@bw@n%m5xge2w0HeoM#4zaT:OrI1I<|f#jy`V9tGZA5su*b7X:Xn%L|9MX@\2W_NwQ^)2Yc*1b7W<^iY2i2Kr[mB;,c>^}Z]>kT6_c(4}hIJAR~x^HW?l1+^5\VW'\)`h{6:TZ)^#lJyH|J2Jzn=V6cyp&eXo4]el1W`AQpHCCYpc;5Tu@$[P?)_a?-RV82[):[@94{*#!;m8k"LXT~5EYyD<z=n`Gfn/;%}did\fw+/AzVuz]7^N%vm1lJ)PK*-]H~I5ixZ1*Cn]k%dxiQ!UR48<U/fbT\P(!z5l<AefL=q"mx_%C:2=w3rrIL|nghm1i\;Ho7q+44D<74y/l/A)-R5zJx@(h8~KK1H6v/{N8nB)vPgI$\WI;%,DY<#fz>is"eB(/gvvP{7q*$M4@U,AhX=JmZ}L^%*uv=#L#S|4D#<
OUTPUT: <#Q6(LFksq*MD"=L0<f^*@I^;_6nknNp;pWPBc@<A^[JZ?\B{qKc1u%wq1dU%;2)?*nl+U(yvuwZl"KIl*mm5:dJi{\)8YewB+RM|4o7#9t(<~;^IzAmRL\{TVH<bb]{oV4mNh@|VCT6X)@I/Bc\!#YKZDl18WDIvXnzL2Jcz]PaWux[,4X-wk/Z`J<,/enkm%HC*44yQ,#%5mt2t`1p^0;y]gr~W1hrl|yI=zl2PKU~2~#Df"}>%Io$9^{G_:\[)v<viQqwAU--A#ka:b5X@<2!^=R`\zV7H\217hML:eiD2ECETxUG}{m2:$r'@aiT5$dzZ-4n)LQ+x7#<>xW)6yWny)_zD1*f @F_Yp,6!ei}%g"&{A]H|e/G\#Pxn/(}Ag`2x^1d>5#8]yP>/?e51#hv%;[NJ"X@fz8C=|XHeYyQY=77LOrK3i5b39s@T*V6u)v%gf2=bNJi~m5d4YJZ%jbc!<f5Au4J44hP/(_SLH<LZ^%4TH8:R
INPUT: <#Q6(LFksq*MD"=L0<f^*@I^;_6nknNp;pWPBc@<A^[JZ?\B{qKc1u%wq1dU%;2)?*nl+U(yvuwZl"KIl*mm5:dJi{\)8YewB+RM|4o7#9t(<~;^IzAmRL\{TVH<bb]{oV4mNh@|VCT6X)@I/Bc\!#YKZDl18WDIvXnzL2Jcz]PaWux[,4X-wk/Z`J<,/enkm%HC*44yQ,#%5mt2t`1p^0;y]gr~W1hrl|yI=zl2PKU~2~#Df"}>%Io$9^{G_:\[)v<viQqwAU--A#ka:b5X@<2!^=R`\zV7H\217hML:eiD2ECETxUG}{m2:$r'@aiT5$dzZ-4n)LQ+x7#<>xW)6yWny)_zD1*f @F_Yp,6!ei}%g"&{A]H|e/G\#Pxn/(}Ag`2x^1d>5#8]yP>/?e51#hv%;[NJ"X@fz8C=|XHeYyQY=77LOrK3i5b39s@T*V6u)v%gf2=bNJi~m5d4YJZ%jbc!<f5Au4J44hP/(_SLH<LZ^%4TH8:R
OUTPUT: bt4{2UK<({ZyJ>LqQQDL6!d,@:~L"#Da\6%EYp%y_{ed2GNmF"1<PkB3tFbyk@u0#^UZ<52-@bw@n%m5xge2w0HeoM#4zaT:OrI1I<|f#jy`V9tGZA5su*b7X:Xn%L|9MX@\2W_NwQ^)2Yc*1b7W<^iY2i2Kr[mB;,c>^}Z]>kT6_c(4}hIJAR~x^HW?l1+^5\VW'\)`h{6:TZ)^#lJyH|J2Jzn=V6cyp&eXo4]el1W`AQpHCCYpc;5Tu@$[P?)_a?-RV82[):[@94{*#!;m8k"LXT~5EYyD<z=n`Gfn/;%}did\fw+/AzVuz]7^N%vm1lJ)PK*-]H~I5ixZ1*Cn]k%dxiQ!UR48<U/fbT\P(!z5l<AefL=q"mx_%C:2=w3rrIL|nghm1i\;Ho7q+44D<74y/l/A)-R5zJx@(h8~KK1H6v/{N8nB)vPgI$\WI;%,DY<#fz>is"eB(/gvvP{7q*$M4@U,AhX=JmZ}L^%*uv=#L#S|4D#<
INPUT: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
OUTPUT: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
INPUT: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
OUTPUT: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
অতিরিক্ত বিধি
আপনি কোনও বিল্ট-ইন অপারেটর ব্যবহার করতে পারবেন না যা কোনও স্ট্রিংয়ের বিডব্লিউটি (বা এর বিপরীতমুখী) গণনা করবে।
আপনি কোনও বিল্ট-ইন অপারেটর ব্যবহার করতে পারবেন না যা কার্যগুলি উল্টে দেয়।
আপনি যদি আউটপুট জন্য STDOUT চয়ন করেন তবে আপনার কোডটি ট্র্যাকিং নিউলাইনটি মুদ্রণ করতে পারে, এমনকি যদি এটি ইনপুটটিতে নতুন লাইনের পিছনে সমর্থন না করে।
আপনার কোডটিতে কমপক্ষে একটি স্থান সহ 500 বা তারও কম ছাপার যোগ্য ASCII অক্ষর (0x20 থেকে 0x7E) এর কোনও ইনপুট জন্য কাজ করতে হবে।
উপরে বর্ণিত সম্ভাব্য ইনপুটগুলির জন্য, আপনার কোডটি অবশ্যই আমার মেশিনে দশ মিনিটের মধ্যে শেষ করতে হবে (ইন্টেল কোর i7-3770, 16 জিবি র্যাম)। শেষ পরীক্ষার কেসটি সবচেয়ে ধীর হওয়া উচিত, সুতরাং আপনার কোডটি তার সাথে সময় দেওয়ার বিষয়টি নিশ্চিত করুন।
বেশিরভাগ ভাষা এবং পদ্ধতির জন্য, সময় সীমা মেনে চলা সহজ হওয়া উচিত। এই নিয়মটি সম্পূর্ণরূপে হয় অন্যের ব্রুট-ফোর্স ইনভার্স হিসাবে রূপান্তর বাস্তবায়ন রোধ করার জন্য।
স্ট্যান্ডার্ড কোড গল্ফ বিধি প্রযোজ্য। বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়।
inv
।
inv
একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন নিয়ে কাজ। আমি নিশ্চিত না যে inv
বিডাব্লুটিটির পক্ষে কাজ করবে কিনা তবে দুঃখের চেয়ে ভাল নিরাপদ।