उनके संबंधित पत्र के आधार पर संख्या


23

एक फ़ंक्शन या प्रोग्राम बनाएं जो एक नंबर को इनपुट के रूप में लेता है, और एक स्ट्रिंग को आउटपुट करता है जहां निचले और ऊपरी मामले के वर्णमाला के लिए ASCII- कोड बिंदु उनके चरित्र समकक्षों द्वारा प्रतिस्थापित किए जाते हैं।

  • ऊपरी स्थिति वर्णमाला कोड बिंदुओं का उपयोग करती है: 65-90
  • निचला मामला वर्णमाला कोड बिंदुओं का उपयोग करता है: 97-122

यदि इनपुट में कोई निकटवर्ती अंक एक अक्षर के कोड बिंदु के बराबर होता है, तो वह पत्र आउटपुट स्ट्रिंग में अंकों को बदल देगा।

नियम:

  • इनपुट 1 और 99 अंकों के बीच एक सकारात्मक पूर्णांक होगा
  • आप मान सकते हैं कि केवल वैध इनपुट दिया गया है
  • आप पूर्णांक की शुरुआत में प्रतिस्थापन करना शुरू करते हैं ( 976-> a6, नहीं 9L)
  • इनपुट किसी भी उपयुक्त प्रारूप पर हो सकता है (स्ट्रिंग प्रतिनिधित्व ठीक है)
  • आउटपुट किसी भी उपयुक्त प्रारूप पर हो सकता है
  • मानक नियम लागू होते हैं

उदाहरण:

1234567
12345C

3456789
345CY

9865432
bA432

6566676869707172737475767778798081828384858687888990
ABCDEFGHIJKLMNOPQRSTUVWXYZ

6711110010100071111108102
Code000Golf

बाइट्स जीत में सबसे छोटा कोड!


लीडरबोर्ड

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## Language Name, N bytes

Nआपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

## Ruby, <s>104</s> <s>101</s> 96 bytes


2
"इनपुट 1 और 99 अंकों के बीच एक सकारात्मक पूर्णांक होगा" बस किसी भी प्रोग्रामिंग भाषा के बारे में मुझे पता है, यह 1 और 99 अंकों के बीच एक स्ट्रिंग होगा , यहां तक ​​कि 64-बिट इंट केवल 19 दशमलव तक होता है अंक ...
टीजे क्राउडर

3
@TJCrowder मुझे लगता है कि वह गणितीय अर्थ में पूर्णांक था, न कि डेटा प्रकार।
डेनिस

1
@TJCrowder मान्य बिंदु :-) हालाँकि, अगर मैं गलत नहीं हूँ, तो 1e99 तकनीकी रूप से अभी भी पूर्णांक है। long intपर्याप्त नहीं है, आप की जरूरत super long int
स्टीवी ग्रिफ़िन

1
@StewieGriffin: हाह! :-) मुझे यकीन है कि इस तरह की चीज़ के साथ कहीं न कहीं एक भाषा है।
टीजे क्राउडर

जवाबों:


2

जोल्फ, 18 16 बाइट्स

यहाँ कोशिश करो! मुझे पता था कि ऊपरी कार्य किसी दिन उपयोगी होगा! के óसाथ बदलें ΢, या बस दुभाषिया लिंक का उपयोग करें। यह ISO 8859-7 में इनकोडेड है।

ρiLaΜGpwpuEdóH΅A
      pw           upper and lower
        pu         of the uppercase alphabet
     G    E        split by nothing (E = "")
    Μ      dóH     map each char to its numeric counterpart
  La               regex alternate array (e.g. La[1,2,3] => "1|2|3")
ρi            ΅A   replace input with the character code of the match (΅ is string lambda)

17

पर्ल, 39 38 बाइट्स

(1 बाइट -pध्वज के लिए जोड़ा गया है ।)

$"="|";s/@{[65..90,97..122]}/chr$&/ge
s/                           /          replace...
  @{[                      ]}           this string, treated as a regex:
     join"|",65..90,97..122             65|66|67|68|...|121|122
                                   /ge  ...with this string, eval()'d:
                                 $&     the entirety of the last match
                              chr       convert to char from ASCII code

