एक भौतिक गुणन तालिका प्रिंट करें


40

आयतों में यह अच्छी संपत्ति है - एक n×m आयत में बिल्कुल n × m होते हैंn×m अक्षर !

ए .. अधिक दिलचस्प संपत्ति यह है कि आयतों को गुणा तालिका में अच्छी तरह से जोड़ा जा सकता है - उदाहरण के लिए, एक 3×3 तालिका:

# ## ###

# ## ###
# ## ###

# ## ###
# ## ###
# ## ###

आपकी चुनौती है, दिए गए नंबर n ( n>1 ), एक स्वरूपित n × n आउटपुटn×n गुणन तालिका ।

नियम

  • आप इनपुट को ऊपर या नीचे n ले सकते हैंn
  • डिफ़ॉल्ट I / O नियम लागू होते हैं
  • आप ब्लॉकों का प्रतिनिधित्व करने के लिए किसी भी गैर-व्हाट्सएप चरित्र का चयन कर सकते हैं; हर दूसरे किरदार (हालांकि नई-नई खास हैं) को व्हाट्सएप माना जाता है। चुने हुए चरित्र अलग-अलग इनपुट के लिए अलग-अलग हो सकते हैं, लेकिन पूरे इनपुट में समान होना चाहिए
  • परिणाम में अनावश्यक अक्षर हो सकते हैं, जब तक कि तालिका संरेखित हो जाती है और चुने हुए चरित्र की कोई घटना नहीं होती है जो आवश्यक आउटपुट का हिस्सा नहीं होते हैं
  • विभाजक 1 वर्ण चौड़ा / लंबा होना चाहिए, और आयतों को पैक किया जाना चाहिए (अर्थात उनके पात्रों के बीच कोई विभाजक नहीं)
  • खाली लाइनें खाली हो सकती हैं, पैडिंग की आवश्यकता नहीं है
  • परिणाम एक स्ट्रिंग, मैट्रिक्स, लाइनों का वेक्टर, चरित्र सरणियों का सरणी या 2 डी कुछ भी हो सकता है
  • आप वैकल्पिक रूप से एक मैट्रिक्स / वेक्टर-ऑफ-वैक्टर / कुछ भी संख्याओं के 2 डी का उत्पादन कर सकते हैं, लेकिन पृष्ठभूमि और अग्रभूमि में 2 अलग-अलग संख्याएं होनी चाहिए (जो इनपुट के लिए इनपुट भिन्न हो सकते हैं, लेकिन आउटपुट में नहीं) और कोई अन्य संख्या मौजूद नहीं हो सकती है। इस प्रारूप के साथ अतिरिक्त आसपास के पात्रों को भी अनुमति दी जाती है (हालांकि उन्हें पृष्ठभूमि संख्या से मेल खाना चाहिए)
  • यह , बाइट्स, प्रति-भाषा में सबसे छोटा उत्तर, जीत है!

उदाहरण

इनपुट के लिए 2, पात्र के साथ एक मान्य एएससीआई-आर्ट आउटपुट है:

        ∙ ∙∙

Result: ∙ ∙∙.
        ∙ ∙∙

हाँ यह अवधि केवल आपको भ्रमित करने के लिए है
, संख्या मैट्रिक्स के रूप में एक और वैध उत्तर, 2 पृष्ठभूमि संख्या और 9 अग्रभूमि होने के साथ:

[[9,2,9,9,2,2],
 [2,2,2,2,2,2],
 [9,2,9,9,2,2],
 [9,2,9,9,2,2]]

एक अमान्य आउटपुट उदाहरण होगा

#  # #


#  # #

#  # #

आयतों के बीच में विभाजक होते हैं।

4×4 लिए उदाहरण आउटपुट :

# ## ### ####

# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####


1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1

क्या हमारे सामने पृष्ठभूमि के पात्रों की अतिरिक्त पंक्ति / स्तंभ हो सकते हैं, बजाय तालिका के अंत में?
किरिल एल।

