Thư tắm bọt


19

Nếu bạn có một đứa con nhỏ trong nhà, bạn có thể đã bắt gặp những lá thư tắm bằng bọt. Chúng có thể được làm ẩm và dán vào các bề mặt phẳng như gạch và mặt bên của bồn tắm để tạo ra các từ và thông điệp.

Phạm vi của các từ và tin nhắn có phần bị giới hạn nếu bạn chỉ có một bộ, vì bạn chỉ nhận được 36 ký tự: chữ in hoa AZ và chữ số 0-9 : ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. Tuy nhiên, bạn có thể xảo quyệt và lạm dụng một số chữ cái và chữ số để tạo thành bản sao thêm của các chữ cái khác:

3: E
1: I
7: L (when rotated)
M: W (when rotated)
0: O
2: S (when flipped)
5: S
W: M (when rotated)
2: Z
5: Z (when flipped)
O: 0
6: 9 (when rotated)
L: 7 (when rotated)
9: 6 (when rotated)

Lưu ý rằng đây không phải là tất cả hai hướng, vì nó có xu hướng dễ đọc một chữ số như một phần của từ hơn là một chữ cái như một phần của một số.

Mỗi bộ cũng có một loạt các màu, trong đó mỗi chữ cái được tô màu theo thứ tự. Ví dụ: nếu bộ của bạn có 3 màu Đỏ, Vàng và Xanh lam, thì bộ của bạn sẽ như sau:

  • Màu đỏ: ADGJMPSVY147
  • Màu vàng: BEHKNQTWZ258
  • Màu xanh da trời: CFILORUX0369

Do đó, nhiệm vụ của bạn là lấy ba tham số (theo bất kỳ cách phù hợp nào) chỉ ra một từ hoặc cụm từ, số lượng màu sẽ được sử dụng và số lượng bộ bạn có, sau đó xuất ra một đại diện của từ hoặc cụm từ, trong một bộ màu sắc phù hợp, sử dụng thay thế nếu cần thiết. Nếu không thể tạo từ hoặc cụm từ cho số lượng bộ, thay vào đó hãy xuất "Nope", bằng các màu thích hợp.

Ví dụ

Trong tất cả những điều này, tham số đầu tiên là từ hoặc cụm từ, thứ hai là số lượng màu sắc và thứ ba là số lượng bộ có sẵn.

["bath", 3, 1]

BỒN TẮM

["programming", 3, 2]

LẬP TRÌNH

["puzzles", 3, 1]

PUZ2LES

["code golf", 5, 1]

MÃ G0LF

["willow tree", 1, 1]

WIL7OM TRE3

["impossible phrase", 8, 1]

CHÂU ÂU - chỉ có 1 P trong một tập hợp và không có sự thay thế hợp lệ

Ghi chú

  • Bạn có thể mặc định là 1 bộ nếu điều này giúp (ví dụ: giá trị tham số mặc định là 1), nhưng bạn phải hỗ trợ nhiều bộ nếu được yêu cầu. Số lượng bộ bạn có sẽ luôn là số nguyên dương khác không.
  • Nếu bạn có nhiều bộ, tất cả chúng đều được tô màu theo cùng một cách: nếu A có màu đỏ trong bộ thứ nhất, thì nó cũng sẽ có màu đỏ trong bộ thứ hai. Các màu được áp dụng cho mỗi bộ, không phải cho tất cả các bộ trong một lệnh gọi đã cho
  • Bạn phải hỗ trợ 1 đến 36 màu - 1 có nghĩa là tất cả các ký tự đều có cùng màu, 36 có nghĩa là tất cả chúng đều khác biệt. Sẽ chỉ có số nguyên màu sắc.
  • Bạn có thể sử dụng bất kỳ màu nào, miễn là chúng khác biệt về mặt trực quan - nếu bạn xuất ra thiết bị đầu cuối, bạn có thể sử dụng kết hợp tiền cảnh và nền làm "màu", mặc dù bạn không được sử dụng cùng màu cho nền trước và nền
  • Đầu ra của bạn phải sử dụng các ký tự mà bạn thực sự sử dụng, không phải các ký tự từ đầu vào. Ví dụ: nếu bạn có ["liễu", 1, 1] làm đầu vào, bạn có thể xuất WIL7OMvới 7 và M xoay 180 độ
  • Bạn nên sử dụng các chữ cái chính xác trước, sau đó thay thế: MI7LOWkhông chính xác cho ["liễu", 1, 1]
  • Bạn có thể sử dụng bất kỳ thay thế nào cho một ký tự đã cho: SO5SO2với lật 2 đều hợp lệ cho "SOS"
  • Nhiều yêu cầu mã của bạn cho cùng một đầu vào không phải tạo ra đầu ra giống hệt nhau
  • Đầu ra phải được viết hoa, nhưng đầu vào có thể ở bất kỳ kết hợp nào của chữ hoa và chữ thường
  • Nó là hiển nhiên, nhưng một không gian không có màu

