मैक्सिकन वेव बनाओ


64

संभव के रूप में कुछ बाइट्स में, एक प्रोग्राम या फ़ंक्शन लिखें जो निम्न आउटपुट करता है:

Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz

अनुगामी न्यूलाइन की अनुमति है। आप यहाँ एक संदर्भ अनहेल्दी पायथन कार्यान्वयन पा सकते हैं ।


1
क्या यह मान लेना सुरक्षित है कि इनपुट ऊपरी मामला नहीं है?
विनी

40
@ इनपुट कोई इनपुट नहीं है। आउटपुट तय है। वास्तव में, यह कोल्मोगोरोव-जटिलता सवालों का सामान्य विचार है ।
क्रिस जस्टर-यंग

आपके पोस्ट करने के बाद से यह HNQ सूची में लगातार रहा है। अच्छा काम। :)
एलेक्स ए।

1
आप यहाँ एक संदर्भ अनहेल्दी पायथन कार्यान्वयन पा सकते हैं। -> लिंक का टूटा हुआ
Franck Dernoncourt

फ्रेंक डर्नोनकोर्ट की बात अब भी कायम है। लिंक टूट गया है।
जोनाथन फ्रीच

जवाबों:


64

पायथ, 12 बाइट्स

V+Gt_GXGNrN1

प्रदर्शन।

पायथ में, Gलोअरकेस वर्णमाला है। +Gt_Gवह abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcbaचरित्र, जिसे प्रत्येक पंक्ति में अपरकेस होने की आवश्यकता है।

VNलूप वेरिएबल के साथ इस स्ट्रिंग पर लूप के लिए सेट करता है ।

शरीर में, XGNrN1एक स्ट्रिंग अनुवाद कार्य है। Xतब्दील हो G, वर्णमाला, की जगह Nके साथ rN1, की अपरकेस संस्करण Nr ... 1अपरकेस फ़ंक्शन है। यह वांछित आउटपुट देता है।


31
क्या मैं अकेला हूं जो इसे मजाकिया लगता है कि निचली वर्णमाला को एक बड़े अक्षर द्वारा दर्शाया गया है?
एलेक्स ए।

31

सी, 73

कभी-कभी सबसे सरल दृष्टिकोण सबसे अच्छा होता है: हर चरित्र को एक-एक करके प्रिंट करें। यह वास्तव में नहीं होना चाहिए भाषाओं का एक बहुत धड़कता है।

i;f(){for(i=1377;i--;)putchar(i%27?123-i%27-32*!(i/702?i%28-4:i%26):10);}

व्याख्या

i;f(){
   for(i=1377;i--;)
   putchar(i%27?                 //if I not divisible by 27
     123-i%27-                   //  print lowercase letter from ASCII 122 downards
       32*!(i/702?i%28-4:i%26)   //  subtract 32 to make it uppercase where necessary: above i=702, use i%28-4, below it use i%26
     :10);                       //if I divisible by 27 print a newline (10)
}

26

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

i=25
exec"L=range(97,123);L[~abs(i)]^=32;i-=1;print bytearray(L);"*51

मुझे लगता है कि अच्छा और सरल है।


यह वास्तव में चतुर है। अनियंत्रित होना लूप!
एलेक्स वान एलईयू

20

ब्रेनफक (8 बिट), 231 बाइट्स

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

ठीक है, तो यह सबसे छोटा कभी नहीं होने वाला है, लेकिन यह वह हिस्सा है जो मायने रखता है ... ठीक है ?!

इसे यहाँ आज़माएँ ('डायनेमिक मेमोरी' टिक करना)


5
यदि लक्ष्य सबसे लंबा संभव कोड होना चाहिए जो अभी भी औसत मानव प्रोग्रामर के लिए पूरी तरह से अनिर्णायक है ...
कालेब

7
@ कालेब मुझे लगता है कि बीएफ कोड अस्तित्व में समझने के लिए सबसे आसान कोड है। यह प्रोग्राम / कार्यक्षमता है जिसे समझना मुश्किल है। हर किसी को पता होना चाहिए कि >एक सेल को दाईं ओर शिफ्ट किया जाए।
mbomb007