@KirillL। निश्चित रूप से, जब तक पंक्तियाँ
पंक्तिबद्ध

2
नाइटपिक: II (U + 2219: BULLET OPERATOR) ASCII वर्ण सेट में मौजूद नहीं है। न ही • (U + 2022: BULLET) या U (U + 22C5: DOT OPERATOR) या · (U + 00B7: MIDDLE DOT) है। :)
एंड्रियास रिब्रांडैंड

जवाबों:


10

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

f n=map=<<flip(map.max)$show.(10^)=<<[1..n]

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

Senrjan जोहान्सन द्वारा एक चतुर दृष्टिकोण, 0 और 1 के साथ आउटपुट करना, प्रत्येक 10...00भाग को 10 की शक्ति के स्ट्रिंग प्रतिनिधित्व के रूप में उत्पन्न करता है।

111111111
101001000
111111111
101001000
101001000
111111111
101001000
101001000
101001000

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

f n=map=<<flip(map.max)$[0^i|x<-[1..n],i<-[0..x]]

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

जैसे पैटर्न [1,0,1,0,0,1,0,0,0,...]बनाता है, फिर minजोड़े बनाकर 2 डी बनाता है । पॉइंटफ्री विचित्रता अधिक पठनीय पर 2 बाइट्स बचाती है:

f n|l<-do x<-[1..n];0:(1<$[1..x])=[[a*b|a<-l]|b<-l]

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


3
यह मेरी पुरानी त्रिकोणीय संख्या चाल के साथ छोटा किया जा सकता है: 43 बाइट्स
shortrjan जोहान्सन

1
बस, एहसास हुआ flip(map.max)=mapM max
अर्जन जोहान्सन

@ DoesrrrJohansen वाह, वह काम कैसे करता है? मुझे लगता है कि आप अपने खुद के जवाब को पोस्ट करने के साथ कर सकते हैं :-)
xnor

(->) bतब, के लिए मठरी सेट करें mapM :: (a -> b -> c) -> [a] -> b -> [c]
अर्जन जोहान्सन

@xnor आप परिवर्तन करना भूल flip(map.max)करने के लिएmapM max
ASCII-केवल

9

आर , 56 54 43 36 30 बाइट्स

x=!!sequence(2:scan())-1;x%o%x

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

n ऊपर एक इनपुट लेता है (इसलिए n=4 लिए 3x3 मैट्रिक्स लौटाता है )। 1s (अग्रभूमि) का एक मैट्रिक्स लौटाता है , और 0s (पृष्ठभूमि) सामने एक अतिरिक्त पंक्ति / स्तंभ के शून्य के साथ।

DigemAll -7 बाइट्स के लिए धन्यवाद।


धन्यवाद, BTW यह शायद 30 भी हो सकता है, अगर अतिरिक्त खाली पंक्ति अंत में होने के बजाय सामने हो सकती है।
किरिल एल।

ओह, वे कर सकते हैं? मैंने यह खो दिया !
डाइजेक्सिल

6

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

1, स्पेस और लाइन फीड से बना स्ट्रिंग लौटाता है।

n=>(g=s=>n-->0?g(s+`${p+=1} `):s[~n]?(+s[~n]?s:'')+`
`+g(s):'')(p='')

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


जावास्क्रिप्ट (ईएस 7),  87 83  82 बाइट्स

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

एक बाइनरी मैट्रिक्स लौटाता है, जिसे सेल द्वारा सेल बनाया जाता है।

n=>[...Array(n*(n+3)/2)].map((_,y,a)=>a.map(h=(z,x)=>(17+8*x)**.5%1&&(z||h(1,y))))

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

कैसे?

मैट्रिक्स की चौड़ाई w द्वारा दी गई है:

w=Tn+n1=(n+12)+n1=n(n+3)21

