आउटपुट वर्णमाला, ALPHABET, या सिर्फ एक चरित्र


49

चुनौती सरल है:

एक फ़ंक्शन या प्रोग्राम लिखें जो इनपुट लेता है x, और निचले मामले की वर्णमाला को आउटपुट करता है यदि निचले मामले की वर्णमाला xका हिस्सा है, तो ऊपरी मामले की वर्णमाला को आउटपुट करता है यदि ऊपरी मामले की वर्णमाला xका हिस्सा है और केवल xअगर यह दोनों का हिस्सा नहीं है तो आउटपुट ।

नियम:

  • इनपुट फ़ंक्शन तर्क या STDIN से हो सकता है
  • इनपुट 32 से 126 (स्पेस टू टिल्ड) में मुद्रण योग्य ASCII वर्णों में से कोई भी होगा।
  • इनपुट उद्धरण चिह्नों के अंदर हो सकता है, 'x'या "x", लेकिन यह याद रखना 'और "मान्य इनपुट कर रहे हैं और समर्थन किया जाना चाहिए।
  • इनपुट वर्णमाला के किसी भी अक्षर का हो सकता है, यानी आप यह नहीं मान सकते कि यह होगा aया A
  • आउटपुट केवल एक अक्षर या एकल चिन्ह में से एक होना चाहिए, लेकिन अनुगामी न्यूलाइन्स ठीक हैं।
  • वर्णमाला के अक्षरों को रिक्त स्थान, अल्पविराम या किसी अन्य चीज़ से अलग नहीं किया जाना चाहिए।

कुछ उदाहरण:

F
ABCDEFGHIJKLMNOPQRSTUVWXYZ

z
abcdefghijklmnopqrstuvwxyz

"
"

    <- Input:  Space
    <- Output: Space

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


वैकल्पिक लेकिन सराहना की गई: यदि आपकी भाषा में ऑनलाइन दुभाषिया है, तो कृपया एक लिंक भी पोस्ट करें ताकि इसे दूसरों द्वारा आसानी से परखा जा सके।


लीडरबोर्ड

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

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

## Language Name, N bytes

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

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

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:

## Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


क्या हमें उदाहरण के लिए, पायथन में पैकेज आयात करने की अनुमति है: import Randomऔर फिर उपयोग करें Random.randint(जाहिर है कि इस चुनौती के लिए नहीं लेकिन अभी भी)?
डेनियल

हां, आप पैकेज आयात कर सकते हैं। लेकिन उदाहरण के लिए लिखने के लिए बाइट्स import stringगिने जाते हैं, इस प्रकार यह अक्सर वर्कअराउंड करने के लिए बेहतर होता है। ध्यान दें कि चुनौती पोस्ट होने से पहले पैकेज मौजूद होना चाहिए। कई चुनौतियों में कुछ इस तरह है: "संकुल का उपयोग करना जिसकी अनुमति नहीं है", लेकिन इस चुनौती में ऐसा नहीं है।
स्टू ग्रिफिन

मैं यह मान रहा हूं कि "उद्धरण मान्य इनपुट हैं और इसका समर्थन किया जाना चाहिए" आपका मतलब है कि यदि आपके इनपुट विधि को उद्धरण की आवश्यकता है तो इनपुट से बच जाएगा
Cyoce

क्या हम एक REPL पर्यावरण मान सकते हैं?
बिल्ली

जवाबों:


22

TeaScript , 5 बाइट्स

xN(0)

TeaScript में इसके लिए एक (लगभग) बिल्ट-इन है: D

इसे ऑनलाइन आज़माएँ (ध्यान दें: ऑनलाइन दुभाषिया को TeaScript v3 में अपडेट किया गया है, जिसमें यह है N0)

सभी परीक्षण मामलों की कोशिश करो


TeaScript 3 , 2 बाइट्स [गैर-प्रतिस्पर्धात्मक]

TeaScript 3 का उपयोग करना, यह 2-बाइट्स बन सकता है। यह गैर-प्रतिस्पर्धात्मक है क्योंकि इस चुनौती के बाद TeaScript 3 बनाया गया था

N0

1 बाइट विकल्प

यदि हम 0123456789अंकों के लिए आउटपुट कर सकते हैं , तो यह हो सकता है:

°

TeaScript 3 है मान्य। तो, आप इसका इस्तेमाल कर सकते हैं!
1375 बजे user75200

27

अजगर, 10 बाइट्स

h/#z[GrG1z

परीक्षण सूट

