बड़ी बड़ी संख्याएँ


25

जब तक मेरे कई जवाबों को गोल्फ में देने की कोशिश होती है, मुझे बड़े अक्षरों को यथासंभव कुछ अक्षरों में लिखने की जरूरत होती है।

अब मैं सबसे अच्छा तरीका है कि क्या करना है: मैं हो रही हो जाएगा आप इस कार्यक्रम लेखन किया जाना है।

चुनौती

  • एक प्रोग्राम लिखें जो एक सकारात्मक पूर्णांक दिया जाता है, एक प्रोग्राम को आउटपुट करता है जो इसे स्टडआउट या समकक्ष के लिए प्रिंट करता है।
  • निर्माता के रूप में आउटपुट प्रोग्राम एक ही भाषा में नहीं होते हैं।
  • आउटपुट अधिकतम 128 बाइट्स पर होना चाहिए।
  • आप स्टड या समकक्ष (फ़ंक्शन इनपुट नहीं) से इनपुट स्वीकार कर सकते हैं
  • आप परिणामस्वरूप प्रोग्राम को स्टडआउट या समकक्ष के लिए आउटपुट कर सकते हैं।
  • संख्या आउटपुट दशमलव (बेस 10) में होना चाहिए

स्कोरिंग

आपका स्कोर सबसे छोटे धनात्मक पूर्णांक के बराबर है जिसे आपका प्रोग्राम एन्कोड नहीं कर सकता है।

सबसे बड़े स्कोर के साथ प्रवेश जीतता है।


मैंने टैग मेटागोल्फ जोड़ा, क्योंकि हम आउटपुट प्रोग्राम को गोल्फ कर रहे हैं।
orlp

1
@orlp मैंने वास्तव में इसे उद्देश्य से छोड़ दिया है, क्योंकि मेटागॉल्फ एक स्कोरिंग मानदंड टैग है जो कहता है कि "स्कोर आपके आउटपुट की लंबाई है"। मैं इसके बारे में एक मेटा पोस्ट जोड़ने पर विचार कर रहा हूं, हालांकि उलटा स्कोरिंग की अनुमति देने के लिए (जो उदाहरण के लिए सबसे तेज़-कोड के लिए मामला है)।
मार्टिन एंडर

1
@ MartinBüttner मुझे लगता है कि हमें मेटा-प्रतिबंधित-स्रोत की आवश्यकता है :)
orlp

2
"किस भाषा की सबसे बड़ी पूर्णांक सीमा है" से अलग चुनौती कैसे है ?
nwp

5
@nwp मुझे लगता है कि आप प्रश्न को गलत समझते हैं। सवाल संपीड़न के बारे में है। यह उपयोगी होगा, लेकिन एक बड़ी पूर्णांक सीमा वाली भाषा का उपयोग करने के लिए आवश्यक नहीं है।
आलू

जवाबों:


2

पायथन 3 → CJam, (163 122 - 1) · 255/162 + 1 13 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 के आधार पर कम से कम एक तरह से एक आधार b conversion 163 रूपांतरण के एक स्ट्रिंग से सबसे 122 वर्णों के साथ कोड 93 के माध्यम से b + 92 के माध्यम से प्रतिनिधित्व किया जा सकता है , बजाय सामान्य 0 से b - 1. यह किसी भी अतिरिक्त आउटपुट कोड के बिना परेशानी वाले वर्ण 34 (दोहरे उद्धरण) और 92 (बैकस्लैश) से बचा जाता है।


12

पायथ, 252 111 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 में कूटबद्ध हो जाती है और उस आधार के प्रत्येक अंक को iso-8859-1 char के रूप में दर्शाती है। वर्ण \और "भागने की आवश्यकता होगी, और इसलिए इसका उपयोग नहीं किया जाता है। चार `क्योंकि गोल्फ इस्तेमाल नहीं किया है ... और इसके साथ ही अशक्त-बाइट भी नहीं किया जाता है, 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, क्योंकि Pyth दुर्भाग्य से CR को LF के रूप में पढ़ता है
एंडर्स कासोर्ग

10

सीजेएम, 254 109 4 1.34 x 10 262

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

मैं आधार संख्या 254 को एन्कोडिंग कर रहा हूं और उस आधार के प्रत्येक अंक को ISO 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 छोड़कर, 10 206 -1 के अधिकतम मूल्य तक पहुंच गया ।


6

आम लिस्प, 36 114 - 1 ~ 2.62 × 10 117

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

सबसे बड़ी संख्या है:

2621109035105672045109358354048170185329363187071886946329003212335230440027818091139599929524823562064749950789402494298276879873503833622348138409040138018400021944463278473215

बस बेस 36 का उपयोग करें। सबसे बड़े इनपुट के लिए, 128-बाइट्स लंबा आउटपुट है:

(lambda()#36rzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz)

1

सीजाम, 233 114 , 7.561am10 269

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

आउटपुट प्रोग्राम "…"{iKms*}%233bएक स्ट्रिंग के 8-बिट वर्णों को n ⌊ ⌊ n ⌊ sin 20⌊ = ⌋ n ⌋ 0.913⌋ के साथ 233 अंकों के आधार पर निर्धारित करता है। यह परिवर्तन इनपुट के रूप में महत्वपूर्ण कोडपॉइंट्स 34 (डबल कोट) और 92 (बैकस्लैश) की आवश्यकता के बिना विशेषण होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.