(NB: चुनौती नियमों द्वारा अनुमति दी गई है, हम इसके बजाय चौड़ाई का एक मैट्रिक्स आउटपुट करते हैं।)w+1

इसी तरह, पर स्थित सेल खाली अगर द्विघात मानते हैं निम्नलिखित या तो के लिए एक पूर्णांक जड़ है या :(X,Y)k=Xk=Y

x(x+3)21k=0x2+3x22k=0

जिसका निर्धारक है:

Δ=94(22k)=17+8k


निश्चित नहीं है कि यह बाइट्स को बचा सकता है, लेकिन उस द्विघात का समाधान , इसलिए यदि कोई पूर्णांक रूट होगा, तो विषम होगा, कि , एक विषम पूर्ण वर्ग है। 3±17+8k2 ΔΔΔ
एर्गेल आउटफर

5

MATL, 14 10 बाइट्स

:"@:Fv]g&*

यह उत्तर 1ब्लॉक और 0पृष्ठभूमि के लिए उपयोग करता है

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

व्याख्या

     % Implicitly grab the input as an integer, N
     %   STACK: { 3 }
:    % Create an array from 1...N
     %   STACK: { [1, 2, 3] }
"    % For each element M in this array
  @: % Create an array from 1...M
     %   STACK (for 1st iteration): { [1] }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3] }
  F  % Push a zero to the stack
     %   STACK (for 1st iteration): { [1], 0 }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2], 0 }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3], 0 }
  v  % Vertically concatenate everything on the stack
     %   STACK (for 1st iteration): { [1; 0] }
     %   STACK (for 2nd iteration): { [1; 0; 1; 2; 0] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0; 1; 2; 3; 0] }
] 
g    % Convert everything to be boolean (turns all non-zeros to 1)
     %   STACK: { [1; 0; 1; 1; 0; 1; 1; 1; 0] }
&*   % Perform element-wise multiplication to expand this array out into the 2D grid
     % Implicitly display the result


4

एपीएल (डायलॉग यूनिकोड) , 12 10 12 बाइट्स एसबीसीएस

∘.×⍨∊,\0,⎕⍴1

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

संपादित करें: ngn से -2 बाइट्स। +2 बाइट्स क्योंकि पिछले उत्तर अमान्य थे (विचार के साथ ngn और dzaima के लिए धन्यवाद)।

व्याख्या

∘.×⍨∊,\0,⎕⍴1

             Take input.
           1  An array of 1s of length our input. Example: 1 1 1
       0,      Prepend a 0. Example: 0 1 1 1
     ,\        Take all the prefixes and concatenate them. Example: 0  0 1  0 1 1  0 1 1 1
              Flatten the list. Example: 0 0 1 0 1 1 0 1 1 1
∘.×⍨           Turn the above list into a multiplication table of 0s and 1s
               by multiplying the list with itself.

आउटपुट जैसा दिखना चाहिए:

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1

1
आप { }
ngn

4

जेली , 7 बाइट्स

‘RÄṬ|þ`

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

01

व्याख्या

‘RÄṬ|þ`
 R       Take a range from 1 to