4
हमेशा बीएफ के जवाबों को प्यार करने के लिए मिला;)
रेडपांडा

आपने यह कोड सीधे नहीं लिखा था अब आपने किया है?
BAR

6
मुझे शर्म आती है मैंने कहा!
जरमेक्स

13

एमएस-डॉस बाइनरी, 61

इस कोड को संकलित करने की आवश्यकता नहीं है, यह MS-DOS में चलेगा यदि आप इसे wave.com नामक फ़ाइल में लिखते हैं। हेक्स में कोड:

ba3d0189d7b91a00b061aa404975fbb00aaab00daab024aa31f6e8130046
83fe1a75f7be1800e807004e75fae80100c389d3802820b409cd21800020
c3

या, यदि आप कुछ अधिक पठनीय पसंद करते हैं, तो यहां debug.exe (कोड महत्वपूर्ण होने के बाद खाली लाइन) का उपयोग करके इसका उत्पादन कैसे किया जाता है:

debug.exe wave.com
a
mov dx,13d
mov di,dx
mov cx,1a
mov al,61
stosb
inc ax
dec cx
jnz 10a
mov al,a
stosb
mov al,d
stosb
mov al,24
stosb
xor si,si
call 130
inc si
cmp si,1a
jnz 11a
mov si,18
call 130
dec si
jnz 126
call 130
ret
mov bx,dx
sub byte ptr [si+bx],20
mov ah,9
int 21
add byte ptr [si+bx],20
ret

rcx
3e
w
q

11

रूबी: 71 68 65 63 वर्ण

puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse

नमूना रन:

bash-4.3$ ruby -e 'puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse' | head
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz

1
63:puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse
वेंटरो

रवींद्र। मैंने कुछ गूंगे विचारों को ई के पुन: उपयोग को अनुकूलित करने की कोशिश की, लेकिन निश्चित रूप से सही तरीका नहीं है। साभार, @Ventero
मैनटवर्क

10

मतलाब, 60 58 54 बाइट्स

I=32*eye(26);[ones(51,1)*(97:122) '']-[I;I(25:-1:1,:)])

मुझे 4 बाइट्स बचाने के लिए डेनिस जहरुद्दीन के लिए धन्यवाद ।


यहाँ आप भी बदलने के लिए ठेठ चाल का उपयोग कर सकते char(x)द्वारा [x '']एक बाइट को बचाने के लिए।
डेनिस जहरुद्दीन

इसके अलावा end-125 लिखने का एक क्रियात्मक तरीका है!
डेनिस जहरुद्दीन

@ डेनिसजेरुद्दीन ऊप्स। दोनों के लिए धन्यवाद! वास्तव में [x '']चाल मेरे लिए बिल्कुल भी सामान्य नहीं है। लेकिन अब मुझे यह याद है कि यह आपके awers :-)
लुइस

8

एसडब्ल्यूआई-प्रोलॉग, 136 बाइट्स

a:-(R=0;R=1),between(1,26,I),(I=1,R=0;I\=1,nl),between(1,26,J),(R=0,L=I;R=1,L is 27-I),(J=L,K is J+64,put(K);J\=L,K is J+96,put(K)),\+!.

गालियां देना लूप के लिए ...


8

हास्केल 100 89 88 बाइट्स

putStr$map toEnum.(\(h,c:t)->h++c-32:t++[10]).(`splitAt`[97..122]).(25-).abs=<<[-25..25]

लैम्ब्डा हेल्पर फ़ंक्शन \(h,c:t)असिसी मूल्यों की सूची की एक जोड़ी लेता है और दोनों को समेटता है, लेकिन दूसरी सूची के पहले मूल्य के साथ पूंजीकृत। मुख्य कार्य 97..122हर स्थिति में लोअरकेस वर्णमाला (एससीआई में दिए गए ) को विभाजित करता है 0,..,24,25,24,..,0और हर चरण में लंबो को कॉल करता है। मुद्रण से पहले प्रत्येक मान को संबंधित वर्ण में बदल दिया जाता है।


