অনন্য অক্ষরগুলি নীচে রাখুন


23

এটি খুব সহজ: আপনার প্রোগ্রাম বা ফাংশনটিতে নিম্নলিখিত পাঠ্য উত্পন্ন করা উচিত:

Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.

সূক্ষ্ম মুদ্রণ

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

স্কোরিং

আপনার কোডে থাকা বাইটের সংখ্যাটি আপনার কোডের অনন্য বাইটের সংখ্যা দ্বারা গুণিত হয়েছে

সর্বনিম্ন স্কোর জয়।

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

স্ট্যান্ডার্ড লুফোলগুলি যা আর মজার নয় নিষিদ্ধ


আমি ধরে নিচ্ছি কেসিং ঠিক হতে হবে?
এনগ্রেডট্যাঙ্কার

@ ক্রেজেদুদে হ্যাঁ, এটি বিন্দুর মতো
durron597

ঠিক আছে। শুধু স্পষ্ট করা। : পি
এনারাজেডট্যাঙ্কার

1
@ কার্পেট পাইথন স্যান্ডবক্সে এটি নিয়ে কিছুটা বিতর্ক হয়েছিল এবং শেষ পর্যন্ত আমি স্থির করেছিলাম যে খেলার মাঠে সত্যিকারের স্তরের কোনও উপায় নেই। খেয়াল করুন যে হোয়াইটস্পেস এবং অনিদ্রায় যেভাবেই সর্বোচ্চ স্কোর রয়েছে!
durron597

2
যেমনটি আমি কোথাও লিখেছি, যদি আমরা ধরে নিই যে আরও অনন্য অক্ষরের জন্য ক্ষতিপূরণের জন্য আরও বাইট ব্যবহার করে সংখ্যাগুলিকে বিভিন্ন ঘাঁটিতে রূপান্তর করার অনুরূপ আচরণ করে, তবে প্রায় bytecount~Log(X,unique)এই সমস্যাটির জন্য এক্স সহ কিছুটা ধ্রুবক। এভাবে অনন্য ^ বাইটকাউন্ট ~ ধ্রুবক। এই স্কোর গণনা (লগ 2) দেয় python2_mbomb007 728, python2_carpetpython 744, ruby 756, Fish 825, Insomnia 1148, cjam 1277, whitespace 1484, brainfuck 3546। সুতরাং ব্রেইনফাকের উত্তর ছাড়া এটি তুলনামূলকভাবে ধ্রুবক ...
ব্লুটোরেঞ্জ

উত্তর:


7

অনিদ্রা , 575 বাইট * 4 = 2300

dyedd=dyyyye=d=yd=dddde=ded=deey=eyy=de=edd=eydyee=yeyy=yey==ddyee=eydee=y=eyeedd=dde=yddd=eede=yedde=eeyd==yeyy=yyddy=eyy=dy=dddye=dyey=ede=yddd=dde=de=yyye=yyye=ddyyy=dyy=yeyddy=eyyyde=eed=ddd=yd=edyyd=eeydd=yedd=eye=eee=eeyy=yyyedde=d=eyyyedy=d=yddyye==dyyede=ddd=eydd=yd=ddde==eeeeyy=yeyd=deyy=yyy=ydy=dy=dd=e=ey=dddddy=yeey=ey=eed=ddd=eedy=ddddde=ydeyy=edd=ydy=ddy=yeedd=ydde=dde=edyye=ded=yeed=dddddde=eedy=eyde=ydy=ydydd=eyydd=dd=dddd=ddyye=ydeey=ed=eeeye=y=ydydde=eyyd=eyee=dy=edeyed=dyed==eyyddey=dd=yddd=yddd=de=ddedy=eyydd=eeedy==eyyydeee=d=d=eydd=yey=dyy==yyyedy=

4 টি অক্ষর ব্যবহার করে dye=

সমাধান 1 বি (অপ্রকাশিত): 783 বাইট * 3 = 2349

eeeeyeeyy=eeyy=yeyye=yyyeeyye=eeeye=yeyey=eyeyyy=eyy=eeyeye=yeyeyyy=yyeeye=yeyy=yey==yyeyeyeye=eyyey=y=yyyyyy=y=eyyeyyyyyyye=eeye=yyeeyye=eyeyeyyy==yeyy=yeyyyeyye=yyyeeyy==eeyyeee==eeyye=yyyyeyyeyyye=yyyyyyy=yeye=eyyyyy=eeye=eeyeeeeey=eyeye=eeee=yeyyye=eyyyyye=y=eeeyyy=eyyeyee=yyy=eyye=yeyeeee=yyeyeyyyy=eeyy=yyyyy=eyyyy=yyeeyye=e=eyyyyy=eyey==eyeyy=yyyyyeyeyeye=ye=yyyyyy==eeeeyy=yeye=yeyyey=yyy=eyyyeeeye==yeeyyeyy=e==yeeeyyyeyy=yeey=ey=eee=eyeyy=yyeeee=yeeyyyyy=yee=yeyyy=yeeeeyy=eyeeeeeye=eeeyy=yyeeeeyyye=yey=yyyyeeyye=yyyyyyy=yeee=eeeeyyeye=eyeeye=eeyyeyyy=eeyee=yyyyyeeyy=eee=eeyyeyyyyy=eeey=eyyeeyy=eyyeyyy=eeeeyeee=eeeye=y=yyyeyy=yyeeee=yyeyey=ey=eyyyyyeyyy=yeye==yeeyyyeyy=yeye=yyyyeeyy=eeeyyeeyyy=yeeyeyyy=eeyye=eee=eyyye==eyeyeyyyyy=e=eeyeeye=yeey=eyeyy=eyeye=ey=eyyeye=

শুধুমাত্র 3 টি অক্ষর ব্যবহার করে ey=

সমাধান 1: 826 বাইট * 3 = 2478

yoyoy~oyoyo~oyooyy~ooyyoyy~ooyyyyoy~~yoyyo~ooyoooyooo~yoyyo~oyoyoyyy~yyo~oyyoo~~ooooy~oyyyyy~oyoyoo~~oyyyoooyy~~oyoyooyyy~yyooo~yoyo~yoyyyyo~yooyo~y~yyoyyyooyy~oyyooy~ooyoy~oyyooy~ooyyo~yoyyoo~o~ooyo~yooyyoo~yoyoy~ooyyyyooo~oyoyyo~yyoyyyoo~yyo~yyooyyo~yoyyoooy~~yoyyyooyoyy~oyoyyy~yoooyyoy~yooyy~yooyyo~yyooyyoo~oyoyo~oyyy~oyyo~oyyoyo~oyyyoo~oyoyyoo~yooyo~ooooo~~yoyyoyyoyoo~yoyyooo~y~ooooy~yyyoy~ooooyyoyyoy~oyyoo~oyyoyo~yoyyyooy~oyooo~yoyyoyy~yyyyyo~oyooy~oyoyy~yoyyyoy~ooyoy~yoyyoooy~~oyyyo~ooooooy~yooyoyyoyo~yooyyo~oooyyo~yoyooyyo~oyyy~o~yooooy~oyoyyooooy~~yoyyooyyo~oy~yyyoyyyyy~yoyyyoy~yooo~oooy~oooooyyoyyyo~yoyyo~y~oooyyyoyoo~yyooooyoyy~y~oooyyyoy~~yoy~oyyoyoyyy~yoyyyyy~oyooo~yyyyooo~yooyyoy~yooyo~yoyyyo~yyoyyyo~o~ooooooyoy~oyoyyoy~yyoooo~ooooyy~oyoyoy~ooyyo~yyoooyo~yyyyyo~oyyo~yooyyooyyoy~~ooyyyyoyyy~ooyyo~yyooo~

শুধু 3 টি অক্ষর ব্যবহার করে: yo~। এটি তৈরি করতে একটি প্রোগ্রাম ব্যবহৃত হয়।