हम 3 तत्वों के साथ एक सूची का निर्माण करके शुरू करते हैं: लोअरकेस वर्णमाला, अपरकेस वर्णमाला और इनपुट। ( [GrG1z) उसके बाद, हम इस सूची को गैर-बीजरहित तत्वों में इनपुट के दिखावे की संख्या पर फ़िल्टर करते हैं। ( /#z) अंत में, हम फ़िल्टर्ड सूची का पहला तत्व लेते हैं।


6
गंभीरता से, वहाँ कुछ भी आप अजगर के कुछ बाइट्स के साथ हल नहीं कर सकता है? मुझे वास्तव में इस भाषा को सीखने की जरूरत है ..
Hexaholic

25
जानें कौन सी भाषा? ... आपने नाम से दो का उल्लेख किया है। : पी
क्विंटोपिया

2
@quintopia खैर, दोनों क्यों नहीं? :)
हेक्साहॉलिक

15

LabVIEW, 23 LabVIEW प्रिमिटिव

चयनकर्ता (cse संरचना पर) एक vi से जुड़ा होता है जिसे लेक्सिकल क्लास कहा जाता है। यह इनपुट के आधार पर 1-6 से संख्या बताता है, 5 निचला मामला है 4 ऊपरी मामला है।

लूप के लिए एक वर्णमाला बनाने के लिए या एक बार प्रतीक के माध्यम से पारित करने के लिए 26 बार जाता है।


4
जैसा कि कई वर्षों पहले LabVIEW में काम करने वाले (विशेषाधिकार; दुर्भाग्य? आप तय करते हैं) के रूप में, आपके जवाब मेरे दिन के लिए एक मुस्कान लाते हैं। =)
corsiKa

12

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

f c=filter(elem c)[['a'..'z'],['A'..'Z'],[c]]!!0

उपयोग उदाहरण:

*Main> f 'g'
"abcdefghijklmnopqrstuvwxyz"
*Main> f 'H'
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
*Main> f '\''
"'"