यहाँ मेरा दृष्टिकोण है: codegolf.stackexchange.com/a/53895/3852
लिन

8

स्काला 110 109 वर्ण

val a=('a'to'z').map(c⇒('a'to'z').map(v⇒if(v==c)c.toUpper else v).mkString)
a++a.init.reverse foreach println

5
Scala में OMG ⇒ प्रतीक का प्रयोग किया जाता है? मेरा मतलब है => लेकिन ⇒ नहीं ???
शबूनक

2
दोनों वैध हैं :)
गिल्ड होच

बंद 1 बाइट दाढ़ी सकता है अगर मैं बदल foreach printlnकरने के लिए mkString("\n")स्क्रीन पर मुद्रण के बजाय, और आउटपुट वापसी मान के रूप में एक स्ट्रिंग
गिलाड Hoch

7

SQL (postgreSQL), 107 101

जेनरेट -25 से 25 तक की श्रंखला है और पात्रों को उनके अपरकेस संस्करण के साथ बदलने के लिए निरपेक्ष मान का उपयोग करते हैं। @ ऑपरेटर के बारे में टिप के लिए मैनटवर्क का धन्यवाद।

select replace('abcdefghijklmnopqrstuvwxyz',chr(122- @i),chr(90- @i))from generate_series(-25,25)a(i)

आप जानते हैं कि PostgreSQL में एक @ऑपरेटर है?
मैनेटवर्क

@manatwork मुझे नहीं पता था कि, लेकिन अब मैं धन्यवाद करता हूं
मिकट

7

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

@Nimi ने जिस तरह से बाइट्स गिना; fएक IO क्रिया है जो वांछित आउटपुट को प्रिंट करती है।

x!y|x==min(50-y)y=65|0<1=97
f=mapM putStrLn[[toEnum$x+x!y|x<-[0..25]]|y<-[0..50]]

बहुत खूबसूरत। पता नहीं था कि गार्ड इनलाइन का उपयोग किया जा सकता है।
user2845840


6

MATLAB - 58 बाइट्स

char(bsxfun(@minus,97:122,32*[eye(25,26);rot90(eye(26))]))

लुइस मेंडो के समाधान के समान है , लेकिन प्रसारण क्षमताओं का उपयोग करनाbsxfun

इस बात का लाभ उठाते हुए कि ASCII में, एक कैपिटल और लोअर केस कैरेक्टर के बीच का अंतर एक-दूसरे से बिल्कुल 32 मान दूर है, हम पहले ASCII कोड 97 से 122 तक के लोअर केस लेटर जेनरेट करते हैं जो कि एक से लोअरकेस से निचले स्तर तक ASCII कोड हैं। एक 51 पंक्ति मैट्रिक्स है कि 97 से करने के लिए 122. इसलिए, इस मैट्रिक्स की प्रत्येक पंक्ति में 97 से 122 अगला मानों के एक संख्यात्मक अनुक्रम शामिल 26 ASCII कोड हैं बनाने के लिए, हम एक और मैट्रिक्स जहां प्रत्येक मैं बनाने th एक होता है इस मैट्रिक्स की पंक्ति आई वें कॉलम में 32 । इस मैट्रिक्स की पहली 26 पंक्तियों में यह पैटर्न है, जो अनिवार्य रूप से पहचान मैट्रिक्स को 32 से गुणा करता है। फ़ंक्शनeyeआपके लिए एक पहचान मैट्रिक्स बनाता है। इस मैट्रिक्स की अंतिम 25 पंक्तियों में स्केल की गई पहचान मैट्रिक्स 90 डिग्री घुमाई गई है।

इस कस्टम वेटेड आइडेंटिटी मैट्रिक्स को लेते हुए और इसे पहले मैट्रिक्स के साथ घटाते हुए, फिर परिणामस्वरूप ASCII कोड्स को वर्णों में परिवर्तित करते हुए, वांछित "मैक्सिकन हैट" अनुक्रम का उत्पादन किया जाता है।

उदाहरण रन

>> char(bsxfun(@minus,97:122,32*[eye(25,26);rot90(eye(26))]))

ans =

Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz

आप इस उदाहरण को IDEone के ऑनलाइन ऑक्टेव वातावरण का उपयोग करके भी चला सकते हैं। ऑक्टेव अनिवार्य रूप से MATLAB लेकिन मुक्त है: http://ideone.com/PknMe0


1
rot90-- अच्छा सोचा!
लुइस मेंडू

चार (लोग (26,1) * [97: 122] -eye (26) * 32)
user3528438

@ user3528438 आप दूसरी छमाही को कैसे संभालते हैं? कोड केवल लहर की पहली छमाही की गणना करता है। आपको बाकी की गणना करने की आवश्यकता है।
रेयरेंग जूल

@ user3528438 - यह भी ध्यान दें कि आपने जो लिखा है वह मूल रूप से लुइस मेंडो के उत्तर का पहला भाग है। मैंने एक ही चीज़ को प्राप्त करने के लिए कुछ अलग लिखने का फैसला किया :)
रेयरीेंग जूल

@rayryeng हाँ, यह मुझे बताता है कि दूसरी छमाही को संभालना मुश्किल है, और यह भी कि केंद्र डुप्लिकेट से कैसे बचा जाए।
user3528438

5

जे, 31 23 बाइट्स

u:|:(97+i.26)-32*=|i:25

8 बाइट्स @ मौरिस की बदौलत बच गईं।

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


मुझे 23 मिल सकते हैं: u:|:(97+i.26)-32*=|i:25(मोनड =वास्तव में यहाँ उपयोगी है!)
लिन

@ मौरिस धन्यवाद, मैंने =यहां मोनाद का उपयोग करने के बारे में नहीं सोचा है। यह बहुत अच्छा है!
रैंडम जूल

5

पर्ल, 51 बाइट्स

50 बाइट्स कोड + 1 बाइट कमांड लाइन पैरामीटर

@a=a..z,@a[-1-abs]=uc@a[-1-abs],print@a for-25..25

निम्नानुसार इस्तेमाल किया जा सकता है:

perl -le '@a=a..z,@a[-1-abs]=uc@a[-1-abs],print@a for-25..25'

या यहाँ ऑनलाइन (ध्यान दें कि मुझे इसे जोड़ना था ,"\n"क्योंकि मैं -l arg नहीं जोड़ सकता था)।


बहुत लंबी विधि , ऊपर दिए गए संक्षिप्त संस्करण से पहले, मैंने एक अलग विधि की कोशिश की, जो बहुत ही चंकी थी। मैंने इसे संदर्भ के लिए वैसे भी नीचे छोड़ दिया है।

86 बाइट्स कोड + 1 बाइट कमांड लाइन आर्ग

$_=join"",0,a..z,1;print s/1//r while s/(([A-Z])|0)(\D)|(.)((?2))(1)/\L\2\U\3\4\6\L\5/

पहला पर्ल मैंने कभी ठीक से गोल्फ किया है तो मुझे लगता है कि बहुत कुछ है जो इसके साथ किया जा सकता है - कृपया सुधार का सुझाव दें!

निम्नलिखित के रूप में इस्तेमाल किया जा सकता है:

perl -le '$_=join"",0,a..z,1;print s/1//r while s/(([A-Z])|0)(\D)|(.)((?2))(1)/\L\2\U\3\4\6\L\5/'

या ऑनलाइन यहाँ (ध्यान दें कि मुझे जोड़ना था। "\ n" इस रूप में मैं -l arg नहीं जोड़ सका)।

व्याख्या

सामान्य दृष्टिकोण सभी कठिन परिश्रम करने के लिए रेगेक्स प्रतिस्थापन का उपयोग करना है। हम शुरू करते हैं:

0abcdefghijklmnopqrstuvwxyz1

यह मेल खाता है (([A-Z])|0)(\D)और इसे देने के लिए \U\3(\ U परिवर्तनों के लिए अपरकेस) के साथ प्रतिस्थापित किया जाता है :

Abcdefghijklmnopqrstuvwxyz1

इस बिंदु से, हम उसी रेगेक्स से मेल खाते हैं और उसके साथ प्रतिस्थापित करते हैं \L\2\U\3:

