इनपुट के लिए विकर्ण वर्णमाला


26

से प्रेरित होकर इस पोस्ट । इस प्रश्न को एक डुप्लिकेट के रूप में चिह्नित करने के लिए मैं आपसे वास्तव में यह प्रश्न पढ़ने के लिए आग्रह करता हूं कि मेरा लिंक जुड़ा हुआ है। लिंक किया गया एक इनपुट नहीं मांगता है और केवल तिरछे तिरछे प्रिंट करना है।

चुनौती

सम्मिलित रूप से 1-26 के बीच एक इनपुट को देखते हुए, वर्णमाला को तिरछे प्रिंट करें, लेकिन दिए गए इनपुट के सूचकांक पर लंबवत मुद्रण करना शुरू करें।

उदाहरण

इनपुट दिया:

16

आपका कार्यक्रम आउटपुट होना चाहिए:

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

इनपुट:

4

आउटपुट:

a
 b
  c
   d
   e
   f
   g
   h
   i
   j
   k
   l
   m
   n
   o
   p
   q
   r
   s
   t
   v
   w
   x
   y
   z

इनपुट:

1

आउटपुट:

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

इनपुट:

26

आउटपुट:

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

स्कोरिंग

यह , इसलिए प्रत्येक भाषा में सबसे कम उत्तर जीतता है।

सौभाग्य!


6
क्या हम 0- या 1-इंडेक्सिंग का उपयोग करना चुन सकते हैं?
नॉटजगन

क्या एक सुसंगत अग्रणी स्थान स्वीकार्य है?
Giuseppe

अनुगामी रिक्त स्थान स्वीकार्य हैं?
डोम हेस्टिंग्स

क्या हम अपरकेस का उपयोग कर सकते हैं?
अदम

क्या हम स्ट्रिंग्स की सूची लौटा सकते हैं?
अड्म

जवाबों:


13

चारकोल , 9 बाइट्स

↘✂β⁰N↓✂βη

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

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

↘✂β⁰N↓✂βη
 ✂β⁰N         the alphabet from position 0 to the input
↘               print diagonally, down and to the right
        ✂βη    the alphabet starting from the position of the input
       ↓        print downwards

यह समाधान अब चारकोल के वर्तमान संस्करण में काम नहीं करता है (ज्यादातर बग फिक्स के कारण होने की संभावना है), लेकिन समस्या को 10 बाइट्स के साथ हल किया गया है ↘✂β⁰N↓✂βIθ


2
मुझे यकीन नहीं है कि क्यों काम करता है; यह एक बग हो सकता है जिसे कुछ हफ्ते पहले पेश किया गया था। (आपको सामान्य रूप से Iθइसके स्थान पर उपयोग करना होगा η।)
नील

@ नील यह आज टूटी हुई लगती है। । का उपयोग करके इसे हल करता है।
जेपी डी ला टोरे

के …βNबजाय का उपयोग करके 1 बाइट बचाएं ✂β⁰N
नील

7

05AB1E , 11 बाइट्स

AvNI<‚Wysú,

पहली बार 05AB1E की कोशिश कर रहा हूं, इसलिए मैं युक्तियों के लिए खुला हूं।

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

से एक शून्य अनुक्रमित इनपुट हैं 0करने के लिए 25अनुमति दी है, इस को छोड़ते हुए 10 बाइट्स हो सकता है <


Niiice! बिल्कुल वही जो मुझे मिला। मैंने "लिफ्ट" की कोशिश की, लेकिन यह योजना के अनुसार काम नहीं कर रहा है। मुझे लगता है कि यह बहुत इष्टतम है :)।
मैजिक ऑक्टोपस यूरन

4

जावास्क्रिप्ट (ES2017), 73 72 71 66 बाइट्स

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

f=(n,x=26)=>x?f(n,x-1)+(x+9).toString(36).padStart(x<n?x:n)+`
`:''

1
यह पहले होने के कारण अंत में एक 10बाद जोड़ता है । Bugfixed और 68 बाइट्स के लिए गोल्फ का उपयोग करते हुए : TIOz++xx.toString()padStart
जस्टिन मैरिनर

@JustinMariner धन्यवाद, मुझे लगता है कि मैं इसके लिए ES8 पर स्विच कर सकता हूं ...
ETHproductions

क्या आप किसी चीज को करीने से बचा सकते हैं? n=>g=(x=26)=>x?f(x-1)+(x+9).toString(36).padStart(x<n?x:n)+'\n':""
झबरा

