ทำธงคลื่น


26

ใช้ธงแบบนี้:

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

และใส่ตัวเลข: "ความยาวของคลื่น"

สมมติว่าความยาวของคลื่นเท่ากับ 5 จากนั้นทุก ๆ 5 ตัวอักษรตามเส้นจากจุดเริ่มต้นให้แทนที่อักขระถัดไป-ด้วยa \และเลื่อนอักขระทั้งหมดหลังจากแถวหนึ่งลงมา ทำซ้ำจนกว่าจะหมด คุณท้ายด้วย:

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

หากคุณไม่สามารถสร้างความยาวคลื่นแบบเต็มได้ในตอนท้ายธงจะสิ้นสุด เพียงแค่ยังคงแบนจนกว่าจะสิ้นสุด

คุณสามารถสันนิษฐานได้ว่าบรรทัดทั้งหมดมีความยาวเท่ากันและบรรทัดด้านบนและด้านล่างประกอบด้วยทั้งหมด-(0x2D) และอักขระส่วนที่เหลือทั้งหมดอยู่ใน!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~หรือเป็นช่องว่าง ( ) (ดังนั้นมันคือค่า ascii xที่31 < x < 127)
ธงจะต้องสูงอย่างน้อย 3 และกว้าง 3

ความยาวของคลื่นจะเป็นจำนวนเต็มแบบไม่ลบ (> = 0)

(คุณสามารถมีความยาวของคลื่น 1 เป็นความยาวคลื่นที่เล็กที่สุดดังนั้นตัวอย่างข้างต้นจะมีความยาวของคลื่น 6 นี่คือตกลง)

การตั้งค่าสถานะ i / o ของคุณอาจเป็นอาร์เรย์ของบรรทัดหรือสตริงที่มีหลายบรรทัด

ธงออกอาจมีช่องว่างต่อท้าย แต่สามารถมีช่องว่างนำหน้าตราบใดที่มันจะเหมือนกันในทุกธง พื้นที่ต่อท้ายบนแฟล็กอินพุตอาจถูกลบ

เกณฑ์การให้คะแนน

นี่คือโค้ดกอล์ฟดังนั้นวิธีแก้ปัญหาที่สั้นที่สุดในหน่วยไบต์ชนะ

กรณีทดสอบ

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



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



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



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



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



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

4
คาดว่า @LuisMendo จะมาที่นี่และพัดไปในวันถัดไป
Magic Octopus Urn

อึ ... ลืม @ ไม่ได้เชื่อมโยงผู้ที่ไม่ได้ตอบกลับ ... มีคนเตะก้นของฉันโดยใช้ MATL โปรดโปรดฉันสามารถลบความคิดเห็น
Magic Octopus Urn

2
ทุกคนเคลื่อนไหวสิ่งนี้
Matthew Roh

1
@SIGSEGV เสร็จสิ้นแม้ว่าอาจจะไม่ใช่สิ่งที่คุณมีอยู่ในใจ
Brian McCutchon

1
@carusocomputing มีคนโทรหาฉันหรือเปล่า 31 ไบต์แม้ว่า
Luis Mendo

คำตอบ:


11

05AB1E , 25 23 26 25 ไบต์

-2 ขอบคุณ Adnan

-1 ต้องขอบคุณ Emigna

+3 ต้องขอบคุณ Jonathan Allan (ขอบคุณที่ใช้เวลาในการติดตามความไม่ลงรอยกันนั้น)

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

ลองออนไลน์!

นี่คือการจัดทำดัชนี 1 แทน 0, +2 ไบต์หากไม่เป็นไร

ø                                    # 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.

Emigna / Adnan / ใครก็ได้ - มีวิธีที่ดีกว่าในการแทนที่สิ่งเหล่านี้ แต่ฉันนิ่งงัน


การจัดทำดัชนี 1 รายการนั้นตกลง
Artyer

1
úเหมือนกับð×ì:)
Adnan

