Jimmy cần sự giúp đỡ của bạn!


17

Có vẻ như gần đây, đã có rất nhiều Jimmys rơi vào cái chết của họ, như có thể thấy ở đây , và ở đây bạn được yêu cầu xác định xem liệu Jimmy có ngã không. Đã đến lúc chúng ta chấm dứt sự điên rồ này và cố gắng cứu Jimmy.

Jimmy có ba bộ phận cơ thể /, o\sắp xếp như thế này

/o\

Nền tảng được đại diện với -. Jimmy sẽ rơi ra khỏi nền tảng của họ nếu họ có hai hoặc nhiều bộ phận cơ thể không trực tiếp trên một nền tảng.

Vài ví dụ:

   /o\
- -------

Jimmy sẽ cân bằng vì tất cả các bộ phận cơ thể của họ ở trên a -.

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

Jimmy sẽ cân bằng vì hai phần cơ thể ở trên -s.

 /o\
-- ----  --

Jimmy sẽ cân bằng mặc dù chúng được phân chia giữa hai nền tảng

  /o\
   -

Jimmy sẽ không cân bằng vì hai phần cơ thể không nằm trên một nền tảng.


Vì nguồn cung nền tảng của tôi sắp hết, tôi chỉ có các nền tảng có chiều dài là 5 và điều quan trọng là chúng tôi sử dụng càng ít càng tốt.

Nhiệm vụ của bạn là lấy một đầu vào của Jimmys và xuất ra một chuỗi các nền tảng sẽ lưu tất cả các Jimmys vào đầu vào. Đầu ra của bạn phải sử dụng càng ít nền tảng càng tốt, nhưng mỗi nền tảng phải là 5- rộng inch.

Lưu ý rằng quy tắc của nền tảng là 5 -chiều rộng, có nghĩa là mỗi nền tảng phải có khoảng cách giữa chúng. ----------không hợp lệ trong đầu ra vì nó sẽ được coi là một nền tảng có độ dài 10 chứ không phải hai nền tảng có chiều dài 5.

Trường hợp thử nghiệm

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

Quy tắc tiêu chuẩn áp dụng.

Đây là môn đánh gôn, có thể câu trả lời ngắn nhất sẽ thắng!


2
@Veskah miễn là tất cả Jimmys được lưu bằng cách sử dụng ít nền tảng nhất có thể, vị trí không quan trọng, do đó sẽ có nhiều đầu ra hợp lệ cho mỗi đầu vào. Không có điều kiện về số lượng Jimmys sẽ có trong đầu vào, một chuỗi trống sẽ là đầu vào hợp lệ.
Quinn

3
Trường hợp thử nghiệm 4 trông giống như một khuôn mặt đáng sợ
Dữ liệu hết hạn

2
Theo dõi: đặt càng nhiều Jimmys càng tốt trên các nền tảng theo cách mà chúng sẽ không rơi.
val nói Phục hồi

2
@val đó thực sự là một trong những câu hỏi được liên kết - Tôi đã theo dõi câu hỏi sau: P
Quinn

7
Tôi có thể thấy rất nhiều lượt theo dõi của Jimmy trong tương lai.
Connectyourcharger

Câu trả lời:


2

Than , 17 15 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

W‹ⅈLθ«

Lặp lại trong khi vị trí con trỏ nhỏ hơn độ dài của đầu vào.

×⁵№o\§θⅈ

Nếu ký tự ở vị trí đó trong đầu vào là một ohoặc \sau đó in 5 -s.

Di chuyển đến ký tự tiếp theo, do đó đảm bảo ít nhất một khoảng trống giữa các nền tảng.

Giải pháp 17 byte trước đây là IMHO thêm "Char than-y".

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đầu ra bao gồm đầu vào, do đó chứng minh tính đúng đắn của giải pháp. Giải trình:

θ⸿

In đầu vào và di chuyển đến đầu dòng tiếp theo.

Fθ«

Lặp lại mọi ký tự của đầu vào để đảm bảo rằng không có Jimmy nào bị bỏ lỡ.

×⁵¬№ /⊟KD²↑

Nhìn vào nhân vật phía trên con trỏ. Nếu không có, hoặc nếu đó là không gian hoặc /, thì không làm gì cả, nếu không thì in 5 -giây.

Di chuyển đến ký tự tiếp theo, do đó đảm bảo ít nhất một khoảng trống giữa các nền tảng.