‘          {the input} plus 1
  Ä      Cumulative sum; produces the first {input}+1 triangular numbers
   Ṭ     Produce an array with 1s at those indexes, 0s at other indexes
     þ   Create a table of {the array}
      `    with itself
    |      using bitwise OR

(x,y)1xy0Rइनपुट में दिए गए सबसे बड़े तत्व पर रुक जाता है, इसलिए हमें दाईं ओर और नीचे की तरफ एक रेखा खींचनी होगी।) त्रिकोणीय संख्याओं के बीच अंतराल लगातार पूर्णांक होते हैं, इसलिए रेखाओं के बीच अंतराल द्वारा आयताकार ब्लॉक समाप्त हो जाते हैं। प्रश्न द्वारा अनुरोध किए गए आकारों के अनुसार; और OR ऑपरेशन (इस मामले में, बिटवाइज़) का उपयोग लाइनों को एक दूसरे को सही ढंग से पार करने की अनुमति देता है।


क्यों यह एक समुदाय विकि है ?! यदि आप रेप को माफ करना चाहते हैं तो आप इसे एग्री द आउटगेलर को दे सकते हैं
जोनाथन एलन

1
मैं अपने सभी उत्तरों को सीडब्ल्यू करता हूं (जब तक कि मुझे नहीं लगता कि उन्हें एक इनाम मिल सकता है, जिस स्थिति में मैं उनके लिए एक अस्थायी खाते का उपयोग करता हूं)। एक उच्च प्रतिष्ठा के लिए आम तौर पर इसका मतलब है कि साइट को बदतर बनाने का लक्ष्य है (यह साबित करने के लिए एक सप्ताह के लिए हर दिन मैंने एक बार दोहराया, यह विशेष रूप से कठिन नहीं था, और फिर भी इसमें बहुत सारे उथले प्रश्न / उत्तर शामिल थे टी वास्तव में साइट पर ज्यादा योगदान देता है)। इसके अतिरिक्त, प्रतिष्ठा प्राप्त करना ज्यादातर खाते पर नकारात्मक है क्योंकि यह साइट को आपके मॉडरेशन कार्य करने में नाग बनाता है; और विशेषाधिकार प्राप्त करने से गलती से बैज प्राप्त करने का जोखिम बढ़ जाता है।
अनीस ५२३

इसके अलावा, मैं ज्यादातर एसई पर पदों के स्वामित्व की अवधारणा से असहमत हूं (हालांकि ज्यादातर सवालों के जवाब के बजाय, लेकिन आप मध्यस्थ सहायता के बिना सीडब्ल्यू को एक सवाल नहीं कर सकते हैं)। एक सीडब्ल्यू मार्कर बहुत स्पष्ट रूप से कहता है "अगर यहां कुछ गलत है, तो इसे संपादित करने के लिए स्वतंत्र महसूस करें"; तो मैं सब कुछ करने के लिए एक सीडब्ल्यू मार्कर लागू करना होगा भले ही यह प्रतिष्ठा माफ नहीं किया। एसई का मतलब हिस्सा विकी होता है, आखिरकार, लेकिन लोग हमेशा इसका इस्तेमाल नहीं करते हैं।
अनीस ५२३

आरई "एक उच्च प्रतिष्ठा के लिए लक्ष्य" यदि आप ऐसा नहीं चाहते हैं, तो बस तब पोस्ट करें जब आपको लगता है कि यह सार्थक है और "उथले" q & a शब्द से बचें। या तो आपको लगता है कि यह उत्तर साइट के लिए कुछ जोड़ता है, जिस स्थिति में यह सीडब्ल्यू के बिना पोस्ट करता है, या आपको लगता है कि यह "उथला" है, जिस स्थिति में बस इसे पोस्ट न करें। आरई "मैं ज्यादातर एसई पर पदों के स्वामित्व की अवधारणा से असहमत हूं" - अच्छी तरह से आप तब गलत साइट पर हैं।
जोनाथन एलन

2
मुझे लगता है कि उत्तर साइट में कुछ जोड़ता है, लेकिन अगर यह सीडब्ल्यू नहीं है, तो मैं इस तरह से पोस्ट करने के लिए मजबूर महसूस करता हूं जो मुझे लगता है कि दिलचस्प होगा पोस्ट करने के बजाय मेरी प्रतिष्ठा हासिल करेगा; जब मैं 20k उपयोगकर्ता था, तो मैंने साइट से वास्तव में नफरत करना समाप्त कर दिया और लगभग सामान्य रूप से कोड गोल्फ से दूर हो गया, इसलिए मैंने परिणामस्वरूप अपना खाता हटा दिया। जब मैं वापस लौटा, तो मैंने अपने हर पोस्ट के साथ अपने अकाउंट को डिलीट कर दिया, जो मैंने पोस्ट किया (अगले उत्तर के लिए एक नया बनाना), लेकिन किसी और ने बताया कि हर उत्तर का CWing एक समान प्रभाव डालेगा, इसलिए आजकल मैं इसके बजाय ऐसा करता हूं।
अनीस 523

4

05AB1E , 9 बाइट्स

fNatList[List[Nat]]

कोड:

$L×0ýSDδ*

05AB1E -encoding का उपयोग करता है । इसे ऑनलाइन आज़माएं! या सुंदर मुद्रित संस्करण का उपयोग करें ।


स्पष्टीकरण:

$ # संख्या 1 पुश करें और इनपुट n 
 L # सूची बनाएं [1, 2, 3, ..., n ]
  × # वेक्टरित स्ट्रिंग गुणन: 1 × [1, 2, 3, ..., n ]
                 इसके परिणामस्वरूप ["1", "11", "111", ..., "1" × n ] होगा
   0ý # परिणाम वाली सूची में '0' के साथ शामिल हों, जिसके परिणामस्वरूप "10110111011110111110 ..."
     S # एकल अंकों में विभाजित: [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, ...]
      D * # गुणा तालिका अपने आप से

4

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 96 95 बाइट्स

-1 बाइट अज्ञानता के अवतार के लिए धन्यवाद

n=>{var l="";for(;n>0;)l=new string('#',n--)+' '+l;for(;n<l.Length;)WriteLine(l[n++]>32?l:"");}

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


यकीन नहीं है कि अगर तर्क के माध्यम से इनपुट लेकिन स्टडआउट के माध्यम से आउटपुट की अनुमति है
ASCII- केवल

3
मिक्स IO प्रारूप ठीक है
जो किंग

1
अनुभाग n--में क्यों नहीं जोड़ा गया new string?
अज्ञानता


3

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

s='';n=input()
while n:s='#'*n+' '+s;n-=1
for c in s:print(c>' ')*s

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

रिक्त लाइनों के लिए रिक्त स्थान प्रिंट करता है, जो चुनौती की अनुमति देता है।

एक ही लंबाई (ऊपर एक इनपुट के साथ n):

r=range(input())
for n in r:print(' '.join(i*'#'for i in r)+'\n')*n

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



3

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

≔⪫EN×#⊕ι θEθ⭆θ⌊⟦ιλ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

   N                Input number
  E                 Map over implicit range
       ι            Current value
      ⊕             Incremented
    ×               Repetitions of
     #              Literal `#`
 ⪫                  Join with spaces
