वर्णमाला को संख्या और संख्या को वर्णमाला


26

चुनौती

इस चुनौती में आपको इनपुट के रूप में एक नंबर लेना है और वर्णमाला के संबंधित अक्षर को आउटपुट करना है, और इसके विपरीत। (1 <=> ए, 2 <=> बी) आदि।

1 -> A
2 -> B
...
26 -> Z

A -> 1
B -> 2
...
Z -> 26

नियम

  • यह , इसलिए बाइट्स जीत में सबसे छोटा कोड है।
  • इनपुट केवल या तो से एक अपरकेस अक्षर शामिल होंगे Aकरने के लिए Zया से एक पूर्णांक 1के लिए 26समावेशी।
  • ट्रेलिंग व्हाट्सएप (स्पेस और न्यूलाइन) की अनुमति है।

1
नकल क्यों? ऊँ यह बराबर नहीं है।
चाड

3
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! यह चुनौती थोड़ा स्पष्टीकरण का उपयोग कर सकती है। उदाहरण के लिए, आप यह बता सकते हैं कि अमान्य इनपुट्स के बाद हमें किन इनपुट्स को संभालना होगा। मैं सैंडबॉक्स में भविष्य की चुनौतियों को पोस्ट करने की सलाह देता हूं जहां वे मुख्य साइट पर पोस्ट किए जाने से पहले सार्थक प्रतिक्रिया प्राप्त कर सकते हैं।
लीक नून

1
क्या हम 26पूर्णांक या "26"एक स्ट्रिंग के रूप में प्राप्त करेंगे , या दोनों की अनुमति है?
लीक

2
क्या यह अपरकेस होना है, या इसके बजाय लोअरकेस स्वीकार्य है?
मेगो

1
गंभीरता से, एक और वर्णमाला चुनौती? (Oo ° ͡) °)
शुकी

जवाबों:


6

दरअसल, 7 बाइट्स

ú' +ûEí

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

स्पष्टीकरण:

ú' +ûEí
ú' +     lowercase English alphabet, prepend space
    û    uppercase
     E   element (pushes the nth letter if input is an integer, leaves stack alone otherwise)
      í  index (pushes index of input if input is a string, leaves stack alone otherwise)

यदि लोअरकेस स्वीकार्य है, तो यह 6 बाइट्स है:

ú' +Eí

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


1
आप इस समय जीत रहे हैं, मुझे लगता है कि कोई भी 7 बाइट्स के साथ एक कार्यक्रम नहीं कर सकता है।
चाड

1
मैं सिर्फ यह पूछने के लिए शामिल हुआ। @Mego यह कौन सी भाषा है?
फोल्डेडक्रोमैटिन


1
@FoldedChromatin वास्तव में, यह है Actually। इसलिए Actually, 7 bytes। : पी
दान

2
इस तरह के क्षण मुझे उन नामों के बारे में खुश करते हैं जिन्हें मैंने अपनी भाषाओं के लिए चुना था :)
मीगो

12

शुद्ध बैश, 51

बाकी के अधिकांश उत्तर किसी प्रकार की सशर्त का उपयोग करते हैं। यह एक पूरी तरह से सशर्त के साथ फैलता है, और इसके बजाय इनपुट को आधार -36 नंबर के रूप में मानता है जो उचित रूप से निर्मित बैश-ब्रेस-विस्तार सरणी में अनुक्रमित होता है:

