द जेलहाउस नाउ में


18

चुनौती

एक पूर्णांक n(जहां 4<=n<=10**6) इनपुट के रूप में एक ASCII कला "जेल का दरवाजा" बनाने के लिए दिए गए हैं। नीचे दिए गए उदाहरण से प्रतीकों का उपयोग करके n-1वर्णों को विस्तृत और nवर्णों को मापना ।


उदाहरण

╔╦╗
╠╬╣
╠╬╣
╚╩╝

उपयोग किए गए वर्ण इस प्रकार हैं:

┌───────────────┬─────────┬───────┐
│ Position      │ Symbol  │ Char  │
├───────────────┼─────────┼───────┤
│ Top Left      │    ╔    │ 9556  │
├───────────────┼─────────┼───────┤
│ Top           │    ╦    │ 9574  │
├───────────────┼─────────┼───────┤
│ Top Right     │    ╗    │ 9559  │
├───────────────┼─────────┼───────┤
│ Right         │    ╣    │ 9571  │
├───────────────┼─────────┼───────┤
│ Bottom Right  │    ╝    │ 9565  │
├───────────────┼─────────┼───────┤
│ Bottom        │    ╩    │ 9577  │
├───────────────┼─────────┼───────┤
│ Bottom Left   │    ╚    │ 9562  │
├───────────────┼─────────┼───────┤
│ Left          │    ╠    │ 9568  │
├───────────────┼─────────┼───────┤
│ Inner         │    ╬    │ 9580  │
└───────────────┴─────────┴───────┘

नियम

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

परीक्षण के मामलों

Input: 4
Output:
╔╦╗
╠╬╣
╠╬╣
╚╩╝

Input: 8
Output:
╔╦╦╦╦╦╗
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╚╩╩╩╩╩╝

Input: 20
Output:
╔╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╗
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╚╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╝

* हाँ, मैं जानता हूँ कि यह जितना बड़ा होगा उतना ही यह जेल के दरवाजे जैसा दिखता है! : डी


4
यह अच्छा होता यदि आप x और y दोनों आयामों पर इनपुट कर सकते
बीटा डेके

15
यह सैंडबॉक्स में था कि आपको सुझाव देने के लिए पर्याप्त से अधिक लंबे समय तक था।
शैगी

क्या मेरे कार्यक्रम में भी गर्त नहीं हो सकता है? यदि नहीं, तो "'Z“ζएक बाइट लागत (या 2) के रूप में अनुमत है? (9580 धक्का, यूनिकोड में परिवर्तित)?
द्विजिमा

@dzaima इस चुनौती के प्रयोजनों के लिए, उन भाषाओं में जहाँ "डोर" के लिए उपयोग किए जाने वाले प्रतीकों में कई बाइट्स होते हैं, उन्हें एक-एक बाइट के रूप में आपके स्कोर की ओर गिना जा सकता है।
ओकेक्स

@ ओएक्सएक्स `--` - किसी भी बाइट राशि में दोहराए जाने योग्य नहीं, "'Z“ζएक बाइट की बराबरी करना जावास्क्रिप्ट "╬"1 बाइट की तरह होगा
dzaima

जवाबों:


9

जावा 8, 156 151 148 118 बाइट्स

n->{String a="╔",b="╠",c="╚";for(int i=n;i-->3;a+="╦",b+="╬")c+="╩";a+="╗\n";for(b+="╣\n";n-->2;)a+=b;return a+c+"╝";}

-30 बाइट्स @raznagul C # (.NET Core) उत्तर का एक पोर्ट बनाकर , जब मैं 5 बाइट्स के बाद घूमा करता हूं।

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

पुराना 148 बाइट उत्तर:

n->{String r="╔";int i=n,j;for(;i-->3;r+="╦");r+="╗\n╠";for(i=n;i-->2;r+="╣\n"+(i>2?"╠":"╚"))for(j=n;j-->3;r+="╬");for(;n-->3;r+="╩");return r+"╝";}

-5 बाइट्स @raznagul की बदौलत

स्पष्टीकरण:

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