≔        θ          Assign to variable
           θ        Retrieve variable
          E         Map over characters
             θ      Retrieve variable
            ⭆      Replace characters with
              ⌊     Minimum of
               ⟦    List of
                ι   Row character
                 λ  Column character
                    Implicitly print each row on its own line

3

सी # (.NET कोर) , 208 155 बाइट्स

class M{static void Main(string[]a){int i=int.Parse(a[0]);var l="";for(;i>0;)l=new string('#',i--)+' '+l;for(;;)System.Console.WriteLine(l[i++]>32?l:"");}}

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

विभिन्न उपयोगी लोगों (टिप्पणियों को देखें) के लिए बहुत संशोधित संस्करण धन्यवाद।




1
@EmbodimentofIgnorance अमान्य, n> = 10 के लिए काम नहीं करता है ...
केवल


2
@Stackstuck हाँ। किसी प्रोग्राम को क्रैश करके समाप्त करने की अनुमति है
ASCII-only


3

जावा 11, 109 बाइट्स

n->{var l="";for(;n>0;)l="x".repeat(n--)+" "+l;for(;n<l.length();)System.out.println(l.charAt(n++)>32?l:"");}

@ ASCII- केवल सी # .NET उत्तर का पोर्ट ।

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

n->{                       // Method with integer parameter and no return-type
  var l="";                //  Line-String, starting empty
  for(;n>0;)               //  Loop until `n` is 0:
    l=...+l;               //   Prepend to `l`:
       "x".repeat(n--)+" " //    Repeat "x" `n` amount of times, appended with a space
                           //    And decrease `n` by 1 afterwards with `n--`
    for(;n<l.length();)    //   Inner loop as long as `n` is smaller than the length of `l`:
      System.out.println(  //    Print with trailing newline:
        l.charAt(n++)>32?  //     If the `n`'th character of the line-String is NOT a space:
                           //     And increase `n` by 1 afterwards with `n++`
         l                 //      Print the line-String
        :                  //     Else:
         "");}             //      Print nothing (so only the newlines)