7

Python 2 , 70 67 byte

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

Hãy thử trực tuyến!

-3 byte nhờ Kevin Cruijssen & Neil

Không phải là đẹp nhất, không chắc chắn làm thế nào để xử lý tốt hơn những dấu gạch chéo còn sót lại ...

Thật không may, chúng tôi không thể thay thế cả hai đầu của mỗi nền tảng bằng các khoảng trắng bằng một re.subcuộc gọi, bởi vì trong trường hợp 2 nền tảng cách nhau một khoảng cách, khoảng cách giữa chúng có thể được khớp nhiều lần. Một xác nhận lookahead / lookbehind sẽ không giúp đỡ, bởi vì bất cứ điều gì phù hợp trong các xác nhận đó không được thay thế.

Sử dụng một re.subtham chiếu duy nhất :

Python 3.8 (tiền phát hành) , 78 byte

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

Hãy thử trực tuyến!


69 byte bằng cách đầu tiên thay thế /và sau đó là [^ ].
Kevin Cruijssen

@ Neil's golf gợi ý về câu trả lời Retina của tôi cũng phù hợp với bạn: 67 byte .
Kevin Cruijssen


2

Python 3 , 158 164 160 byte

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)

Hãy thử trực tuyến!

Đây là câu trả lời golf mã đầu tiên của tôi, và tôi rất vui vì đó là câu hỏi của Jimmy!

Giải trình:

  • a=input();r="": Nhập vào và khởi tạo một chuỗi mới r.

  • for i,c in enumerate(a):: Liệt kê trên đầu vào.

  • try:r[i] ... except:: Xem nếu r[i]tồn tại - nếu không, xử lý exceptkhối.

  • if c in"/o":: Kiểm tra xem nhân vật hiện tại có ở hai bộ phận cơ thể đầu tiên của Jimmy không.

  • r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- ": Nếu vậy, thêm một phân khúc mới. Thêm một khoảng trắng trước phân đoạn mới của chúng tôi nếu một đầu khác có mặt trong năm ký tự.

  • else:r+=" ": Nếu không, chỉ cần thêm một khoảng trắng.

  • print(r): In kết quả cuối cùng của chúng tôi.


Khá gần, nhưng tôi nghĩ rằng điều này thực sự không hoạt động cho tất cả các trường hợp thử nghiệm. Nó nên sử dụng càng ít nền tảng càng tốt và ví dụ cuối cùng của bạn sử dụng 2 khi có thể được thực hiện với 1
Quinn

@Quinn Bắn. Err, không cạnh tranh cho đến khi tôi sửa nó.
Connectyourcharger

@connectyourcharger "không cạnh tranh" không xác thực một giải pháp không hợp lệ. Tôi khuyên bạn nên xóa nó nếu bạn sẽ không sửa nó trong một thời gian (ví dụ: vài phút tiếp theo).
Erik the Outgolfer

@Quinn tôi đã sửa nó ngay.
Connectyourcharger

@connectyourcharger Đẹp!
Quinn

2

Võng mạc , 23 21 byte

/

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

-2 byte nhờ @Neil .

Chứa một không gian dấu duy nhất trên dòng thứ hai, thứ tư và thứ sáu.

Cổng câu trả lời Python 2 của @negativeSeven , vì vậy hãy đảm bảo nâng cao anh ấy!

Hãy thử trực tuyến.

Giải trình:

Thay thế tất cả "/"bằng một " ":

/
 

Nối 5 dấu cách:

$
5* 

Thay thế tất cả các chuỗi con có kích thước sáu không bắt đầu bằng khoảng trắng bằng "----- ":

\S.{5}
5*- 

Bạn có thể sử dụng \Sthay vì [^ ]?
Neil

@Neil Ah, tất nhiên rồi. Cảm ơn!
Kevin Cruijssen


1

05AB1E , 25 24 byte

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

Cổng câu trả lời Python 2 của @negativeSeven , vì vậy hãy đảm bảo nâng cao anh ấy!

Hãy thử trực tuyến hoặc xác minh tất cả các trường hợp thử nghiệm .

Giải trình:

ð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 byte

Một cổng của giải pháp JS của Arnauld mà tôi đã quá kiệt sức để kiểm tra đầy đủ. Nếu nó không hợp lệ, Kim cương có thể xóa không?

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

Thử nó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.