['A ’..’ z ’], [.. A’ .. ’Z’] और सिंगलटन सूची को इनपुट चार के साथ cजहां cतत्व है, की सभी सूची लें। अक्षरों के लिए हमारे पास हमेशा दो मैच होते हैं, इसलिए हम पहले वाले को चुनते हैं।


11

जावास्क्रिप्ट (ईएस 6), 79 बाइट्स

x=>(a="abcdefghijklmnopqrstuvwxyz",x>"`"&x<"{"?a:x>"@"&x<"["?a.toUpperCase():x)

व्याख्या

जावास्क्रिप्ट तार की तुलना करते समय प्रत्येक वर्ण के कोड की वर्णानुक्रम से तुलना करता है, इसलिए तुलना में उपयोग किए गए वर्णों के कोड वर्णों की आवश्यक सीमा से नीचे और ऊपर 1 हैं।

x=>(
  a="abcdefghijklmnopqrstuvwxyz", // a = lower-case alphabet
  x>"`"&x<"{"?a:                  // if x is a lower-case letter, output alphabet
  x>"@"&x<"["?a.toUpperCase():    // if x is an upper-case letter, output upper-case
  x                               // else just output x
)

परीक्षा


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

1
@StewieGriffin दुख की बात यह है। केवल दूसरा तरीका कुछ इस तरह होगा for(a="",i=64;++i<91;)a+=String.fromCharCode(i):। String.fromCharCodeगोल्फ के लिए बहुत अनुपयुक्त है, लेकिन कभी-कभी यह एकमात्र तरीका है!
user81655

4
इस मामले में संतुलन String.fromCharCodeऔर .toUpperCase(डंब और toUpperCase
डम्बर

अच्छा! मैंने इसे आगे बढ़ाने के कुछ अलग तरीकों की कोशिश की है, लेकिन यह काम नहीं कर पाया है। x=>x.replace(/[A-Z]/i,c=>c>"`"?a:a.toUpperCase(),a="abcdefghijklmnopqrstuvwxyz")करता है, लेकिन एक बाइट लंबी है। सिवाय सब कुछ के [A-Z]लिए \wकाम करने के लिए बदल रहा है _। आपका समाधान सबसे कम संभव लगता है।
ETHproductions

यहाँ ABC...abc...?एक असली forलूप के बिना उत्पन्न करने के लिए सबसे छोटा तरीका है : (कुछ गद्दी)[for(_ of[...Array(i=64)])if(i++%32<26)String.fromCharCode(i)].join``+x
ETHproductions

8

आर, 90 75 बाइट्स

a=scan(,'');l=letters;L=LETTERS;cat("if"(a%in%l,l,"if"(a%in%L,L,a)),sep="")

के लिए धन्यवाद ग्यूसेप

पुराना संस्करण (90 बाइट्स):

a=scan(,'');l=letters;L=LETTERS;if(a%in%l)cat(l,sep="")else if(a%in%L)cat(L,sep="")else a

बदसूरत लगता है, लेकिन उन catकार्यों के लिए आउटसोर्स नहीं किया जा सकता है, IMHO।



73 बाइट्स : 2 के पैरामीटर scanकिसी भी प्रकार के वर्ण के हो सकते हैं, इसलिए आप lettersइसके बजाय कर सकते हैं ''
रॉबिन राइडर

7

पायथन 3, 92 84 82 74 बाइट्स

वर्तमान संस्करण: 74, isaacg और wnnmaw के लिए धन्यवाद!

lambda c:(c,''.join(chr(x+(67,97)[c>'Z'])for x in range(25)))[c.isalpha()]

अनगुल्ड: (अनगुल्ड की कुछ परिभाषा के लिए

lambda c:
    (
        c,
        ''.join([chr(x + (67,97)[c > 'Z']) for x in range(25)])
    )
    [c.isalpha()]

पहला संस्करण: 92

def f(c):print(''.join([chr(x+(97if c>'Z'else 65)) for x in range(25)])if c.isalpha()else c)

दूसरा संस्करण: 82, इसहाक के लिए धन्यवाद! :)

lambda c:''.join(chr(x+(97if c>'Z'else 65))for x in range(25))if c.isalpha()else c

नमस्ते, और PPCG में आपका स्वागत है! अच्छा जवाब। यहां एक गोल्फ सुझाव है: आप lambda c:स्पष्ट परिभाषा ( def f(c):print() के बजाय एक लंबो अभिव्यक्ति ( ) का उपयोग कर सकते हैं , और कुछ बाइट्स बचा सकते हैं। इसके अलावा, आपको पहले स्थान की आवश्यकता नहीं है for
isaacg

आह, मैंने प्रिंट करने के लिए "आउटपुट" मान लिया, और न केवल वापस :) नीट, अगर ऐसा मामला 84 से नीचे है, तो lambda c:''.join([chr(x+(97if c>'Z'else 65))for x in range(25)])if c.isalpha()else c। धन्यवाद!
कोनके

हाँ, साइट पर आउटपुट की मानक परिभाषा कार्यों से लौटने की अनुमति देती है, इसलिए आप नए संस्करण को अपने उत्तर में संपादित कर सकते हैं। एक और गोल्फ यह है कि कोष्ठक आवश्यक नहीं हैं - फ़ंक्शन उनके बिना बिल्कुल वैसा ही काम करता है, जैसे कि एक सूची समझ के बजाय एक जनरेटर समझ।
isaacg

आह, वास्तव में नई चीजों को सीखने से पहले, जनरेटर की समझ का इस्तेमाल नहीं किया है! धन्यवाद फिर से :)
Koneke

ध्यान दें कि "फ़ंक्शन में इनपुट करते समय , आपको \"इसके बजाय की आवश्यकता होती है ।
डेनियल

6

पायथन 3, 118 105 98 97 97 बाइट्स

सरल उपाय। EDIT: गोल्फर के सुझाव पर एरिक को धन्यवाद दिया।

lambda s,a='ABCDEFGHIJKLMNOPQRSTUVWXYZ':(s,(a,a.lower())[s.islower()])[s.isalpha()]

Ungolfed:

def f(s):
 a='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 if s.isalpha():
  if s.islower():return a.lower()
  else:return a
 return s

1
क्या आप कुछ बाइट्स को बचाने के लिए एक टर्नरी ऑपरेटर का उपयोग कर सकते हैं? कुछ इस तरह return a.lower() if s.islower() else a
डेविड रॉबर्टसन

@DavidRobertson मुझे यकीन नहीं है कि अगर आप मेरा समाधान पढ़ रहे हैं, जो कोड की शीर्ष पंक्ति है, सही ढंग से, लेकिन यह वही है जो मैं कर रहा हूं।
शर्लक

आह! मैं ungolfed संस्करण पढ़ रहा था। उसके लिए माफ़ करना!
डेविड रॉबर्टसन

@ डेविड रावर्टसन कोई समस्या नहीं
शर्लक

गोल्फ:lambda s,a='abcdefghijklmnopqrstuvwxyz':(s,(a,a.upper())[s.isupper()])[s.isalpha()]
एरिक आउटोलॉफ़र

5

PHP, 62 76 82 बाइट्स

PHP अब ठीक है:

<?=ctype_alpha($x=$argv[1])?join(range(Z<$x?a:A,Z<$x?z:Z)):$x;

कमांड लाइन से एक इनपुट लेता है, जैसे:

$ php alphabet.php A
$ php alphabet.php "a"
$ php alphabet.php " "
$ php alphabet.php _

संपादित करता

  • के साथ बदलकर 6 बाइट्स बचाए । जटिल करने के लिए रास्ता सोचा। धन्यवाद करने के लिए manatwork91>ord($x)Z<$x
  • सहेजे गए 14 बाइट्स को हटाने के द्वारा strtoupperऔर सीधे मांग की रेंज का निर्माण।

यह ord()वहाँ बुरा लग रहा है। कोशिश करो Z<$x?$a:strtoupper($a)
मैनटवर्क

@manatwork Haha, मैंने उस दूसरे भाग को जटिल करने का तरीका सोचा है। इसे इंगित करने के लिए धन्यवाद।
इंसुसरनमेयर

' '&$x^Aअपरकेस और लोअर ए और जेड बनाने की कोशिश करें । यही है, आपका कोड बन जाता है<?=ctype_alpha($x=$argv[1])?join(range(' '&$x^A,' '&$x^Z)):$x;
इस्माइल मिगुएल

@IsmaelMiguel इसमें ठीक उसी बाइट की गिनती होगी।
सम्मिलित करें

1
चिंता न करें - और यह अभी भी बाधा डालने का एक अच्छा तरीका है। ;)
इन्सर्टसुनेमेयर