नौकरी ™ के लिए सही उपकरण।

स्पष्टीकरण एक छोटे अनुकूलन (धन्यवाद देव-नल !) के बाद पुराना है, जो इसे एक बाइट को छोटा बनाता है (लेकिन थोड़ा कम सुरुचिपूर्ण): $"चर का प्रतिनिधित्व करता है joinजब एक स्ट्रिंग में एक सरणी को प्रक्षेपित किया जाता है, इसलिए सेटिंग $"="|"की आवश्यकता को हटा देता है join

डेमो:

llama@llama:~$ perl -pe '$"="|";s/@{[65..90,97..122]}/chr$&/ge' 
1234567
12345C
3456789 
345CY
9865432
bA432
6566676869707172737475767778798081828384858687888990
ABCDEFGHIJKLMNOPQRSTUVWXYZ
6711110010100071111108102
Code000Golf

मुझे लगता है कि आप $"="|"जुड़ने के बजाय सेटिंग करके सिंगल बाइट बचा सकते हैं ?
andlrc

जैसे। $"="|";s/@{[65..90,97..122]}/chr$&/ge
andlrc

@ देव-नल जो काम करता है, धन्यवाद!
दरवाज़े

11

जावास्क्रिप्ट, 80 बाइट्स

s=>s.replace(/6[5-9]|[78]\d|9[0789]|1[01]\d|12[012]/g,x=>String.fromCharCode(x))

Regex को यहां देखें: https://regex101.com/r/iX8bJ2/1

बस जिज्ञासा के लिए, एक बात जो मैंने यहाँ सीखी:

मैं नहीं बदल सकते x=>String.fromCharCode(x)करने के लिए String.fromCharCode , क्योंकि ...


6

सीजेएम, 22 बाइट्स

