एक झंडा लहर करो


26

एक झंडा लें, जैसे यह एक:

-----------------------------
|             |             |
|             |             |
|=============+=============|
|             |             |
|             |             |
-----------------------------

और एक नंबर इनपुट: "लहर की लंबाई"

मान लें कि तरंग की लंबाई 5. थी, फिर शुरुआत से पंक्ति के साथ प्रत्येक 5 वर्ण, अगले वर्ण को एक के -साथ बदलें \और एक पंक्ति नीचे होने के बाद सभी वर्णों को स्थानांतरित करें। अंत तक इसे दोहराएं। आप के साथ अंत:

-----\
|     -----\
|           -----\
|=====        |   -----\
|     ======  |         -----
|           ==+===          |
-----\        |   ======    |
      -----\  |         ====|
            -----\          |
                  -----\    |
                        -----

यदि आप अंत में पूर्ण तरंग लंबाई बनाने में सक्षम नहीं हैं, तो झंडा समाप्त हो गया है। बस अंत तक सपाट रहें।

आप मान सकते हैं कि सभी रेखाएँ एक ही लंबाई की हैं और ऊपर और नीचे की पंक्तियाँ पूरी तरह से -(0x2D) से बनी हैं और बाकी के अक्षर अंदर हैं !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~, या एक स्थान है ( )। (तो यह एससीआई मान है x, जहां 31 < x < 127)
झंडा कम से कम 3 लंबा और 3 चौड़ा होगा।

वेव लंबाई एक गैर-नकारात्मक पूर्णांक (> = 0) होगी।

(आप लहर की लंबाई 1 भी सबसे छोटी तरंग दैर्ध्य हो सकती है, इसलिए उपरोक्त उदाहरण में लहर की लंबाई 6 होगी। यह ठीक है।)

ध्वज का आपका i / o लाइनों के सरणियों या एकाधिक लाइनों के साथ एक स्ट्रिंग के रूप में हो सकता है।

आउटपुट ध्वज में अनुगामी स्थान हो सकते हैं, लेकिन केवल प्रमुख स्थान हो सकते हैं जब तक कि यह प्रत्येक ध्वज पर समान हो। इनपुट ध्वज पर अनुगामी स्थान हटाया जा सकता है।

स्कोरिंग

यह कोड-गोल्फ है, इसलिए बाइट्स में सबसे छोटा समाधान, जीतता है।

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

---
abc
---
2
--\
abc
--\



-----
| + |
-----
10
-----
| + |
-----



---------------------------------------
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&          .\^/.          &&&&&&|
|&&&&&&        . |   | .        &&&&&&|
|&&&&&&        |\|   |/|        &&&&&&|
|&&&&&&     .--'       '--.     &&&&&&|
|&&&&&&      \           /      &&&&&&|
|&&&&&&       >         <       &&&&&&|
|&&&&&&      '~|/~~|~~\|~'      &&&&&&|
|&&&&&&            |            &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
---------------------------------------
12
------------\                          
|&&&&&&      ------------\             
|&&&&&&                   ------------\
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&          .\^/.          &&&&&&|
|&&&&&&        . |   | .        &&&&&&|
|&&&&&&     .  |\|   |/|        &&&&&&|
|&&&&&&      --'       '--      &&&&&&|
|&&&&&&      \           /.     &&&&&&|
|&&&&&&       >         <       &&&&&&|
|&&&&&&      '~|/~~|~~\|~'      &&&&&&|
|&&&&&&            |            &&&&&&|
|&&&&&&                         &&&&&&|
------------\                   &&&&&&|
             ------------\      &&&&&&|
                          ------------\



