বড় বড় সংখ্যা


25

আমার বেশ কয়েকটি উত্তর গল্ফ করার চেষ্টা করার সময়, আমার যতটা সম্ভব কম অক্ষরে বড় পূর্ণসংখ্যার লেখা দরকার ছিল।

এখন আমি সবচেয়ে ভালো উপায় যে কাজ করতে জানেন: আমি পেয়ে যাবেন আপনি এই প্রোগ্রাম লেখার হবে।

চ্যালেঞ্জ

  • এমন একটি প্রোগ্রাম লিখুন যখন কোনও ধনাত্মক পূর্ণসংখ্যা দেওয়া হলে এমন একটি প্রোগ্রাম আউটপুট দেয় যা এটি স্টাডাউট বা সমতুল্যতে প্রিন্ট করে।
  • আউটপুট প্রোগ্রামগুলি স্রষ্টার মতো একই ভাষায় থাকতে হবে না।
  • আউটপুট অবশ্যই সর্বোচ্চ 128 বাইট হতে হবে
  • আপনি স্টিডিন বা সমমানের থেকে ইনপুট গ্রহণ করতে পারেন (ফাংশন ইনপুট নয়)
  • আপনি ফলাফলকে প্রবাহিত বা সমমানের আউটপুট করতে পারেন।
  • সংখ্যা আউটপুট দশমিক হতে হবে (বেস 10)

স্কোরিং

আপনার স্কোরটি ক্ষুদ্রতম ইতিবাচক পূর্ণসংখ্যার সমান যা আপনার প্রোগ্রামটি এনকোড করতে পারে না।

সবচেয়ে বড় স্কোর সহ এন্ট্রি জিতল।


আমি ট্যাগ মেটাগল্ফ যুক্ত করেছি, যেহেতু আমরা আউটপুট প্রোগ্রামটি গল্ফ করছি।
orlp

1
@orlp আমি আসলে এটি উদ্দেশ্য হিসাবে বাদ দিয়েছি, কারণ মেটাগলফ একটি স্কোরিং মানদণ্ড ট্যাগ যা বলে যে "স্কোরটি আপনার আউটপুটটির দৈর্ঘ্য"। আমি সে সম্পর্কে একটি মেটা পোস্ট যুক্ত করার বিষয়টি বিবেচনা করছি যদিও এর সাথে সাথে বিপরীত স্কোরিংও বাছাই করতে পারে ( উদাহরণস্বরূপ দ্রুততম কোডের ক্ষেত্রে এটি)।
মার্টিন এন্ডার

1
@ মার্টিনবাটনার আমি অনুমান করি আমাদের মেটা-সীমাবদ্ধ-উত্স প্রয়োজন :)
orlp

2
"কোন ভাষায় সবচেয়ে বড় পূর্ণসংখ্যা রয়েছে" এর থেকে চ্যালেঞ্জ কীভাবে আলাদা ?
nwp

5
@nwp আমার মনে হয় আপনি প্রশ্নটি ভুল বুঝেছেন। প্রশ্ন কম্প্রেশন সম্পর্কে। এটি দরকারী হবে, তবে বড় পূর্ণসংখ্যার ব্যাপ্তি সহ কোনও ভাষা ব্যবহার করার প্রয়োজন নেই।
আলু

উত্তর:


2

পাইথন 3 → সিজেএম, (163 122 - 1) · 255/162 + 1 ≈ 1.213 · 10 270

import sys
n = int(input())
for b in range(163, 1, -1):
    s = []
    m = n
    while m:
        m, r = divmod(m - 93, b)
        if m < 0:
            break
        s.append(r + 93)
    else:
        sys.stdout.buffer.write(b'"%s"%db' % (bytes(s[::-1]), b))
        break
else:
    sys.stdout.buffer.write(b'%d' % n)

দেখা যাচ্ছে যে 1023 থেকে (163 122 - 1) · 255/162 এর মধ্য দিয়ে প্রতিটি পূর্ণসংখ্যার কমপক্ষে এক উপায়ে উপস্থাপন করা যেতে পারে বেস ≤ 163 এর সাথে সবচেয়ে বেশি 122 টি অক্ষরের একটি স্ট্রিং থেকে বি + 92 এর মাধ্যমে কোডগুলি , বি 0 এর মধ্য দিয়ে স্বাভাবিক 0 এর চেয়ে 1 - এটি কোনও অতিরিক্ত আউটপুট কোড ছাড়াই ঝামেলাযুক্ত অক্ষর 34 (ডাবল উদ্ধৃতি) এবং 92 (ব্যাকস্ল্যাশ) এড়িয়ে চলে।


12

পাইথ, 252 111 ≈ 3.593 × 10 266