@ शैगी शायद, मुझे नहीं पता कि उस प्रकार की करी की अनुमति हालांकि है।
ETHproductions

आह, नट, ऐसा लगता है कि यह अनुमति देने का आपका प्रस्ताव अब सर्वसम्मति नहीं है :(
झबरा

4

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

n=input()-1
for i in range(26):print(' '*i)[:n]+chr(i+97)

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

-1 और बाइट मिस्टर एक्सकोडर की बदौलत



@Pavel तब से काम नहीं करेगा जब तक inputकि हर बार forलूप को पुनरावृत्त नहीं कहा जाएगा , भले ही इनपुट की केवल एक पंक्ति हो।
नॉटजैगन


सबस्क्रिप्टिंग का उपयोग करके 57 बाइट्स
श्री Xcoder


4

रूबी, 51 46 43 बाइट्स

->n{(0..25).map{|x|(' '*x)[0,n-1]<<(x+97)}}

तार की सूची लौटाता है।

लगता है कि पायथन लोग अपने ग्राहकों के साथ कुछ करने के लिए थे। पीपेरी के समाधान के श्री Xcoder के सुधार से प्रेरणा लेकर -5 बाइट्स।

पिछले समाधान के साथ rjust(51 बाइट्स):

->n{i=0;(?a..?z).map{|c|c.rjust i+=n>c.ord-97?1:0}}


3

आर, ९९ tes ९ बाइट्स

@MickeyT ने 10 बाइट्स बचाए

समारोह

function(x)for(i in 1:26)cat(paste(c(rep(" ",min(x,i)),letters[i]),collapse=""),sep="\n")

डेमो

f <- function(x)for(i in 1:26)cat(paste(c(rep(" ",min(x,i)),letters[i]),collapse=""),sep="\n")
f(1)
f(10)
f(15)
f(26)

1
थोड़ी सी बचत। बल्कि फिर ifelseकोशिश करें min। पेस्ट में एक के print.noquoteसाथ बदला जा सकता है । एक सीधी गाड़ी वापसी हो सकती है। फ़ंक्शन बॉडी के लिए घुंघराले ब्रेसिज़ को गिराया जा सकता है। cat'\n'\n
मिकट

आप का उपयोग करके अधिक कुछ बचा सकता है writeके बजाय catऔर paste:write(c(rep(" ",min(x,i)),letters[i]),"",26,,"")
user2390246

3

रेटिना , 72 68 बाइट्स

^
z
{2=`
$`
}T`l`_l`^.
\D
$.`$* $&¶
\d+
$* 
s`( *)( +)(?=.*¶\1 $)
$1

इसे ऑनलाइन आज़माएं! आउटपुट में अनुगामी व्हॉट्सएप शामिल है। $शून्य-अनुक्रमण की अनुमति देने से पहले स्थान को हटाकर 1 बाइट सहेजें । संपादित करें: @ मार्टिनियर के वर्णमाला जनरेटर का उपयोग करके 4 बाइट्स सहेजे गए। स्पष्टीकरण:

^
z
{2=`
$`
}T`l`_l`^.

वर्णमाला डालें।

\D
$.`$* $&¶

इसे विकर्ण करें।

\d+
$* 

रिक्त स्थान के रूप में एकरी में इनपुट परिवर्तित करें।

s`( *)( +)(?=.*¶\1 $)
$1

अधिक लम्बी लाइनों को ट्रिम करें ताकि कोई रेखा अंत में रिक्त रेखा से अधिक लंबी न हो।


2

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

(T=Table;a=Alphabet[];c=Column)[c/@{T[""<>{T[" ",i],a[[i]]},{i,#}],T[""<>{T[" ",#],a[[i]]},{i,#,26}]}]&

2

पायथ , 21 17 15 बाइट्स

3% बैटरी वाले फोन पर किया गया।

VlG+*d?>QNNQ@GN

स्पष्टीकरण:

VlG        For each character in the alphabet (G)
+          Concatenate...
 *d        Space (d) times...
   ?>QNNQ  Ternary; if Q (input) is less than N, return N, else Q
 @GN       The Nth character of the alphabet (G)

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


1
@totallyhuman मैं लास वेगास, न्यू मैक्सिको में कुछ अद्भुत पिज्जा था
स्टेन स्ट्रम

कुछ बहुत कम दृष्टिकोण मिले, और मैंने अपना जवाब पोस्ट करने का फैसला किया ।
श्री Xcoder

@ Mr.Xcoder हाँ, उस पर अच्छा काम।
स्टेन स्ट्रम



2

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

काफी आश्चर्यचकित किसी ने भी नहीं देखा कि स्पष्ट दृष्टिकोण दूसरों की तरह छोटा था।

lambda k:[(i*" ")[:k-1]+chr(i+97)for i in range(26)]

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

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

lambda k:[min(k-1,i)*" "+chr(i+97)for i in range(26)]

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


2

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

f n=do m<-[1..26];([2..min n m]>>" ")++['`'..]!!m:"\n"

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

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

f n=                  -- input number is n
  do m<-[1..26]       -- for each m from [1..26], construct a string and concatenate
                      -- them into a single string. The string is:
   [2..min n m]>>" "  -- min(n,m)-1 spaces,
      ++              -- followed by
   ['`'..]!!m         -- the m-th char after `
      :               -- followed by
   "\n"               -- a newline 

संपादित करें: @Lynn ने 4 बाइट्स बचाए। धन्यवाद!



@Lynn; धन्यवाद! मैं हमेशा सूचियों के बारे में भूल जाता हूं।
निमि



1

जावास्क्रिप्ट (Node.js) , 72 बाइट्स

n=>[..."abcdefghijklmnopqrstuvwxyz"].map((e,i)=>" ".repeat(i<n?i:n-1)+e)

तार की सूची लौटाता है।

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


क्या मैं पूछ सकता हूं कि नोड.जेएस क्यों? मान्य सामान्य JS की तरह लगता है
Downgoat

@Downgoat यह TIO ऑटो स्वरूपण है
कॉनर ओ'ब्रायन

btw आप का उपयोग कर बाइट्स बचा सकते हैं.padStart
डाउनगोट

प्रतीक्षा करें एनवीएम जिस तरह से मैं सोच रहा था वह मूल रूप से ईटीएच के उत्तर में बनाता है
डाउनगोएट

ईएस 8 पर स्विच करें और बाइट को padEndइसके बजाय सहेजें repeat
झबरा

1

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

SparseArray[x=#;{#,#~Min~x}->Alphabet[][[#]]&~Array~26,{26,#}," "]&

SparseArrayस्ट्रिंग्स की वापसी करता है। कल्पना करने के लिए, Grid@सामने प्रस्तुत करें।

इसे वुल्फ्राम सैंडबॉक्स पर आज़माएं

प्रयोग

Grid@SparseArray[x=#;{#,#~Min~x}->Alphabet[][[#]]&~Array~26,{26,#}," "]&[5]
a
 b
  c
   d
    e
    f
    g

    ⋮

    z 





1

प्रोटॉन , 40 बाइट्स

यह मानते हुए कि स्ट्रिंग्स की एक सूची ठीक है।

k=>[(i*" ")[to~-k]+chr(i+97)for i:0..26]

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

प्रोटॉन , 49 बाइट्स

इसके बजाय ASCII- कला:

k=>'\n'.join((i*" ")[to~-k]+chr(i+97)for i:0..26)

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


1

सी # (.NET कोर) , 66 + 18 बाइट्स

n=>new int[26].Select((x,i)=>$"{(char)(i+97)}".PadLeft(i<n?i+1:n))

बाइट काउंट में भी शामिल हैं

using System.Linq;

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

यह स्ट्रिंग्स का एक संग्रह देता है, प्रत्येक पंक्ति के लिए एक। यदि इसकी अनुमति नहीं है, तो स्ट्रिंग के अंदर string.Concat()और \nअंदर 17 बाइट्स द्वारा उत्तर सूज जाएगा

स्पष्टीकरण:

n =>
    new int[26]                      // Create a new collection of size 26
    .Select((x, i) =>                // Replace its members with:
        $"{(char)(i + 97)}"          // String of an alphabet character corresponding to the index
        .PadLeft(i < n ? i + 1 : n)  // Add spaces to the left
    )

1

MATL, 14 बाइट्स

26:tiXl2Y2oZ?c

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

व्याख्या

26      % number literal
:       % range; vector of equally spaced values [1...26]
t       % duplicate
i       % explicitly grab the input
Xl      % clamp the array to have a maximum value of the input
2Y2     % predefined literal: ['a'...'z']
o       % convert to a numeric array
Z?      % create sparse matrix using the first two inputs as the rows/columns 
        % and the letters 'a'...'z' as the values
c       % convert back to character and implicitly display

1

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

j.e+<*kdtQbG

यहाँ कोशिश करो!

यदि स्ट्रिंग्स की सूचियों की अनुमति है, तो इसे 11 बाइट्स तक छोटा किया जा सकता है :

.e+<*kdtQbG

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

VG+<*dxGNtQN

यहाँ कोशिश करो!

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

jm+<*d;tQ@Gd26

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

यदि स्ट्रिंग्स की सूचियों की अनुमति है, तो इसे 13 बाइट्स तक छोटा किया जा सकता है :

m+<*d;tQ@Gd26

ये कैसे काम करते हैं?

अन्य उत्तरों के अधिकांश के विपरीत, यह मानचित्र सभी 3 समाधानों में लोअरकेस वर्णमाला पर लूप करता है।

स्पष्टीकरण # 1

j.e+<*kdtQbG - Full program.

 .e        G - Enumerated map over "abcdefghijklmnopqrstuvwxyz", with indexes k and values b.
     *kd     - Repeat a space a number of times equal to the letter's index.
    <   tQ   - Crop the spaces after the input.
   +      b  - Concatenate with the letter.
j            - (Optional): Join by newlines.

व्याख्या # २

VG+<*dxGNtQN  - Full program.

VG            - For N in "abcdefghijklmnopqrstuvwxyz".
      xGN     - Index of the letter in the alphabet.
    *d        - Repeat the space a number of times equal to the index above.
   <     tQ   - But crop anything higher than the input.
  +        N  - Append the letter (at the end)

व्याख्या # ३

jm+<*d;tQ@Gd26 - Full program.

 m          26 - Map over [0...26) with a variable d.
    *d;        - Space repeated d times.
   <   tQ      - Crop anything whose length is higher than the input.
  +      @Gd   - Concatenate with the letter at that index in the alphabet.
j              - (Optional): Join by newlines.



1

क्यू / केडीबी +, ३३ ३१ बाइट्स

समाधान:

-1{(&[x-1;til 26]#'" "),'.Q.a};

उदाहरण:

q)-1{(&[x-1;til 26]#'" "),'.Q.a}16;
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

स्पष्टीकरण:

रिक्त स्थान की एक सूची बनाएं (26) इनपुट की न्यूनतम लंबाई और सीमा तक 0..25), वर्णमाला के प्रत्येक अक्षर के साथ जुड़ें, प्रिंटआउट में प्रिंट करें।

-1{(&[x-1;til 26]#'" "),'.Q.a}; / solution
-1                            ; / print result to stdout and swallow return
  {                          }  / lambda function
                         .Q.a   / "abcd..xyz"
                       ,'       / concatenate (,) each
   (                  )         / do all this together
    &[   ;      ]               / minimum of each 
      x-1                       / implicit input (e.g. 10) minus 1 (e.g. 9)
          til 26                / 0 1 2 ... 23 24 25
                   '#" "        / take " " each number of times (0 1 2 )

टिप्पणियाँ:

  • कोष्ठक rejigging द्वारा -2 बाइट्स

1

जावा 1.8 (लैम्बडा के बिना), 98 बाइट्स

void m(int i){int c=0,o=97;String s="";for(;c++<26;s+=c<i?" ":"")System.out.println(s+(char)o++);}

तर्क सीधा है। कोई इनपुट डेटा सत्यापन प्रदान करता है, बहुत बुरा!

  • अपडेट: केवल फ़ंक्शन! @Olivier Grégoire को धन्यवाद

1
कुछ बाइट्स को रोकने के लिए, for(;c++<26;s+=c<i?" ":"")System.out.println(s+(char)o++);इसके अलावा, आप एक पूर्ण कार्यक्रम के बजाय केवल एक फ़ंक्शन, या लंबोदा लिख ​​सकते हैं।
ओलिवियर ग्रेगोइरे

यदि मैं केवल एक समारोह के निकाय को शामिल करने के लिए था, तो पाठक को कैसे पता चलेगा कि क्या a[0]संदर्भित करता है? मुझे लगता है कि अगर वे संकलन नहीं करते हैं तो स्निपेट उचित नहीं हैं; चुनौती सिर्फ निर्माणों से समृद्ध भाषा के साथ दिलचस्प है।
डगलस हेल्ड

1
हैलो! मैंने फंक्शन या लैंबडा कहा, स्निपेट नहीं। ;-) तो आप अपने पूरे कार्यक्रम के बजाय void f(int i){...}(कोई स्थिर जरूरत नहीं) या लिख सकते हैं i->{...}सभी जावा टिप्स देखें । उदाहरण के लिए इसी चुनौती के लिए मेरा जवाब देखें । साइट पर मज़े करो! :-)
ओलिवियर ग्रेगोइरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.