आर्मिस्टिस डे चैलेंज


28

आज, 11 नवंबर, को स्मरण दिवस , आर्मिस्टिस डे या वेटरन्स डे (देश पर निर्भर करता है) के रूप में जाना जाता है , और सैन्य और उनकी सेवा के सदस्यों के लिए प्रतिबिंब और आभार का दिन है, विशेष रूप से यूरोपीय शत्रुता के अंत को प्रतिबिंबित करने के लिए शुरू किया गया प्रथम विश्व युद्ध में। आइए हम उस पर एक सरल ASCII- कला आउटपुट के साथ प्रतिबिंबित करें 11/11

एक इनपुट को देखते हुए n, उत्पादन का एक ASCII कला गायन 11/11वह यह है कि nइकाइयों लंबा। विशेष रूप से, प्रत्येक 1ऊर्ध्वाधर पाइप ||से बना होता है, स्लैश स्लैश से बना होता है //, और प्रत्येक वर्ण दो स्थानों से अलग होता है। ध्यान दें कि इसका मतलब आउटपुट चौड़ाई अलग-अलग है - उदाहरण के लिए, n=3नीचे के लिए, देखें कि स्लैश का "नीचे" 1उसके बाईं ओर से दो स्थान है , लेकिन 1इसके दाईं ओर से चार रिक्त स्थान हैं , ताकि स्लैश के ऊपर उचित रूप से ऊपर और 1उसके दाईं ओर से दो रिक्त स्थान हैं ।

n = 1
||  ||  //  ||  ||


n = 2
||  ||   //  ||  ||
||  ||  //   ||  ||


n = 3
||  ||    //  ||  ||
||  ||   //   ||  ||
||  ||  //    ||  ||


n = 4
||  ||     //  ||  ||
||  ||    //   ||  ||
||  ||   //    ||  ||
||  ||  //     ||  ||


n = 5
||  ||      //  ||  ||
||  ||     //   ||  ||
||  ||    //    ||  ||
||  ||   //     ||  ||
||  ||  //      ||  ||

और इसी तरह।

इनपुट

एक एकल सकारात्मक पूर्णांक किसी भी सुविधाजनक प्रारूप में , n > 0

उत्पादन

11/11उपरोक्त नियमों और उदाहरणों का अनुसरण करते हुए ASCII- कला का प्रतिनिधित्व । लीडिंग / ट्रेलिंग न्यूलाइन्स या अन्य व्हाट्सएप वैकल्पिक हैं, बशर्ते कि वर्ण उचित रूप से पंक्तिबद्ध हों।

नियम

  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।

जवाबों:


4

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

⁾| Ḥẋ2µ,Ṛðj
⁶ẋṖ;⁾//ṙḶÇ€Y

TryItOnline!

कैसे?

⁾| Ḥẋ2µ,Ṛðj - Link 1, join two "11"s with: middle
⁾|          - string literal: "| "
   Ḥ        - double          "||  "
    ẋ2      - repeat twice    "||  ||  "
      µ     - monadic chain separation
       ,    - pair with
        Ṛ   - reversed       ["||  ||  ","  ||  ||"]
         ð  - dyadic chain separation
          j - join with input "||  ||  middle  ||  ||"

⁶ẋṖ;⁾//ṙḶÇ€Y - Main link: n       e.g. 5
⁶            - literal ' '        ' '
 ẋ           - repeat n times     "     "
  Ṗ          - remove last entry  "    "
   ;         - concatenate with
    ⁾//      - literal "//"       "    //"
        Ḷ    - lowered range(n)   [0,1,2,3,4]
       ṙ     - rotate left        ["    //","   // ","  //  "," //   ","//    "]
         Ç€  - call last link (1) as a monad for €ach
           Y - join with line feeds

21

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

n=>" ".repeat(n).replace(/./g,"||  ||  $'//$`  ||  ||\n")

2
क्या ... मेरे जवाब को भूल जाओ, यह प्रतिभा है। मुझे हर बार पारंपरिक मार्ग पर जाना बंद कर देना चाहिए: P
ETHproductions