5

पर्ल, 46 34 33 बाइट्स

के लिए +2 शामिल है -nE

say/[a-z]/?a..z:/[A-Z]/?A..Z:$_

ऐसे दोड़ो

perl -nE 'say/[a-z]/?a..z:/[A-Z]/?A..Z:$_'

  • अद्यतन 34 बाइट्स को छोड़ने forऔर नंगे पासवर्ड का उपयोग करके, @Dom हेस्टिंग्स के लिए धन्यवाद ।
  • अद्यतन 33 बाइट 1 बाइट का उपयोग करके -Eऔर उसके sayबजाय अद्यतन करेंprint

@DomHastings धन्यवाद! पता होना चाहिए नंगे पासवर्ड वहाँ अनुमति दी गई - और मुझे देखा जाना चाहिए कि for: - /। दृष्टिकोणों के एक समूह की कोशिश की, (के -pसाथ $"='';$_="@_", $a='/[a-z]/?a..z:';print eval$a.uc$a.'$_'लेकिन यहां तक ​​कि सब कुछ लंबा है ...
केनी

इस पर एक विचार किया था, यदि आप आईएनजी के $_=बजाय सेट करते printहैं और आपके -pबजाय ध्वज का उपयोग करते हैं -nतो आप एक और दो को बचा सकते हैं ... मैं अभी तक और अधिक बचाने के लिए किसी भी अन्य तरीके के बारे में नहीं सोच सकता ...
डोम हेस्टिंग्स

@DomHastings मैंने वह कोशिश की, लेकिन मैं $_एक सूची (जो मुझे पता है) पर सेट नहीं कर सकता । इसे प्रक्षेपित ( $_="@_") करना होगा, लेकिन यह एक विभाजक के रूप में स्थान का उपयोग करता है इसलिए मुझे भी ऐसा करना होगा $"='', (या उपयोग करना चाहिए join'',) जो इसे लंबा बनाता है। इस पर बहुत अधिक झालर वाला कमरा नहीं!
केनी

हां, बिल्कुल! तुम भी कहा कि (टिप्पणी जब मैं फिर से पढ़ पब में नहीं रहने के बाद ...) मैं इस पर सोच रखेंगे, लेकिन आप कम से कम आप का उपयोग किए बिना मिल जाएगा हो सकता है sayके बजाय print!
डोम हेस्टिंग्स

5

रूबी, ४१ + १ = ४२

स्विच के साथ -p, भागो

([*?A..?z]*'').scan(/\w+/){$&[$_]&&$_=$&}

यह स्ट्रिंग उत्पन्न करता है

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz

और "शब्द वर्ण" के प्रत्येक सन्निहित ब्लॉक की जांच करता है, जो कि केवल लोअरकेस और अपरकेस अल्फाबेट्स और अंडरस्कोर वर्ण के रूप में होता है। यदि Z और a के बीच कई लगातार शब्द वर्ण होते हैं, तो यह चाल काम नहीं करेगी।

अनुरोध द्वारा स्पष्टीकरण जोड़ने के लिए संपादित:

-pझंडा अनिवार्य रूप से करता है

while( $_ = STDIN.gets )
  #execute code
  print $_
end

[*?A..?z]एएससीआईआई क्रम में अपरकेस ए और लोअरकेस जेड के बीच वर्णों की सरणी है। यह अपरकेस वर्णमाला, कुछ गैर-अक्षर वर्ण और निचला अक्षर है। *''सरणी को एक स्ट्रिंग में जोड़ता है, इसलिए हम उस .scanपर कॉल कर सकते हैं । scanनियमित अभिव्यक्ति के प्रत्येक मैच को ढूंढेंगे /\w+/, $&इसके साथ जादुई चर को आबाद करेंगे, और ब्लॉक को कॉल करेंगे। हर बार जब ब्लॉक को पुनरावृत्त किया जाता है, तो यह जांचता है कि क्या मिलान स्ट्रिंग में है $_और आउटपुट को उस स्ट्रिंग में सेट करता है यदि ऐसा है। इसलिए यदि $ _ या तो अपरकेस या लोअरकेस वर्णमाला में समाहित है, तो यह तदनुसार संशोधित हो जाता है, अन्यथा यह अपरिवर्तित होता है।

अनगुल्ड संस्करण कुछ इस तरह दिखेगा

while ($_ = STDIN.gets )
 %w[ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz].each do |alphabet|
  $_ = alphabet if alphabet.include?($_)
 end
 print $_
end

क्या आप अन-गोल्फ संस्करण को पोस्ट कर सकते हैं? मैं अभी भी पूरी तरह से समझ नहीं पा रहा हूं कि यह कैसे काम करता है।
शेल्वैकु

ज़रूर, एक पोस्ट।
हिस्टोक्रेट

4

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

'[,65>_elr:R]{R&}=

'[,65>अपरकेस वर्णमाला, _elनिचली वर्णमाला और r:Rएक एकल-स्ट्रिंग स्ट्रिंग को धक्का देता है जिसे STDIN से पढ़ा जाता है और चर को सौंपा जाता है R। ये एक अरै ( ]) में लिपटे हुए हैं और पहले वाले Rका उपयोग करके किसी भी वर्ण को सामान्य रूप से चुना गया है {R&}=


मैं समझने की कोशिश कर रहा हूं कि सीजेएम के लिए कैसे, लेकिन मैं आधिकारिक डॉक्टर और जो मैं यहां पढ़ रहा हूं, उसके बीच खो गया हूं। क्या कोई मुझे उदाहरण के लिए एक पृष्ठ दे सकता है जहां मैं समझ सकता हूं _elकि लोअरकेस वर्णमाला क्यों है ?
एरडाल जी।

आह, का elअर्थ है "लोअरकेस में कनवर्ट करें"। मैंने सिर्फ अपरकेस वर्णमाला को धक्का दिया है, इसलिए अब मैं इसके साथ डुप्लिकेट करता हूं _, फिर elपरिणामी प्रतिलिपि पर कॉल करता हूं ।
लिन

1
मैं एक अच्छा पीडीएफ युक्त (लगभग) सभी CJam कमांड बनाया।
लिन

4

रेटिना, 62 बाइट्स

[a-z]
abcdefghijklmnopqrstuvwxyz
[A-Z]
ABCDEFGHIJKLMNOPQRSTUVWXYZ

मैच करने के लिए दो छोटी रेखाएं रेगीक्स हैं। यदि इनपुट लोअरकेस (रेंज में [a-z]) है, तो यह उस वर्ण को प्रतिस्थापित करता है (इस मामले में, यह संपूर्ण इनपुट है) लोअरकेस वर्णमाला के साथ। प्रक्रिया अपरकेस के लिए समान है। यदि यह कोई पत्र नहीं है, तो कोई प्रतिस्थापन नहीं किया जाता है, और यह अछूता है।

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


4

पायथन 2.7.10, 95 93 79 बाइट्स

यह मेरा पहली बार भी गोल्फ के लिए प्रयास कर रहा है, इसलिए कृपया, कोई मदद या सलाह बहुत सराहना की है!

from string import* 
lambda i:(i,(uppercase,lowercase)[i.islower()])[i.isalpha()]

मदद के लिए मॉर्गन थ्राप को धन्यवाद!


1
@ मॉर्गनट्रैप, जो काम नहीं करता है। क्या आप सुनिश्चित हैं कि यह पायथन 2.7.10 में काम करता है?
डैनियल

यह 2.7.8 में काम करता है। क्या काम नहीं करता है?
मॉर्गन थ्रैप

@ मॉर्गनट्रैप, वास्तव में, क्या आप पहले बता सकते हैं कि यह कैसे काम करता है? शायद यह सिर्फ इतना है कि मुझे समझ नहीं आ रहा है इसलिए मैं कुछ गलत कर रहा हूं।
डैनियल

ज़रूर, यह इस तथ्य का उपयोग करता है कि False == 0और True == 1टुपल्स में अनुक्रमित करने के लिए। इसलिए, यह पहले जांचता है कि क्या यह एक पत्र है isalpha, यदि यह है, तो यह वापस आ जाता है 1और फिर जांच करता है कि क्या यह लोअरकेस है और वही करता है।
मॉर्गन थ्रैप

1
कोई दिक्कत नहीं है! मुझे गोल्फ करना बहुत पसंद है, इसलिए मैं हमेशा किसी न किसी की मदद करने में खुश रहता हूं!
मॉर्गन थ्रैप

4

रूबी, ४६ ४३ अक्षर

(42 अक्षर कोड + 1 वर्ण कमांड लाइन विकल्प)

[?a..?z,?A..?Z].map{|r|r===$_&&$_=[*r]*""}

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

नमूना रन:

bash-4.3$ echo -n 'm' | ruby -pe '[?a..?z,?A..?Z].map{|r|r===$_&&$_=[*r]*""}'
abcdefghijklmnopqrstuvwxyz

bash-4.3$ echo -n 'W' | ruby -pe '[?a..?z,?A..?Z].map{|r|r===$_&&$_=[*r]*""}'
ABCDEFGHIJKLMNOPQRSTUVWXYZ

bash-4.3$ echo -n '@' | ruby -pe '[?a..?z,?A..?Z].map{|r|r===$_&&$_=[*r]*""}'
@

4

MATL , 22 बाइट्स

jtt1Y2XIm~Iw?km?Ik]]1$