aBcdefghijklmnopqrstuvwxyz1
abCdefghijklmnopqrstuvwxyz1
...
abcdefghijklmnopqrstuvwxyZ1

अब रेगेक्स मैचों का दूसरा विकल्प, (.)((?2))(1)(जो कि जैसा है (.)([A-Z])(1))। हम \U\4\6\L\5देने के साथ प्रतिस्थापित करते हैं:

abcdefghijklmnopqrstuvwxY1z

जब तक हम पहुंचते हैं तब तक यह मेल और प्रतिस्थापित होता रहता है:

A1bcdefghijklmnopqrstuvwxyz

और रेगेक्स मैच नहीं हैं।

लूप के प्रत्येक बिंदु पर हम '1' से अलग करते हैं और प्रिंट करते हैं।


5

पीएचपी, 87 71 69 बाइट्स

सबसे छोटा नहीं है, लेकिन यह इरादा के अनुसार काम करता है। कुछ सुझावों
के लिए @manatwork की बदौलत इसका आकार बहुत कम हो गया है।
और @ ब्लेकहोल के लिए धन्यवाद , आकार 2 बाइट्स से कम हो गया था।

for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'
';

बिल्कुल सुंदर नहीं है, लेकिन काम करता है।


1
"गोंद एक खाली स्ट्रिंग में दोष।" - PHP के join()पहले पैरामीटर के बारे में प्रलेखन ।
मैनेटवर्क

1
यह स्ट्रिंग सबस्क्रिप्ट वास्तव में इष्टतम नहीं है: $i<25?$i:25-($i-25)25-abs($i-25)
मैनटवर्क

1
यह देखते हुए कि आप पहले से ही चेतावनियों को अनदेखा कर रहे हैं (अपरिभाषित स्थिरांक a और z के लिए), आप एकतरफा $ i के लिए एक दूसरे की उपेक्षा कर सकते हैं। $ I को स्पर्श करते समय, इसकी वृद्धि को स्ट्रिंग सबस्क्रिप्ट में स्थानांतरित करें। for(;$i<51;){$L=range(a,z);$L[25-abs($i++-25)]^=" ";echo join($L),"↵";}(बस उस लाइन को लपेटो जहां मैंने कोड में "↵" का उपयोग किया था।)
मैनेटवर्क

@manatwork बहुत बहुत धन्यवाद! मैं पूरी तरह से भूल गया \nथा कि वहाँ था। के प्रारंभिककरण $iको एक दुर्घटना के रूप में छोड़ दिया गया था। और आपके लिए बहुत बहुत धन्यवाद 25-abs($i-25)। मैं वहां खुद नहीं पहुंचता।
इस्माईल मिगुएल

2
आपके forलूप को अनुकूलित किया जा सकता है: for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'↵';(-2 बाइट्स)।
ब्लैकहोल


5

TIS नोड प्रकार T21 आर्किटेक्चर - 216 215 बाइट्स

इसे यहां कार्रवाई में देखें! DOWNउस वीडियो में एक ऐसा है जिसे मैंने बाद में गोल्फ किया ANY, लेकिन यह कार्यात्मक रूप से समान है।

इस भाषा में स्ट्रिंग्स या वर्णों की कोई अवधारणा नहीं है, इसलिए मुझे इंगित करना चाहिए कि मैं ASCII मूल्यों का उपयोग कर रहा हूं, अर्थात आउटपुट शुरू होता है 97, 66, 67... 88, 89, 90, 10, 65, 98...

स्कोरिंग के प्रयोजनों के लिए TIS-100 के डेटा को बचाने के प्रारूप में यह कोड है:

@5
ADD 25
L:MOV 27 ANY
SUB 1
JGZ L
MOV 25 ANY
JRO -1
@6
JRO 2
S:MOV 10 ANY
ADD 65
MOV ACC ANY
SUB 90
JEZ S
ADD 26
@9
MOV 32 ANY
ADD UP
L:MOV 0 ANY
SUB 1
JGZ L
@10
MOV UP ACC
ADD ANY
SUB 42
D:JEZ D
ADD 42
MOV ACC ANY