বর্তমানে, সমস্ত প্রোগ্রাম কেবল 0, 1, 2, 6 নির্দেশাবলী ব্যবহার করে অন্য কথায়, তারা বিটগুলিকে একক বাইটে চালিত করে এবং ফলাফল মুদ্রণ করে।


19

সিজেম, 266 281 456 বাইট * 14 12 7 অনন্য = 3724 3372 3192

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

14301201124204202034420112034224204431020210101232301021240204310431312122132100240400222324402030223103420431324402222132223233141443401210314023001122320404112224314302132421403301243334313000011124244441400003310332301330220022110121411122100040310110020040121444302100143202204330334033211334242120304123121024200421121232100303121022431044444423243331440434010014400~~10~~100~~1~43c~c~4~~41c~100~~1~43c~c~123~~100~~1~43c~c~44~~14~~43c~c100~~40c~c43c~~

ব্যাখ্যা

আমি যে কৌশলটি ব্যবহার করেছি তা হ'ল স্ট্রিংয়ের প্রতিটি চরিত্রকে বেস -১৩৩ সংখ্যা হিসাবে বিবেচনা করা এবং প্রোগ্রামটিকে দশমিক সংখ্যা হিসাবে এনকোড করা। প্রোগ্রামটি তখন সেই সংখ্যাটিকে বেস 123 এ ফিরে রূপান্তর করে এবং প্রতিটি বেস -123 ডিজিটকে একটি অক্ষরে ফিরিয়ে দেয়। প্রোগ্রামটি কেন বর্তমান অবস্থায় রয়েছে তা ব্যাখ্যা করা শক্ত কারণ, আমি এর প্রতিটি সংস্করণ ব্যাখ্যা করব।

প্রোগ্রামটির শেষটি প্রথম সংস্করণে দেখতে কেমন হয়েছিল তা এখানে:

...2068438725 123b:c

এটি কৌশলটিকে সবচেয়ে সহজভাবে কার্যকর করে। সংখ্যা, বেস 10 এ সাধারণত এনকোড করা হয়, বেস 123 এ ফিরে রূপান্তরিত হয় এবং প্রতিটি বেস -123 ডিজিটকে কোনও অক্ষরে ম্যাপ করা হয়। তবে এটি ৪ টি অনন্য অজানা অক্ষর ব্যবহার করে এবং এর মধ্যে যে কোনও একটি থেকে মুক্তি পেতে সক্ষম হওয়া কম স্ট্রেডওয়ার্ড কোড ব্যবহারের কারণে হিট সাইজের হিট হতে পারে।

প্রথমত, আমি বুঝতে পেরেছিলাম যে আমি রানার সময় এএসসিআইআই চরিত্রের মানগুলিকে একটি অক্ষরে রূপান্তরিত করেছি (ইতিমধ্যে উপস্থিত অপারেটরের সাথে) এবং অপারেটরের সাথে তাদের মূল্যায়ন করে আমি b:অপারেটরদের থেকে মুক্তি পেতে পারি । অপারেটরের সাথে এটি করা কিছুটা জটিল হয়ে উঠল , যেহেতু নিম্নলিখিত অপারেটরের সাথে এটি একসাথে বিশ্লেষণ করতে হবে । আমি অক্ষর উত্পাদক দ্বারা এই মীমাংসিত এবং এবং তারপর উত্পাদক এবং চরিত্র মূল্যায়ন , যা স্ট্রিং মধ্যে সাবেক দুই অক্ষর concatenates যা পরে সঠিকভাবে মূল্যায়ন করা যাবে।c~:c:c+:c

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

চূড়ান্ত ফলাফলটি শেষে কোডের আরও 15 বাইট, তবে এই ব্যয়টি 14 টির মধ্যে 2 টি স্বতন্ত্র অক্ষর মুছে ফেলার সুবিধা দিয়ে ব্যাপকভাবে ছাড়িয়ে গেছে the দ্বিতীয় সংস্করণের সমাপ্তির সাথে প্রথম সংস্করণের সমাপ্তির তুলনা এখানে:

...2068438725  123[ b  ][   :c    ]
...2068438725~~123~~98c~58c99c43c~~

আমি যে 2 অপারেটরটি ব্যবহার করেছিলাম তার চেয়ে কম ব্যবহার করা অসম্ভব, তবে আমি এখনও কম অনন্য অক্ষর চাইছি। সুতরাং পরবর্তী পদক্ষেপটি ছিল অঙ্কগুলি দূর করা। সংখ্যার এনকোডিংটি পরিবর্তন করে যাতে প্রতিটি দশমিক অঙ্কটি সত্যই একটি বেস -5 সংখ্যার হয়ে থাকে, আমি সম্ভবত 6-9 সংখ্যাগুলি মুছতে পারি। প্রোগ্রামের প্রান্ত থেকে কিছু অপসারণ করার আগে এটি দেখতে এরকম দেখাচ্ছে:

...4010014400 10b5b123b:c

পূর্বে উল্লিখিত হিসাবে, স্থান অপসারণ করা সহজ is কিন্তু b, :এবং cএত সহজ হবে না, যেমন তাদের চরিত্র কোড আছে 98, 58এবং 99যথাক্রমে। এই সমস্ত ধারণকৃত অঙ্কগুলি নির্মূলের জন্য চিহ্নিত করা হয়েছে, সুতরাং আমি সেগুলিগুলি প্রাপ্ত করার উপায় খুঁজে বের করতে হয়েছিল। এবং একমাত্র দরকারী সংখ্যাযুক্ত অপারেটরগুলি হ'ল 5-9 নয় এমন অক্ষর মান রয়েছে হ্রাস, বৃদ্ধি, গুণ এবং যোগ।

কারণ 98, আমি প্রাথমিকভাবে ব্যবহার করেছি 100~~40c~40c~, যা 100দু'বার কমে যায় । তবে আমি বুঝতে পেরেছিলাম যে আমি ~অপারেটরের আরও একটি ব্যবহার করতে পারি , বিটওয়াইসের পরিপূরকটি আমাকে নেতিবাচক সংখ্যাগুলি পেতে দেয় যা যুক্ত হওয়ার পরে আমাকে বিয়োগফলকে অনুকরণ করতে দেয়। সুতরাং আমি তখন ব্যবহার করেছি 100~~1~43c~, যা যোগ করে 100এবং -22 বাইট ছোট। জন্য 58, আমি ব্যবহার করেছি 44~~14~~43c~, যা যোগ 44এবং 14। এবং এর জন্য 99, আমি ব্যবহার করেছি 100~~40c~, যা হ্রাস পাচ্ছে 100

চূড়ান্ত ফলাফলটি বেশ বড় এবং অচল, তবে উল্লেখযোগ্যভাবে বৃহত্তর সংখ্যা এবং প্রসেসিং কোডের ব্যয়টি 12 এর মধ্যে 5 টি অনন্য অক্ষরকে মুছে ফেলার বড় সুবিধা দ্বারা কিছুটা বেড়ে গেছে elim eliminations:

...4010014400  10[      b      ][  5  ][     b     ]123[      b      ][            :c            ]
...4010014400~~10~~100~~1~43c~c~4~~41c~100~~1~43c~c~123~~100~~1~43c~c~44~~14~~43c~c100~~40c~c43c~~

ঠিক আছে, আমি এখন মুগ্ধ। বেস 6 সংখ্যাগুলি, বেস 7 অঙ্কগুলি ইত্যাদিকে কীভাবে বেস 5 এর সাথে তুলনা করতে পারি?
durron597

@ durron597 তারা সত্যিই কম্পিউটেশন কোন সহজ, অপারেটরদের চরিত্র কোড হিসাবে আমি প্রয়োজন না ( 98, 58, এবং 99) এখনও সীমার বাইরে। এবং বেস বাড়ানো কেবলমাত্র প্রোগ্রামের মোট আকার 8-10% হ্রাস করে, যা নতুন অনন্য চরিত্রের দ্বারা প্রাপ্ত 10-15% স্কোর অর্জনের জন্য যথেষ্ট নয়। bঅপারেটরটিকে একইভাবে পুনরায় অন্তর্ভুক্ত করা উপযুক্ত নয়।
রানার 1212