यह भाषा के वर्तमान संस्करण (3.1.0) का उपयोग करता है ।

EDIT (15 सितंबर, 2017): इसे MATL ऑनलाइन पर आज़माएं! (भाषा के नए संस्करण के साथ)।

उदाहरण

>> matl jtt1Y2XIm~Iw?km?Ik]]1$
> e
abcdefghijklmnopqrstuvwxyz

>> matl jtt1Y2XIm~Iw?km?Ik]]1$
> T
ABCDEFGHIJKLMNOPQRSTUVWXYZ

>> matl jtt1Y2XIm~Iw?km?Ik]]1$
> "
"

व्याख्या

j              % input string (assumed to be a single character)        
tt             % duplicate twice
1Y2            % predefined literal: uppercase letters
XI             % copy to clipboard I         
m~             % check if not member    
I              % paste from clipboard I      
w              % swap elements in stack      
?              % if
    k          % convert string to lowercase 
    m          % check if member         
    ?          % if                          
        I      % paste from clipboard I      
        k      % convert string to lowercase 
    ]          % end                         
]              % end                         
1$             % input specification for implicit printing

3

जावा, 165 वर्ण

class A {public static void main(String[]p){int c=p[0].charAt(0),d=c|32,b=(d-96)*(d-123),e=b<0?65|(c&32):c,f=e+(b<0?26:1);for(;e<f;e++){System.out.print((char)e);}}}

