ASCII मेमे एरो जेनरेटर


13

विशेष विवरण

एक संख्या को देखते हुए n, ASCII "मेमे एरो" (अधिक से अधिक प्रतीक >), आकार का आउटपुट n

n हमेशा 0 से अधिक एक धनात्मक पूर्णांक होगा।

उदाहरण

n = 2

\
 \
 /
/

n = 5

\
 \
  \
   \
    \
    /
   /
  /
 /
/

नमूना कोड

यहां एक नमूना कार्यक्रम, जिसे क्रिस्टल में लिखा गया है, जो सही परिणाम देता है। इसे के रूप में चलाएँ ./arrow 10

arrow.cr:

def f(i)
        i.times { |j|
                j.times { print ' ' }
                puts "\\"
        }
        i.times { |j|
                (i-j-1).times { print ' ' }
                puts '/'
        }
end

f(ARGV[0].to_i)

नियम

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

1
क्या आप सुनिश्चित हैं कि यह डुप्लिकेट नहीं है (क्या आपने सैंडबॉक्स किया है)? मुझे लगता है कि यह होने की संभावना है, लेकिन इसे खोजना लगभग असंभव है।
मेरा सर्वनाम जुआन

1
कर सकते हैं nशून्य हो सकता है?
xnor

6
मुझे लगता है कि इस सामान्य प्रतीक को "मेम तीर" कहना बहुत मूर्खतापूर्ण है। वे स्पष्ट रूप से कॉमेडी शेवरॉन हैं।
तितर बितर होना

4
@Christian वे वास्तव में मनोरंजक कोण हैं
dkudriavtsev

1
@ArtemisFowl मुझे लगा कि वे दिलचस्प बढ़ रहे हैं
dkudriavtsev

जवाबों:







4

C64Mini / C64 बेसिक (और अन्य सीबीएम बेसिक वैरिएंट्स), उपयोग किए गए 52 टोकन बेसिक

 0INPUTN:N=N-1:FORI=0TON:PRINTTAB(I)"\":NEXT:FORI=NTO0STEP-1:PRINTTAB(I)"/":NEXT

यहां निर्गमन के लिए गैर-अस्पष्ट संस्करण है:

 0 INPUT N
 1 LET N=N-1
 2 FOR I=0 TO N
 3  PRINT TAB(I);"\"
 4 NEXT I
 5 FOR I=N TO 0 STEP -1
 6  PRINT TAB(I);"/"
 7 NEXT I

कमांड शून्य-अनुक्रमित के Nरूप में कभी भी संख्या को लाइन शून्य में दर्ज किया जाता TABहै; FOR/NEXTलाइनों दो में छोरों चार और पांच के माध्यम से करने के लिए सात तो उत्पादन ऊपरी और निचले हिस्से अगर के माध्यम से memeक्रमशः तीर (एक स्थानांतरित कर दिया द्वारा प्रतिनिधित्व किया Mऔर स्थानांतरित कर दिया Nग्राफिक्स में मोड स्रोत )

कमोडोर C64 मेमे तीर


1
क्या आप जानते हैं कि कमोडोर बेसिक में सभी कीवर्ड संक्षिप्त किए जा सकते हैं? : यहाँ एक लिंक भी है c64-wiki.com/wiki/BASIC_keyword_abbreviation उदाहरण के लिए, forहो सकता है fO( f- shoft o), printहै ?आदि,
gaborsch

1
52 बाइट्स कोड गोल्फ में भ्रामक है, बायनेरिज़ की गिनती नहीं है, बस स्रोत कोड। यह कुछ अलग होना चाहिए: 0inputn:n=n-1:fOi=0ton:?tA(i)"\":nE:fOi=0ton:?tA(i)"/":nE- यह 57 बाइट्स लेता है।
गैबोरच

1
जैसा कि यहां चर्चा की गई है -> codegolf.meta.stackexchange.com/questions/11553/… मैं उपयोग किए गए टोकन गिनाता हूं क्योंकि यह अधिक प्रतिनिधि है कि मेमोरी का कितना उपयोग किया जा रहा है।
शॉन बेबर्स

1
ओह, मुझे यह नहीं पता था। क्या इस बारे में कोई निर्णय है? यहां तक ​​कि जवाब भी स्वीकार नहीं किया गया है।
गाबर्सच