একটি সংখ্যা নিন এবং এটি বেসে রূপান্তর করুন। এর দৈর্ঘ্য হবে floor(log_b(x)+1)এবং এতে bবিভিন্ন চিহ্ন থাকবে। স্কোর তাই b*floor(log_b(x)+1)। এক্স একটি প্রদত্ত বৃহত সংখ্যা, এবং আপনি যদি খ এর জন্য এই প্লট করেন তবে আপনি খুঁজে পাবেন ন্যূনতমটি b = 3 এ অনেক বেশি। যেমন, আপনি উচ্চতর বেসগুলি (লগ) ব্যবহার করার সাথে দৈর্ঘ্যটি কিছুটা হ্রাস পায় তবে চরসেটের আকারটি রৈখিকভাবে বৃদ্ধি পায়, সুতরাং এটির পক্ষে এটি উপযুক্ত নয়। একটি সহজ হোয়াইটস্পেস প্রোগ্রাম তৈরি, কিন্তু এটা নিয়ে 4134. শুধুমাত্র একটি স্কোর পায়
blutorange

@ ব্লুটোরেঞ্জ আপনার হোয়াইটস্পেস প্রোগ্রাম করা উচিত। 4134 দ্বিতীয় স্থানের জন্য যথেষ্ট
durron597

16

হোয়াইটস্পেস, 1157 937 বাইট * 3 অনন্য = 3471 2811

জনপ্রিয় (?) অনুরোধের দ্বারা আমি আমার সাদা স্থান সমাধান পোস্ট করছি।

প্রয়োজনীয় কোডটি হ্রাস করার জন্য, আমি সম্পূর্ণ স্ট্রিংটিকে একটি বাইনারি সংখ্যা (প্রতিটি বাইটের জন্য 7 বিট) হিসাবে হার্ডকোড করেছি। একটি সাধারণ লুপ অক্ষরগুলি বের করে এবং মুদ্রণ করে।

Filebin.ca এ উত্স কোড।

দ্রষ্টব্য: বিশেষ উল্লেখগুলি বড় আকারের পূর্ণসংখ্যার জন্য অনুমতি দেয় তবে অফিসিয়াল পৃষ্ঠায় হাস্কেল দোভাষীটি 20 বিটের মধ্যে সীমাবদ্ধ। উদাহরণস্বরূপ, গিথুব / হোস্টাইলফোর্ক / হোয়াইটস্পেসে এই রুবি ইন্টারপ্রিটার ব্যবহার করুন।