स्टडआउट के लिए आवश्यक आउटपुट उत्पन्न करता है (बजाय इसे वापस करने के)। इनपुट रनटाइम तर्कों के माध्यम से है।

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

1) कुछ पूर्णांक चर
c = रनटाइम तर्कों के पहले पैरामीटर के पहले वर्ण का ASCII मान सेट करें।
d = c को ASCII मान (32 के साथ क्रमबद्ध करके) में परिवर्तित किया गया है, यह
देखने के लिए कि क्या कोई अक्षर है, b = गणना। एक पत्र होगा तो <0 होगा।
ई = आउटपुट के लिए प्रारंभ वर्ण। यदि d में ASCII मान एक अक्षर है (b देखें) तो यह c और 32 को 'A' ASCII मान में जोड़कर 'A' (या 'a') पर सेट किया जाता है, अन्यथा यह c के मूल मान पर सेट होता है।
f = आउटपुट के लिए वर्णों की संख्या। यदि यह एक अक्षर नहीं है (b देखें) तो यह 1 पर सेट होता है और इसे 26
2 पर सेट किया जाता है ) प्रत्येक वर्ण को stdout में आउटपुट करने के लिए e से e + f तक लूप।


2
आप जानते हैं कि अधिकांश चुनौतियों के लिए समाधान या तो पूर्ण कार्यक्रम या एक समारोह के रूप में प्रदान किया जा सकता है? जावा में बॉयलरप्लेट कोड की भारी मात्रा को देखते हुए, एक फ़ंक्शन कम हो सकता है।
मैनटवर्क

1
कुछ छोटे-छोटे टोटके लागू किए, बिना तर्क बदले, मुझे यह मिल गया void f(char c){for(int d=c|32,b=(d-96)*(d-123),e=b<0?65|(c&32):c,f=e+(b<0?26:1);e<f;)System.out.print((char)e++);}:।
मैनटवर्क

3

पर्ल, 23 ​​बाइट्स

-nEअन्य perl समाधान के लिए उचित होने के लिए (सामान्य +1 के बजाय) +2 शामिल है

STDIN पर इनपुट के साथ चलाएं बिना नई अनुगामी

echo -n g | perl -lnE 'say/\pL/?a&$_|A..Z:$_'

बस कोड:

say/\pL/?a&$_|A..Z:$_

इस तथ्य का अच्छा उपयोग कि इनपुट 7-बिट वर्णों तक सीमित है।
msh210

3

लुआ, 98 97 बाइट्स

अफसोस की बात है, मुझे aवर्णमाला के साथ सेट करने के लिए 26 बाइट्स से छोटा कोई समाधान नहीं मिला । वास्तव में, मैं 32 से छोटा नहीं था।