व्याख्या


यह TIS-100 में पहला प्रश्न है या क्या है?
noɐɹƆzɐɹƆ

1
मैंने TIO के लिए एक TIS एमुलेटर लागू किया है, इसलिए अब आप इसे ऑनलाइन आज़मा
फाल्क्स

4

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

_=>Array(51).fill('abcdefghijklmnopqrstuvwxyz').map((e,i)=>e.replace(/./g,(f,j)=>j==i|i+j==50?f.toUpperCase():f)).join`
`

यह वास्तव में लंबा है क्योंकि यह वर्णानुक्रम को लंबे समय तक उपयोग करने की तुलना में वर्णमाला को अधिक कठिन बनाता है String.fromCharCode वर्णों को उत्पन्न करने के । स्टैक स्निपेट के साथ नीचे इसका परीक्षण करें, जो बेहतर समर्थित ईएस 5 और नीचे का उपयोग करता है।

f=function(){
  return Array(51).fill('abcdefghijklmnopqrstuvwxyz').map(function(e,i){
    return e.replace(/./g,function(f,j){
      return j==i|i+j==50?f.toUpperCase():f
    })
  }).join('\n')
}

// Polyfill for ES6-only fill()
Array.prototype.fill = Array.prototype.fill || function(val){
  for(i=0;i<this.length;i++){
    this[i] = val
  }
  return this
}

document.getElementById('p').innerText=f()
<pre id="p"></pre>


4

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