a=(_ {A..I} {1..26} {J..Z} {A..Z})
echo ${a[36#$1]}

Ideone।


1
तो क्या करता #है?
आर। काप


9

एरलैंग, 26 बाइट्स

f([X])->X-64;f(X)->[X+64].

कुछ समय में जहां Erlang का स्ट्रिंग व्यवहार उपयोगी है।



7

पायथन 3, 43 बाइट्स

lambda x:x!=str(x)and chr(64|x)or ord(x)^64

इस समाधान के बारे में दिलचस्प बात यह है कि यह सभी इंद्रियों को शामिल करता है या, बिटवाइज़ या |, तार्किक OR or, बिटवाइज़ XOR ^और तार्किक XI !=...


6

2sable , 9 8 बाइट्स

कोड:

.bAu¹kr,

स्पष्टीकरण:

.b        # Convert 1 -> A, 2 -> B, etc.
  A       # Push the alphabet.
   u      # Convert it to uppercase.
    ¹k    # Find the index of the letter in the alphabet.
      r   # Reverse the stack.
       ,  # Pop and print with a newline.

CP-1252 एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!


1
क्या आप नहीं हटा सकते? कौन सी बाइट बिना, के हैं? आपको एक नई लाइन प्रिंट करने की आवश्यकता नहीं है।
चाड

@Cope Nope, जो कि संख्यात्मक इनपुट के लिए काम नहीं करेगा :(
अदनान

6

रूबी, 47 39 + nध्वज = 40 बाइट्स 33 34 31 बाइट्स

अनाम फ़ंक्शन। @ KarlNapf के पायथन समाधान की तरह एक अपवाद हैंडलिंग ट्रिक का उपयोग करता है ।

-मानटवर्क से -3 बाइट्स

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

->i{(64+i).chr rescue i.ord-64}

n40 बाइट्स के लिए ध्वज के साथ मूल पूर्ण कार्यक्रम संस्करण और STDIN से पढ़ता है:

puts$_!~/\d/?$_.ord-64:(64+$_.to_i).chr

जब मैं विचारधारा पर चलने की कोशिश कर रहा हूं तो मुझे सिंटैक्स त्रुटि हो रही है , क्या आप बता सकते हैं कि कैसे परीक्षण करना है?
लाइब्रुग

@ लाइब्रज उफ़! अब यह तय हो गया है
वैल्यू इंक

आप बेशर्म लगाने से अधिक यह कम कर सकते हैं कार्ल नप्फ़ अपने से की चाल पायथन समाधान : ->i{(64+i).chr rescue i.ord-64}
मैनेटवर्क

5

चेडर, 34 32 बाइट्स

@LeakyNun के लिए 2 बाइट्स धन्यवाद सहेजे गए

n->"%s"%n==n?n.ord()-64:@"(n+64)

काश कि स्ट्रिंग या संख्या की जाँच करने का तरीका छोटा था।

इसे ऑनलाइन आज़माएं! या टेस्ट सूट

व्याख्या

n ->                // func with arg `n`
    "%s"%n==n ?     // if n is string... (see below)
       n.ord() - 64  // return code point - 64
    :               // else...
    @"(n+64)         // chr(n+64)

"%s"%n==nजाँचता है कि क्या यह एक सरल तरीके से एक स्ट्रिंग है। "%s"एक स्ट्रिंग प्रारूप है, मैं इसके साथ प्रारूपित कर सकता हूं %जैसे "a %s c" % "b"कि इसके बराबर है "a b c"%sनिर्दिष्ट करता है कि यह एक स्ट्रिंग है, यदि कोई अंक पारित हो जाता है तो यह उसी तरह रहेगा %s


"%s"%n==n2 बाइट्स बचाता है
लीक

@LeakyNun ओह यह स्मार्ट है! मैं करने की कोशिश कर रहा था, "%d"%n==nलेकिन वह काम नहीं कर रहा था: /
डाउनगेट

5

गणितज्ञ 54 41 बाइट्स

LegionMammal978 से एक बिल्कुल चतुर सुझाव के साथ जो 13 बाइट्स बचाता है।

If[#>0,FromLetterNumber,,LetterNumber]@#&

If[#>0,FromLetterNumber,,LetterNumber]यह तय करने का एकमात्र उद्देश्य है कि आवेदन करना है FromLetterNumberया LetterNumberइनपुट।

#>0संतुष्ट हो जाएगा यदि इनपुट, #एक संख्या है, जिस स्थिति FromLetterNumberमें चयन किया जाएगा।

हालाँकि #>0यदि #कोई पत्र है तो वह न तो सही होगा और न ही गलत LetterNumberहोगा।


If[#>0,FromLetterNumber,,LetterNumber]@#&["d"]

4


If[#>0,FromLetterNumber,,LetterNumber]@#&[4]


गणितज्ञ में, FromLetterNumberऔर LetterNumberअन्य अक्षर के साथ भी काम करेंगे। इसके लिए केवल कुछ और बाइट्स की आवश्यकता होती है।

If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[4, "Greek"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[4, "Russian"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[4, "Romanian"]

δ
г
b

If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[δ, "Greek"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[г, "Russian"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[b, "Romanian"]




1
कुछ गोल्फिंग, इसे 41 बाइट्स में ला रहा है:If[#>0,FromLetterNumber,,LetterNumber]@#&
लेगियनममाल 978

मैं अपने सुझाव के रूप में व्याख्या: If[#>0,FromLetterNumber[#],LetterNumber@#]‌&। हालांकि If[#>0,FromLetterNumber[#],LetterNumber@#]‌&[4]काम करता है, If[#>0,FromLetterNumber[#],LetterNumber@#]‌&["c"]नहीं करता है। यह स्पष्ट रूप से हल नहीं कर सकता "c">0। क्या मुझे गलतफहमी हुई?
डेविड

डबल ,,जानबूझकर है, और इसलिए बाहरी है @#; यह मूल्यांकन करता है If[# > 0, FromLetterNumber, Null, LetterNumber][#]&, जो 4-तर्क रूप का उपयोग करता है If(इसे देखें)।
लीजियनममाल 978

कमाल है कि 4-तर्क Ifकाम कैसे करता है।
डेविड 13

4

हास्केल, 54 बाइट्स

f s|s<"A"=[['@'..]!!read s]|1<2=show$fromEnum(s!!0)-64

प्रयोग उदाहरण: map f ["1","26","A","Z"]-> ["A","Z","1","26"]

हास्केल का सख्त प्रकार प्रणाली यहां एक वास्तविक दर्द है। इसके अतिरिक्त सभी छोटे चार <-> इंट कार्यों की तरह है chrऔर ordएक आयात की जरूरत है, इसलिए मुझे इसे हाथ से करना होगा। पत्र के लिए -> int मामला, उदाहरण के लिए मुझे कन्वर्ट करने की आवश्यकता है String-> Char(के माध्यम से !!0) -> Integer((के माध्यम से fromEnum) -> String(के माध्यम से show)।


4

सी, 55 बाइट्स

i;f(char*s){i=atol(s);printf(i?"%c":"%d",64^(i?i:*s));}

4

पर्ल 6 , 25 बाइट्स

{+$_??chr $_+64!!.ord-64}

स्पष्टीकरण:

# bare block lambda with implicit parameter of 「$_」
{
    +$_         # is the input numeric
  ??
    chr $_ + 64 # if it is add 64 and get the character
  !!
    $_.ord - 64 # otherwise get the ordinal and subtract 64
}

उदाहरण:

say ('A'..'Z').map: {+$_??chr $_+64!!.ord-64}
# (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26)

say (1..26).map: {+$_??chr $_+64!!.ord-64}
# (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)

2
भले ही वाक्य-विन्यास इतना अलग हो, लेकिन वही तंत्र पर्ल 5 में समान संख्या में बाइट्स है perl -pe '$_=/\d/?chr$_+64:-64+ord':!
डोम हेस्टिंग्स

3

सी #, 32 बाइट्स

n=>(n^=64)>26?(object)(char)n:n;

कास्ट करता है Func<int, object>

इनपुट: संक्षेप में charधर्मान्तरित intतो int(1-26) या char('ए-जेड') के साथ कहा जा सकता है ।

आउटपुट: या तो charया int


3

PHP, 49 41 40 बाइट्स

<?=+($i=$argv[1])?chr($i+64):ord($i)-64;

मुझे नहीं लगता कि is_numericसही के लिए एक अच्छा विकल्प है ?

इसे कमांड लाइन से निष्पादित किया $argv[1]जाता है ( दिया गया पहला चर है)

करने के लिए धन्यवाद:

@insertusernamehere: गोल्फ 8 बाइट्स। के is_numeric($i=$argv[1])साथ प्रतिस्थापित 0<($i=$argv[1])। यह काम करता है क्योंकि (int)"randomLetter" == 0

@ मैनटवर्क: 1 बाइट के साथ घटा। बदलें 0<के साथ +। इस मामले में क्या होता है कि + सिग्नल "Z" (या जो भी अक्षर) को 0 में डालेगा, उसका परिणाम गलत होगा। कोई भी पत्र हमेशा गलत होता है और एक नंबर हमेशा सच होता है।


2
के 0<($i=$argv[1])बजाय का उपयोग is_numeric($i=$argv[1])कर आप 8 बाइट बचाता है ।
इन्सुरेन्समेयर

1
उस विचार पर जारी: 0<+
मैनटवर्क

2

पायथन 2, 61 बाइट्स

i=raw_input()
try:o=chr(int(i)+64)
except:o=ord(i)-64
print o

हां, मैं पायथन 3 के लिए स्विच कर सकता हूं input


का प्रयोग करें input()फिर भी और परिवर्तन int(i)करने के लिए i
लीक नून

फिर चरित्र इनपुट काम नहीं करते।
कार्ल नेप ने

2
इनपुट के रूप में लें"A"
लीक नून

3
यही तो कमजोरी है। Aया कुछ नही।
कार्ल नैप

आप इसे फ़ंक्शन के रूप में सुधारकर कुछ बाइट्स को बंद कर सकते हैं: पंक्ति 1:, def f(i):पंक्ति 2: <अंतरिक्ष> try:o=chr(i+64), पंक्ति 3 <अंतरिक्ष> अन्यथा अपरिवर्तित, पंक्ति 4: <अंतरिक्ष> return o उस रूप में, यह पायथन 2 में काम करेगा। या पायथन 3
cdlane

2

PowerShell v2 +, 42 बाइट्स

param($n)([char](64+$n),(+$n-64))[$n-ge65]

इनपुट लेता है $n(एक पूर्णांक या एक स्पष्ट चार के रूप में) और एक सरणी के दो तत्वों के बीच चयन करने के लिए एक छद्म-त्रिगुट का उपयोग करता है। सशर्त है $n-ge65(यानी, इनपुट ASCII Aया अधिक है)। यदि हां, तो हम इनपुट को एक इंट के रूप में रखते हैं और घटाते हैं 64। अन्यथा, हम 64इनपुट पूर्णांक में जोड़ते हैं , और इसे एक के रूप में डालते हैं [char]। या तो मामले में, परिणाम पाइपलाइन पर छोड़ दिया जाता है और मुद्रण निहित है।

उदाहरण

PS C:\Tools\Scripts\golfing> ([char[]](65..90)|%{.\alphabet-to-number.ps1 $_})-join','
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

PS C:\Tools\Scripts\golfing> (1..26|%{.\alphabet-to-number.ps1 $_})-join','
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z

2

Befunge-98 *, 19 बाइट्स

&:39*\`'@\j;+,@;-.@

क्योंकि सवाल ने कहा कि आप एक 1-26या A-Zमैं प्राप्त करेंगे यह 26 नंबर या चरित्र AZ मतलब था। अधिकांश व्याख्याएं ऑल-कोड दर्ज करने के लिए संघर्ष करती हैं, इसलिए इसका उपयोग करना आसान है &और 'जेड' के लिए 26 या 90 के लिए मानों का विरोध करते हैं ~

छद्म कोड

int c = get stdin
push the value of 27
bool is_number =  27 > c
push the value of `@` (64)
if is_number == 1
   jump to adding 64 to c //putting it the ASCII range
   print as ASCII
   end
else
   jump to subtracting 64 from c //putting it in the numerical range
   print as number
   end

यहाँ (विंडोज पर) इसका परीक्षण करें!

* यह तकनीकी रूप से Unefunge-98 है क्योंकि यह केवल 1 आयाम का उपयोग करता है, लेकिन यह नाम अपरिचित हो सकता है।


2

Befunge 93 , 144 90 66 54 36 19 बाइट्स

100% यकीन नहीं है अगर यह अनुमति है, लेकिन अगर आपको 65, बी के रूप में 66, आदि टाइप करने की अनुमति है, तो (मेरी] सुविधा के लिए):

&:"@"`"@"\#. #-_+,@

अन्यथा, 36 बाइट्स पर:

~:0\"A"-`#v_88*-.@
**~28*++,@>68*-52

(सुझावों के लिए tngreene के लिए धन्यवाद!)

~:0\567+*-`#v_88*-.>$28*+,@
52**\28*++,@>~:0`!#^_\68*-

(12 बाइट्स को फिर से व्यवस्थित करके बचाने के लिए Sp3000 के लिए धन्यवाद!)

~:0\567+*-`#v_88*-.>$82*+,@
            >~:0`!#^_\68*-52**\28*++,@


v                   >$28*+,@
             >~:0`!#^_\68*-52**\28*++,@
>~:0\567+*-`#^_88*-.@


v                    >$28*+,@
~           >11g~:0`!|
1                    >\68*-52**\28*++,@
1
p           
>011g567+*-`|
            >11g88*-.@

Ungolfed:

v                       >$ 28* + , @
                 >~:0 `!|
                        >\ 68* - 52* * \ 28* + + , @
>~:0\ 5 67+ * - `|
                 >88* - . @

यह मेरा अब तक का पहला काम करने वाला Befunge प्रोग्राम है, और मैं इसे और आगे बढ़ाने की आवश्यकता महसूस करता हूं। किसी भी तरह की सहायता का स्वागत किया जाएगा।

आप यहां Befunge कोड का परीक्षण कर सकते हैं


1
त्वरित नज़र टिप्पणी पासिंग: Befunge चारों ओर घूमता है, इसलिए आप दूसरी पंक्ति के अंतिम 12 वर्णों को आगे 52**\28*++,@>~:0`!#^_\68*-
बढ़ा

@ Sp3000, ओह, मैंने उस पर ध्यान नहीं दिया। धन्यवाद!
डैनियल

आपके पहले कार्यक्रम के लिए बधाई! एक बात पर विचार करना एक स्ट्रिंग में ASCII मूल्यों को धक्का देकर बड़ी संख्या उत्पन्न करना होगा। से तुलना 567+*करें "A"। इसके अलावा, बार-बार इसे बनाने के बजाय किसी मूल्य का पुन: उपयोग करने के बारे में gऔर pनिर्देशों को न भूलें । इसके अलावा, मुझे कोई इनपुट नहीं मिला जो आईपी को शाखा में ले जाए >$ 28* + , @। यह किस लिए है? क्या आपको यकीन है कि इसकी जरूरत है?
tngreene 20

अंत में, मैं "26" या "08" को पार्स करने के लिए आपके समर्पण की प्रशंसा करता हूं। आपकी विधि, जैसा कि मैंने इसे पढ़ा है, इसमें बहुत अधिक प्रतीक शामिल हैं <-> संख्या रूपांतरण गणित, ('2' से 2 से '2' तक)। अपने पहले और दूसरे इनपुट के रूप में संख्याओं की तुलना करने से पहले आप उनकी तुलना ASCII- अंकगणित की मात्रा को कम कर सकते हैं। वैकल्पिक रूप से, शायद प्रतीक के रूप में इनपुट के साथ कुशलता से निपटने का एक तरीका है ('2' के रूप में '2' में), आवश्यक संख्याओं के लिए कोई रूपांतरण नहीं!
tngreene 20

@tngreene, Integer निविष्टियाँ <10 शाखा में जाती हैं $28*+,@जबकि वे> = 10 दूसरे पर जाती हैं। यह अंततः किया गया था क्योंकि आप इनपुट पर एक से अधिक बार नहीं पढ़ सकते हैं जहाँ तक मुझे पता है।
डैनियल

2

ब्रेनफक, 445 वर्ण

गोल्फ कोड की तुलना में अवधारणा का अधिक प्रमाण। अनसाइनड, नॉन-रैपिंग ब्रेनफक की आवश्यकता है।

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

टिप्पणियों के साथ

,[>+>+<<-] Firstly Duplicate it across two buffers
>[<+>-] Move the second buffer back to the first buffer
>>++[->++++++<]>[-<<<+++++>>>] Establish 60 in the second buffer
<<<<
Compare Buffers 1 and 2
[->-<]
>
[ If there's still data in buffer 2
, Write the value in the units column to buffer two
<
++++
[->------------<] Subtract 12 from the units buffer
++++
[->>------------<<] Subtract 12 from the tens buffer
[-<<++++++++++>>] Multiply buffer three by ten into buffer 1
>
[-<+>] Add the units
>
[-<<++++++++++>>] Add the tens
>++ Add 65 to the buffer
[->++++++<]>+
[-<+++++>]
<- Actually we need 64 because A is 1
[-<<<+>>>] Add 64 to the first buffer
<<<
. Print the new letter
> Move to blank buffer
]
>
[ Otherwise we're a letter
[-<+<+>>] Copy it back over the first two buffers
>++ Write 64 to the buffer
[->++++++<]>+
[-<+++++>]
<-
[-<<->>] Subtract 64 from the letter
<<[->+>+<<]
>>>++++++++++< Copy pasted Division step x = current buffer y = 10 rest of the buffers are conveniently blank

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

2

जावा, 104 98 97 83 54 53 51 50 30 बाइट्स

x->(x^=64)>64?(char)x+"":x+"";

परीक्षण कार्यक्रम :

IntFunction<String> f = x -> (x ^= 64) > 64 ? (char) x + "" : x + "";
out.println(f.apply('A')); // 1
out.println(f.apply('Z')); // 26
out.println((f.apply(1))); // A
out.println((f.apply(26))); //Z

1
आप इस तरह से एक टर्नरी ऑपरेटर का उपयोग करके लगभग 20 बाइट छोड़ सकते हैं:return(s.matches("\\d+")?(char)(Integer.parseInt(s)+64)+"":(s.charAt(0)-64)+"");
yitzih

आप कास्टिंग को इंट के रूप में अच्छी तरह से हटा सकते हैं, जो आपको 7 बाइट्स को कम करने की अनुमति देता है।
user902383

कार्यक्रम कोई इनपुट नहीं लेता है। कार्यक्रम कोई आउटपुट नहीं देता है। यहां तक ​​कि कोई कार्यक्रम भी नहीं है!
निकोलस बारबुल्स्को

@NicolasBarbulesco आपको एक पूर्ण कार्यक्रम लिखने की आवश्यकता नहीं है जब तक कि अन्यथा न कहा जाए।
शॉन वाइल्ड


1

आर, 73 बाइट्स

f=function(x){L=LETTERS;if(is.numeric(x)){i=L[(x)]}else{i=which(L==x)};i}

के लिए कोई ज़रूरत नहीं है f=, और आप ifelseकुछ बाइट्स बाहर गोल्फ के लिए समारोह का उपयोग करने की कोशिश बादल !
Frédéric


1

पायथन 3, 49 48 53 50 बाइट्स

किसी तरह मुझे बाइट की गिनती गलत लगी; _; धन्यवाद dahuglenny

isalpha से छोटा है isnumeric

lambda x:x.isalpha()and ord(x)-64or chr(int(x)+64)

स्ट्रिंग के रूप में इनपुट लेता है, जो एक अक्षर या संख्या हो सकती है


1
आप के बीच की जगह को हटा सकते हैं x.isnumeric()और elseएक बाइट को बचाने के लिए।
अक्रोलिथ

1

जावा, 61 बाइट्स

int f(char c){return c^64;}char f(int i){return(char)(i^64);}

Ungolf'd:

int f(char c) {
    return c^64;
}

char f(int i) {
    return (char) (i^64);
}

कॉलिंग f('A')पहले फ़ंक्शन को आमंत्रित करती है, एक int1 को पीछे हटाना ; कॉलिंग f(1)दूसरे फ़ंक्शन को आमंत्रित करती है, char"ए" लौटाती है ।


`आपको इनपुट के रूप में एक नंबर लेना है और वर्णमाला के संबंधित पत्र को आउटपुट करना है, और इसके विपरीत। (1 <=> ए, 2 <=> बी) आदि `मुझे नहीं लगता कि इसके लिए कार्यों का एक सेट अर्हता प्राप्त करता है।
शॉन वाइल्ड

1
@ सीनियन यह एक फ़ंक्शन अधिभार है।
NoOneIsHere

1
वह कोई इनपुट नहीं लेता है। यह कोई आउटपुट नहीं देता है। कोई कार्यक्रम नहीं है!
निकोलस बारबुल्स्को

आपको यह मान लेना चाहिए कि इनपुट "ए" .. "जेड" या "0" .. "9" है। चूंकि एक स्ट्रिंग एकमात्र आदिम है जो या तो पकड़ सकता है (आप नहीं जानते कि यह इनपुट क्या होने जा रहा है) आपके फ़ंक्शन को एक स्ट्रिंग तर्क की अपेक्षा करनी चाहिए।
रॉबथ

1

जावास्क्रिप्ट 86 77 77 66 60 बाइट्स

i=>typeof i<'s'?String.fromCharCode(i+64):i.charCodeAt(0)-64
  • तीर कार्यों का उपयोग करने के बारे में टिप्पणियों के बाद 7 बाइट्स को बचाया
  • @manatwork द्वारा नोट किए गए रिटर्न / ब्रैकेट को हटाकर एक और 11 बाइट्स बचाए गए
  • @manatwork की बदौलत एक और 6 बाइट बचाईं

1
तीर का उपयोग करें
बाल्ड बंता

@ बाल्डांथा चीयर्स, इसे बदल दिया :-)
डायलन मीस

कोई के लिए की जरूरत returnबयान: i=>typeof i=='number'?String.fromCharCode(i+64):i.charCodeAt(0)-64
मैनटवर्क

@manatwork चीयर्स!
डायलन मीउस

1
कार्य विवरण के अनुसार typeofइनपुट केवल "संख्या" या "स्ट्रिंग" हो सकता है। तो इसके लिए जाँच करने की आवश्यकता नहीं है =='number', <'s'यह भी करेगा।
मैनटवर्क

1

एएसएम: 10 बाइट्स

3C 40 77 04 2C 40 EB 02 04 40

स्पष्टीकरण: यह एक प्रोग्राम का इकट्ठे प्रतिनिधित्व है जो वास्तव में पूछा गया है। यह पूरी तरह कार्यात्मक नहीं है, क्योंकि इसके लिए कुछ निर्देशों की आवश्यकता होती है, लेकिन अगर इसे एक विधानसभा कार्यक्रम के कोड सेगमेंट में जोड़ा जाता है तो इसे काम करना चाहिए। यह AL रजिस्टर में इनपुट प्राप्त करता है, और यदि इसका एक अक्षर यह ASCII कोड मान से 40h को घटाता है, तो बस संख्या छोड़ देता है (यानी B = 42h, 42h-40h = 2h)। यदि इनपुट एक संख्या है तो यह 40h को जोड़कर विपरीत प्रक्रिया करता है। यह AL रजिस्टर में परिणाम छोड़ता है। नीचे विधानसभा स्रोत कोड है

cmp al,40h
ja letter_to_number
sub al,40h
jmp continue
letter_to_number: add ax,40h
continue:

इसके अलावा, यदि आप अन्य सभी उत्तरों को मशीन कोड में परिवर्तित करते हैं, तो मैं सकारात्मक हूं कि मेरा सबसे छोटा होगा।


मुझे लगता है कि कुछ मुद्दे हैं: 77 02 2Cहोना चाहिए 77 **04** 2C; subऔर addपीछे की ओर कर रहे हैं।
सीलिंगकैट

मैंने उपरोक्त सुधारों को लागू किया और एक "फ़ंक्शन" बनाया जिसे आप सी प्रोग्राम से x86_64 मशीन पर कॉल कर सकते हैं। #define F(x) ((int(*)(int))"\x89\xf8\x3c\x40\x76\4\x2c\x40\xeb\2\4\x40\xc3")(x)
सीलिंगकैट

यह किस प्रकार की विधानसभा है?
mbomb007

टर्बो असेंबलर
6a75616e



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