संपादित करें: @ATaco के लिए 1 बाइट का धन्यवाद सहेजें, इस त्रुटि को बहुत अधिक कर रहा था जब Lua: p के साथ शुरू किया गया था

c=io.read()a="abcdefghijklmnopqrstuvwyz"print(not c:find"%a"and c or c:find"%u"and a:upper()or a)

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

function f(c)
  a="abcdefghijklmnopqrstuvwyz"
  print(not c:find"%a"and c or c:find"%u"and a:upper()or a)
end

print(f("\""))
print(f("a"))
print(f("Q"))

आप केवल अकेले नहीं हैं जिन्हें Lua में वर्णमाला उत्पन्न करने का छोटा तरीका नहीं मिला । :(
मैनटवर्क

@manatwork हाहा, बिल्कुल वही बात, सिवाय इसके कि मुझे इसे छापना नहीं था, लेकिन इसे संक्षिप्त करना ^ ^। कम से कम, इसका मतलब है कि कोई छुपी हुई चाल नहीं है जिसे मैं इसे नहीं जानता ^ ^ '।
काटेंको

आप एक बाइट को बचाने के c=io.read()a="abcdefghijklmnopqrstuvwyz"बजाय a, c = ...
ATaco

2

गणितज्ञ, 75 बाइट्स

#/.Thread[Join[a=Alphabet[],b=ToUpperCase@a]->Array[""<>If[#>26,b,a]&,52]]&

सुंदर एक गैर गोल्फ भाषा के लिए अच्छा स्कोर ... चरित्र कोड प्रक्रिया का प्रयोग होता किसी भी समाधान के लागत की वजह से अधिक बाइट ले, होगा ToCharacterCodeऔर FromCharacterCode



2

पायथन, 81 बाइट्स

f=lambda z,a="abcdefghijklmnopqrstuvwxyz":[k for k in[a,a.upper(),z]if z in k][0]

यह मूल रूप से पाइथ उत्तर का अनुवाद है। यह एक फ़ंक्शन को परिभाषित करता है fजो चरित्र को तर्क के रूप में लेता है और परिणाम देता है।


1
तुम्हारा मतलब है if z in k, है ना? इसके अलावा, f=डिफ़ॉल्ट रूप से वैकल्पिक है।
xnor

@ एक्सनॉर हाँ। जाहिरा तौर पर मुझे एक Ctrl-C याद आया।
पुरकाकूदरी

2
निकालें f=, फ़ंक्शन को अनाम बनाएं। -2
जैग


2

MATLAB: 71 68 बाइट्स

i=input('');b=i<65|i>122|(i>90&i<97);[i*b,~b*((65:90)+32*(i>96)),'']

(3 बाइट बचाने के लिए ओपी को धन्यवाद)

परीक्षा:

i='a'
ans=
abcdefghijklmnopqrstuvwxyz

i='A'
ans=
ABCDEFGHIJKLMNOPQRSTUVWXYZ

i='~'
ans=
~

स्पष्टीकरण: अपरकेस वर्णमाला 65:90ASCII वर्णों पर है। लोअरकेस वर्णमाला 97:122ASCII पर है। इसलिए, b=i<65|i>122|(i>90&i<97)जाँचता है कि इनपुट वर्ण iअल्फ़ाबेटिक नहीं है। यदि हां, तो इनपुट वापस आ गया है। अपरकेस वर्णमाला यदि b==1और i<97(अपरकेस वर्ण) दी गई है। तो b==1और i>96, 32 में जोड़ा जाता है 65:90कि से मेल खाती है 97:122लोअरकेस वर्णमाला -।


अच्छा प्रस्तुत किया। दो टिप्पणियाँ: i=input('')यदि प्रस्तुत करना स्क्रिप्ट है, या फ़ंक्शन फ़ंक्शन के रूप में यदि यह एक फ़ंक्शन है, तो या तो इसका उपयोग करना आम है @(i)i^2i='a'सामान्य रूप से स्वीकार नहीं किया जाता है। इसके अलावा, आप इसके [1,2,3,'']बजाय 3 बाइट्स बचा सकते हैं char([1,2,3])
स्टीवे ग्रिफिन

ठीक है, संपादित किया गया। सुझाव के लिए धन्यवाद!
ब्रिंकज़ डेस

2

स्पेकबास, 111 बाइट्स

मैं इस के कई संस्करणों के माध्यम से किया गया है, 111 सबसे अच्छा मैं प्रबंधन कर सकते हैं लगता है।

1 INPUT l$: a$="abcdefghijklmnopqrstuvwxyz"
2  ?IIF$(l$ IN ["a" TO "z","A" TO "Z"],IIF$(l$=UP$ l$,UP$ a$,a$),l$)

लाइन 2 ?शॉर्टकट PRINTऔर नेस्टेड इनलाइन IFस्टेटमेंट के लिए उपयोग करता है

छद्म कोड स्पष्टीकरण

IF character IN "a".."z","A".."Z"
THEN
 IF character = UPPERCASE character
 THEN
  print UPPERCASE alphabet
 ELSE
  print alphabet
 ENDIF
ELSE
 print the character
ENDIF

["a" TO "z","A" TO "Z"]पहले की तुलना में छद्म कोड की तरह दिखना मुश्किल है। "a".."z","A".."Z"एक "वास्तविक कोड" की तरह दिखता है, कम से कम मेरी नज़र में ... दोनों को समझना बहुत आसान है, हालांकि =)
स्टीवी ग्रिफिन