यह जावा 11 है, न कि 8, repeatविधि के कारण।
ओलिवियर ग्रेगोइरे

@ ओलिवियरग्रेयर ओह्स .. फिक्स्ड
केविन क्रूज़सेन

हालाँकि, क्या यह एक लैम्बडा के लिए स्वीकार्य है जो एक अपवाद फेंकता है? मैंने सोचा कि यह एक पूर्ण कार्यक्रम के लिए ठीक है, लेकिन फ़ंक्शन / अपवादों के लिए नहीं
ओलिवियर ग्राईगोइरे

@ ओलिवियरग्रेयर जब तक यह अभी भी अपेक्षित परिणाम देता है, मैं नहीं देखता कि tbh क्यों नहीं।
केविन क्रूज़सेन

1
यह इस चर्चा से जुड़ा है । ऐसा लगता है कि यदि REPL को स्वीकार कर लिया गया है (जो कि वे डिफ़ॉल्ट रूप से नहीं हैं), तो यह stderr पर प्रिंट करने या एक अपवाद को फेंकने के लिए ठीक है, लेकिन यदि REPL को स्वीकार नहीं किया जाता है, तो कोई std / अपवाद की अनुमति नहीं है।
ओलिवियर ग्रेगोइरे

2

एपीएल + विन, 29 बाइट्स

m/⍉(m←¯1↓∊(⍳n),¨¯1)/(n,n←⎕)⍴1

स्पष्टीकरण:

(n,n←⎕)⍴1 prompt for integer n and create a nxn matrix of 1s