n->{                   // Method with integer parameter and String return-type
  String r="╔";        //  Result String (starting with the top-left corner)
  int i=n,j;           //  Indexes `i` and `j`
  for(;i-->3;          //  Loop (1) `n`-3 times:
      r+="╦"           //   Append result with top edges
  );                   //  End of loop (1)
  r+="╗\n╠";           //  Append result with the top-right corner, new-line and left edge
  for(i=n;i-->2        //  Loop (2) `n`-2 times
      ;                //     After every iteration:
      r+="╣\n"         //   Append result with right edge and new-line
      +(i>2?"╠":"╚"))  //    + either the left edge or bottom-left corner
    for(j=n;j-->3;     //   Inner loop (3) `n`-3 times:
        r+="╬"         //    Append result with middle section
    );                 //   End of inner loop (3)
                       //  End of loop (2) (implicit / single-line body)
  for(;n-->3;          //  Loop (4) `n`-3 times:
    r+="╩"             //   Append result with bottom edges
  );                   //  End of loop (4)
  return r+"╝";        //  Return result with its bottom-right corner
}                      // End of method

क्या आप हार्डकोडिंग के बजाय भागने / चार कोड वाले किसी भी बाइट को बचा सकते हैं?
TheLethalCoder

@ TheLethalCoder शायद, लेकिन चुनौती नियम राज्य के बाद से हम प्रतीकों को 1 बाइट के रूप में गिन सकते हैं, यह संभवतः इस तरह छोटा है (इसलिए वास्तविक 176 के बजाय 156 बाइट-गिनती)। लेकिन चार-कोड के साथ इसे कम करने के लिए कुछ चीजों की कोशिश करने के लिए स्वतंत्र महसूस करें।
केविन क्रूज़सेन

आह मुझे नियमों का वह हिस्सा याद आ गया।
TheLethalCoder

2
+1 को ( -->) ऑपरेटर को जाता है ।
raznagul