-----------------------
|-._`-._ :| |: _.-'_.-|
|   `-._`:| |:`_.-'   |
|-------`-' '-'-------|
|------_.-. .-._------|
|  _.-'_.:| |:._`-._  |
|-'_.-'  :| |:  `-._`-|
-----------------------
4
----\
|-._`----\
|   `-._ :----\
|-----._`:| |: ----\
|-------`-| |:`_.-'_---
|  _.--_.-' '-'_.-' .-|
|-'_.-'_.:. .-.-----  |
----\-'  :| |:._------|
     ----\| |: _`-._--|
          ----\ `-._  |
               ----\`-|
                    ---



---------------
---------------
---------------
---------------
---------------
5
-----\         
-----------\   
---------------
---------------
-----\---------
      -----\---
            ---



-------------------------------------------
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
|---------------                          |
|#########################################|
|                                         |
|#########################################|
|                                         |
|#########################################|
-------------------------------------------
0
\
|\
|*\
|  \
|** \
|   *\
|**   \
|   ** \
|**    *\
|-  **   \
|#-    ** \
| #-**    *\
|# #-  **   \
| # #-    ** \
\# # #-**    *\
 \# # #-  **   \
  \# # #-    **|\
   \# # #-**   |#\
    \# # #-  **| #\
     \# # #-   |# #\
      \# # #-**| # #\
       \# # #- |# # #\
        \# # #-| # # #\
         \# # #-# # # #\
          \# # # # # # #\
           \# # # # # # #\
            \# # # # # # #\
             \# # # # # # #\
              \# # # # # # #\
               \# # # # # # #\
                \# # # # # # #\
                 \# # # # # # #\
                  \# # # # # # #\
                   \# # # # # # #\
                    \# # # # # # #\
                     \# # # # # # #\
                      \# # # # # # #\
                       \# # # # # # #\
                        \# # # # # # #\
                         \# # # # # # #\
                          \# # # # # # #\
                           \# # # # # # #\
                            \# # # # # # #\
                             \# # # # # # |
                              \# # # # # #|
                               \# # # # # |
                                \# # # # #|
                                 \# # # # |
                                  \# # # #|
                                   \# # # |
                                    \# # #|
                                     \# # |
                                      \# #|
                                       \# |
                                        \#|
                                         \|
                                          \

4
यहां आने के लिए @LuisMendo की उम्मीद है और अगले दिन या तो इसे दूर उड़ा दें।
मैजिक ऑक्टोपस Urn

बकवास ... भूल गए @ ने उन लोगों को लिंक नहीं किया है जिन्होंने प्रतिक्रिया नहीं दी है ... किसी ने MATL का उपयोग करके मेरे बट को किक किया ताकि मैं टिप्पणियों को हटा सकूं।
मैजिक ऑक्टोपस Urn

2
कोई भी इसे पसंद करता है
मैथ्यू रो

1
@SIGSEGV पूरा हो गया , हालाँकि शायद आपके मन में ऐसा नहीं था।
ब्रायन मैककचटन

1
@carusocomputing किसी ने मुझे फोन किया? 31 बाइट्स, हालांकि
लुइस मेंडो

जवाबों:


11

05AB1E , 25 23 26 25 बाइट्स

-2 अदनान को धन्यवाद

-1 Emigna को धन्यवाद

+3 जोनाथन एलन के लिए धन्यवाद (उस अमान्यता को पकड़ने के लिए समय बिताने के लिए धन्यवाद!)

øvyN>²Öi¦¨'\.ø}N²÷ú}).Bø»

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

यदि यह ठीक नहीं है, तो यह 0, +2 बाइट्स के बजाय 1-अनुक्रमित है।

ø                                    # Transpose.
 vy                }                 # For each column...
   N>²Öi¦¨'\.ø}                      # Replace outside dashes with slants.
               N²÷                   # Current index / input #2.
                  ú                  # Prepend that many spaces to current column.
                    ).Bø             # Join, pad, transpose back.
                        »            # Print with newlines.

एमिग्ना / अदनान / कोई भी - उन लोगों को बदलने के लिए एक बेहतर समाधान होना चाहिए, लेकिन मैं स्तब्ध हूं।


1-अनुक्रमण ठीक है।
अर्यितर

1
úð×ì:) के समान है
अदनान

1
@Artyer बिलकुल नहीं! +3 मेरे जवाब को इंगित करने के लिए उनके लिए धन्यवाद मान्य नहीं था, मुझे यह पसंद है जब लोग वास्तव में एक उत्तर को पढ़ने के लिए पर्याप्त रूप से ध्यान देते हैं कि यह सही नहीं है। क्या मैंने इसे कम व्यंग्यात्मक ध्वनि के लिए पर्याप्त रूप से पुन: प्रस्तुत किया: P?
मैजिक ऑक्टोपस Urn

2
@ अदनान नो वांडर मैं कभी भी उसकी मरम्मत नहीं कर सकता। आपका नाम जोनाथन एलन के बटरिंग के बारे में क्षमा करें ।
मैजिक ऑक्टोपस Urn

2
वास्तव में कोई समस्या नहीं है :)
जोनाथन एलन 20



5

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

s”\⁹¦€Fð€0,1¦Zsð⁶ẋ;Ѐµ@"J;/z⁶

इनपुट और आउटपुट झंडे लाइनों की सूची हैं।
वेव की लंबाई 1-अनुक्रमित है।
हमेशा रिक्त स्थान की एक पंक्ति पैदा करता है।
(उपरोक्त सभी को पोस्ट किए गए प्रश्न में स्पष्ट रूप से अनुमति दी गई है)

इसे ऑनलाइन आज़माएं! (पाद लेख बनाने के लिए IO सुंदर लग रहा है - बहु-पाठ के रूप में झंडे लेता है और प्राप्त करता है)

कैसे?

Carusocomputing के 05ab1e उत्तर के लिए एक समान विधि , जिसे मैंने अधिक नीचे गोल्फ में प्रबंधित नहीं किया है।

s”\⁹¦€Fð€0,1¦Zsð⁶ẋ;Ѐµ@"J;/z⁶ - Main link: list of lists f, number p
            ¦                 - apply to indexes (of f)
         0,1                  - ... 0 paired with 1 (i.e. last & first -> bottom & top)
       ð€                     - the previous chain with p as right argument for €ach:
s                             -   split into chunks of length p
    ¦€                        -   apply to indexes for €ach
   ⁹                          -   ... link's right argument, p
 ”\                           -   the character '\' (a replacement - if the index is out of bounds this has no effect - although this might change in the future.)
             Z                - transpose the edited flag
              s               - split into chunks of length p
                        J     - range of length = [1,2,...,nChunks]
               ð     µ@"      - zip with reversed arguments (call those i):
                ⁶             -   literal space
                 ẋ            -    repeated i times
                  ;Ѐ         -    concatenate mapped across the chunks
                         ;/   - undo the split (reduce with concatenation)
                           z⁶ - transpose with a filler of space characters

यह हमेशा ऐसा क्यों होता है?
ग्रिएफॉन -

05AB1E ने स्पष्ट रूप से यह राउंड जीता!
जोनाथन एलन

ठीक है, यह हमेशा जेली या 05AB1E क्यों होता है जो ऐसा करता है? (काल्पनिक प्रश्न, मुझे पता है कि यह इसलिए है क्योंकि वे गोल्फ की भाषाएं हैं)
ग्रीफॉन -

3

MATL , 31 बाइट्स

x"X@q1GQ&\Z"@b1G=?'\'5L(]h]Xhc!

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें: 1 , 2 , 3 , 4 , 5 , 6 , 7


वाह, क्या महंगा हिस्सा था? के -साथ की जगह [\]?
मैजिक ऑक्टोपस Urn

@carusocomputing हां, मुझे लगता है कि यह सबसे महंगा हिस्सा है
लुइस मेंडो

2

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

f=(s,l,p=++l,t=s.replace(/^-*|-*$/g,s=>s.replace(/-/g,(c,i)=>++i%l?c:`\\`)))=>t.search`
`<p?t:(f(s,l,p+l,t)+`
`+` `.repeat(p)).replace(eval(`/(^|(.*)\\n)(.{${p}})/g`),`
$3$2`)
;
test=(s,l)=>document.write(`<pre>${s}
${l}${f(s,l)}</pre>`);
test(`---
abc
---`,2);
test(`-----
| + |
-----`,10);
test(`---------------------------------------
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&          .\\^/.          &&&&&&|
|&&&&&&        . |   | .        &&&&&&|
|&&&&&&        |\\|   |/|        &&&&&&|
|&&&&&&     .--'       '--.     &&&&&&|
|&&&&&&      \\           /      &&&&&&|
|&&&&&&       >         <       &&&&&&|
|&&&&&&      '~|/~~|~~\\|~'      &&&&&&|
|&&&&&&            |            &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
---------------------------------------`,12);
test(`-----------------------
|-._\`-._ :| |: _.-'_.-|
|   \`-._\`:| |:\`_.-'   |
|-------\`-' '-'-------|
|------_.-. .-._------|
|  _.-'_.:| |:._\`-._  |
|-'_.-'  :| |:  \`-._\`-|
-----------------------`,4);
test(`---------------
---------------
---------------
---------------
---------------`,5);
test(`-------------------------------------------
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
|---------------                          |
|#########################################|
|                                         |
|#########################################|
|                                         |
|#########################################|
-------------------------------------------`,0);