q{+'[,_el^{_is@\/*}/}*

इसे ऑनलाइन आज़माएं!

पृष्ठभूमि

बस अंकों के समूहों की सभी घटनाओं को संबंधित अक्षरों (जो भी क्रम में हम चुन सकते हैं) की जगह लेफ्ट-टू-राइट नियम का पालन करने में विफल होंगे।

इसके बजाय, हम इनपुट स्ट्रिंग के सभी उपसर्गों को उत्पन्न कर सकते हैं, और हम उन्हें उत्पन्न करते समय सभी संभव प्रतिस्थापन करने का प्रयास कर सकते हैं। चूंकि कोई कोड बिंदु किसी अन्य कोड बिंदु में समाहित नहीं है, इसलिए इन प्रयासों का क्रम महत्वपूर्ण नहीं है।

उदाहरण के लिए:

67466

6     -> 6
67    -> C
 C4   -> C4
 C46  -> C46
 C467 -> C4B

C4B

यह काम किस प्रकार करता है

q                       Read all input from STDIN.
 {                  }*  Fold; push the first character, and for each subsequent
                        character, push it and do the following:
  +                       Append the character to the string on the stack.
   '[,_el^                Push the string of all ASCII letters.
                          See: http://codegolf.stackexchange.com/a/54348
          {       }/      For each ASCII letter:
           _                Push a copy of the letter.
            i               Convert to integer, i.e., compute its code point.
             s              Cast to string.
              @\            Rotate and swap.
                /           Split the modified input characters at occurrences (at
                            most one) of the string repr. of the code point.
                 *          Join, separating by the corresponding letter.

4

PHP, 110 102 101 68 67 बाइट्स

बहुत कठिन चुनौती। यह सबसे अच्छा मैं साथ आ सकता है। यह पूरी तरह से नया संस्करण है।

for($i=64;123>$i+=$i-90?1:7;)$t[$i]=chr($i)?><?=strtr($argv[1],$t);

इस तरह से चलाएं:

php -r 'for($i=64;123>$i+=$i-90?1:7;)$t[$i]=chr($i)?><?=strtr($argv[1],$t);' 6711110010100071111108102;echo
> Code000Golf
  • के ctype_alphaबजाय का उपयोग करके 8 बाइट्स बचाया preg_match, manatwork के लिए thx
  • 0गैर-रिक्त स्ट्रिंग की जांच करने के बजाय स्ट्रिंग को पूर्वनिर्मित करके 1 बाइट सहेजा गया : जब इनपुट का अंतिम वर्ण 0 होता है, तो मैं जो विकल्प ले रहा हूं वह "0" होगा, जो मिथ्या है, जबकि "00" सत्य है, इसलिए यह अंतिम 0 को प्रिंट करना नहीं छोड़ेगा।
  • strtrरूपांतरण जोड़े के साथ एक सरणी बनाने के बाद उपयोग करके एक विशाल 33 बाइट्स को बचाया
  • शॉर्ट प्रिंट टैग का उपयोग करके एक बाइट को बचाया

1
यो को नियमित अभिव्यक्ति को बदलना होगा #[A-Z]#iक्योंकि वर्तमान खुशी से "92" को "\" में बदल देगा। या ctype_alpha()इसके बजाय प्रयास करें preg_match()। अब तक काम करने के लिए लगता है।
मैनटवर्क

"0", which is falsy, whereas "00" is truthyअच्छा जा रहा है, PHP।
बिल्ली

3

पायथन 3, 211 189 188 बाइट्स

def f(c,i=0,n=""):
 while i<len(c):a=1;x=int(c[i:i+2]);a=2 if 64<x<91 or 96<x<100 else a;x=int(c[i:i+3]) if a<2 else x;a=3 if 99<x<123 else a;x=chr(x) if a>1 else c[i];n+=x;i+=a
 return n
  • सहेजे गए 23 बाइट्स को \ n से बदलकर; डेनिस को धन्यवाद

परीक्षा

यहाँ छवि विवरण दर्ज करें


1
यदि आप ;लाइन ब्रेक के बजाय उपयोग करते हैं, तो आप पूरी लाइन को सिंगल लाइन पर रख सकते हैं। साथ ही, पहली पंक्ति बन सकती है def f(c,i=0,n=""):
डेनिस

1
a=1;a=2 if 64<x<91 or 96<x<100 else a-> a=1+(64<x<91or 96<x<100)आदि
२६:१६ पर देखिए

2

पायथ, 20 18 बाइट्स

.Uu:G`CHHsrBG1+bZz

समान एल्गोरिथ्म @ डेनिस के रूप में। जेली की तुलना में मेरे फोन पर पायथ में कोड करना बहुत आसान है।

                implicit: z=input
.U              Reduce the following lambda b, Z over z
                b is the string being built; z is the next char
   u                Reduce the following lambda G,H over +bZ
                    G is the string, H is the next letter to match
     :                  Replace
       G                in G
       ` C H            the char code of H
       H                with H
     s rB            where H takes on values:
          G              the lowercase alphabet (that's the global value of G)
          1              concatenated to its uppercased self.
     +          
       b
       Z
   z

शुक्रिया @isaacg

इसे यहाँ आज़माएँ ।


आप अपने फोन पर इस साइट को बंद नहीं कर सकते, क्या आप ...?
कॉनर ओ'ब्रायन

1
खासकर जब मेरे पास सभी मुद्रण योग्य ASCII में कोडिंग की विलासिता है: D
lirtosiast

1
यह सच है, शायद उस सभी जेली से एक ब्रेक लेना अच्छा है ... आप जानते हैं, एक संतुलित आहार;)
कॉनर ओ'ब्रायन

0

05AB1E , 12 बाइट्स

õsvy«žnvyÇy:

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

õ             # Push an empty string ""
 sv           # Swap to get the (implicit) input-string, and loop over its characters:
   y«         #  Append the current character to the string
     žn       #  Push builtin "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
       v      #  Inner loop over each of these letters:
           :  #   Replace in the string all occurrences (should be either 0 or 1 occurrence)
        yÇ    #   of the ordinal value of the current letter
          y   #   by this letter
              # (after the loops, implicitly output the top of the stack as result)

12 बाइट्स विकल्प का उपयोग कम करके:

Å»«žnvyÇy:]θ

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें या केवल पहले 10 बाइट्स के साथ चरण-दर-चरण कमी देखें

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