1
मेरा पहला कंप्यूटर एक सी 16 था, मैंने उस पर बहुत सारी असेंबली की, इसलिए कोई अपराध नहीं था, मुझे कमोडोर से प्यार है। C16 में बेसिक 3,5 था, प्रति पंक्ति 80 चार्ट, मेरे पास एक किताब भी थी जिसमें ROM लिस्टिंग बताई गई थी, इसलिए मुझे ठीक से पता था कि कैसे टोकेनाइजेशन और लिस्टिंग काम करती है,
gaborsch

4

मारियोलेन , 719 677 बाइट्स

+
+
+
+
+
+         ((((+)+++++)))<
+>======================"
+)++++++)+++++++++++((-[!)
========================#=-
) ![-    <+;)+++)---)++++)<
)=#======"=================
) >)+)+((!
+ "======#
         <))))).(((((((<
 ========">============"
>)+)+((-[!+))        -[!((((((((.)).))))+(-[!)
"========#=============#====================#<
!)                                          <
#==========================================="
                  >(((((.)))>
                  "========<"========
 ![-)).))).(((((((![-    ))+![-((+)+)<((![<
 #================#=========#========"==#="===
 >                                   !  >-!
 "===================================#  "=#

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

यह उम्मीद से ज्यादा कठिन था ...


4

ब्रेनफक , 125 बाइट्स

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

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

++++++++++[->+>+++++++++>+++<<<]>>++>++>    ; Initialize with " \"
,                                           ; Get input
[->                                         ; loop and decrement n 
    [->+<<<.>>]                             ; output number of spaces, copy n
    <<<.                                    ; output \
    <.                                      ; output newline
    >>>>                                    
    >[-<+>]<+                               ; copy copy of n back to original place 
<]
<<[--<<+>>]<<+>>                            ; change "\" to "/"
>>>                             
[                                           ; second loop for bottom half
 -                                          ; decrement n
 [-<+<.>>]                                  ; output n spaces
 <<<<<.>.                                   ; output \ and newline
 >>>[->+<]>                                 ; copy n back
]

4

रूबी , 111 99 77 73 68 64 57 56 बाइट्स

-12 बाइट्स धन्यवाद बेंजामिन अर्कहार्ट के लिए, -43 मैनटवर्क के लिए और -2 बाइट्स वैल्यू इंक के लिए धन्यवाद ।

->i{s=[];puts (0...i).map{|j|s=(p=' '*j)+?/,*s;p+?\\},s}

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

स्पष्टीकरण:

f=->i{                      # instead of a function, use a lambda
  s=[]                      # needs a helper variable *now*, for scope
  puts(                     # puts takes arbitrary num of args; \n after each
    (0...i).map{|j|         # not from 0 to i but from 0 to i-1 (*three* dots)
      s=(
        p=' '*j             # p will remain in scope inside of .map,
      )
      +?/                   # character literal instead of string
      ,*s                   # essentially appending to the array

      p+?\\                 # p is what's returned by .map, not s!

    },                      # up until here, 1st arg to display
    s                       # NOW, as the *2nd* arg, s is displayed
  )
}

वैकल्पिक (लेकिन लंबे समय तक) समाधान

एक मित्र ने इस उत्तर को पढ़ा और फिर कुछ और दृष्टिकोणों के साथ आने की कोशिश की। उन्हें यहां भी रखा, ताकि वे विशाल इंटरवेब से हार न जाएं।

इंजेक्ट और अनशिफ्ट, 72 बाइट्स

->n{puts (0...n).inject([]){|s,i|i=' '*(n-1-i);s.unshift i+?\\;s<<i+?/}}

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

downto, इंजेक्ट और अनशिफ्ट, 80 बाइट्स

->n{puts n.downto(1).map{|i|' '*(i-1)}.inject([]){|s,i|s<<i+?/;s.unshift i+?\\}}

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

पेचीदा, दो गैर-नेस्टेड छोरों, 127 बाइट्स

->n{
r=->s,c{s[0..-(c+1)],s[-c..-1]=s[c..-1],s[0..c-1];s};
n.times{|i|puts r[' '*n+?\\,n-i]}
n.times{|i|puts r[' '*n+?/,i+1]}
}

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


क्या उस व्हाट्सएप का एक बहुत कुछ नहीं हटाया जा सकता है?
बेंजामिन उर्क्हार्ट

1
हां, कुल 12 बाइट्स, धन्यवाद! यह पहली बार था जब मैंने एक कोड गोल्फ गेम के लिए कुछ भी प्रस्तुत किया ...
सिक्सटीफाइव

तब आपको रूबी में गोल्फिंग के लिए दिलचस्प टिप्स मिल सकते हैं , या यहां तक ​​कि सभी भाषाओं में गोल्फ के लिए टिप्स भी ।
मैनटवर्क

आप String#rjust( यह ऑनलाइन प्रयास करें! ) के साथ पैडिंग के लिए आंतरिक छोरों को बदल सकते हैं ।
मैनटवर्क

यहाँ मैंने उपर्युक्त 2 संग्रहों में से कुछ युक्तियों को इसे 57 वर्णों तक कम करने के लिए लागू किया है: इसे ऑनलाइन आज़माएँ!
मैनटवर्क


3

टी-एसक्यूएल कोड, 80 बाइट्स

DECLARE @ INT=3

,@z INT=0
x:PRINT
space(@-abs(@-@z-.5))+char(92-@z/@*45)SET
@z+=1IF @z<@*2GOTO x

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

टी-SQL क्वेरी, 96 बाइट्स

इस काम को ऑनलाइन करने के लिए मुझे कुछ छोटे फेरबदल करने पड़े। पंक्ति की शुरुआत में रिक्त स्थान ऑनलाइन स्निपेट में प्रदर्शित नहीं होता है। इसलिए मैं ascii 160 का उपयोग कर रहा हूं। प्रबंधन स्टूडियो में चलने पर, परिणाम को पाठ के रूप में दिखाने के लिए सेटिंग्स को बदलना संभव है, जिसके परिणामस्वरूप इस पोस्ट की गई स्क्रिप्ट में सही स्थान होंगे।

DECLARE @ INT=3
SELECT space(@-abs(@-number-.5))+char(92-number/@*45)FROM
spt_values WHERE number<@*2and'p'=type

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



2

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

↘N‖M↓

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

↘N

एक नंबर इनपुट करें और \उस लंबाई के s की एक विकर्ण रेखा प्रिंट करें ।

‖M↓

लाइन को लंबवत परावर्तित करें।


2

एपीएल (एनएआरएस), 40 चार्ट, 80 बाइट्स

{f←{⍺,⍨⍵⍴' '}⋄⊃('\'f¨k),('/'f¨⌽k←¯1+⍳⍵)}

परीक्षा:

  h←{f←{⍺,⍨⍵⍴' '}⋄⊃('\'f¨k),('/'f¨⌽k←¯1+⍳⍵)}
  h 2
\ 
 \
 /
/ 
  h 5
\    
 \   
  \  
   \ 
    \
    /
   / 
  /  
 /   
/    

1

रेटिना 0.8.2 , 32 बाइट्स

.+
$* ¶$&$* 
\G.
¶$`\
r`.\G
$'/¶

इसे ऑनलाइन आज़माएं! स्पष्टीकरण:

.+
$* ¶$&$* 

nरिक्त स्थान की दो लाइनें उत्पन्न करें ।

\G.
¶$`\

शीर्ष रेखा को \विकर्ण में बदल दें।

r`.\G
$'/¶

नीचे की रेखा को /विकर्ण में बदल दें।





1

टहनी, 115 बाइट्स

स्ट्रिंग को पीछे की ओर बनाता है, अंत में इसे "वापस" करता है।

सभी परिणामों को उत्पन्न करने के लिए एक मैक्रो का उपयोग करता है।

{%macro a(N,s="")%}{%for i in N..1%}{%set s=('%'~i~'s
'~s~'%'~i~'s
')|format('\\','/')%}{%endfor%}{{s}}{%endmacro%}

यह मैक्रो एक फ़ाइल में होना चाहिए, और इस तरह से आयात किया जाता है:

{% import 'macro.twig' as a %}

{{ a.a(<value>) }}

आप इसे https://twigfiddle.com/5hzlpz ("कच्चा परिणाम दिखाएं" पर क्लिक करें) पर आजमा सकते हैं ।


1

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

-3 बाइट्स श्रीकोटिलिज्म ओ'जैसिक के लिए धन्यवाद ।

unlines.g
g 0=[]
g n="\\":map(' ':)(g$n-1)++["/"]

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


1
आप के g$n-1बजाय के साथ एक बाइट बचा सकते हैं g(n-1)। तुम भी गिनती करने की आवश्यकता नहीं है f=क्योंकि fकभी भी संदर्भित नहीं होता है।
तदर्थ गार्फ हंटर

1

MATL, 14 13 12 बाइट्स

Xy92*t45-Pvc

1 बाइट ने @LuisMendo को धन्यवाद दिया

व्याख्या

        % Implicitly grab the input as an integer
Xy      % Create an identity matrix this size
92*     % Multiply by 92 (ASCII for '\')
t       % Duplicate the matrix
45-     % Subtract 45 from every element yielding 47 (ASCII for '/') on the diagonal
        % and -45 everywhere else
P       % Vertically flip this matrix
v       % Vertically concatenate the two matrices
c       % Convert to characters (negative numbers are replaced with a space)
        % Implicitly display the result

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


@LuisMendo अपडेटेड! धन्यवाद!
स्वेवर

1

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

lambda n:'\n'.join([' '*i+'\\'for i in range(n)]+[' '*(n+~i)+'/'for i in range(n)])

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

-7 बाइट्स @ @ धन्यवाद का धन्यवाद


83 बाइट्स , लेकिन मुझे लगता है कि यह अभी भी नीचे जा सकता है
स्क्वीड

1
काश यह संभव होता।
आर्टेमिस अभी भी


ओह, मैं उस के बारे में भूल गया था। शायद आपको इसे जमा करना चाहिए!
आर्टेमिस अभी भी एसई

1

रॉकस्टार, 133 बाइट्स

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

F takes N,S
If N is 0
Give back N

Say S+"\"
Let T be S+" "
Let M be N-1
F taking M,T
Say S+"/"

Listen to X
F taking X,""

चूंकि रॉकस्टार स्ट्रिंग संचालन के लिए प्रसिद्ध नहीं है, इसलिए इसे करने के लिए अपेक्षाकृत बहुत सारे कोड लगते हैं (पुनरावृत्ति इससे भी लंबी थी)।

तीर का आकार इनपुट के रूप में लिया जाता है।



1

\ / \ /> , 74 बाइट्स

jp100o
-84*}!o:?!x1
@+:q:p=?x:o~$:0(pa"\/"q?$~}}:
x2-:p$1-y$:0(?
.{suh?!;2

स्पष्टीकरण: (आरंभ बिंदु पर आधारित रेखाएँ घुमाई गई)

jp100o                        //setup
:?!x1-84*}!                   //add leading spaces, loop and decrement until 0
~$:0(pa"\/"q?$~}}:@+:q:p=?x:o //add correct slash, go back to loop or switch sides
$:0(?x2-:p$1-y                //flip direction state or continue to print
{suh?!;2.                     //remove extra data and print stack

1
\/\/> (pronounced wɜrm)धन्यवाद, मुझे इससे नफरत है। (jk, मैं इसे आज़माने के लिए उत्सुक हूँ)
जो किंग

@ जोक हाहाहा, मेरी आस्तीन पर मेरी प्रेरणा है। (धन्यवाद!)
टॉरैडो




0

SimpleTemplate , 100 बाइट्स

यह काफी मजेदार चुनौती थी, लेकिन भाषा में कुछ बगों ने इसे अनुकूलित करना कठिन बना दिया।

{@set_ argv.0}{@while_}{@callstr_repeat intoS" ",_}{@setO S,"\\\n",O,S,"/\n"}{@incby-1_}{@/}{@echoO}

मूल रूप से, साइकल पीछे की ओर से मानों को घुमाती है, बीच से स्ट्रिंग को बाहर निकालती है।


उत्तर कैसा होना चाहिए

बग के कारण, कोड की ठीक से व्याख्या नहीं की जा रही थी।

इस तरह से कोड होगा, यदि कंपाइलर में कोई बग (86 बाइट) नहीं था:

{@forfrom argv.0to0step-1}{@callrepeat intoS" ",_}{@setO S,"\\
",O,S,"/
"}{@/}{@echoO}

ओह, ठीक है, कम से कम समाधान काम करता है: एक्स


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