1
यदि आप उपयोग करते हैं i-->3, i-->2और j-->3´ you can save 5 bytes by removing the n- = 3` और n+1
raznagul

7

चारकोल , 34 - 5 = 29 बाइट्स

A⁻N³γUB╬↓×╠γ╠¶╚×╩γ‖BOγ‖BO↑⁺γ

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

ReflectOverlapOverlap(0)ReflectMirror()इसके बराबर होना चाहिए लेकिन इसके बजाय चारकोल सिर्फ एक करता है ReflectTransform(), अन्यथा यह समाधान भी काम करेगा n=3। यहां एक वर्कअराउंड दिखाया गया है जो बताता है कि n=338 - 5 = 33 बाइट्स के लिए क्या होगा :

A⁻N³γUB╬↓×╠γ╠¶╚×╩γ¿γ‖BOγ‖M‖BO↑⁺γ¹

बेहतर अभी भी, अगर ReflectOverlapOverlap(0)काम किया गया, लेकिन मैंने समर्थन करने की जहमत नहीं उठाई n=3, तो मैं इसे 31 - 4 = 27 बाइट्स के लिए कर सकता था:

A⁻N³γUB╬↓×╠γ╚×╩γ‖BOγ‖BO↑⁻γ¹

1
हम्म, नहीं पता था कि चारकोल भी / और इस तरह / दर्पण को दर्शाता है । " चारकोल का बाइट-काउंटर किसी कारण से काम नहीं कर रहा है। " हो सकता है कि चारकोल का बाइट-काउंटर काम न कर रहा हो क्योंकि वे पात्र इसके कोड-पेज का हिस्सा नहीं हैं? आप उन्हें चुनौती नियमों के अनुसार 1 बाइट के रूप में गिन सकते हैं, इसलिए यह वास्तव में 27 है।
केविन क्रूज़सेन

@ केविनक्रूजसेन यह निर्भर करता है कि आप किस ऑपरेटर का उपयोग करते हैं। (मुझे हर बार वापस जाना है और डबल-चेक करना है; उनमें से कई हैं और यह भ्रमित हो जाता है ...)
नील

@ नील उप्स, यह एक बग है, ASAP को ठीक करेगा। इसे खोजने के लिए धन्यवाद!
एएससीआईआई-केवल

@ नील भी किसी कारण से टूट गया है जब n = 4
केवल



6

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

w i(a:b:c)=a:(b<$[4..i])++c
f n=concat$w(n+1)$w n<$>["╔╦╗\n","╠╬╣\n","╚╩╝"]  

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

समारोह wएक पूर्णांक लेता है iऔर एक सूची जहां aपहला है, bदूसरा तत्व और cसूची के बाकी एक नई सूची में आता है a, के बाद i-3की प्रतियां b, जिसके बाद cwसूची के प्रत्येक तत्व पर पहले लागू करें ["╔╦╗\n","╠╬╣\n","╚╩╝"]और फिर परिणामी सूची पर (साथ में iवृद्धि के साथ 1)। एक सूची में सम्‍मिलित करें।


<$ ऑपरेटर क्या है? क्या यह सिर्फ >> तर्कों के साथ फड़फड़ा गया है?
अनीश दुर्ग

@AneeshDurg: <$मूल रूप से है Data.Functorऔर इसमें डाल दिया गया है Prelude। यह लगभग वैसा ही है >>a <$ bमें हर तत्व की जगह bके साथ a, जबकि b >> aउम्मीद aकी एक सूची और संयोजित लंबाई होने के लिए bकी प्रतियां a[1,2] >> "aa"-> "aaaa", "aa" <$ [1,2]-> ["aa","aa"]। नोट: 'x' <$ [1,2]के बराबर होती है [1,2] >> "x"
नीम

5

विम, 29 बाइट्स

3<C-x>C╔╦╗
╠╬╣
╚╩╝<Esc>h<C-v>kkx@-Pjyy@-p

चूंकि नियंत्रण वर्ण हैं, यहाँ एक xxd डंप है:

00000000: 3318 43e2 9594 e295 a6e2 9597 0de2 95a0  3.C.............
00000010: e295 ace2 95a3 0de2 959a e295 a9e2 959d  ................
00000020: 1b68 166b 6b78 402d 506a 7979 402d 70    .h.kkx@-Pjyy@-p

इसे ऑनलाइन आज़माएं! (वी दुभाषिया में विदेशी पात्रों के साथ मुद्दे हैं, इसलिए यह लिंक अधिक सांसारिक का उपयोग करता है।)

व्याख्या

3<C-x>     " Decrement the number by 3
C╔╦╗
╠╬╣
╚╩╝<Esc>   " Cut the number (goes in @- register) and enter the "template"
h<C-v>kkx  " Move to the middle column, highlight and cut it
@-P        " Paste @- copies of the cut column
jyy        " Move to the middle line and copy it
@-p        " Paste @- copies of the copied line

पुष्टि करने के लिए: क्या यह केवल TIO दुभाषिया है जो प्रतीकों पर घुट रहा है?
झबरा

@ शैगी हाँ, यह लैटिन -1 के बारे में पायथन त्रुटि फेंकता है, न कि विम त्रुटि। (मैंने V पृष्ठ का उपयोग सिर्फ इसलिए किया क्योंकि TIO में एक सादा Vim पृष्ठ नहीं है, और मुझे लगता है कि V ने लैटिन -1 का उपयोग किया है।) मेरी मशीन पर Vim में वर्णों के साथ कोई समस्या नहीं है।
जॉर्डन

5

GNU sed, 74 + 1 = 75 बाइट्स

-rझंडे के लिए +1 बाइट । इनपुट को एक संख्या के रूप में लेता है।

s/1111(1*)/╔╦\1╗\n;\1╠╬\1╣\n╚╩\1╝/
:
s/(.)1/\1\1/
t
s/;([^;\n]+)/\1\n\1/
t

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

व्याख्या

यह बहुत आसान है। मान लीजिए इनपुट 6 है (unary 111111)। पहली पंक्ति चार 1एस को गिराती है और शेष इनपुट को इसमें बदल देती है:

╔╦11╗
;11╠╬11╣
╚╩11╝

तीसरी पंक्ति, एक लूप में, हर 1वर्ण को पूर्ववर्ती के साथ बदल देती है। यह हमारे कॉलम बनाता है:

╔╦╦1╗
;11╠╬11╣
╚╩11╝

╔╦╦╦╗
;11╠╬11╣
╚╩11╝

...

╔╦╦╦╗
;;;╠╬╬╬╣
╚╩╩╩╝

गौर करें कि इसने भी ;चरित्र की नकल की है। अंत में, पांचवीं पंक्ति, एक लूप में, प्रत्येक ;वर्ण को उस पंक्ति की एक प्रति के साथ बदल देती है जो इस प्रकार है:

╔╦╦╦╗
;;╠╬╬╬╣
╠╬╬╬╣
╚╩╩╩╝

╔╦╦╦╗
;╠╬╬╬╣
╠╬╬╬╣
╠╬╬╬╣
╚╩╩╩╝

╔╦╦╦╗
╠╬╬╬╣
╠╬╬╬╣
╠╬╬╬╣
╠╬╬╬╣
╚╩╩╩╝

4

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

... क्या यह 33 है? - यह एक बाइट स्ट्रिंग शाब्दिक (कोड पृष्ठ अनुक्रमित) से यूनिकोड वर्णों में परिवर्तित करने के लिए 5 खर्च करता है।

_2µ“€ðБẋ“¡Ø¤“©ßµ‘js3x€2¦€’+⁽"7ỌY

एक पूर्ण कार्यक्रम परिणाम को मुद्रित करता है।

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

कैसे?

_2µ“€ðБẋ“¡Ø¤“©ßµ‘js3x€2¦€’+⁽"7ỌY - Main link: n
_2                                - subtract 2
  µ                               - start a new monadic chain with n-2 on the left
   “€ðБ                          - code page indexes [12, 24, 15] (middle row characters)
        ẋ                         - repeat n-2 times (make unexpanded middle rows)
         “¡Ø¤“©ßµ‘                - code page indexes [[0,18,3],[6,21,9]] (top & bottom)
                  j               - join (one list: top + middles + bottom)
                   s3             - split into threes (separate into the unexpanded rows)
                          ’       - decrement n-2 = n-3
                        ¦€        - sparsely apply to €ach:
                       2          -   at index 2
                     x€           -   repeat €ach (expand centre of every row to n-3 chars)
                            ⁽"7   - literal 9556
                           +      - addition (0->9556; 12->9568; etc...)
                               Ọ  - cast to characters (╠; ╔; etc...)
                                Y - join with newlines
                                  - implicit print

@ शैगी - स्ट्रिंग स्ट्रिंगल के अंदर वर्णों का प्रतिनिधित्व करने के लिए मैं 9 बाइट्स का उपयोग कर रहा हूं - ये कोड पेज इंडेक्स हैं। Yअंत में 5 बाइट्स से पहले +⁽"7Ọ, 9556 को जोड़ा जाता है और फिर वर्णों में डाला जाता है। क्या वे (5) स्वतंत्र हैं? मुझे लगता है कि मैं यूनिकोड वर्णों का सीधे उपयोग कर सकता हूं, ऐसा ही होगा। (मैं कोड पेज इंडेक्स के बजाय वास्तविक पात्रों का उपयोग कर सकता हूं और अधिक बाइट्स के लिए मैपिंग का उपयोग कर सकता हूं)।
जोनाथन एलन

नहीं। चर्चा के बाद, यह निष्कर्ष निकाला गया कि केवल चार को ही हमेशा 1 के रूप में गिना जा सकता है, किसी अन्य प्रतिनिधित्व को नहीं।
आउटगोल्फर

3

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

n=int(input())-3
print("╔"+"╦"*n+"╗\n"+("╠"+"╬"*n+"╣\n")*-~n+"╚"+"╩"*n+"╝")

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


आप इसे थोड़ा-थोड़ा करके शुरू कर सकते हैं n-3:n=int(input())-3;print("╔"+"╦"*n+"╗\n"+("╠"+"╬"*n+"╣\n")*(n+1)+"╚"+"╩"*n+"╝")
केविन क्रूज़सेन

के n+1बराबर भी है -~n
लीक नून

3

डायलॉग एपीएल, 71 बाइट्स

{('╔',('╠'⍴⍨⍵-2),'╚'),((⍵-3)\⍪('╦',('╬'⍴⍨⍵-2),'╩')),'╗',('╣'⍴⍨⍵-2),'╝'}

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


आप निश्चित रूप से इसे गोल्फ कर सकते हैं। उदाहरण के लिए आप हमेशा जगह ले सकता है (some expr)f Yके साथ Y f⍨ some expr
अदम

@ मुझे पता है, यह प्रगति पर है, मैं वर्तमान में कंप्यूटर पर नहीं हूँ
Uriel

3

जाप , 60 52 49 48 36 बाइट्स

"╔{Uµ3 ç'╦}╗{UÄ ç"
╠{ç'╬}╣"}
╚{ç'╩}╝

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

एक और संस्करण (47 बाइट्स + -Rध्वज)

"8{Uµ3 ç'J};{UÄ ç"D{ç'P}G"}>{ç'M}A"c_+9500ÃòU+2

-Rध्वज की आवश्यकता है (इनपुट फ़ील्ड में जोड़ा गया)। इसे ऑनलाइन आज़माएं!

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

क्योंकि मैंने मूल रूप से एक से अधिक बाइट के लिए 'डोर-कैरेक्टर्स' की लागत का अनुमान लगाया था, मुझे लगा कि मैं उन्हें एन्कोडिंग करके कुछ बाइट्स बचा सकता हूं। फिर, मैंने 9500 को वर्ण कोड से घटा दिया, जिसने मुझे पात्रों के साथ छोड़ दिया 8J; DPG >MA, जिसकी लागत केवल एक बाइट थी। तब, मैं प्रत्येक वर्ण कोड में सिर्फ 9500 जोड़ सकता था, और सब ठीक होगा।

 "8{   Uµ 3 ç'J}  ;{   UÄ  ç"D{   ç'P}  G"}  >{   ç'M}  A"c_+9500Ã òU+2
 "8"+((U-=3 ç'J)+";"+((U+1 ç"D"+(Uç'P)+"G")+">"+(Uç'M)+"A"c_+9500} òU+2
 "8"+           +";"+                      +">"+      +"A"              # Take this string of characters
     ((U-=3 ç'J)                                                        # Repeat "J" input - 3 times
                     ((    ç              )                             # Repeat the string
                            "D"+(Uç'P)+"G"                              # "D" + input-3 times "P" + "G"
                       U+1                                              # Input - 2 times
                                                (Uç'M)                  # Repeat "M" input - 3 times
                                                          c_     }      # Take the character code of every character
                                                            +9500       # Add 9500 to it
                                                          c_     }      # And convert it back to a character
                                                                   òU+2 # Split this string on every (input)th character
                                                                        # Print the resulting array, joined with newlines.

ओह, हाँ, तुम सही हो।
ल्यूक



2

स्विफ्ट, 161 बाइट्स

let f:(String,Int)->String={String(repeating:$0,count:$1)};var p={i in print("╔\(f("╦",i-3))╗\n\(f("╠\(f("╬",i-3))╣\n",i-2))╚\(f("╩",i-3))╝")}

संयुक्त राष्ट्र के golfed:

let f:(String,Int)->String = {
    String(repeating:$0,count:$1)
}
var p={ i in
    print("╔\(f("╦",i-3))╗\n\(f("╠\(f("╬",i-3))╣\n",i-2))╚\(f("╩",i-3))╝")
}

आप यहाँ इस उत्तर को आज़मा सकते हैं


2

QBIC , 78 बाइट्स

[:-3|X=X+@╦`]?@╔`+X+@╗`[b-2|Y=Z[b-3|Y=Y+@╬`]?@╠`+Y+@╣`}[b-3|W=W+@╩`]?@╚`+W+@╝`

सौभाग्य से, बाहर सेल दरवाजे में इस्तेमाल किए गए सभी प्रतीकों QBasic कोडपेज पर हैं।

व्याख्या

            The TOP
[:-3|       FOR a = 1 to n-3 (-1 for the width, -2 for beginning and end)
X=X+@╦`]    Build out X$ with the parts of the middle-top
?@╔`+X+@╗`  Then print that preceded and followed by the corners
┘           Syntactic linebreak

            The MIDDLE
[b-2|       FOR c = 1 to n-2 (all the middle rows)
Y=Z         Reset Y$ to ""
            Build up the middle rows in the same way as the top,
            just with different symbols and once for each middle row
[b-3|Y=Y+@╬`]?@╠`+Y+@╣`
}           Close the FOR loop
            The BOTTOM
            The same as the top, just with different symbols