वह चालाक है। अच्छा जवाब।
AdmBorkBork

किसी को समझाने $'और $`regex में कर सकते हैं? मैंने पहले कभी नहीं देखा है और इसे बेहतर समझने के लिए प्यार करेगा।
रॉबर्ट हिकमैन

1
@RobertHickman वे मैच के पहले और बाद में स्ट्रिंग के हिस्से को संदर्भित करते हैं ( $&मैच ही होगा)।
नील

@ नील, धन्यवाद! आप हर रोज़ कुछ नया सीखते हैं :)
रॉबर्ट हिकमैन

7

05AB1E , 24 बाइट्स

<ðׄ//J¹FD"  ||"2׊««,À

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

व्याख्या

                          # implicit input n
<ð×                       # push n-1 spaces
   „//J                   # join with "//"
       ¹F                 # input times do:
         D                # duplicate top of stack
          "  ||"2×        # push "  ||  ||"
                  Â       # push "||  ||  "
                   Š      # move the top of the stack down 2 places on the stack
                    ««    # concatenate the top 3 elements of the stack
                      ,   # print with newline
                       À  # rotate top of stack left

पिछला 26 बाइट संस्करण

F"||  "2שð¹N-<ׄ//ðN×®RJ,

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


2
यह तेज़ था!!
AdmBorkBork

" "×"//"«.s¦R"|| || "s«vyû}», पता चला है कि पैलेंंड्रोमाइज एक अच्छा फिट नहीं है, और अधिक स्पष्ट कारणों के लिए ... और आपने किसी भी तरह से तेजी से मेरे बायटेकाउंट को हराया।
मैजिक ऑक्टोपस Urn

6

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

-9 बाइट्स थैंक्स टू @Gabriel Benamy

-nध्वज के लिए कोड + 1 बाइट के 47 बाइट्स ।

say$@="||  "x2,$"x$_,"//",$"x++$.,$@while$_--

-nEझंडे के साथ भागो :

perl -nE 'say$@="||  "x2,$"x$_,"//",$"x++$.,$@while$_--' <<< 5

बदलकर 4 बाइट सहेजें "|| ||"करने के लिए "|| "x2और फिर मोड़ (2+$_)बस में$_
गेब्रियल Benamy

मुझे लगता है कि आप असाइनमेंट के +( .. )आसपास भी छोड़ सकते हैं $@। यह कम से कम मेरे कंप्यूटर पर काम करता है।
गेब्रियल बेनामी

@GabrielBenamy मैं वास्तव में +( .. )धन्यवाद छोड़ सकता हूं । हालांकि मैं नहीं बदल सकते "|| ||"करने के लिए "|| "x2क्योंकि मैं दोनों के बीच रिक्त स्थान की जरूरत है ||
दादा

"|| "पाइपों के बाद दो स्थान हैं (यह किसी कारण से यहां सही ढंग से प्रस्तुत नहीं हो रहा है), और आप उस स्ट्रिंग को डुप्लिकेट कर रहे हैं "|| || "जिसमें से अतिरिक्त 2 रिक्त स्थान का ध्यान रखता है$"x(2+$_)
गेब्रियल बेनामी

@GabrielBenamy ओह धन्यवाद, कि एसई स्वरूपण होगा || जब केवल एक ही जगह थी जब उनमें दो थे।
दादा

5

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

f=(n,i=n)=>i--?`||  ||  ${" ".repeat(i)}//${" ".repeat(n+~i)}  ||  ||
`+f(n,i):""

पुनरावर्ती दृष्टिकोण नहीं हो सकता है संभवतः कम से कम नहीं हो सकता


.map संस्करण (88 बाइट्स):

n=>[...Array(n)].map((_,i)=>`||  ||  ${" ".repeat(n+~i)}//${" ".repeat(i)}  ||  ||`).join`
`

सरणी समझ (86 बाइट्स):

n=>[for(_ of Array(i=n))`||  ||  ${" ".repeat(--i)}//${" ".repeat(n+~i)}  ||  ||`].join`
`

for लूप संस्करण (89 बाइट्स):