হোয়াইটস্পেস প্রোগ্রাম তৈরির জন্য রুবি স্ক্রিপ্ট (l = WHITESPACE, t = TAB, u = NEWLINE, // এর পরে সমস্ত কিছু উপেক্ষা করা একটি ফাইলকে লিখে prog.h):

str = 'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.'

def b2ws(bin)
    bin.chars.map{|x|x=='0' ? "l" : "t"}.join
end
def d2ws(dec,pad=0)
    b2ws(dec.to_s(2).rjust(pad,'0'))
end

bin = str.reverse.chars.map do |x|
    "  " + d2ws(x.getbyte(0),7) + " // char <#{x=="\n" ? "LF" : x}>"
end
data = "lll // pushes string as one large number\n#{bin.join("\n")}\nu"

File.open('prog.h','w') do |fout|
    fout << data << "\n"
    fout << <<-eos

// output string loop
ulllu // label 0

  // extract, print, and remove the last 7 bits of the data
  lul   // dup
  llltlllllllu // push 128
  tltt // mod
  tull  // print as char
  llltlllllllu // push 128
  tltl // div

  // break loop if EOS
  lul   // dup
  utltu // jump to 1 if top of stack is zero

ululu // jump to 0

ulltu // label 1
uuu
    eos
end

উদাহরণস্বরূপ, সাদা-স্পেস প্রোগ্রামটি মানব-পঠনযোগ্য আকারে। একটি সাধারণ স্ক্রিপ্টকে এটি একটি আসল সাদা স্থান প্রোগ্রামে রূপান্তর করতে নীচে দেখুন।

lll // pushes string as one large number
  ltltttl // char <.>
  ttltltt // char <k>
  ttltttt // char <o>
  ttltttt // char <o>
  ttlttll // char <l>
  ltlllll // char < >
  ttllllt // char <a>
  ltlllll // char < >
  ttlltlt // char <e>
  ttlttlt // char <m>
  ltlllll // char < >
  ttllttt // char <g>
  ttltttl // char <n>
  ttltllt // char <i>
  tttlttl // char <v>
  ttltllt // char <i>
  ttllttt // char <g>
  ltlllll // char < >
  ltllltl // char <">
  ltlttll // char <,>
  tlllttt // char <G>
  tlltttt // char <O>
  tllltll // char <D>
  ltlllll // char < >
  tlttllt // char <Y>
  tlttltl // char <Z>
  tlllllt // char <A>
  tllttll // char <L>
  ltlllll // char < >
  tllltlt // char <E>
  tlltlll // char <H>
  tltltll // char <T>
  ltlllll // char < >
  tltlltl // char <R>
  tllltlt // char <E>
  tltlttl // char <V>
  tlltttt // char <O>
  ltlllll // char < >
  tltlltt // char <S>
  tltllll // char <P>
  tllttlt // char <M>
  tltltlt // char <U>
  tlltltl // char <J>
  ltlllll // char < >
  tlttlll // char <X>
  tlltttt // char <O>
  tlllttl // char <F>
  ltlllll // char < >
  tlltttl // char <N>
  tltlttt // char <W>
  tlltttt // char <O>
  tltlltl // char <R>
  tlllltl // char <B>
  ltlllll // char < >
  tlltltt // char <K>
  tlllltt // char <C>
  tlltllt // char <I>
  tltltlt // char <U>
  tltlllt // char <Q>
  ltlllll // char < >
  tllltlt // char <E>
  tlltlll // char <H>
  tltltll // char <T>
  ltllltl // char <">
  ltlllll // char < >
  ltttltl // char <:>
  ltltllt // char <)>
  ttlltlt // char <e>
  ttllltt // char <c>
  ttllllt // char <a>
  ttlltlt // char <e>
  tttllll // char <p>
  ltlllll // char < >
  ttttllt // char <y>
  ttlttlt // char <m>
  ltlllll // char < >
  tttlltl // char <r>
  ttltttt // char <o>
  ttllttl // char <f>
  ltlllll // char < >
  ttttllt // char <y>
  ttlltll // char <d>
  tttlttt // char <w>
  ttltttt // char <o>
  tttlltl // char <r>
  ltlllll // char < >
  ttltttt // char <o>
  ttltttt // char <o>
  tttltll // char <t>
  ltlllll // char < >
  tttltll // char <t>
  tttlltt // char <s>
  tttltlt // char <u>
  ttltltl // char <j>
  ltltlll // char <(>
  ltlllll // char < >
  ttlltll // char <d>
  ttlltlt // char <e>
  tttltll // char <t>
  ttltttt // char <o>
  tttltlt // char <u>
  tttlllt // char <q>
  ltlllll // char < >
  ttttllt // char <y>
  ttlttll // char <l>
  tttlltt // char <s>
  tttltlt // char <u>
  ttltttt // char <o>
  ttltllt // char <i>
  ttttlll // char <x>
  ttltttt // char <o>
  ttltttl // char <n>
  ttllltl // char <b>
  ttltttt // char <o>
  ltlllll // char < >
  ttltlll // char <h>
  tttltll // char <t>
  ttlltlt // char <e>
  ttllltl // char <b>
  ttllllt // char <a>
  ttttltl // char <z>
  ttltllt // char <i>
  ttlttll // char <l>
  tllltlt // char <E>
u

// output string loop
ulllu // label 0

  // extract, print, and remove the last 7 bits of the data
  lul   // dup
  llltlllllllu // push 128
  tltt // mod
  tull  // print as char
  llltlllllllu // push 128
  tltl // div

  // break loop if EOS
  lul   // dup
  utltu // jump to 1 if top of stack is zero

ululu // jump to 0

ulltu // label 1
uuu

মূলত, আউটপুট থেকে আউটপুট একটি দীর্ঘ পূর্ণসংখ্যা এবং আপনার স্কোর হ্রাস করতে হবে।

একটি সংখ্যা নিন এবং এটি বেসে রূপান্তর করুন। এর দৈর্ঘ্য হবে floor(log_b(x)+1)এবং এতে bবিভিন্ন চিহ্ন থাকবে। স্কোর তাই b*floor(log_b(x)+1)xএকটি প্রদত্ত বৃহত সংখ্যা, এবং আপনি যদি খ এর জন্য এই চক্রান্ত করেন, আপনি ন্যূনতমটি দেখতে পাবেন বেশ কিছুটা b=3(এবং b=2প্রায় হিসাবে ভাল)। যেমন, আপনি উচ্চতর বেসগুলি (লগ) ব্যবহার করার সাথে দৈর্ঘ্যটি কিছুটা হ্রাস পায় তবে চরসেটের আকারটি রৈখিকভাবে বৃদ্ধি পায়, সুতরাং এটির পক্ষে এটি উপযুক্ত নয়।

এইভাবে আমি কেবল 0/1 এর সাথে একটি ভাষার সন্ধান করেছি, তবে আমি কোনও পাইনি এবং তারপরে আমি মনে করেছি যে সেখানে সাদা জায়গা রয়েছে এবং এটি চেষ্টা করে দেখেছি। হোয়াইটস্পেসে, আপনি সরাসরি 0 এবং 1 এর সাথে বাইনারি সংখ্যা লিখতে পারেন।


পুরানো কোড, আরও খারাপ স্কোর তবে আরও আকর্ষণীয়

প্রাচীন কোড filebin উপর

প্রোগ্রামটি তৈরি করার জন্য আমি যে রুবি স্ক্রিপ্টটি ব্যবহার করেছি (l = WHITESPACE, t = TAB, u = NEWLINE, //উপেক্ষা করার পরে সবকিছু একটি ফাইলে লিখেছেন prog.h):

str = 'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.' + "\n"

def shift(x)
    (x-97)%128
end

EOS = "lttltl" #26
STACK = []

bin = str.reverse.chars.map do |x|
    byte = shift(x.getbyte(0))
    rf = STACK.index(byte)
    STACK.unshift(byte)

    y = byte.to_s(2).chars.map{|y|y=='0' ? 'l' : 't'}.join
    ph = "lll#{y}u" # pushing directly
    if rf
        bn = rf.to_s(2).chars.map{|y|y=='0' ? 'l' : 't'}.join
        cp = "ltll#{bn}u" # copying from stack
    end

    if STACK.size>0 && STACK[0]==STACK[1]
        "lul // dup #{x.inspect}"
    elsif cp && cp.size < ph.size
        "#{cp} // copy <#{x.inspect}> (from #{rf})"
    else
        "#{ph} // push <#{x.inspect}> (#{shift(x.getbyte(0))})"
    end
end

File.open('prog.h','w') do |fout|
    fout << "ll#{EOS}u // push EOS" << "\n"
    fout << bin.join("\n") << "\n"
    fout << <<-eos
// output string
ullu // label 0
  // add 97 (128) before printing
  lllttlllltu // push 97
  tlll // add
  llltlllllllu // push 128
  tltt // mod
  tull  // print top of stack

  // break loop if EOS
  lul   // dup
  ll#{EOS}u // push EOS
  tllt // subtract
  utltu // jump to 1 if top of stack is zero
uluu // jump to 0

ulltu // label 1
uuu
    eos
end

উদাহরণস্বরূপ, সাদা-স্পেস প্রোগ্রামটি মানব-পঠনযোগ্য আকারে। একটি সাধারণ স্ক্রিপ্টকে এটি একটি আসল সাদা স্থান প্রোগ্রামে রূপান্তর করতে নীচে দেখুন।

lllttltlu // push EOS
llltltlltu // push <"\n"> (41)
llltllttltu // push <"."> (77)
llltltlu // push <"k"> (10)
llltttlu // push <"o"> (14)
lul // dup "o"
llltlttu // push <"l"> (11)
lllttttttu // push <" "> (63)
llllu // push <"a"> (0)
ltlltu // copy <" "> (from 1)
llltllu // push <"e"> (4)
lllttllu // push <"m"> (12)
ltlltlu // copy <" "> (from 2)
lllttlu // push <"g"> (6)
lllttltu // push <"n"> (13)
llltlllu // push <"i"> (8)
llltltltu // push <"v"> (21)
ltlltu // copy <"i"> (from 1)
lllttlu // push <"g"> (6)
ltllttlu // copy <" "> (from 6)
llltllllltu // push <"\""> (65)
llltlltlttu // push <","> (75)
lllttllttlu // push <"G"> (102)
lllttltttlu // push <"O"> (110)
lllttlllttu // push <"D"> (99)
ltlltltu // copy <" "> (from 5)
lllttttlllu // push <"Y"> (120)
lllttttlltu // push <"Z"> (121)
lllttlllllu // push <"A"> (96)
lllttltlttu // push <"L"> (107)
ltlltllu // copy <" "> (from 4)
lllttlltllu // push <"E"> (100)
lllttlltttu // push <"H"> (103)
llltttllttu // push <"T"> (115)
ltllttu // copy <" "> (from 3)
llltttllltu // push <"R"> (113)
ltlltllu // copy <"E"> (from 4)
llltttltltu // push <"V"> (117)
ltlltttlu // copy <"O"> (from 14)
ltlltllu // copy <" "> (from 4)
llltttlltlu // push <"S"> (114)
lllttlttttu // push <"P"> (111)
lllttlttllu // push <"M"> (108)
llltttltllu // push <"U"> (116)
lllttltlltu // push <"J"> (105)
ltlltltu // copy <" "> (from 5)
llltttltttu // push <"X"> (119)
ltlltlllu // copy <"O"> (from 8)
lllttlltltu // push <"F"> (101)
ltllttu // copy <" "> (from 3)
lllttlttltu // push <"N"> (109)
llltttlttlu // push <"W"> (118)
ltlltllu // copy <"O"> (from 4)
ltlltllltu // copy <"R"> (from 17)
lllttlllltu // push <"B"> (97)
ltlltltu // copy <" "> (from 5)
lllttltltlu // push <"K"> (106)
lllttllltlu // push <"C"> (98)
lllttltlllu // push <"I"> (104)
ltllttttu // copy <"U"> (from 15)
llltttllllu // push <"Q"> (112)
ltlltltu // copy <" "> (from 5)
ltllttlltu // copy <"E"> (from 25)
ltllttttlu // copy <"H"> (from 30)
ltllttttlu // copy <"T"> (from 30)
llltllllltu // push <"\""> (65)
ltlltllu // copy <" "> (from 4)
llltlttlltu // push <":"> (89)
llltlltlllu // push <")"> (72)
llltllu // push <"e"> (4)
llltlu // push <"c"> (2)
llllu // push <"a"> (0)
llltllu // push <"e"> (4)
lllttttu // push <"p"> (15)
ltlltttu // copy <" "> (from 7)
lllttlllu // push <"y"> (24)
lllttllu // push <"m"> (12)
ltlltlu // copy <" "> (from 2)
llltllltu // push <"r"> (17)
llltttlu // push <"o"> (14)
llltltu // push <"f"> (5)
ltllttu // copy <" "> (from 3)
ltllttlu // copy <"y"> (from 6)
lllttu // push <"d"> (3)
llltlttlu // push <"w"> (22)
llltttlu // push <"o"> (14)
ltlltttu // copy <"r"> (from 7)
ltlltltu // copy <" "> (from 5)
ltlltlu // copy <"o"> (from 2)
lul // dup "o"
llltllttu // push <"t"> (19)
ltllttu // copy <" "> (from 3)
ltlltu // copy <"t"> (from 1)
llltlltlu // push <"s"> (18)
llltltllu // push <"u"> (20)
llltlltu // push <"j"> (9)
llltllltttu // push <"("> (71)
ltlltltu // copy <" "> (from 5)
lllttu // push <"d"> (3)
llltllu // push <"e"> (4)
ltlltttu // copy <"t"> (from 7)
llltttlu // push <"o"> (14)
ltlltttu // copy <"u"> (from 7)
llltllllu // push <"q"> (16)
ltllttlu // copy <" "> (from 6)
lllttlllu // push <"y"> (24)
llltlttu // push <"l"> (11)
llltlltlu // push <"s"> (18)
ltlltltu // copy <"u"> (from 5)
llltttlu // push <"o"> (14)
llltlllu // push <"i"> (8)
llltltttu // push <"x"> (23)
ltlltlu // copy <"o"> (from 2)
lllttltu // push <"n"> (13)
llltu // push <"b"> (1)
ltlltlu // copy <"o"> (from 2)
ltlltlttu // copy <" "> (from 11)
llltttu // push <"h"> (7)
llltllttu // push <"t"> (19)
llltllu // push <"e"> (4)
llltu // push <"b"> (1)
llllu // push <"a"> (0)
lllttlltu // push <"z"> (25)
llltlllu // push <"i"> (8)
llltlttu // push <"l"> (11)
lllttlltllu // push <"E"> (100)
// output string
ullu // label 0
  // add 97 (128) before printing
  lllttlllltu // push 97
  tlll // add
  llltlllllllu // push 128
  tltt // mod
  tull  // print top of stack

  // break loop if EOS
  lul   // dup
  lllttltlu // push EOS
  tllt // subtract
  utltu // jump to 1 if top of stack is zero
uluu // jump to 0

ulltu // label 1
uuu

এই হোয়াইটস্পেস প্রোগ্রামটি নিজেই বরং সহজ, তবে তিনটি গল্ফিং অপ্টিমাইজেশন রয়েছে:

  • lulএকটি সদৃশ চরিত্র আছে যখন স্ট্যাক ক্লোন করতে ব্যবহার করুন
  • ltlস্ট্যাকের এন-থ্রি এন্ট্রিটিকে ক্লোন করতে ব্যবহার করুন যদি এটি সরাসরি চরটি চাপানোর চেয়ে কম হয়
  • সমস্ত বাইট 97 দ্বারা শিফট করুন (মড 128), বাইনারি সংখ্যাগুলি আরও ছোট করে

আমার মানবীয় পঠনযোগ্য শ্বেতস্পেস কোডটিকে একটি আসল শ্বেত স্পেস প্রোগ্রামে রূপান্তর করার জন্য একটি সাধারণ রুবি স্ক্রিপ্ট (একটি ফাইল পড়ুন prog.hএবং একটি ফাইলে লেখেন prog.ws):

WHITESPACE = "l"
NEWLINE = "u"
TAB = "t"

File.open('prog.ws','w') do |fout|
    code = ""
    fin = File.read('prog.h')
    fin.each_line do |line|
        line.gsub!(/\/\/.*/,'')
        line.scan(/#{NEWLINE}|#{WHITESPACE}|#{TAB}/i) do |x|

            code << case x.downcase
            when NEWLINE.downcase
                "\n"
            when WHITESPACE.downcase
                " "
            when TAB.downcase
                "\t"
            else
                ""
            end
        end
    end
    fout << code
end

পেছনের নতুন লাইনটি isচ্ছিক, আপনি এটি মুদ্রণ না করে কয়েকটি অক্ষর সংরক্ষণ করতে পারেন।
durron597

ধন্যবাদ, এটি পরিবর্তন। মূলত, আমি এটিকে অন্তর্ভুক্ত করেছি কারণ হাস্কেল দোভাষী কিছু ডিবাগ আউটপুট যোগ করেছেন, তবে রুবির সাথে এটি পরিষ্কার দেখাচ্ছে।
ব্লুটোরেঞ্জ

7

রুবি 144 বাইট * 39 স্বতন্ত্র = 5616

puts"Elizabeth obnoxiously quoted (just too rowdy for my peace): \"#{'the quick brown fox jumps over the lazy dog,'.upcase}\" giving me a look."

কখনও কখনও সহজতম সেরা।


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

6

ব্রেইনফাক, 1264 বাইট * 7 অনন্য = 8848

হ্যাঁ, এটি একটি ভয়ানক স্কোর।

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

আমি দেখেছি যে আরও কম অনন্য অক্ষর ব্যবহার করা সম্ভব তবে দৈর্ঘ্য হবে 10795, গুণ 5 = 53975
mbomb007

আপনি কেবল এটির চেয়ে আরও +.ছোট হবে তা নিশ্চিত করেই এটি করতে পারেন।
ক্যাপচারাইগ

শুধুমাত্র ব্যবহার +এবং .আমি 15018 * 2 = পেতে 30,036
17:১ig এ ক্যাপচার্যাগ

6

> <> (ফিশ) - 578 বাইট * 8 অনন্য = 4624

14121412412431421124321110441421130402401433401430421141143114240333221142303303210321143224241321121343212340321131301320302344221132340304221130322340321313221100323234202311321143224241341121131213110444324310422421114441421142412420421114400443412442421112412413421113403423411403121100410413412423432421114431403423412401404412402434312421140413410434324324401431443243*3*3+3*1+00p44*4+3*2+01p44*3*4+1+11p44*3*4+1+21p43+3*2*31p43+3*2*41p43*3*41+1p44*3*4+1+42+1p43+3*2*43+1p43+3*2*1+44+1p43+3*2*1+33*1p43*3*3*3+33*1+1p43*3*3*33*2+1p43+3*3*43*1p44*2*1+43*1+1p44*3+3*2+43*2+1p

আমার স্কোরটি আমি যেমন আশা করেছিলাম তেমন প্রতিযোগিতামূলক নয় তবে আমি ভেবেছিলাম যে সমাধানটি পোস্ট করার পক্ষে এখনও যথেষ্ট আকর্ষণীয়।

ব্যাখ্যা

কোডের প্রথম বিভাগটি 0-4 অঙ্কের একটি দীর্ঘ স্ট্রিং যা স্ট্রিংয়ের প্রতিটি অক্ষরের জন্য 3 ডিজিটের বেস 5 প্রতিনিধিত্ব করে। অবশিষ্ট কোডটি pফিশের অপারেটরের সুবিধা নেয় যা আপনাকে প্রোগ্রাম চলাকালীন প্রোগ্রামের উত্স কোড সম্পাদনা করতে দেয়। সেই অপারেটরটি ব্যবহার করে, আমি বেস 5 অক্ষরকে বেস 10 এ আবার রূপান্তর করতে প্রয়োজনীয় ফিশ কোড তৈরি করতে সক্ষম হয়েছি এবং সেগুলি আউটপুট দিয়েছিলাম এবং তারপরে দোভাষী শেষ হওয়ার আগে ফাইলটির শুরুতে সেই কোডটি আবার উত্স কোডে রেখেছি লাইন এবং চারপাশে মোড়ানো। দোভাষী যখন লাইনের শেষ প্রান্তে পৌঁছান, কোডটি এর মতো দেখতে পরিবর্তন করা হয়েছে:

v4121412412431421124321110441421130402401433401430421141143114240333221142303303210321143224241321121343212340321131301320302344221132340304221130322340321313221100323234202311321143224241341121131213110444324310422421114441421142412420421114400443412442421112412413421113403423411403121100410413412423432421114431403423412401404412402434312421140413410434324324401431443243*3*3+3*1+00p44*4+3*2+01p44*3*4+1+11p44*3*4+1+21p43+3*2*31p43+3*2*41p43*3*41+1p44*3*4+1+42+1p43+3*2*43+1p43+3*2*1+44+1p43+3*2*1+33*1p43*3*3*3+33*1+1p43*3*3*33*2+1p43+3*3*43*1p44*2*1+43*1+1p44*3+3*2+43*2+1p
>55**$5*++ol?!; 

কোডটি চারপাশে মোড়ানো এবং vঅপারেটরটিকে হিট করে যখন এটি দ্বিতীয় লাইনে নেমে যায়, >অপারেটরটিকে হিট করে লুপে এগিয়ে যায়, প্রতিটি সময় বেস 5 এনকোডিংটিকে বেস 10 এ্যাসকি মানটিতে রূপান্তর করে এবং সেই মানটি আউটপুট করে। যখন স্ট্যাকের কোনও মান নেই তখন ?অপারেটর এড়িয়ে যাবে ;এবং প্রোগ্রামটি শেষ হবে।


5

7 , 273 বাইট × 7 অনন্য বাইট = 1911, নন-কেপটিং (ভাষা পোস্টডেটস চ্যালেঞ্জ)

501513010250341012432044041204045104011053033043511402401130443235151151105240424404004144031133304214014044433043401032201433022042551243201043511102223044114403120042140450415114434050440500114042432010430032533041340424320250451514210501020420444010403043040402343447403

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

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

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

প্রোগ্রামটি খুব সহজ; এটিতে দুটি স্ট্যাক উপাদান রয়েছে, একটি দীর্ঘ স্ট্রিং যা কেবল মুদ্রিত ভারব্যাটিয়াম পায়, একটি 7উপাদানগুলি আলাদা করতে (দুর্ভাগ্যবশত অপরিবর্তনীয়), এবং 403যা 7 এ ধ্রুব স্ট্রিং প্রিন্ট করার একটি সহজ উপায় ( 40দ্বিতীয় স্ট্যাকের উপাদানটি এড়িয়ে যায়, যখন এটিকে সরানো হয়) স্ট্যাকের শীর্ষস্থানীয়, তারপরে 3এটি মুদ্রণ করে এবং পুরানো প্রথম স্ট্যাক উপাদানটি, অর্থাৎ 403নিজেই ছাড় দেয় )।

তাহলে আমি কীভাবে 269 বাইটের চেয়ে ছোট স্ট্রিং পেলাম? 7 টি একাধিক আই / ও ফর্ম্যাট সমর্থন করে এবং এর ফর্ম্যাটগুলির একটি হ'ল ইউএস-টিটিওয়াই , একটি চরিত্র সেট (বিশেষত, বাউডোটের একটি রূপ) যা এএসসিআইআই আবিষ্কার হওয়ার আগে ব্যাপকভাবে ব্যবহৃত হয়েছিল। ( 5দ্বিতীয় স্ট্যাক উপাদান শুরুতে অর্থাৎ প্রোগ্রামের শুরু, স্ট্রিং এনকোডিং নির্ধারণ; বাকি স্ট্রিং বিষয়বস্তু নিজেই।) এখান থেকে পাঁচ-বিট অক্ষর সেট, এবং কমান্ড 0থেকে5ধারাবাহিকভাবে অপ্রকাশিত অবস্থায় স্ট্রিংগুলিতে সুরক্ষিতভাবে সংরক্ষণ করা যেতে পারে (যাতে এটি একবারে পালানো আসলটিকে পুনরায় উত্পাদন করতে পারে), সুতরাং ভাষাটি ইউএস-টিটিওয়াইয়ের অক্ষরগুলি এনকোড করতে (৩ options টি বিকল্প), ৪ টির জন্য ব্যবহার করা হচ্ছে, যাতে জোড় কমান্ড (৩ options টি বিকল্প) ব্যবহার করে 4 7 দোভাষী নিজেই নির্দেশাবলী)। অবশ্যই, 32 টিরও বেশি অনন্য অক্ষর রয়েছে যা লোকেরা আউটপুট দিতে চায় (এবং স্ট্রিংয়ের মধ্যে 32 টিরও বেশি অক্ষর উপস্থিত হয়), সুতরাং দুটি চরিত্র "শিফট কোড" যা চারটি অক্ষর সেট (বড় হাতের অক্ষর, ছোট হাতের অক্ষরগুলির মধ্যে স্যুইচ করে) থাকে , পরিসংখ্যান এবং একটি ব্যবহারকারী-সংজ্ঞায়িত "ফিগার এক্সটেনশান" যা অন্যান্য ASCII অক্ষরের জন্য অন্য 7 টি অক্ষরের জন্য ব্যবহার করে যা অন্যান্য চরিত্রের সেটগুলিতে নেই; তবে স্ট্রিংয়ের সমস্ত অক্ষর মার্কিন-টিটিওয়াইতে "নেটিভালি" তাই বিবরণ এক্সটেনশন কিছু যায় আসে না)। এখানে'

Ełlizabeth obnoxiously quoted Ø(Łłjust too rowdy for my peaceØ):
"ŁTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOGØ," Łłgiving me a lookØ.

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


এই ফাঁকটি হ'ল কোনও চ্যালেঞ্জের জবাব দেওয়ার উদ্দেশ্যে কোনও ভাষা লেখা রোধ করা, যা এটি স্পষ্ট নয়। এখনও আমার কাছ থেকে উপার্জনের যোগ্য, যদিও আমি এখনও অবধি সর্বনিম্ন স্কোর থাকা সত্ত্বেও এটি গ্রহণ করতে পারি না।
durron597

2

পাইথন 2, 163 147 145 143 বাইট * 35 36 35 অনন্য = 5705 5292 5220 5005

এটি সম্ভবত আমি এটি পেতে চলেছি হিসাবে ভাল।

সম্পাদনা:

  1. .capitalize()ব্যবহারের পক্ষে সরানো হয়েছে E
  2. 'ব্যাকস্ল্যাশ পলায়নের উদ্ধৃতিগুলির পরিবর্তে ব্যবহারের পরিবর্তিত হয়েছে ।
  3. বিবৃতিতে +কমা ব্যবহার করার জন্য সরানো হয়েছে এবং কিছু স্পেস রয়েছে print
print"Elizabeth obnoxiously quoted (just too rowdy for my peace):",'"the quick brown fox jumps over the lazy dog,"'.upper(),"giving me a look."

আমি বাইনারি বা হেক্স দিয়ে শুরু করে স্ট্রিংয়ে রূপান্তর করার চেষ্টা করেছি, তবে রূপান্তর প্রক্রিয়াতে সুবিধাগুলি হারাতে বসেছে।
mbomb007

2

পাইথন 2, 14508 11700 11088 10164 9486 9746 7860 145 বাইট * 36 অনন্য = 5220

আমি শিরোনামটি দেখেছি এবং ভেবেছিলাম এটি বরং শব্দযুক্ত পাইথনের জন্য একটি আকর্ষণীয় চ্যালেঞ্জ। আমি এই সমস্যাটি মোকাবেলায় এগুলি আমার নোট।

আমার প্রথম চেষ্টাটি অসুবিধাগুলি হ্রাস করে 31:

print''.join(chr([69,108,105,122,97,98,101,116,104,32,111,98,110,111,120,105,111,117,115,108,121,32,113,117,111,116,101,100,32,40,106,117,115,116,32,116,111,111,32,114,111,119,100,121,32,102,111,114,32,109,121,32,112,101,97,99,101,41,58,32,34,84,72,69,32,81,85,73,67,75,32,66,82,79,87,78,32,70,79,88,32,74,85,77,80,83,32,79,86,69,82,32,84,72,69,32,76,65,90,89,32,68,79,71,44,34,32,103,105,118,105,110,103,32,109,101,32,97,32,108,111,111,107,46][r])for r in range(124))

আমি ভেবেছিলাম আমি আরও ভাল করতে পারি। ব্যবহার করে map, অদ্ভুততা নেমে এসেছে 26:

print''.join(map(chr,(69,108,105,122,97,98,101,116,104,32,111,98,110,111,120,105,111,117,115,108,121,32,113,117,111,116,101,100,32,40,106,117,115,116,32,116,111,111,32,114,111,119,100,121,32,102,111,114,32,109,121,32,112,101,97,99,101,41,58,32,34,84,72,69,32,81,85,73,67,75,32,66,82,79,87,78,32,70,79,88,32,74,85,77,80,83,32,79,86,69,82,32,84,72,69,32,76,65,90,89,32,68,79,71,44,34,32,103,105,118,105,110,103,32,109,101,32,97,32,108,111,111,107,46)))

প্রায় এই সময়ে, আমি প্রশ্ন পাঠ্যে লক্ষ্য করেছি যে স্কোরটি ছিল uniques * bytes, কেবল অজানা! তার মানে আমার উপরের স্কোরগুলি 14508 এবং 11700 ছিল very খুব প্রতিযোগিতামূলক নয়। সুতরাং আমি এখন হেক্স স্ট্রিং হিসাবে পাঠ্য সংরক্ষণ করে বাইটগুলি হ্রাস করেছি:

# 308*36 = 11088
print''.join(chr(int('456c697a6162657468206f626e6f78696f75736c792071756f74656420286a75737420746f6f20726f77647920666f72206d79207065616365293a202254484520515549434b2042524f574e20464f58204a554d5053204f56455220544845204c415a5920444f472c2220676976696e67206d652061206c6f6f6b2e'[i*2:i*2+2],16)) for i in range(124))

আকার হ্রাস করা হয়েছে তবে আরও অনন্য অক্ষর। তবে যদি আমি 32 অফসেট সহ প্যাকযুক্ত 2 ডিজিটের দশমিক স্ট্রিং ব্যবহার করি:

# 308*33 = 10164
print''.join(chr(int('37767390656669847200796678798873798583768900818579846968000874858384008479790082798768890070798200778900806965676909260002524037004953413543003450475546003847560042534548510047543750005240370044335857003647391202007173867378710077690065007679797514'[i*2:i*2+2])+32) for i in range(124))

এটিতে একই সংখ্যক বাইট রয়েছে তবে 3 টির কৌশল সংরক্ষণ করে।

আমি একটি নতুন পরিকল্পনা হ্যাচ। যদি আমি 7 টি বিট অক্ষর দিয়ে পাইথন দীর্ঘ পূর্ণসংখ্যার বস্তুটি প্যাক করি তবে আমি স্থানান্তরিত করে প্রত্যেকে বের করতে পারি:

# 306*31 = 9486
h=1073974643401006528619595312441225198653732186368270382545648881135648217524502741093886285232362673460172159947573049818819511630304840724474679255867143965214892747087773876949021986013520804726327302180335979259392708372721217579101211940864406962137554744750
w=''
while h:w=chr(h&127)+w;h>>=7
print w

ওয়েল এটি স্কোর হ্রাস করেছে 9486 এ। একটি আকর্ষণীয় পরীক্ষা, তবে কোথাও যথেষ্ট ভাল নেই। এখন আমি যদি ফাংশনটির নামগুলি থেকে মুক্তি পেয়ে স্ট্রিং ফর্ম্যাটিংয়ের উপর নির্ভর করি?

# 443 * 22 = 9746
print('%c'*124)%(69,108,105,122,97,98,101,116,104,32,111,98,110,111,120,105,111,117,115,108,121,32,113,117,111,116,101,100,32,40,106,117,115,116,32,116,111,111,32,114,111,119,100,121,32,102,111,114,32,109,121,32,112,101,97,99,101,41,58,32,34,84,72,69,32,81,85,73,67,75,32,66,82,79,87,78,32,70,79,88,32,74,85,77,80,83,32,79,86,69,82,32,84,72,69,32,76,65,90,89,32,68,79,71,44,34,32,103,105,118,105,110,103,32,109,101,32,97,32,108,111,111,107,46)

আমার কাছে এখন কেবল 22 টি ইউনিক রয়েছে তবে স্কোরটি উন্নত হয় না।

ঠিক আছে, আমি যদি স্পষ্টভাবে গ্রহণ করি এবং কেবল স্ট্রিংটি মুদ্রিত করি তবে:

# 131*60 = 7860
print'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.'

7860 এর স্কোর। আমার এটি করা উচিত ছিল। তবে এত কিছু শিখতে পারতাম না।

আমি অনুমান করি যে আমি যদি অভাবগুলি 26 এর মাধ্যমে হ্রাস করতে পারি তবে যদি আমি গতিশীলভাবে উপরের কেসের অংশগুলি উত্পাদন করি, তাই:

# 145*36 = 5220
print'Elizabeth obnoxiously quoted (just too rowdy for my peace): '+'"the quick brown fox jumps over the lazy dog,"'.upper()+' giving me a look.'

আমি মনে করি পাইথন 5220 এর চেয়ে বেশি ভাল কিছু পাবে না Py

আপডেট: mbomb007 এর 500th স্কোর করার চেয়ে ভাল পাইথন সলিউশন রয়েছে।


আপনার সমাধান +1 এ চমৎকার আশা। আপনার পরামর্শ অনুসারে শিরোনামটি সম্পাদনা করেছি।
লজিক নাইট

1

> <> (ফিশ) - 138 বাইট * 65 স্বতন্ত্র = 8970

সহজ রুট, হ্যালো ওয়ার্ল্ড:

!v'Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look.'r!
 >l?!;o

ভাল, আমার প্রথম প্রচারের জন্য> <> এটি একটি চ্যালেঞ্জ ছিল। আমি মনে করি আমি কিছু উন্নতি দেখতে পাচ্ছি, তবে এটি শিখতে মজা লাগছিল :)

বা এটি অত্যধিক জটিল করার জন্য - 1567 বাইট * 27 স্বতন্ত্র = 42309

!\f8+3*:o2*f2*-:o3-:of+2+:ofa+-:o1+:o3+:of+:oc-:o\7+:od-:oc+:o1+:o9+: of-:o6+:o6+:o2-:o7-: od+:o\8-:o4+:o6-:o5+:of -:o1-:o\\6+:ob+ :o2-:o1+:o\:o5-:o:o\3+ :o3-:o8+:of4+-:oab ++:o\f4+-:o9+ :o3+: o\!
!5:of+a+:o1-:off+2+o:f-6-oa-:o8-:of3*1-:oa-:o2-:!fo3*7+:o2+:o:d+o:o5!f+:o7-:off+2+o6+:o8-!f:off!f+2+o4-:off+2+ob+!f:o3+::\ff    f f          f        f  f                  f    f        f     \!f-
 -                                               f                   f                    f     f                 f       ff    3 f          f        f  f                  f    f        f       f
 :                                               +                   +                    +     +                 +       ++    * +          +        +  +                  +    +        +       +
 o                                               2                   2                    2     2                 2       2a    1 2          2        2  2                  2    2        2       2
 c                                               +                   +                    +     +                 +       ++    + +          +        +  +                  +    +        +       +
 +                                               o                   o                    o     o                 o      \oo4-o \ o;         o        o  o                  o    o        o       o
 \:off+2+o9-:ob-:o4-:o2+:o2+:of4*%:of2++:o2,3+:o2 +:o3*f-3-:oc-:o3-:o\c+:o4+:oc-:o6-:o8+:o\9-:of 1++:o3-:o8+:o9-:o\8-:o9+:  o9+: o\e-:ob+:o8- :o3+:o3+ :o\4-:o7+:o2-f-:od+:o\2+:o c-:o3-:o\7+:ob\

আপনি যদি স্ট্রিংটি পিছনের দিকে লিখে থাকেন তবে আপনি rস্ট্যাকটি বিপরীতভাবে ফেলে দিতে পারেন :) এছাড়াও আপনি oদ্বিতীয় লাইনের শুরুতে ফাঁকা জায়গায় স্থানান্তরিত করতে পারেন ।
Sp3000