I / O एक न्यूलाइन-सीमांकित स्ट्रिंग के रूप में है। आउटपुट में एक अग्रणी न्यूलाइन शामिल है; इसे 3 बाइट की लागत पर हटाया जा सकता है। मैंने सीधे आउटपुट स्ट्रिंग की गणना करने की कोशिश की, लेकिन मुझे लगा ... 176 बाइट्स:

f=
(a,l,h=a.length)=>[...Array(h+(a[0].length-1)/++l|0)].map((_,i)=>a[0].replace(/./g,(k,j)=>((k=i-(j/l|0))&&h+~k)|-~j%l?(a[k]||'')[j]||' ':'\\'))
;
test=(s,l)=>document.write(`<pre>${s}
${l}
${f(s.split`
`,l).join`
`}</pre>`);
test(`---
abc
---`,2);
test(`-----
| + |
-----`,10);
test(`---------------------------------------
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&          .\\^/.          &&&&&&|
|&&&&&&        . |   | .        &&&&&&|
|&&&&&&        |\\|   |/|        &&&&&&|
|&&&&&&     .--'       '--.     &&&&&&|
|&&&&&&      \\           /      &&&&&&|
|&&&&&&       >         <       &&&&&&|
|&&&&&&      '~|/~~|~~\\|~'      &&&&&&|
|&&&&&&            |            &&&&&&|
|&&&&&&                         &&&&&&|
|&&&&&&                         &&&&&&|
---------------------------------------`,12);
test(`-----------------------
|-._\`-._ :| |: _.-'_.-|
|   \`-._\`:| |:\`_.-'   |
|-------\`-' '-'-------|
|------_.-. .-._------|
|  _.-'_.:| |:._\`-._  |
|-'_.-'  :| |:  \`-._\`-|
-----------------------`,4);
test(`---------------
---------------
---------------
---------------
---------------`,5);
test(`-------------------------------------------
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
| *  *  *  *  *|                          |
|*  *  *  *  * |##########################|
|---------------                          |
|#########################################|
|                                         |
|#########################################|
|                                         |
|#########################################|
-------------------------------------------`,0);