n=>{for(a="",i=n;i--;a+=s+" ".repeat(i+2)+`//${" ".repeat(n-i+1)+s}
`)s="||  ||";return a}

.replace संस्करण (85 बाइट्स):

n=>`||  ||  q  ||  ||
`[r="repeat"](n).replace(/q/g,_=>" "[r](--i)+"//"+" "[r](n+~i),i=n)

4

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

.+
$* 
.
xx$'//$`  xx¶
x
||  

मेरे जावास्क्रिप्ट समाधान का पोर्ट। $*दो रिक्त स्थान के बाद और दो रिक्त स्थान पर ध्यान दें ||


3

वी , 30 बाइट्स

4i||  2Bi//  Àé XÀ«ñÄf/é Elx

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

हमेशा की तरह, यहाँ एक हेक्सडंप है:

0000000: 3469 7c7c 2020 1b32 4269 2f2f 2020 1bc0  4i||  .2Bi//  ..
0000010: e920 58c0 abf1 c466 2fe9 2045 6c78       . X....f/. Elx

मुझे लगता है कि आप प्रारंभिक भाग को बदल सकते हैं 5i|| <esc>3b2r/। आप हालांकि थोड़ी अलग जगह पर होंगे, और मैं V नहीं पढ़ सकता इसलिए मुझे यकीन नहीं है कि अगर यह मायने रखता है।
nmjcman101

3

बैच, 130 बाइट्स

@set s=xx//  xx
@set l=@for /l %%i in (2,1,%1)do @call
%l% set s=%%s://= //%%
%l%:l
:l
@echo %s:x=^|^|  %
@set s=%s: //=// %

मेरे जावास्क्रिप्ट समाधान का पोर्ट नहीं। चूँकि |बैच में हेरफेर करना कठिन है, इसलिए मैं xप्लेसहोल्डर के रूप में एस का उपयोग करता हूं और उन्हें आउटपुट पर प्रतिस्थापित करता हूं, यह आसानी से मेरे कोड आकार को भी कम कर देता है। के sलिए वांछित आउटपुट पर सेट करके शुरू होता है n=1( nकमांड लाइन पर पारित किया जाता है), फिर वास्तविक मूल्य के लिए पहली पंक्ति प्राप्त करने के लिए आवश्यक के रूप में रिक्त स्थान सम्मिलित करता है n, फिर स्ट्रिंग को प्रिंट करने और हर बार एक वर्ण द्वारा छोड़े गए स्लेश को शिफ्ट करने से गुजरता है।


3

बाकोन , 71 बाइट्स

एक पंक्ति में एक पूरा बेसिक कार्यक्रम।

INPUT n:FOR x=1 TO n:?"||  ||",SPC$(n-x+2),"//",SPC$(x+1),"||  ||":NEXT

अच्छा! क्या इसमें जगह निकालना संभव है 1 TO?
DLosc

3

आम लिस्प, 216 बाइट्स

मैं बल्ले से सही उतरने जा रहा हूं कि यह चुनौती का एक भयानक समाधान है। फिर भी, यह काम करता है, और मैं थक गया हूँ।