2
निर्दिष्ट करें क्या ????
बैसड्रॉप कंबरवुबवबूब

2

स्विफ्ट 2, 142 बाइट्स

func d(s:String)->String{let a="abcdefghijklmnopqrstuvwxyz";for v in s.utf8{return v>64&&v<91 ?a.uppercaseString:(v>96&&v<123 ?a:s)};return s}

Ungolfed

func d(s: String) -> String{
    let a="abcdefghijklmnopqrstuvwxyz"
    for v in s.utf8{
        return (
            v > 64 && v < 91 ?
            a.uppercaseString :
            (
                v > 96 && v < 123 ?
                a :
                s
            )
        )
     }
    return s
}

2

05AB1E , 19 16 बाइट्स

-3 बाइट्स के लिए धन्यवाद else

DAsåiAëDAusåiAuë

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

                   # implicit input
D                  # duplicate
 A                 # push lowercase alphabet
  s                # swap last two elements
   å               # push a in b
    i              # if
     A             # lowercase alphabet
      ë            # else
         D         # duplicate
          Au       # uppercase alphabet
            s      # swap last two elements
             å     # push a in b
              I    # if
               Au  # uppercase alphabet
                 ë # else leave input
                   # implicit print

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


सुनिश्चित नहीं है कि अगर ¹(पहला इनपुट) पहले से ही मौजूद था जब आपने अपना उत्तर पोस्ट किया था, लेकिन आप इसके साथ 2 बाइट्स को गोल्फ कर सकते हैं: A¹åiAëAu¹åiAuë( इसे ऑनलाइन या परीक्षण सूट की कोशिश करें )।
केविन क्रूज़सेन

2

जावा एसई 8, 71 69 बाइट्स

golfed:

(a,s)->{char b=97;if(a<91)b-=32;a=b;b+=26;while(a<b)s+=a++;return s;}

Ungolfed:

(a,s)->{          // String as a parameter. If declaration is necessary it adds 8 bytes
char b = 97;      // Uppercase A char, this is important
if (a < 91)       // If it is not past 'z', where a is a char param
    b -= 32;      // Then go back to the lowercase alphabet
a = b;            // Done to prevent a cast
b += 26;          // End of alphabet
while (a < b)     // Go to end of alphabet
    s += a++;     // Append character
return s;}        // Then return

मैंने मूल रूप से निम्नलिखित को लागू किया था

String s="";char b=96;if(a-91<0)b-=32;for(char c=b;++c<b+27;)s+=c;return s;

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

संपादित करें: 2 बाइट्स को बदलकर Stewie Griffin द्वारा बचाया गया

a - 91 < 0 to a < 91

2
साइट पर आपका स्वागत है! :)
DJMcMayhem

1
धन्यवाद! अब कुछ वर्षों के लिए
दुबका हुआ है

1
a<91काम करना चाहिए, या ...?
स्टेवी ग्रिफिन

2

स्काला, 91 वर्ण

(c:Char)=>{var a='a'.to('z').mkString;if(c.isUpper)a=a.toUpperCase;if(!c.isLetter)a=""+c;a}

संयुक्त राष्ट्र के golfed

def f(c: Char): String = {
    var a='a'.to('z').mkString //set up lower case default response
    if (c.isUpper) {
        a = a.toUpperCase     //mutate the result if upper case
    }        
    if (!c.isLetter) { 
      a = ""+c                 //mutate the result if not a letter
    }
    a                         //return result
}

3 अलग से एक अपरिवर्तनीय मूल्य वापस करने के बजाय एक प्रारंभिक परिवर्तनशील परिणाम होने पर, यदि ब्लॉक ने मुझे 2 वर्णों को बचाया, भले ही मुझे इससे नफरत हो।

स्केल-थोनिक विधि

स्काला के लिए एक बेहतर तरीका कुछ इस तरह होगा:

def convertToAlphabet(c: Char): String = {
    c match {
      case x if !x.isLetter => x.toString
      case x if x.isUpper => ('A' to 'Z').mkString
      case _ => ('a' to 'z').mkString
    }
}

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