I / O एक स्ट्रिंग सरणी के रूप में है।


ऐसा लगता है कि आपके द्वारा पास किया जाने वाला एकमात्र परीक्षण मामला है जो परिवर्तित नहीं होता है।
मेरी

हां, अधिकांश परीक्षण मामलों के लिए यह ठीक से काम नहीं करता है। (पहला जो मैंने आजमाया था)
एरियर

2
@Artyer क्षमा करें, यह सूक्ष्म था; मैंने एक-के-बाद एक त्रुटि नहीं की।
नील

2

PHP, 168 164 187 172 167 153 150 152 149 बाइट्स

for($r=count($f=file(a));$y<$r+$e/$n=$argn;$y+=print"
")for($x=0;$x+1<$e=strlen($f[0])-1;)echo("\\".$f[$z=$y-($x/$n|0)][$x++]." ")[$z%($r-1)||$x%$n];

aSTDIN से स्टेटिक फाइल और वेव लेंथ (न्यूनतम 1) से झंडा लेता है । ऑनलाइन के
साथ पाइप के रूप में चलाएं php -nrया इसे आज़माएं

टूट - फूट

for($r=count($f=file(a));       # import file, count lines
    $y<$r+$e/$n=$argn;          # loop $y through lines
    $y+=print"\n")                      # 2. print newline
    for($x=0;$x+1<$e=strlen($f[0])-1;)  # 1. loop $x through columns
    echo("\\".$f[                           # 3. create string=backslash+character+space
            $z=$y-($x/$n|0)                 # 1. line no. = $y - wave offset
        ][$x++]." "                         # 2. pick character from line
        )
    [
        $z%($r-1)                           # if not first or last line
        ||$x%$n                             # or not last position of wave
    ]                                       # then index 1 (character or space), else "\\"
    ;

बीच में लाइनों के लिए काम नहीं करता है: sandbox.onlinephpfunctions.com/code/…
Artyer

यह मध्य रेखाओं को `` में नहीं बदलना चाहिए। अंग्रेज एक के बाद परीक्षण के मामले को देखें
अरेटियर

: यह झंडे के नीचे है कि आकार में वृद्धि एक बहुत से कुछ को काटने जा रहा है sandbox.onlinephpfunctions.com/code/...
Artyer

@Artyer यह होना चाहिए।
टाइटस

1
$z&&$z!=$r-1$z%($r-1)3 बाइट बचाने के लिए बराबर होना चाहिए ।
क्रिस्टोफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.