[b-3|W=W+@╩`]?@╚`+W+@╝`

नमूना आउटपुट

Command line: 7

╔╦╦╦╦╗
╠╬╬╬╬╣
╠╬╬╬╬╣
╠╬╬╬╬╣
╠╬╬╬╬╣
╠╬╬╬╬╣
╚╩╩╩╩╝

1
एक भाषा का उपयोग करने के लिए +1 जो वास्तव में उनके डिफ़ॉल्ट कोड पृष्ठ में एक बाइट चार्ट के रूप में है।
जोशुआ

क्या आप एक TIO (या समतुल्य) जोड़ सकते हैं?
झबरा

@ शैगी कोडगुल्फ.स्टैकएक्सचेंज. com/ questions/ 125237/…
स्टेनबर्घ

1
अरे हां! मुझे याद होगा कि आखिरकार, मैं वादा करता हूँ! : डी
झबरा

@ अच्छी तरह से, विचार करने के लिए भी इस्तेमाल नहीं मिलता है। मुझे बस QBasic पर चलने वाले Dosbox का वर्किंग Emscripten-build मिला। मैं आने वाले महीने में QBIC की ओर गियर करने की कोशिश करूँगा, इसलिए एक वेब एनवी अभी तक आ सकता है ...
steenbergh

2

PHP , 131 बाइट्स, 113 वर्ण

for($z=str_split("╔╠╚╦╬╩╗╣╝",3);$i<$a=$argn;)echo str_pad($z[$b=$i++?$i<$a?1:2:0],3*$a-3,$z[$b+3]),$z[$b+6],"\n";

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

PHP , 133 बाइट्स, 115 वर्ण

for(;$i<$a=$argn;)echo str_pad(["╔","╠","╚"][$b=$i++?$i<$a?1:2:0],3*$a-3,["╦","╬","╩"][$b]),["╗","╣","╝"][$b],"\n";

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


2

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

यह अन्य जेएस उत्तर की तुलना में काफी लंबा है , लेकिन मैं इसे वैकल्पिक पद्धति के साथ आजमाना चाहता था।

n=>(g=i=>--i?`╬╣╠╩╝╚╦╗╔
`[(j=i%n)?!--j+2*!(n-j-2)+3*(i<n)+6*(i>n*n-n):9]+g(i):'')(n*n)

कैसे?

हम ग्रिड के प्रत्येक किनारे पर एक वजन असाइन करते हैं: 1 दाएं के लिए, 2 बाएं के लिए, 3 नीचे के लिए और 6 शीर्ष के लिए। भार का योग चरित्र के सूचकांक को उपयोग करने के लिए देता है।

8666667    0 1 2 3 4 5 6 7 8
2000001    ╬ ╣ ╠ ╩ ╝ ╚ ╦ ╗ ╔
2000001
2000001
2000001
2000001
2000001
5333334

डेमो


2

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

n=>`╔${"╦"[a="repeat"](n-=3)}╗${`
╠${"╬"[a](n)}╣`[a](n+1)}
╚${"╩"[a](n)}╝`

आप इस 80 बाइट को बनाते हुए प्रतीकों को एक बाइट के रूप में गिन सकते हैं। और आपको कुछ बाइट्स को बचाने के लिए टेम्पलेट शाब्दिक का बेहतर उपयोग करने में सक्षम होना चाहिए;)
झबरा

आप केवल प्रतीकों को एक बाइट के रूप में गिन सकते हैं यदि आप ईएस 6 कार्यान्वयन पा सकते हैं जो सीपी 437 इनपुट को मूल रूप से ले जाएगा।
user5090812

@ user5090812, यह इस चुनौती के लिए विशिष्ट भत्ता है।
झबरा

@ user5090812 को उस कार्यान्वयन को खोजने की आवश्यकता नहीं है, क्योंकि चुनौती नियम बताती है " इस चुनौती के प्रयोजनों के लिए, उन भाषाओं में जहां" दरवाजे "के लिए उपयोग किए जाने वाले प्रतीकों में कई बाइट्स होते हैं, उन्हें प्रत्येक बाइट के रूप में आपके स्कोर की ओर गिना जा सकता है। "तो इसमें 98 के बजाय 80 बाइट्स का एक बाइट-काउंट है (यदि मैं सही तरीके से गिना जाता हूं)।
केविन क्रूजसेन

खैर, यह एक बुरा नियम है। यह पात्रों को संग्रहीत करने के बेहतर तरीके की तलाश के लिए सभी प्रोत्साहन को हटा देता है।
ल्यूक

2

रूबी, 54 52 बाइट्स

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

->n{?╔+?╦*(n-=3)+"╗
"+(?╠+?╬*n+"╣
")*-~n+?╚+?╩*n+?╝}

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

Ungolfed

यह सुपर बोरिंग है:

->n{
   ?╔ + ?╦ * (n-=3) + "╗\n" + 
  (?╠ + ?╬ * n      + "╣\n") * -~n + 
   ?╚ + ?╩ * n      + ?╝
}

आप (n+1)लिखकर थोड़ा छोटा कर सकते हैं -~n- ऑपरेटर पूर्वता आपको कोष्ठक भी बचाएगा।
यम्बर्ट

2

जावा 8, 102 + 101 बाइट्स

java.util.function.BiFunction<String,Integer,String>r=(c,n)->"".valueOf(new char[n]).replace("\0",c);

n->{n-=3;return "╔"+r.apply("╦",n)+"╗\n"+r.apply('╠'+r.apply("╬",n)+"╣\n",-~n)+"╚"+r.apply("╩",n)+"╝";}

यह समान लंबाई का एक और स्ट्रिंग पुनरावर्तक है:

java.util.function.BiFunction<String,Integer,String>r=(c,n)->{String p=c;for(;--n>0;p+=c);return p;}

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


बुरा नहीं है, आप अपने दृष्टिकोण को मेरे उत्तर से भी कम कर सकते हैं। सबसे पहले आप इसे जावा 7 विधि का उपयोग करके इसे 78 + 72 बाइट्स (कुल मिलाकर 150) में घटा सकते हैं BiFunction: n->{n-=3;return"╔"+r("╦",n)+"╗\n"+r("╠"+r("╬",n)+"╣\n",-~n)+"╚"+r("╩",n)+"╝";}और String r(String c,int n){return c.valueOf(new char[n]).replace("\0",c);} इसे ऑनलाइन आज़माएं। और दूसरी विधि को भी String r(String c,int n){String r=c;for(;n-->1;r+=c);return r;}(63 बाइट्स) में बदला जा सकता है , इसलिए यह कुल 141 बाइट्स
केविन क्रूज़सेन

सुधार, आप इसे 130 बाइट्स तक भी कम कर सकते हैं : n->"╔"+r("╦",n-=3)+"╗\n"+r("╠"+r("╬",n)+"╣\n",-~n)+"╚"+r("╩",n)+"╝"और String r(String c,int n){String r=c;for(;n-->1;r+=c);return r;} इसे ऑनलाइन आज़माएं।
केविन क्रूज़सेन

2

C # (.NET कोर) , स्कोर 123 (141 बाइट्स) स्कोर 118 (136 बाइट्स)

n=>{string a="╔",b="╠",c="╚";for(int i=3;i++<n;a+="╦",b+="╬")c+="╩";a+="╗\n";for(b+="╣\n";n-->2;)a+=b;return a+c+"╝";}

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

-5 बाइट्स @KevinCruijssen को धन्यवाद

स्पष्टीकरण:

n => 
{
    string a = "╔", b = "╠", c = "╚"; //Initialize the first, last and the middle lines with the starting character.
    for (int i = 3; i++ < n;          //Loop n-3 times
        a += "╦", b += "╬")           //Add the middle character to the first and middle line.
        c += "╩";                     //Add the middle character to the last line.
    a += "╗\n";                       //Add the end character to the first line.
    for (b += "╣\n";                  //Add the end character to the first line.
        n-- > 2;)                     //Loop n-2 times.
        a += b;                       //Add the middle line to the first line.
    return a + c + "╝";               //Add the last line and the final character and return.
}

1
मुझसे अच्छा जवाब, +1। मुझे पता है कि यह एक समय हो गया है, लेकिन आप इसे ऑनलाइन आज़माने के b+="╣\n";c+="╝";for(;n-->2;)a+=b;return a+c;};लिए 5 बाइट्स को बदल for(b+="╣\n";n-->2;)a+=b;return a+c+"╝";} सकते हैं।
केविन क्रूज़सेन

@ केविनक्रूजसेन: धन्यवाद।
raznagul

2

स्टैक्स , 23 बाइट्स

÷ÅoB↔╒╢Fm|╦a⌐á5µ┐»♫÷d╕Ñ

इसे चलाएं और डीबग करें

यहाँ अनगढ़ संस्करण है। वास्तव में, यह वास्तव में छोटे के लिए छोटा है कि शाब्दिक वर्णों का उपयोग करें क्योंकि उन्हें शाब्दिक रूप से स्रोत पैकिंग को रोका जाएगा।

"2Pfj_EQGG]T"!  packed representation of the 9 characters
3/              split into groups of 3
GG              call into trailing program twice
m               print each row
}               trailing program begins here
1|xv\           [1, --x - 1]; x starts as original input
:B              repeat each element corresponding number of times
                effectively, this repeats the internal row of the matrix
M               transpose door; this way it expands the two dimensions

इसको चलाओ


1

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

(T[a_,b_,c_]:=a<>Table[b,#-3]<>c;w=Column;w[{T["╔","╦","╗"],w@Table[T["╠","╬","╣"],#-2],T["╚","╩","╝"]}])&

क्या आप एक TIO (या समतुल्य) जोड़ सकते हैं?
झबरा

1
goto sandbox.open.wolframcloud.com/app/objects कोड पेस्ट करें (ctrl + v), अंत में [8] जोड़ें और Shift + एंटर करें
J42161217

प्रत्येक पंक्ति के बीच एक अतिरिक्त पंक्ति विराम प्रतीत होता है, क्या मैं यह कहना सही होगा कि आउटपुट के बजाय आउटपु के प्रतिपादन में कोई समस्या है?
शैगी

@ शैगी वुल्फराम बादल सभी पात्रों को मजाकिया-विकृत तरीके से प्रदर्शित करता है इसलिए यह इस तरह के कार्यों को प्रस्तुत करने का सबसे अच्छा तरीका नहीं है। कोई अतिरिक्त लाइनें नहीं हैं और सब कुछ गणित पर ठीक लगता है। जाँच करने के लिए अपने परीक्षण के मामले को कॉपी और पेस्ट करें।
मैंने


1

बैच, 126 बाइट्स

@set s=
@for /l %%i in (4,1,%1)do @call set s=%%s%%Î
@echo É%s:Î=Ë%»
@for /l %%i in (3,1,%1)do @echo Ì%s%¹
@echo È%s:Î=Ê%¼

CP437 या CP850 में काम करता है। उन कोड पृष्ठों में इस तरह दिखता है:

@set s=
@for /l %%i in (4,1,%1)do @call set s=%%s%%╬
@echo ╔%s:╬=╦%╗
@for /l %%i in (3,1,%1)do @echo ╠%s%╣
@echo ╚%s:╬=╩%╝

1

रेटिना , 56 50 बाइट्स

.+
$*╬╣
^╬╬╬
╠
.?
$_¶
T`╠╬╣`╔╦╗`^.*
T`╠╬╣`╚╩╝`.*¶$

इसे ऑनलाइन आज़माएं! Ands का एक वर्ग बनाकर काम करता है और फिर किनारों को ठीक करता है (विशेष रूप से तीन कॉलम्स को हटा दिया जाता है जब पक्ष जोड़े जाते हैं)।


1

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

'╔'+'╦'*($x=$args[0]-3)+'╗';,('╠'+'╬'*$x+'╣')*($x+1);'╚'+'╩'*$x+'╝'

इनपुट लेता है $args[0], घटाता है 3, उसमें बचत करता है$x करता है, मध्य वर्गों के उचित संख्या के उत्पादन के लिए दरवाजे के शीर्ष के निर्माण में इसका उपयोग करता है। फिर हम मध्य पंक्तियों का आउटपुट दे रहे हैं, जिनमें से हमारे पास $x+1है। अंत में, नीचे की पंक्ति शीर्ष पंक्ति के समान है। उन सभी को पाइप लाइन, और निहित पर छोड़ दिया जाता हैWrite-Output मुफ्त में तत्वों के बीच एक नई करता है।

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



1

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

n=>"╔"+R("╦",n-=3)+"╗\n"+R("╠"+R("╬",n)+"╣\n",-~n)+"╚"+R("╩",n)+"╝";string R(string c,int n){string r=c;for(;n-->1;r+=c);return r;}

पोर्ट ऑफ @ रॉबर्टो ग्राहम के जावा 8 उत्तर के बाद, मैंने लगभग 70 बाइट्स घूमा।

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


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