PPCG Senior Prank


19

Chúng tôi sắp tốt nghiệp đến một trang web đầy đủ và chỉ còn một việc phải làm trước khi tốt nghiệp: chơi khăm cao cấp! Tôi nghĩ rằng chúng ta nên thực hiện một biến thể trên trò đùa cổ điển "lấp đầy hành lang bằng cốc nước".

Thử thách

Chương trình của bạn sẽ đọc bằng văn bản và xuất văn bản đó, được bao trong các cốc nước lộn ngược. Một cốc nước lộn ngược trông như thế này: /~\
Những cốc này chỉ có thể được đặt trong khoảng trắng ở đầu vào và chỉ có thể được đặt sao cho cả ba ký tự của cốc nằm ngay trên một ký tự không phải khoảng trắng (nếu không nước sẽ tràn ra ngoài!). Cốc không thể được xếp chồng lên nhau trên cốc khác. Cốc phải được đặt trong mỗi lần mở có sẵn và giả định rằng mọi đầu vào được bao quanh bởi một khoảng trắng vô hạn.

Bạn có thể giả sử rằng đầu vào được đệm vào một hình chữ nhật có khoảng trắng.

Chúng ta cần nhanh chóng thực hiện trò chơi khăm và không có ai nhận ra, vì vậy, ít byte nhất trong mỗi ngôn ngữ sẽ thắng.

Các trường hợp thử nghiệm

Đầu vào:

     ____________________________________________
    /   ___    /   ___    /   ______/   ________/
   /   /__/   /   /__/   /   /     /   /_______
  /   _______/   _______/   /     /   //__    /
 /   /      /   /      /   /_____/   /___/   /
/___/      /___/      /_________/___________/

Đầu ra:

     /~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\
     ____________________________________________
    /   ___    /   ___    /   ______/   ________/
   /   /__//~\/   /__//~\/   /     /   /_______
  /   _______/   _______/   //~\  /   //__    /
 //~\/      //~\/      //~\/_____//~\/___//~\/
/___/      /___/      /_________/___________/

Đầu vào:

 L
LOL  ROFL:ROFL:LOL:ROFL:ROFL
 L\\        ____I____
    ========    |  |[\
            \___O==___)
            ___I_I__/

Đầu ra:

 L   /~\/~\/~\/~\/~\/~\/~\
LOL  ROFL:ROFL:LOL:ROFL:ROFL
 L\\/~\/~\  ____I____
    ========/~\ |  |[\
            \___O==___)
            ___I_I__/

1
Đây có thể là thời gian để hồi sinh một số ngôn ngữ phù hợp với mô hình 2D đó ...
mbomb007

Câu trả lời:


10

Võng mạc , 41 byte

Số lượng byte giả định mã hóa ISO 8859-1.

(?<=(.)*)(?=.*¶(?>(?<-1>.)*)\S{3})   
/~\

Lưu ý rằng dòng đầu tiên có ba dấu cách.

Yêu cầu đầu vào được đệm vào một hình chữ nhật.

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

Giải trình

Đây là kết hợp dọc khá chuẩn:

(?<=(.)*)

Điều này đếm các nhân vật trước trận đấu bằng cách bắt nhiều nhân vật đó vào nhóm 1.

(?=.*¶(?>(?<-1>.)*)\S{3})

Điều này kiểm tra rằng có ba ký tự không phải dấu cách ở cùng một vị trí trong dòng tiếp theo. Điều này được thực hiện bằng cách xuất hiện từ nhóm 1cho đến khi trống rỗng (?<-1>.)*và ngăn chặn quay lại với nhóm nguyên tử (?>...).

Cuối cùng, chúng tôi phù hợp với không gian thực tế. Những người chỉ đơn giản được thay thế bằng chuỗi chữ /~\. Thuận tiện, các trận đấu được tìm thấy từ trái sang phải và không thể chồng chéo.


3

JavaScript (ES6), 163 byte

a=>(z=a.split`
`,z.unshift(z[0].replace(/./g,' ')),z).map((b,i)=>b.replace(/   /g, (c,j)=>(!z[i+1]||!z[i+1][j+2]||/ /.test(z[i+1].slice(j,j+3))?c:'/~\\'))).join`
`

Nhanh chóng hack cùng nhau giải pháp, chắc chắn có thể được đánh golf xuống. Thêm một dòng trống ở trên, tìm thấy ba khoảng trắng và thay thế bằng một cốc nếu dòng tiếp theo không chứa bất kỳ khoảng trắng nào. Làm cho giả định được phép rằng đầu vào sẽ là hình chữ nhật. Bất kỳ khoảng trống nào trong đầu vào đều cần thoát (như người ta mong đợi với JS).


Tôi nghĩ rằng điều này trả về đầu ra sai cho a test.
Neil

1

JavaScript (ES6), 109 byte

s=>s.replace(/.*\n/,m=>(t=m).replace(/./g,' ')+m).replace(eval(`/   (?=[^]{${t.length-3}}[^ ]{3})/g`),"/~\\")

Cũng như yêu cầu đầu vào hình chữ nhật, cũng giả sử dòng đầu tiên kết thúc bằng một dòng mới, ngay cả khi đó là dòng đầu vào duy nhất. Sử dụng giao diện được tạo động để đảm bảo rằng nó tìm thấy ba khoảng trắng "bên trên" ba không gian, để không bị nhầm lẫn bởi các lỗ.

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.