@ Sp3000 টিপস জন্য ধন্যবাদ!
Vlad274

জটিলটিতে এতবার থাকার কোনও উপায় আপনি এড়াতে পারবেন f f + 2 + o?
mbomb007

সর্বোত্তমতম ক্ষেত্রে , বড় হাতের কোনও সহজ উপায় আছে ? একটি সাবরুটিন দিয়ে লুপ করুন যা স্ট্রিংয়ের সেই অংশে প্রতিটি 32 টি যোগ করে, আপনাকে কিছু অনন্য চরিত্র সাশ্রয় করে, সম্ভবত?
mbomb007

@ mbomb007 আমি রেজিস্টারটি ব্যবহার করে এটিকে অপ্টিমাইজ করতে পারি, বা আমি উত্স কোড থেকে নিজেও একটি জায়গা পড়তে পারি। আমি ফিশের কাছে অত্যন্ত নতুন, সুতরাং এটি সম্ভব কিনা তা আমি জানি না
ভ্ল্যাড 274৪

1

05 এ বি 1 ই , 380 বাইট * 11 টি অক্ষর = 4180 স্কোর

এটি সম্ভাব্য প্রতিযোগিতামূলক

"234413410442342343401431404112421343420421440410421432430413441112423432421431401400112130411432430431112431421421112424421434400441112402421424112414441112422401342344401131213112114314242234112311320243232300112231312304322303112240304323112244320302310313112304321234312112314242234112301230330324112233304241134114112403410433410420403112414401112342112413421421412141"3ô5öçJ

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