Quy tắc

  • Đây là mã golf, nhưng với đầu ra bán đồ họa (Tôi không chắc liệu bạn có thể thực hiện lật văn bản trong một thiết bị đầu cuối hay không, nhưng tôi quan tâm xem liệu Pyth có tích hợp sẵn cho nó không)
  • Áp dụng sơ hở tiêu chuẩn
  • Không có phần thưởng cho các chức năng, nhưng vui lòng bỏ phiếu cho câu trả lời thú vị
  • Bao gồm một số ảnh chụp màn hình của đầu ra của bạn trong câu trả lời của bạn

Những thách thức liên quan


1
Điều gì xảy ra nếu không thể xuất "NOPE" cho các bộ?
Rɪᴋᴇʀ

@Riker Một bộ chứa 36 ký tự đã cho. Khi nào nó sẽ không thể đầu ra NOPE?
mypetlion

@mypetlion khi không có bộ nào ...
R

@Riker Đọc "Số lượng bộ bạn có sẽ luôn là số nguyên dương khác không."
mypetlion

1
Thư tắm bọt là một lời giới thiệu hay về leet speak ...
Arnauld

Câu trả lời:


1

HTML / JavaScript (với jQuery) / CSS - không cạnh tranh / không chơi gôn

Chỉ để làm cho quả bóng lăn, và cho thấy rằng điều đó không phải là không thể, đây là một triển khai không có tính cạnh tranh, không có tính cạnh tranh, có một cách tiếp cận ngây thơ cho nhiệm vụ.

Đầu tiên, nó tạo ra một chuỗi gồm tất cả các ký tự có thể ( tempalph), bằng cách nối càng nhiều bản sao của bảng chữ cái khi có bộ. Sau đó, nó lặp lại thông qua cụm từ, đặt từng chữ cái của cụm từ vào một biến đầu ra và bỏ trống phiên bản đầu tiên của chữ cái đó tempalph. Nếu không thể (chữ cái không tồn tại), nó sẽ kiểm tra xem chữ cái có thể thay thế bằng thứ gì đó còn lại trong chuỗi không. Nếu điều đó cũng thất bại, nó sẽ xuất ra một đầu ra "NOPE" được xác định trước. Giả sử nó không trúng trường hợp "NOPE", nó sẽ trả về chuỗi đầu ra và đặt nó vào DIV trên trang.

Sau đó, nó lặp qua chuỗi bảng chữ cái cơ sở và nếu một chữ cái đã được sử dụng, gán cho nó một lớp CSS thích hợp, mỗi lớp có một bộ màu được xác định trước.

Nó sử dụng các đầu vào HTML cho đầu vào và cập nhật về keyup trong đó.

Hãy dùng thử tại JSFiddle

Ví dụ cho ["BATH", 3, 1]:

Bồn tắm

JS:

bảng chữ cái var = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

