จิมมี่ต้องการความช่วยเหลือของคุณ!


17

ดูเหมือนว่าเมื่อเร็ว ๆ นี้ได้มีการมาก Jimmys ตกไปสู่ความตายของพวกเขาสามารถมองเห็นได้ที่นี่ , และนี่คือที่ที่คุณถูกถามเพื่อตรวจสอบว่าจิมมี่จะตก ถึงเวลาที่เราจะหยุดความบ้าคลั่งนี้และพยายามช่วยจิมมี่

จิมมี่มีสามส่วนของร่างกาย/, oและ\จัดเช่นนี้

/o\

-แพลตฟอร์มจะแสดงด้วย จิมมี่จะตกลงมาจากแพลตฟอร์มของพวกเขาหากพวกเขามีสองส่วนของร่างกายที่ไม่ได้อยู่เหนือแพลตฟอร์มโดยตรง

ตัวอย่างบางส่วน:

   /o\
- -------

-จิมมี่จะสมดุลเนื่องจากทุกส่วนของร่างกายของพวกเขาดังกล่าวข้างต้น

   /o\
    ------   ---

จิมมี่จะมีความสมดุลตั้งแต่สองส่วนของร่างกายอยู่เหนือ-s

 /o\
-- ----  --

จิมมี่จะทรงตัวแม้ว่าพวกเขาจะแยกระหว่างสองแพลตฟอร์ม

  /o\
   -

จิมมี่จะไม่สมดุลเนื่องจากร่างกายสองส่วนไม่ได้อยู่เหนือแท่น


เนื่องจากอุปทานแพลตฟอร์มของฉันเหลือน้อยฉันจึงมีเฉพาะแพลตฟอร์มที่มีความยาว 5 และเป็นสิ่งสำคัญที่เราจะใช้ให้น้อยที่สุด

งานของคุณคือรับอินพุตของ Jimmys และส่งออกสตริงของแพลตฟอร์มซึ่งจะบันทึก Jimmys ทั้งหมดในอินพุต เอาต์พุตของคุณต้องใช้แพลตฟอร์มน้อยที่สุดเท่าที่จะเป็นไปได้ แต่แต่ละแพลตฟอร์มต้องเป็น 5-ความกว้าง 5

โปรดทราบว่ากฎของแพลตฟอร์มที่มี-ความกว้าง5 หมายความว่าแต่ละแพลตฟอร์มจะต้องมีช่องว่างระหว่างพวกเขา----------ไม่ถูกต้องในผลลัพธ์เนื่องจากจะถูกพิจารณาว่าเป็นแพลตฟอร์มที่มีความยาว 10 และไม่ใช่แพลตฟอร์มที่มีความยาว 5 สองแห่ง

กรณีทดสอบ

/o\  /o\/o\    // input
----- -----    // output
/o\           /o\
-----       -----
/o\           /o\      // same input as above
-----          -----   // this is also valid output
    /o\ /o\
     -----

ใช้กฎมาตรฐาน

นี่คือรหัสกอล์ฟอาจเป็นคำตอบที่สั้นที่สุดชนะ!


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

3
กรณีทดสอบ 4 ดูเหมือนว่าใบหน้าที่น่ากลัว
ข้อมูลหมดอายุ

2
การติดตามผล: วาง Jimmys ให้มากที่สุดเท่าที่จะทำได้บนแพลตฟอร์มในแบบที่พวกเขาจะไม่ล้ม
พูดว่า Reinstate Monica

2
@val ที่จริงแล้วเป็นหนึ่งในคำถามที่เชื่อมโยงกัน - ฉันติดตามหลังจากนั้นหนึ่งคำถาม: P
Quinn

7
ฉันสามารถเห็นการติดตามผลของจิมมี่มากมายในอนาคต
connectyourcharger

คำตอบ:


2

Charcoal , 17 15 ไบต์

W‹ⅈLθ«×⁵№o\§θⅈ→

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

W‹ⅈLθ«

ทำซ้ำในขณะที่ตำแหน่งเคอร์เซอร์น้อยกว่าความยาวของอินพุต

×⁵№o\§θⅈ

หากอักขระที่ตำแหน่งนั้นในอินพุตเป็นoหรือ\พิมพ์ 5 -วินาที

ย้ายไปที่อักขระถัดไปดังนั้นรับประกันอย่างน้อยหนึ่งช่องว่างระหว่างแพลตฟอร์ม

โซลูชัน 17 ไบต์ก่อนหน้านี้เป็น IMHO มากกว่า "Charcoal-y"

θ⸿Fθ«×⁵¬№ /⊟KD²↑→

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

θ⸿

พิมพ์อินพุตและย้ายไปที่จุดเริ่มต้นของบรรทัดถัดไป

Fθ«

วนรอบทุกอักขระของอินพุตเพื่อให้แน่ใจว่าไม่มี Jimmy พลาด

×⁵¬№ /⊟KD²↑

ดูที่ตัวละครด้านบนเคอร์เซอร์ หากไม่มีเลยหรือว่างหรือ/ไม่ก็พิมพ์ 5 -วินาที

ย้ายไปที่อักขระถัดไปดังนั้นรับประกันอย่างน้อยหนึ่งช่องว่างระหว่างแพลตฟอร์ม


7

Python 2 , 70 67 ไบต์

lambda s:S('/',' ',S("\S.{5}","----- ",s+' '*5))
import re;S=re.sub

ลองออนไลน์!

-3 ไบต์ขอขอบคุณ Kevin Cruijssen & Neil

ไม่ใช่คนที่สวยที่สุดไม่แน่ใจว่าจะจัดการกับเครื่องหมายทับซ้ายที่ดีกว่าได้อย่างไร ...