এএসসিআইআই চরগুলির প্রতিনিধিত্বমূলক বেস 5 টি পুশ করে একসাথে যোগদান করে।
3 এর টুকরো টুকরো টুকরো করে দশমিক হিসাবে ফিরে আসে।
ASCII পূর্ণসংখ্যাকে অক্ষরে ফিরে যায়।
একসাথে ফিরে যোগদান।


0

পার্ল 6, 139 বাইট * 36 অনন্য = 5004

say 'Elizabeth obnoxiously quoted (just too rowdy for my peace): "'~"the quick brown fox jumps over the lazy dog".uc~'," giving me a look.'

0

জাভা 8, 141 বাইট * 64 স্বতন্ত্র অক্ষর = 9,024

()->{return"Elizabeth obnoxiously quoted (just too rowdy for my peace): \"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG,\" giving me a look.";}

141 বাইট, 64 অনন্য অক্ষর। সরল "স্ট্রিং রিটার্ন" ব্যতীত অন্যান্য পন্থাগুলি ব্যবহৃত অক্ষরগুলিতে বেশি সঞ্চয় না করেই বাইট সংখ্যা বাড়ায়।



0

টিসিএল , 345 বাইট, 345 x 13 = 4485

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 \50\\\144\\\144\51 "055451724142456450 5742565770515765635471 616557644544 \5052656364 645757 6257674471 465762 5571 6045414345\51\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

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