chức năng getPhrase (cụm từ, bộ) {
    var modphrase = "";
  var nope = 'NOPE';
  var re = / ^ [A-Z0-9] + $ /;
  if (re.test (cụm từ)) {
    // có thể hợp lệ - cần kiểm tra xem có đủ ký tự không
    // Tại thời điểm này, cần xem xét cụ thể những ký tự nào là cần thiết

    var tempalph = "";
    for (var i = 0; i '+ char +' ';
        if (tempalph.indexOf (char)! = -1) {
        tempalph = tempalph.replace (char, "#");
      } khác {
        chuyển đổi (char) {
            trường hợp "E":
            if (tempalph.indexOf ("3")! = -1) {
                    tempalph = tempalph.replace ("3", "#");
              modar = '3';
                } khác {
                trở về không;
            }
            phá vỡ;
          trường hợp "tôi":
            if (tempalph.indexOf ("1")! = -1) {
                    tempalph = tempalph.replace ("1", "#");
              modar = '1';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "L":
            if (tempalph.indexOf ("7")! = -1) {
                    tempalph = tempalph.replace ("7", "#");
              modar = '7';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "M":
            if (tempalph.indexOf ("W")! = -1) {
                    tempalph = tempalph.replace ("W", "#");
              modar = 'W';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "O":
            if (tempalph.indexOf ("0")! = -1) {
                    tempalph = tempalph.replace ("0", "#");
              modar = '0';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "W":
            if (tempalph.indexOf ("M")! = -1) {
                    tempalph = tempalph.replace ("M", "#");
              modar = 'M';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "0":
            if (tempalph.indexOf ("O")! = -1) {
                    tempalph = tempalph.replace ("O", "#");
              modar = 'O';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "6":
            if (tempalph.indexOf ("9")! = -1) {
                    tempalph = tempalph.replace ("9", "#");
              modar = '9';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "7":
            if (tempalph.indexOf ("L")! = -1) {
                    tempalph = tempalph.replace ("L", "#");
              modar = 'L';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "9":
            if (tempalph.indexOf ("6")! = -1) {
                    tempalph = tempalph.replace ("6", "#");
              modar = '6';
                } khác {
              trở về không;
            }
            phá vỡ;

          các trường hợp":
            if (tempalph.indexOf ("5")! = -1) {
                    tempalph = tempalph.replace ("5", "#");
              modar = '5';
                } if if (tempalph.indexOf ("2")! = -1) {
                    tempalph = tempalph.replace ("2", "#");
              modar = '2';
                } khác {
              trở về không;
            }
            phá vỡ;
                    trường hợp "Z":
            if (tempalph.indexOf ("2")! = -1) {
                    tempalph = tempalph.replace ("2", "#");
              modar = '2';
                } if if (tempalph.indexOf ("5")! = -1) {
                    tempalph = tempalph.replace ("5", "#");
              modar = '5';
                } khác {
              trở về không;
            }
            phá vỡ;
          trường hợp "":
            phá vỡ;
          mặc định:
            trở về không;
          }

      }
        cụm từ + = modar;
    }

    trả lại cụm từ;
  } khác {
    // chứa một số ký tự khác, vì vậy chắc chắn không hợp lệ
    trở về không;
  }
}

hàm addColors (colcount) {
  var i = 0;
  cho (hãy để char của bảng chữ cái) {
    exgroup = "." + char;
    new class = "col" + i;
    if ($ (lớp ngoài) .length> 0) {
      $ (exgroup) .addClass (new class);
    }
    i ++;
    if (i == colcount) {
        i = 0;
    } 
  }
}


$ ("# cụm từ, # bộ, # màu"). on ("keyup", function () {
    cụm từ var = $ ("# cụm từ"). val (). toUpperCase ();
  cụm từ = getPhrase (cụm từ, $ ("# bộ"). val ());
    $ ("# đầu ra"). html (cụm từ);
  addColors ($ ("# colors"). val ());
})

HTML:

<nhãn> Cụm từ <input type = "text" id = "cụm từ" /> </ nhãn>
<nhãn> Màu sắc <input type = "text" id = "colors" value = "3" /> </ nhãn>
<nhãn> Đặt <input type = "text" id = "sets" value = "1" /> </ nhãn>

<div id = "đầu ra">

</ div>

CSS:

.col0 {màu: # f00}
.col1 {màu: # 0f0}
.col2 {màu: # 00f}
.col3 {màu: # 66CDAA}
.col4 {màu: # EE82EE}
.col5 {màu: # 7FFFD4}
.col6 {màu: # 7FFFD4}
.col7 {màu: #FFDEAD}
.col8 {màu: # D8BFD8}
.col9 {màu: # FF6347}
.col10 {màu: # 8B4513}
.col11 {màu: # 800000}
.col12 {màu: # 00FFFF}
.col13 {màu: # 32CD32}
.col14 {màu: # 191970}
.col15 {màu: # 1E90FF}
.col16 {màu: # A0522D}
.col17 {màu: # 808000}
.col18 {màu: # DC143C}
.col19 {màu: # 90EE90}
.col20 {màu: # D2691E}
.col21 {màu: # 48D1CC}
.col22 {màu: # 008000}
.col23 {màu: # 8B008B}
.col24 {màu: # 6495ED}
.col25 {màu: # 800080}
.col26 {màu: # 000080}
.col27 {màu: # DB7093}
.col28 {màu: # 7FFF00}
.col29 {màu: # 00FA9A}
.col30 {màu: # 0000FF}
.col31 {màu: # BC8F8F}
.col32 {màu: # A52A2A}
.col33 {màu: # 4169E1}
.col34 {màu: # FFFF00}
.col35 {màu: # FFA07A}

.rot {hiển thị: khối nội tuyến; biến đổi: xoay (0,5turn);}
.flip {display: inline-block; biến đổi: rotationY (0.5turn);}

div {
  họ phông chữ: sans-serif;
  cỡ chữ: 3em;
  màu nền: # 000;
  phần đệm: 10px;
}

Tôi nghĩ rằng không contender nghiêm trọng nên được bao gồm trong câu hỏi, mỗi này (mini) meta sự đồng thuận.
dùng202729
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.