1
@Artyer ไม่ได้เลย! +3 ขอบคุณเขาที่ชี้ให้เห็นคำตอบของฉันไม่ถูกต้องฉันชอบเมื่อผู้คนสนใจอ่านคำตอบได้นานพอที่จะสังเกตเห็นว่ามันไม่ถูกต้อง ฉันพูดไม่จริงมันมากพอที่จะฟังดูเหน็บแนมน้อยลง: P?
Magic Octopus Urn

2
@Adnan ไม่ต้องการฉันไม่สามารถตอบเขาได้ ขออภัยเกี่ยวกับแล่เนื้อชื่อของคุณโจนาธานอัลลัน
Magic Octopus Urn

2
ไม่เป็นปัญหาจริง ๆ :)
Jonathan Allan



5

เยลลี่ 29 ไบต์

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

อินพุตและเอาต์พุตแฟล็กคือรายการของบรรทัด
ความยาวของคลื่นถูกจัดทำดัชนี 1
สร้างช่องว่างหนึ่งบรรทัดเสมอ
(ทั้งหมดข้างต้นได้รับอนุญาตอย่างชัดเจนในคำถามที่โพสต์)

ลองออนไลน์! (ส่วนท้ายเพื่อให้ IO ดูสวย - ใช้และรับค่าสถานะเป็นข้อความหลายบรรทัด)

อย่างไร?

วิธีการที่คล้ายกันมากกับคำตอบ 05ab1eของcarusocomputingซึ่งฉันไม่สามารถตีกอล์ฟได้มากกว่านี้

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

ทำไมมันจึงเป็นเยลลี่ที่ทำสิ่งนี้เสมอ
Gryphon - Reinstate Monica

05AB1E ชนะการแข่งขันรอบนี้อย่างชัดเจน!
Jonathan Allan

ตกลงทำไมมันถึงเป็นเยลลี่หรือ 05AB1E ที่ทำสิ่งนี้เสมอ (คำถามเชิงโวหารฉันรู้ว่ามันเป็นเพราะพวกเขากำลังเล่นกอล์ฟภาษา)
Gryphon - Reinstate Monica

3

MATL , 31 ไบต์

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

ลองออนไลน์! หรือตรวจสอบทุกกรณีทดสอบ: 1 , 2 , 3 , 4 , 5 , 6 , 7


ว้าวส่วนที่แพงคืออะไร การแทนที่-ด้วย[\]?
Magic Octopus Urn

@carusocomputing ใช่ฉันคิดว่านั่นเป็นส่วนที่แพงที่สุด
หลุยส์เมนโด

2

JavaScript (ES6), 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 เป็นอาร์เรย์สตริง


ดูเหมือนว่ากรณีทดสอบเพียงอย่างเดียวที่คุณผ่านได้คือกรณีที่ไม่มีการเปลี่ยนแปลง
Marie

ใช่มันไม่ทำงานอย่างถูกต้องสำหรับกรณีทดสอบส่วนใหญ่ (อันแรกคือสิ่งที่ฉันลอง)
Artyer

2
@Artyer ขออภัยนั่นมันบอบบาง ฉันไม่พบข้อผิดพลาดแบบออฟไลน์
Neil

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];

รับแฟล็กจากไฟล์สแตติกaและความยาวของคลื่น (ขั้นต่ำ 1) จาก STDIN
ทำงานเป็นท่อที่มี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

ไม่ควรเปลี่ยนเส้นกลางเป็น `` ดูกรณีทดสอบหลังจากอังกฤษ
Artyer

ดูเหมือนว่าจะตัดบางส่วนของธงที่มีขนาดเพิ่มขึ้นมาก: sandbox.onlinephpfunctions.com/code/…
Artyer

@Artyer ที่ควรจะเป็น
ติตัส

1
$z&&$z!=$r-1ควรเท่ากับการ$z%($r-1)บันทึก 3 ไบต์
Christoph
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.