টিসিএল , 337 বাইট, 337 x 15 = 5055

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 (\\\144\\\144) "055451724142456450 5742565770515765635471 616557644544 (52656364 645757 6257674471 465762 5571 6045414345)\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

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

টিসিএল , 329 বাইট, 329 x 16 = 5264

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 (\\d\\d) "055451724142456450 5742565770515765635471 6165576445d (52656364 645757 625767d71 465762 5571 6045414345)\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

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


টিসিএল , 333 বাইট, 333 x 16 = 5328

\160\165\164\163 [\163\165\142\163\164 [\162\145\147\163\165\142 \55\141\154\154 (\\d\\d) "055451724142456450 5742565770515765635471 6165576445d \5052656364 645757 625767d71 465762 5571 6045414345\51\72 \"241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\"\54 475166515647 5545 41 54575753" \\\\1\\1]]\56

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


টিসিএল , 148 বাইট, 148 এক্স 37 = 5476

puts "Elizabeth obnoxiously quoted (just too rowdy for my peace): \"[string tou "the quick brown fox jumps over the lazy dog"],\" giving me a look."

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

টিসিএল , 277 বাইট, 277 x 21 = 5817

\160u\164s [subs\164 [\162\145\147sub \55\141\154\154 (\\d\\d) "0554517241b456450 ob56o7051ous5471 61uo6445d(52us64 64oo 62o67d71 46o62 5571 6045414345): 241005 2125110313 0222172716 061730 1225152023 17260522 241005 14013231 041707\" 475166515647 5545 41 54oo53" \\\\1\\1]]\56

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