51{25-z~'{,97>'[2$+tN}/

इसमें ऑनलाइन कोशिश करें CJam दुभाषिया

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

51{                  }/ e# For I from 0 to 50:
   25-                  e#   Compute J := I - 25.
                        e#   This maps [0 ... 50] to [-25 ... 25].
      z                 e#   Compute K := abs(J).
                        e#   This maps [-25 ... 25] to [25 ... 0 ... 25].
       ~                e#   Compute L := ~K = -(K + 1).
                        e#   This maps [25 ... 0 ... 25] to [-26 ... -1 ... -26].
        '{,             e#   Push ['\0' ... 'z'].
           97>          e#   Discard the first 97. Pushes ['a' ... 'z'].
              '[2$+     e#   Add L to '['. Pushes 'A' for -26, 'Z' for -1.
                   t    e#   Set ['a' ... 'z'][L] to '[' + L.
                    N   e#   Push a linefeed.

4

आर, 78० 78०

M=replicate(26,c(letters,"\n"));diag(M)=LETTERS;cat(M,M[,25:1],sep="")

@MickyT द्वारा सुधार किया गया


2
लगभग एक जैसा मैं साथ आया लेकिन एक तरफ रख दिया। मैंने M=replicate(26,c(letters,"\n"))मैट्रिक्स के बजाय इस्तेमाल किया । यह आपको कुछ बाइट्स
बचाएगा

1 बाइट बचाकर प्रयोग करें write: tio.run/##K/r/…
JayCe

4

लिनक्स विधानसभा, 289

दुर्भाग्य से उच्च स्तरीय भाषाओं के साथ प्रतिस्पर्धी नहीं है और शायद इष्टतम से बहुत दूर है, लेकिन बहुत सीधा है। इसका उपयोग करके चलाएँ nasm -f elf64 -o a.o wave.S; ld -s -o a a.o; ./a(परिणामी बाइनरी सिर्फ 568 बाइट्स बड़ी है):

section .data
s:db 'abcdefghijklmnopqrstuvwxyz',10
section .text
global _start
_start:
mov esi,0
a:call c
inc esi
cmp esi,26
jne a
mov esi,24
b:call c
dec esi
jnz b
call c
mov eax,1
call d
c:mov ecx,s
sub byte [ecx+esi],32
mov eax,4
mov edx,27
d:mov ebx,1
int 80h
add byte [ecx+esi],32
ret

ईएलएफ के लिए संकलन करने के लिए जगह की बर्बादी लगती है (वहाँ बहुत सारे ब्लोटिंग शून्य हैं)। यदि डॉस के COM प्रोग्राम के रूप में किया जाता है तो इसे बहुत कम किया जा सकता है। मुझे लगता है कि यह लिनक्स में डॉक्सबॉक्स में दौड़ सकता है :)
रुस्लान

मुझे पता है और मैंने ऐसा ही किया है। मेरी अन्य पोस्ट कोडगॉल्फ.स्टैकएक्सचेंज.com
a

हाँ, इसे देखा, इसे उखाड़ फेंका। ध्यान नहीं दिया, हालांकि आप भी थे।
रुस्लान

4

D86 के लिए x86 असेंबली, 41 बाइट्स संकलित

बाइनरी:

00000000  b9 e6 ff b3 61 b8 61 02  50 38 d8 75 02 24 df 88
00000010  c2 cd 21 58 40 3c 7b 75  ef b2 0a cd 21 41 79 02
00000020  43 43 4b 80 f9 19 75 dd  c3

स्रोत कोड, "wave.asm" के रूप में सहेजें, "nasm -f bin -o wave.com wave.asm" के साथ संकलित करें और "dosbox wave.com" के साथ चलाएँ

org 100h 
section .text
start:
mov cx,-26
mov bl,'a'
next_line:
mov ax, 0261h
next_char:
push ax
cmp al,bl
jnz lower_case
and al,255-32
lower_case:
mov dl,al
int 21h
pop ax
inc ax
cmp al,'z'+1
jnz next_char
mov dl,0ah
int 21h
inc cx
jns move_left
inc bx
inc bx
move_left:
dec bx
cmp cl,25
jnz next_line
ret

4

सी #, 140 139 135 132

void f(){int d=1,i=0;var s="abcdefghijklmnopqrstuvwxyz\n";for(;i>=0;i+=d=i==25?-1:d)Console.Write(s.Replace(s[i],(char)(s[i]-32)));}

विस्तारित

void f()
{
    int d = 1, i =0;
    var s = "abcdefghijklmnopqrstuvwxyz\n";
    for (; i >= 0; i += d = i == 25 ? -1 : d)
        Console.Write(s.Replace(s[i], (char)(s[i] - 32)));
}

के बजाय एक टर्नरी का उपयोग कर @ Gunther34567 के लिए 1 बाइट धन्यवादif

सहेजे गए 4 बाइट्स तब लूप के अंदर उस टर्नरी को घोंसला बनाते हैं और लूप के बाहर तक वर्णमाला घुमाते हैं

सहेजे गए 3 बाइट्स पूर्णांक घोषणाओं को @eatonphil के लिए धन्यवाद देते हैं


1
आप को बदलने के द्वारा 1 बाइट बचा सकता है if(i==25)d=-1;के लिएd=i==25?-1:d;
grabthefish

1
आप को बदलने के द्वारा 3 बाइट्स बचा सकते हैं var d=1करने के लिए int d=1,i
ईटनफिल

3

बैश: 76 66 अक्षर

printf -va %s {a..z}
for c in {a..z} {y..a};{ echo ${a/$c/${c^}};}

नमूना रन:

bash-4.3$ printf -va %s {a..z};for c in {a..z} {y..a};{ echo ${a/$c/${c^}};} | head
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz

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

दिलचस्प। तब वर्णमाला कहाँ से प्रकट होगी?
मैनटवर्क

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

हां मैंने देखा। (साइट ने मुझे संपादन और उसके भाग्य के बारे में सूचित किया है।) 1 लाइन के बिना जो वर्णमाला को चर में रखता है a, दूसरी पंक्ति केवल चर से खाली तारों को प्रिंट कर सकती है, मुझे इसे अस्वीकार करने के अलावा कोई अन्य प्रस्ताव नहीं दिखता है। :(
मैनटवर्क

3

सेड: 135 119 116 111 पात्र

(109 वर्ण कोड + 1 वर्ण कमांड लाइन विकल्प + 1 वर्ण इनपुट।)

s/.*/abcdefghijklmnopqrstuvwxyz/
h;H;G;H;G;H;g;G
s/.{,28}/\u&/gp
s/$/\t/
:;s/(\w+\n?)\t(.*)/\t\2\1/;t
s/.*Z//

नमूना रन:

bash-4.3$ sed -rf mexican.sed <<< '' | head
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz

3

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

c=-1;while(c++<50){console.log('abcdefghijklmnopqrstuvwxyz'.replace(/./g,(x,i)=>i==c|i+c==50?x.toUpperCase():x))}

110 बाइट्स

for(c=-1;c++<50;)console.log('abcdefghijklmnopqrstuvwxyz'.replace(/./g,(x,i)=>i==c|i+c==50?x.toUpperCase():x))

102 बाइट्स

पुराना स्कूल अपराजेय है जब तक कि हमारे पास ऑपरेटर / फ़ंक्शन / जनरेटर / जो कुछ भी js नहीं है

for(c=-1;c++<50;){for(s='',i=-1;i++<25;)s+=String.fromCharCode(i+(i==c|i+c==50?65:97));console.log(s)}

100 बाइट्स

बेवजह Math.abs बहुत लंबा है

for(c=51;c--;){for(s='',i=26;i--;)s+=String.fromCharCode(c+i==25|c-i==25?90-i:122-i);console.log(s)}

96 94 बाइट्स

हालांकि मैं स्पष्टीकरण के बिना नीचे जा रहा हूँ मैं अपना संघर्ष जारी रखता हूँ

for(c=-26;c++<25;){for(s='',i=26;i--;)s+=String.fromCharCode(c*c-i*i?122-i:90-i);console.log(s)}

हम लूप निर्देशों को पुन: व्यवस्थित करके बाइट्स के एक जोड़े को दाढ़ी कर सकते हैं:

for(c=-26;c++<25;console.log(s))for(s='',i=26;i--;s+=String.fromCharCode(c*c-i*i?122-i:90-i));

कृपया नीचे बताएं। आउटपुट गलत है?
शबूनक

2
हो सकता है कि क्योंकि आप तकनीकी रूप से एक ही पोस्ट में कई उत्तर हैं? नरक अगर मुझे पता है, अच्छा शेविंग, हालांकि!
सैंडी गिफोर्ड

इसके अलावा, मुझे लगता है कि आपको लगता है कि पिछले सेमी-कोलन बंद दाढ़ी कर सकते हैं
सैंडी जिफोर्ड

नहींं, मैं गलत था
सैंडी गिफर्ड

3

पर्ल - 95 64 बाइट्स

इस तथ्य का लाभ उठाता \uहै कि अगला चरित्र पर्ल में एक बड़े अक्षर को मुद्रित करता है।

for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}

31 बाइट बचाने और इसे ठीक करने के लिए मैनटवर्क का धन्यवाद (मेरा पिछला कोड काम नहीं किया।)


यह \uएक अलग नमूने में काम करने लगता है, लेकिन आपके कोड में नहीं। :( सभी वर्ण लोअरकेस रुके आप हमें दिखाया जा सका कैसे अपने कोड निष्पादित किया जाना चाहिए (मैं एक फ़ाइल में रख तो कहा जाता है।? perlयह फ़ाइल नाम गुजर, कोई स्विच।) वैसे, मैं का उपयोग perl5.20.2।
manatwork

वैसे, यह \uउसी स्ट्रिंग शाब्दिक में बदलने के लिए पत्र द्वारा पीछा किए जाने पर काम करने लगता है :for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}
मैनटवर्क

@ मैनटवर्क स्ट्रेंज, जब मैंने इसे किया तो यह काम कर गया। (मैं 5.18 का उपयोग करता हूं।) आपका कोड काम करता है, और यह आकार में काफी कटौती करता है, इसलिए मैं इसका उपयोग करूंगा। धन्यवाद!
ASCIIThenANSI

2

q (37 वर्ण)

पहला कट

@[.Q.a;;upper]'[(raze(|:\)til 26)_26]

@[.Q.a;;upper]@'x,1_reverse x:til 26के लिए 36 बाइट्स । या K4 में 29 बाइट्स के@[.Q.a;;.q.upper]@'x,1_|x:!26 लिए ।
स्ट्रीटस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.