Js[
"ixL-rC1`H``N"
N
s@L-rC1`H``NjQ252
N
"252")$import sys$$sys.stdout.buffer.write(J.encode('iso-8859-1'))$

পাইথন সিনট্যাক্সটি কিছুটা ব্যবহার করতে হয়েছিল, কারণ পাইথস printএটি মুদ্রণ করতে পারে না iso-8859-1

সংখ্যাটি 252 বেসে এনকোড হয়ে যায় এবং আইসো -8859-1 চর হিসাবে সেই বেসের প্রতিটি অঙ্ক উপস্থাপন করে। চরগুলি \এবং "পালানোর দরকার পড়বে এবং তাই ব্যবহার করা হয় না। গৃহস্থালির কাজ `কারণ golfing ব্যবহার করা হয় না ... আর অতিরিক্ত নাল-বাইট ব্যবহার করা হয় না, Pyth কম্পাইলার নিষেধের করুন।

আউটপুটটি 17 বাইটের ওভারহেড সহ একটি প্রোগ্রাম:

ixL-rC1`H``N""252

এখানে সম্ভাব্যতম সংখ্যার সাথে ব্যবহারের উদাহরণ রয়েছে:

ব্যবহার

ব্যাখ্যা

আউটপুট প্রোগ্রামের।

ixL-rC1`H``N""252
    rC1`H          create the range of chars: ['\x01', '\x02', ..., '{}']
         ``N       creates a string containing the 3 chars " ' \
   -               remove strings which consists of these 3 chars
 xL         ""     determine the index of each char in "" (encoded number)
i             252  convert from base 253 to base 10

1
এই প্রোগ্রামটি এনকোড করতে ব্যর্থ হয়েছে 12, কারণ পাইথ দুর্ভাগ্যক্রমে সিআর কে এলএফ হিসাবে পড়ে
অ্যান্ডারস কাসের্গ

10

সিজেএম, 254 109 ≈ 1.34 x 10 262

q~254b{_33>+_91>+c}%`"{_'[>-_'!>-}%254b"

আমি 254 বেসে নম্বরটি এনকোড করছি এবং সেই বেসের প্রতিটি অঙ্ককে আইএসও 8859-1 অক্ষর হিসাবে উপস্থাপন করছি, এড়িয়ে যাচ্ছি "এবং \। আউটপুটে 19 বাইটের ওভারহেড রয়েছে ""{_'[>-_'!>-}%254b, তাই আমি 254 128-19 এর চেয়ে কম বা স্পষ্ট করে সবকিছু উপস্থাপন করতে পারি

13392914970384089616967895168962602841770234460440231501234736723328784159136966979592516521814270581662903357791625539571324435618053333498444654631269141250284088221909534717492397543057152353603090337012149759082408143603558512232742912453092885969482645766144

উদাহরণ হিসাবে, 6153501হিসাবে এনকোড করা হবে

"abc"{_'[>-_'!>-}%254b

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


8

পার্ল, 10 216

print"print unpack'h*',q{",(pack'h*',<>),"}"

এছাড়াও 100 এনকোডিং বেস, কিছুটা মার্জিত। আউটপুট 12345678হবে:

print unpack'h*',q{!Ce‡}

ডিলিমিটারগুলি {এবং }হেক্স মানগুলির সাথে যথাক্রমে b7এবং d7যথাক্রমে, যা ইনপুটটিতে উপস্থিত হতে পারে না এবং তাই এড়াতে হবে না।

ওভারহেডের 20 বাইট রয়েছে, এনকোডিংয়ের জন্য 108 রেখে 10 সর্বাধিক মান 216 -1 এ পৌঁছে যায় ।


পার্ল, 10 206

print"ord=~print\$' for'",(map chr"1$_",<>=~/.{1,2}/g),"'=~/.|/g"

সাধারণ বেস 100 এনকোডিং। আউটপুট এর 12345678মত দেখতে হবে:

ord=~print$' for'p†œ²'=~/.|/g

ওভারহেডের 25 বাইট রয়েছে, এনকোডিংয়ের জন্য 103 রেখে, 206 -1 এর সর্বোচ্চ মান পৌঁছে যায় ।


6

কমন লিস্প, 11 114 - 1 ~ 2.62 × 10 117

(lambda(x)(format t"(lambda()#36r~36r)"x))

বৃহত্তম সংখ্যাটি হ'ল:

2621109035105672045109358354048170185329363187071886946329003212335230440027818091139599929524823562064749950789402494298276879873503833622348138409040138018400021944463278473215

কেবল বেস 36 ব্যবহার করুন the বৃহত্তম ইনপুটটির জন্য, 128 বাইটের দীর্ঘ আউটপুটটি হ'ল:

(lambda()#36rzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz)

1

সিজেম, 233 114 ≈ 7.561⋅10 269

ri233b{Kms/m]_34=+c}%s`"{iKms*}%233b"

আউটপুট প্রোগ্রামটি "…"{iKms*}%233bএকটি স্ট্রিংয়ের 8-বিট অক্ষরকে n ↦ ⌊ n ⋅ sin 20⌋ = ⌊ n ⋅ 0.913⌋ এর সাথে 233 সংখ্যার ভিত্তিতে ডিকোড করে ⌋ এই রূপান্তরটি সমালোচক কোডপয়েন্টস 34 (ডাবল উদ্ধৃতি) এবং 92 (ব্যাকস্ল্যাশ) ইনপুট হিসাবে প্রয়োজনীয় না করেই surjective হতে পারে।

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