টিসিএল , 371 বাইট, 371 x 16 = 5936

puts "\105\154\151\172\141\142\145t\150 o\142\156o\170\151ous\154\171 \161uot\145\144 \50\152ust too \162o\167\144\171 \146o\162 \155\171 p\145\141\143\145\51\72 \"\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\" \147\151\166\151\156\147 \155\145 \141 \154oo\153\56"

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

টিসিএল , 401 বাইট, 401 x 16 = 6416

puts "\105\154\151\172\141\142\145\164\150 o\142\156o\170\151o\165\163\154\171 \161\165o\164\145\144 \50\152\165\163\164 \164oo \162o\167\144\171 \146o\162 \155\171 \160\145\141\143\145\51\72 \"\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\" \147\151\166\151\156\147 \155\145 \141 \154oo\153\56"

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


টিসিএল , 403 বাইট, 403 x 16 = 6448

puts "\105\154\151\172\141\142\145\164\150 o\142\156o\170\151o\165\163\154\171 \161\165o\164\145\144 \50\152\165\163\164 \164oo \162o\167\144\171 \146o\162 \155\171 \160\145\141\143\145\51\72 \42\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\42 \147\151\166\151\156\147 \155\145 \141 \154oo\153\56"

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


টিসিএল , 433 বাইট, 433 এক্স 15 = 6495

puts "\105\154\151\172\141\142\145\164\150 \157\142\156\157\170\151\157\165\163\154\171 \161\165\157\164\145\144 \50\152\165\163\164 \164\157\157 \162\157\167\144\171 \146\157\162 \155\171 \160\145\141\143\145\51\72 \42\124\110\105 \121\125\111\103\113 \102\122\117\127\116 \106\117\130 \112\125\115\120\123 \117\126\105\122 \124\110\105 \114\101\132\131 \104\117\107\54\42 \147\151\166\151\156\147 \155\145 \141 \154\157\157\153\56"

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

টিসিএল , 473 বাইট, 473 এক্স 14 = 6622

puts \105\154\151\172\141\142\145\164\150\40\157\142\156\157\170\151\157\165\163\154\171\40\161\165\157\164\145\144\40\50\152\165\163\164\40\164\157\157\40\162\157\167\144\171\40\146\157\162\40\155\171\40\160\145\141\143\145\51\72\40\42\124\110\105\40\121\125\111\103\113\40\102\122\117\127\116\40\106\117\130\40\112\125\115\120\123\40\117\126\105\122\40\124\110\105\40\114\101\132\131\40\104\117\107\54\42\40\147\151\166\151\156\147\40\155\145\40\141\40\154\157\157\153\56

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

টিসিএল , 133 বাইট, 133 x 60 = 7980

puts "Elizabeth obnoxiously quoted (just too rowdy for my peace): \"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG,\" giving me a look."

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



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