(m←¯1↓∊(⍳n) replicate the columns by 1,2,.....n and insert 0s between each replication

m/⍉ repeat replication and 0 insertion for the rows from above 

उदाहरण:

⎕:
3
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1



2

रूबी , 55 बाइट्स

->n{(s=(1..n).map{|x|?#*x}*' ').chars.map{|c|c<?!?c:s}}

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

कैसे?

सबसे पहले, पहली पंक्ति बनाएं, फिर उसके वर्णों के माध्यम से पुनरावृति करें। यदि चरित्र '#' है तो पूरी पंक्ति को प्रिंट करें, अन्यथा एकल वर्ण (जो एक स्थान है) को प्रिंट करें



2

पर्ल 6 , 35 33 बाइट्स

{((\*Xx$_+1)~"
"Xx$_+1)>>.say}o^*

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

अनाम कॉलिबल जो एक संख्या लेता है और गुणन तालिका को *अनुगामी नई रेखा के साथ प्रिंट करता है ।

स्पष्टीकरण:

{                             }o^* # Change the input to the range 0..n-1
  (\*Xx$_+1)    # Cross string multiply '*' by all of range 1..n
                # This creates the string "* ** *** ****" etc.
            ~"\n"                 # Append a newline
                 Xx$_+1           # Cross string multiply again
 (                     )>>.say    # And print all the lines

1

हास्केल, 69 68 बाइट्स

(a#b)0=[]
(a#b)n=(a#b)(n-1)++b:(a<$[1..n])
f n=((1#0)n#(0<$(1#0)n))n

संख्याओं का एक मैट्रिक्स लौटाता है।

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

fएक ही बाइट गिनती के साथ भिन्न :

f n=((#)<*>(0<$)$(1#0)n)n
f n|l<-(1#0)n=(l#(0<$l))n

क्या 0 पंक्ति और स्तंभ मदद करते हैं?
dfeuer

1
@ निर्माता: हाँ, वे एक बाइट बचाते हैं। मेरे उत्तर का पहला संस्करण देखें।
नीमी


1

मठगोल्फ , 20 बाइट्स

╒ÉÄ10;]h\■mÆε*╣¡§y╠n

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

MathGolf को वास्तव में सूचियों को विभाजित करने और 2D सूची बनाने के लिए कुछ और कार्यक्षमता प्राप्त करने की आवश्यकता है।

व्याख्या

╒                      range(1,n+1)
 É                     start block of length 3
  Ä                    start block of length 1
   1                   push 1
    0                  push 0
     ;                 discard TOS
      ]                end array / wrap stack in array
                       the stack now contains the list [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, ...]
       h               length of array/string without popping (used for splitting string)
        \              swap top elements
         ■             cartesian product with itself for lists, next collatz item for numbers
          m            explicit map
           Æ           start block of length 5
            ε*         reduce list by multiplication (logical AND)
              ╣¡       push the string " #"
                §      get character at index 0 or 1 based on logical AND value
                       block ends here, stack is now ['#',' ','#','#',' ','#',...]
                 y     join array without separator to string
                  ╠    pop a, b, push b/a (divides the string using the length of a single line)
                   n   join array of strings with newlines

1

इंक , 151 152 151 बाइट्स

VAR k=0
=t(n)
~k=n
-(u)
~n--
{n+1:->s(k-n)->u}->->
=r(c)
->g(c)->
{k-c:<>->r(c+1)}->->
=g(n)
{n>1:@<>->g(n-1)}@->->
=s(n)
{n:
->r(1)->
->s(n-1)
}
.->->

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

अच्छी बात है कि नियम अतिरिक्त वर्णों को अनुमति देते हैं।

संपादित करें: +1: निश्चित रिक्ति। इसके अलावा, # (जो करता है) का उपयोग करके प्रदर्शन (जिसमें भागने की आवश्यकता नहीं है)

संपादित करें: -1: स्पष्ट रूप से यह भी तय करता है कि मुझे अब गैर-रिक्त लाइनों पर एक नई पंक्ति को लागू करने के लिए एक अनुगामी अवधि की आवश्यकता नहीं है। साफ।


ओह, मैंने वास्तव में उन स्थानों को नोटिस नहीं किया था। मैं देखूंगा कि क्या मैं उनके बारे में कुछ कर सकता हूं ...
सारा जे


0

स्माइलबासिक, 83 77 बाइट्स

आलेखीय उत्पादन। इनपुट हैN-1

INPUT N
FOR J=0TO N
X=0FOR I=0TO N
GFILL X,Y,X+I,Y+J
X=X+I+2NEXT
Y=Y+J+2NEXT

0

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

जो किंग से -5 बाइट्स

n,l=range(int(input())),''
for i in n:l+='#'*-~i+' '
for j in n:print((l+'\n')*-~j)

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


आप lलूप के बाहर की घोषणा करके बाइट्स बचा सकते हैं । इसे ऑनलाइन आज़माएं!
जो किंग

@JonathanFrech के न्यूलाइन स्ट्रिंग में एक अतिरिक्त जगह है
जो किंग

0

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

{(1..$_).map(((1..$_).map("#"x*).join(" ")~"\n")x*).join("\n")}

1
.join(' ')इसके बजाय कुछ भी नहीं '#'हो सकता \*है, न्यूलाइन स्ट्रिंग्स शाब्दिक newlines का उपयोग कर सकते हैं, दोनों इसके बजाय l.map(str x*)हो सकते हैं (str Xx l)38 बाइट्स
जो किंग

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