(defun arm (n) (format t "~{||  || ~v,,,vA//~v,,,vA ||  ||~%~}" (butlast (butlast (butlast (butlast (butlast (butlast (loop for i from 1 to (+ n 1) append `(,(- (+ n 1) i) #\Space #\Space ,i #\Space #\Space))))))))))

उपयोग:

* (arm 4)
||  ||     //  ||  ||
||  ||    //   ||  ||
||  ||   //    ||  ||
||  ||  //     ||  ||

किसी कारण से, मैंने कुछ भी करने के बजाय, formatकॉल के अंदर लूप के साथ संपर्क करने का फैसला किया । यह लूप अन्य वास्तविक लूप निर्माण द्वारा लौटाए गए सामग्रियों के माध्यम से बहुत अंत में पुन: प्रसारित होता है , अंतिम छह तत्वों को हटा दिया जाता है (इस प्रकार दोहराया butlastएस)। इस लूप कंस्ट्रक्शन द्वारा लौटाए गए मूल्य की सामग्री में स्लैश के सामने, पेडिंग कैरेक्टर (रिक्त स्थान), स्लैश के पीछे के पैडिंग काउंट और अंत में उसी पैडिंग कैरेक्टर के लिए एक पैडिंग काउंट होता है।

मैं लिस्प के लिए नया हूं, और मैं समझता हूं कि निश्चित रूप से यहां सुधार के लिए बहुत जगह है।


आपको अपने समाधान को गोल करने की कोशिश करनी चाहिए (गैर-मान्यता प्राप्त व्हाट्सएप को समाप्त करना, पहचानकर्ताओं को छोटा करना)
बिल्ली

PPCG में आपका स्वागत है!
AdmBorkBork

3

पायथन 2, 76 75 71 बाइट्स

अभी भी एक छोटे संस्करण पर काम कर रहे हैं, हालांकि बहुत बुरा नहीं है।

n=input()
k='||  ||'
for i in range(n):print k,(n-i)*' '+'//'+' '*-~i,k

धन्यवाद mbomb007 एक त्रुटि को पकड़ने के लिए!


1 बाइट छोटी:x='|| '*2;print x+(n-i)*' '+'//'+' '*i+x[::-1]
mbomb007

@ mbomb007 आपको 11 के बीच दो स्थान चाहिए, न कि 1. यह समान होगा।
Kade

यह सिर्फ एसई इसे गड़बड़ कर रहा है। यह अभी भी एक बाइट कम है। repl.it/EViJ
mbomb007

@ mbomb007 उस repl.it पेज के अनुसार पहले //पंक्ति पर तीन स्थान हैं और //पहली पंक्ति के बाद दो स्थान हैं । यह दोनों मामलों में दो स्थान होना चाहिए।
काडे

तब आपका वर्तमान कार्यक्रम गलत है, क्योंकि वही आपका काम करता है।
mbomb007

2

आर, 86 बाइट्स

बस एक सरल forलूप दृष्टिकोण:

x="||  ||";n=scan();for(i in 1:n)cat(x,rep(" ",2+n-i),"//",rep(" ",1+i),x,"\n",sep="")

2

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

.+
x $&$* //  x
;{:`x
||  ||
   //
  // 

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

व्याख्या

.+
x $&$* //  x

यह इनपुट Nमें बदल जाता है

x S//  x

जहां रिक्त स्थान से Sमेल खाती है N

;{:`x
||  ||

यहां दो चीजें हो रही हैं। ;{:इंगित करता है कि इस चरण और आखिरी को एक लूप में चलाया जाना चाहिए जब तक कि वे स्ट्रिंग को बदलने में विफल न हों। :इंगित करता है कि प्रत्येक पुनरावृत्ति के बाद इस चरण का परिणाम मुद्रित किया जाना चाहिए और ;इंगित करता है कि लूप का अंतिम परिणाम (और इसलिए पूरे कार्यक्रम का) मुद्रित नहीं किया जाना चाहिए । मंच ही पहले xs || ||को पहले पुनरावृत्ति पर बदलता है (और बाद में कुछ नहीं करता है), ताकि हमारे पास अब आवश्यक आउटपुट की पहली पंक्ति हो (और इसे प्रिंट करें)।

   //
  // 

अंत में, यह //एक वर्ण को बाईं ओर स्थानांतरित करता है, बशर्ते कि अभी भी कम से कम तीन स्थान शेष हों //। बाद में हम पिछले चरण में लौटते हैं (जो अब केवल वर्तमान रेखा को प्रिंट करता है, क्योंकि अब और नहीं हैं x) और फिर दोहराएं।




1

रूबी, 76 74 73 बाइट्स

x="||  ||";n=gets.to_i;puts (1..n).map{|i|x+" "*(n-i+2)+"//"+" "*(i+1)+x}

एक फ़ंक्शन के रूप में इसकी परिभाषा को गिनते हुए 73 72 बाइट्स लगते हैं :

def f n,x="||  ||";(1..n).map{|i|x+" "*(n-i+2)+"//"+" "*(i+1)+x}*?\n;end

1

पॉवरशेल, 66 बाइट्स

$a=read-host;1..$a|%{$s="||  ";$s*2+" "*($a-$_)+"// "+" "*$_+$s*2}

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

@DrMcMoylex बस सोच रहा था, मैंने यह जवाब देखा और वही काम करने जा रहा था जो आपने किया था, लेकिन यह कहा कि मैंने अपने संपादन में पर्याप्त बदलाव नहीं किया है। आप यह कैसे कर पाए?
nedla2004

@ nedla2004 एक बार जब आपके पास 1,000 प्रतिष्ठा होती है, (या पूरी तरह से स्नातक की गई साइटों के लिए 2,000) तो आपको पूर्ण संपादन वाले कॉलेज मिलेंगे । तब तक, आपके सभी संपादनों में कम से कम 6 अक्षर होने चाहिए और अन्य उपयोगकर्ताओं द्वारा अधिक प्रतिनिधि के साथ समीक्षा की जाएगी। चूंकि मेरे पास 1,000 से अधिक प्रतिनिधि हैं, इसलिए मुझे तुरंत छोटे संपादन प्रस्तुत करने की अनुमति है।
DJMcMayhem

PPCG में आपका स्वागत है! आप इसके बजाय कमांड-लाइन इनपुट द्वारा कुछ बाइट्स बचा सकते हैं read-host-param($a)1..$a|%{$s="|| ";$s*2+" "*($a-$_)+"// "+" "*$_+$s*2}
AdmBorkBork

स्वागत के लिए धन्यवाद, संपादित करें, और कमांड लाइन सभी सुझाव!
बेन

1

सी #, 150 बाइट्स

golfed:

string A(int n){string a="",b= "||  ||";for(int i=0;i<n;i++)a+=b+"  //  ".PadLeft(5+n-i,'\0')+string.Concat(Enumerable.Repeat(" ",i))+b+"\n";return a;

Ungolfed:

public string A(int n)
{
  string a = "", b = "||  ||";
  for (int i = 0; i < n; i++)
    a += b + "  //  ".PadLeft(5 + n - i, '\0') + string.Concat(Enumerable.Repeat(" ", i)) + b + "\n";
  return a;
}

परिक्षण:

Console.WriteLine(new ArmisticeDayChallenge().A(11));

आउटपुट:

||  ||            //  ||  ||
||  ||           //   ||  ||
||  ||          //    ||  ||
||  ||         //     ||  ||
||  ||        //      ||  ||
||  ||       //       ||  ||
||  ||      //        ||  ||
||  ||     //         ||  ||
||  ||    //          ||  ||
||  ||   //           ||  ||
||  ||  //            ||  ||

1

ग्रूवी, 63 चार्ट / बाइट्स

यहाँ ग्रोवी के साथ मेरा प्रयास है, एक गुमनाम बंद और साधारण लूप का उपयोग करके ASCII कला को मानक आउटपुट में प्रिंट करना:

{n->n.times{println'|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2}}

आप इसे यहाँ ऑनलाइन आज़मा सकते हैं । बस "कंसोल में संपादित करें" और फिर "स्क्रिप्ट निष्पादित करें" पर क्लिक करें।

ऐसा ही करने की कोशिश कर रहा है और मुद्रण के बजाय एक स्ट्रिंग लौटा रहा है, मैं 71 बाइट्स से नीचे नहीं जा सकता:

{n->a='';n.times{a+='|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2+'\n'};a}


0

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

a="||  ||"
def m(n):
    for e in range(n):print(a," "*(n-e),"//"," "*(e+1),a)

फिर भी छोटा करने की कोशिश ...


PPCG में आपका स्वागत है! आप के forरूप में एक ही लाइन पर स्थानांतरित करने में सक्षम हो सकता है def? (इस तरह: def m(n):for e in range(n):print(a," "*(n-e),"//"," "*(e+1),a)) इसके अलावा, आप दो बाइट्स की जगह बचा सकता है (e+1)के साथ -~e
ETHproductions
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.