น่าเสียดายที่เราไม่สามารถแทนที่ทั้งสองด้านของแต่ละแพลตฟอร์มด้วยช่องว่างโดยใช้การre.subโทรเพียงครั้งเดียวเนื่องจากในกรณีที่ 2 แพลตฟอร์มเป็นหนึ่งช่องว่างห่างกันช่องว่างระหว่างพวกเขาไม่สามารถจับคู่ได้มากกว่าหนึ่งครั้ง การอ้างสิทธิ์ lookahead / lookbehind จะไม่ช่วยให้ได้เนื่องจากสิ่งใดที่ตรงกับการยืนยันเหล่านั้นจะไม่ถูกแทนที่

ใช้การre.subอ้างอิงเดียว:

Python 3.8 (เผยแพร่ล่วงหน้า) , 78 ไบต์

lambda s:[s:=re.sub(".[^/ -].{5}"," ----- ",s+"  ",1)for c in s][-1]
import re

ลองออนไลน์!


69 ไบต์โดยแทนที่แรก/แล้วตาม[^ ]ด้วย
Kevin Cruijssen

@ นีลกอล์ฟปัญหากับคำตอบของฉัน Retina ยังทำงานสำหรับคุณ: 67 ไบต์
Kevin Cruijssen


2

Python 3 , 158 164 160 bytes

a=input();r=""
for i,c in enumerate(a):
 try:r[i]
 except:
  if c in"/o":
   r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
  else:r+=" "
print(r)

ลองออนไลน์!

นี่คือคำตอบกอล์ฟรหัสแรกของฉันและฉันดีใจที่มันเป็นคำถามของจิมมี่!

คำอธิบาย:

  • a=input();r="": rใช้ในการป้อนข้อมูลและการเตรียมสตริงใหม่

  • for i,c in enumerate(a):: แจกแจงมากกว่าอินพุต

  • try:r[i] ... except:: ดูว่าr[i]มีอยู่หรือไม่ถ้าไม่ให้ประมวลผลexceptบล็อก

  • if c in"/o":: ตรวจสอบว่าตัวละครปัจจุบันอยู่ในสองส่วนแรกของจิมมี่หรือไม่

  • r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- ": ถ้าเป็นเช่นนั้นเพิ่มกลุ่มใหม่ เพิ่มช่องว่างก่อนส่วนใหม่ของเราหากมีหัวหน้า Jimmy อีกห้าตัวอักษร

  • else:r+=" ": มิฉะนั้นเพียงแค่เพิ่มช่องว่าง

  • print(r): พิมพ์ผลสุดท้ายของเรา


ค่อนข้างใกล้เคียง แต่ฉันคิดว่านี่ใช้ไม่ได้กับทุกกรณีทดสอบ ควรใช้แพลตฟอร์มให้น้อยที่สุดเท่าที่จะเป็นไปได้และตัวอย่างสุดท้ายของคุณใช้ 2 เมื่อทำได้ด้วย 1
Quinn

@Quinn Shoot เอ่อไม่ใช่การแข่งขันจนกว่าฉันจะแก้ไข
connectyourcharger

@connectyourcharger "ไม่แข่งขัน" ไม่ได้ตรวจสอบโซลูชันที่ไม่ถูกต้อง ฉันขอแนะนำให้ลบถ้าคุณไม่ต้องการแก้ไขในบางครั้ง (เช่นในอีกไม่กี่นาทีถัดไป)
Erik the Outgolfer

@Quinn ตอนนี้ฉันคงแล้ว
connectyourcharger

@connectyourcharger ดีมาก!
Quinn

2

เรติน่า23 23ไบต์

/

$
5* 
\S.{5}
5*- 

-2 ไบต์ขอบคุณที่@Neil

มีช่องว่างต่อท้ายหนึ่งบรรทัดในบรรทัดที่สองที่สี่และที่หก

พอร์ตของคำตอบ Python 2ของ@negativeSevenดังนั้นอย่าลืมโหวตให้เขา!

ลองออนไลน์

คำอธิบาย:

แทนที่ทั้งหมด"/"ด้วย" ":

/
 

ผนวก 5 ช่องว่างต่อท้าย:

$
5* 

แทนที่สตริงย่อยทั้งหมดที่มีขนาดหกซึ่งไม่ได้ขึ้นต้นด้วยช่องว่างโดย"----- ":

\S.{5}
5*- 

คุณสามารถใช้\Sแทนได้[^ ]หรือไม่?
Neil

@ Neil Ah แน่นอน ขอบคุณ!
Kevin Cruijssen


1

05AB1E , 25 24 ไบต์

ð5׫'/ð:DŒ6ùʒнðÊ}'-5×ð«:

พอร์ตของคำตอบ Python 2ของ@negativeSevenดังนั้นอย่าลืมโหวตให้เขา!

ลองออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมดตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

ð5׫                      # Append 5 trailing spaces to the (implicit) input-string
    '/ð:                 '# Replace all "/" with a space
        D                 # Duplicate the string
         Œ                # Get all substrings of this
          6ù              # Only leave those of length 6
            ʒ   }         # Filter it further by:
             нðÊ          #  Only keep those which do NOT start with a space
                 '-5×ð«  '# Push a string of 5 "-" appended with a space: "----- "
                       :  # Replace in the initially duplicated string all substrings 
                          # remaining in the list with this "---- "

1

Japt , 23 22 ไบต์

พอร์ตของโซลูชัน JS ของ Arnauld ที่ฉันเหนื่อยเกินกว่าจะทดสอบได้อย่างเต็มที่ โปรดลบเพชรออกไหม

+L² £=U´?U:X>M©5)?'-:S

ลองมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.