ตัวอักษรโฟมอาบน้ำ


19

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

ช่วงของคำและข้อความที่ค่อนข้าง จำกัด ถ้าคุณมีเพียงหนึ่งชุด แต่เนื่องจากคุณจะได้รับ 36 ตัวอักษร: ตัวอักษรพิมพ์ใหญ่ AZ และตัวเลข ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-9: อย่างไรก็ตามคุณสามารถใช้ไหวพริบและใช้ตัวอักษรและตัวเลขในทางที่ผิดเพื่อสร้างสำเนาของจดหมายอื่น:

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)

โปรดทราบว่าสิ่งเหล่านี้ไม่ใช่ทิศทางสองทิศทางเนื่องจากมีแนวโน้มที่จะง่ายต่อการอ่านตัวเลขเป็นส่วนหนึ่งของคำมากกว่าตัวอักษรซึ่งเป็นส่วนหนึ่งของตัวเลข

แต่ละชุดยังมาในช่วงของสีที่ตัวอักษรแต่ละตัวมีสีตามลำดับ ตัวอย่างเช่นหากชุดของคุณมี 3 สีแดงเหลืองและน้ำเงินชุดของคุณจะเป็นดังนี้:

  • สีแดง: ADGJMPSVY147
  • สีเหลือง: BEHKNQTWZ258
  • สีน้ำเงิน: CFILORUX0369

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

ตัวอย่าง

ในสิ่งเหล่านี้ทั้งหมดพารามิเตอร์แรกคือคำหรือวลีที่สองคือจำนวนสีและที่สามคือจำนวนชุดที่มี

["bath", 3, 1]

BATH

["programming", 3, 2]

การเขียนโปรแกรม

["puzzles", 3, 1]

PUZ2LES

["code golf", 5, 1]

CODE G0LF

["willow tree", 1, 1]

WIL7OM TRE3

["impossible phrase", 8, 1]

NOPE - มีเพียง 1 P ในหนึ่งชุดและไม่มีการแทนที่ที่ถูกต้อง

หมายเหตุ

  • คุณสามารถตั้งค่าเริ่มต้นเป็น 1 ชุดหากสิ่งนี้ช่วยได้ (เช่นค่าพารามิเตอร์เริ่มต้นที่ 1) แต่คุณต้องรองรับหลายชุดหากมีการร้องขอ จำนวนชุดที่คุณมีจะเป็นจำนวนเต็มบวกที่ไม่เป็นศูนย์เสมอ
  • หากคุณมีหลายชุดพวกเขาทั้งหมดมีสีในลักษณะเดียวกัน: ถ้า A เป็นสีแดงในชุดแรกมันจะเป็นสีแดงในชุดที่สองด้วย สีถูกนำไปใช้ต่อชุดไม่ใช่ชุดทั้งหมดในการร้องขอที่กำหนด
  • คุณต้องสนับสนุน 1 ถึง 36 สี - 1 หมายถึงตัวละครทุกตัวมีสีเดียวกัน, 36 หมายความว่าพวกเขาแตกต่างกันทั้งหมด จะมีตัวเลขสีจำนวนเต็มเท่านั้น
  • คุณสามารถใช้สีใดก็ได้ตราบใดที่สีต่างกัน - ถ้าคุณแสดงผลไปยังเทอร์มินัลคุณสามารถใช้การรวมกันของพื้นหน้าและพื้นหลังเป็น "สี" แม้ว่าคุณจะต้องไม่ใช้สีเดียวกันสำหรับพื้นหน้าและพื้นหลัง
  • เอาต์พุตของคุณต้องใช้อักขระที่คุณใช้จริงไม่ใช่อักขระจากอินพุต ตัวอย่างเช่นถ้าคุณมี ["Willow", 1, 1] เป็นอินพุตคุณสามารถส่งออกWIL7OMด้วย 7 และ M หมุน 180 องศา
  • คุณควรใช้ตัวอักษรที่ถูกต้องก่อนแล้วแทนที่: MI7LOWไม่ถูกต้องสำหรับ ["willow", 1, 1]
  • คุณสามารถใช้การทดแทนใด ๆ สำหรับตัวละครที่กำหนด: SO5และSO2ด้วยการพลิก 2 ทั้งคู่ที่ถูกต้องสำหรับ "SOS"
  • การร้องขอหลายรหัสของคุณสำหรับอินพุตเดียวกันไม่จำเป็นต้องสร้างเอาต์พุตที่เหมือนกัน
  • เอาต์พุตควรเป็นตัวพิมพ์ใหญ่ แต่อินพุตสามารถอยู่ในตัวผสมระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็กก็ได้
  • ควรชัดเจน แต่ช่องว่างไม่มีสี

กฎระเบียบ

  • นี่คือโค้ดกอล์ฟ แต่มีเอาต์พุตครึ่งกราฟิก (ฉันไม่แน่ใจว่าคุณสามารถพลิกข้อความในเทอร์มินัลได้หรือไม่ แต่สนใจที่จะดูว่า Pyth มีการติดตั้งไว้ภายในหรือไม่)
  • ช่องโหว่มาตรฐานใช้
  • ไม่มีโบนัสสำหรับฟังก์ชั่น แต่โปรดโหวตคำตอบที่น่าสนใจ
  • รวมภาพหน้าจอของผลลัพธ์ของคุณในคำตอบของคุณ

ความท้าทายที่เกี่ยวข้อง


1
เกิดอะไรขึ้นถ้ามันเป็นไปไม่ได้ที่จะส่งออก "NOPE" ให้กับชุด?
Rɪᴋᴇʀ

@Riker ชุดประกอบด้วยอักขระที่กำหนด 36 ตัว จะไม่สามารถส่งออกเมื่อNOPEใด
mypetlion

@mypetlion เมื่อไม่มีชุด ...
Rɪᴋᴇʀ

@Riker อ่าน "จำนวนชุดที่คุณมีจะเป็นจำนวนเต็มบวกที่ไม่ใช่ศูนย์เสมอ"
mypetlion

1
ตัวอักษรโฟมอาบน้ำเป็นคำแนะนำที่ดีสำหรับ leet พูด ...
Arnauld

คำตอบ:


1

HTML / JavaScript (พร้อม jQuery) / CSS - ไม่แข่งขัน / ไม่ใช่กอล์ฟ

เพียงเพื่อให้ลูกบอลกลิ้งและแสดงให้เห็นว่ามันเป็นไปไม่ได้เลยนี่คือการดำเนินการที่ไม่ใช่กอล์ฟที่ไม่ใช่การแข่งขัน

มันจะสร้างสตริงของตัวละครที่เป็นไปได้ทั้งหมด ( tempalph) โดยการเข้าร่วมสำเนาตัวอักษรให้มากที่สุดเท่าที่มีอยู่ จากนั้นมันจะวนซ้ำตามวลีโดยใส่ตัวอักษรของวลีแต่ละตัวลงในตัวแปรเอาต์พุตและทำให้อินสแตนซ์แรกของตัวอักษรtempalphนั้นว่างเปล่า หากไม่สามารถทำได้ (ไม่มีตัวอักษร) มันจะตรวจสอบว่าตัวอักษรนั้นสามารถแทนที่ได้ด้วยสิ่งที่เหลืออยู่ในสตริง หากยังล้มเหลวระบบจะส่งเอาต์พุต "NOPE" ที่กำหนดไว้ล่วงหน้า สมมติว่ามันไม่ได้ไปที่กล่อง "NOPE" มันจะส่งคืนสตริงเอาต์พุตและวางลงใน DIV บนหน้า

จากนั้นจะวนซ้ำผ่านสตริงตัวอักษรฐานและหากมีการใช้ตัวอักษรให้กำหนดคลาส CSS ที่เหมาะสมซึ่งแต่ละชุดนั้นจะมีชุดสีที่กำหนดไว้ล่วงหน้า

มันใช้อินพุต HTML สำหรับการป้อนข้อมูลและอัปเดตเกี่ยวกับการกดคีย์ในพวกเขา

ลองใช้ที่JSFiddle

ตัวอย่างสำหรับ["BATH", 3, 1]:

การอาบน้ำ

JS:

var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

ฟังก์ชัน getPhrase (วลีชุด) {
    var modphrase = "";
  var nope = 'NOPE';
  var re = / ^ [A-Z0-9] + $ /;
  if (re.test (วลี)) {
    // อาจใช้ได้ - ต้องตรวจสอบว่ามีอักขระเพียงพอ
    // ณ จุดนี้จำเป็นต้องดูเฉพาะสิ่งที่ตัวละครต้องการ

    var tempalph = "";
    สำหรับ (var i = 0; i '+ char +' ';
        if (tempalph.indexOf (char)! = -1) {
        tempalph = tempalph.replace (ถ่าน, "#");
      } อื่น {
        สวิทช์ (ถ่าน) {
            กรณี "E":
            if (tempalph.indexOf ("3")! = -1) {
                    tempalph = tempalph.replace ("3", "#");
              modchar = '3';
                } อื่น {
                ไม่คืน
            }
            หยุดพัก;
          กรณี "ฉัน":
            if (tempalph.indexOf ("1")! = -1) {
                    tempalph = tempalph.replace ("1", "#");
              modchar = '1';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "L":
            if (tempalph.indexOf ("7")! = -1) {
                    tempalph = tempalph.replace ("7", "#");
              modchar = '7';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "M":
            if (tempalph.indexOf ("W")! = -1) {
                    tempalph = tempalph.replace ("W", "#");
              modchar = 'W';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "O":
            if (tempalph.indexOf ("0")! = -1) {
                    tempalph = tempalph.replace ("0", "#");
              modchar = '0';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "W":
            if (tempalph.indexOf ("M")! = -1) {
                    tempalph = tempalph.replace ("M", "#");
              modchar = 'M';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "0":
            if (tempalph.indexOf ("O")! = -1) {
                    tempalph = tempalph.replace ("O", "#");
              modchar = 'O';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "6":
            if (tempalph.indexOf ("9")! = -1) {
                    tempalph = tempalph.replace ("9", "#");
              modchar = '9';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "7":
            if (tempalph.indexOf ("L")! = -1) {
                    tempalph = tempalph.replace ("L", "#");
              modchar = 'L';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "9":
            if (tempalph.indexOf ("6")! = -1) {
                    tempalph = tempalph.replace ("6", "#");
              modchar = '6';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;

          กรณี "S":
            if (tempalph.indexOf ("5")! = -1) {
                    tempalph = tempalph.replace ("5", "#");
              modchar = '5';
                } else if (tempalph.indexOf ("2")! = -1) {
                    tempalph = tempalph.replace ("2", "#");
              modchar = '2';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
                    กรณี "Z":
            if (tempalph.indexOf ("2")! = -1) {
                    tempalph = tempalph.replace ("2", "#");
              modchar = '2';
                } อื่นถ้า (tempalph.indexOf ("5")! = -1) {
                    tempalph = tempalph.replace ("5", "#");
              modchar = '5';
                } อื่น {
              ไม่คืน
            }
            หยุดพัก;
          กรณี "":
            หยุดพัก;
          ค่าเริ่มต้น:
            ไม่คืน
          }

      }
        modphrase + = modchar;
    }

    กลับ modphrase;
  } อื่น {
    // มีอักขระอื่น ๆ อยู่ด้วยดังนั้นจึงไม่ถูกต้อง
    ไม่คืน
  }
}

ฟังก์ชั่น addColors (colcount) {
  var i = 0;
  สำหรับ (ปล่อยให้ตัวอักษร) {
    exclass = "." + char;
    newclass = "col" + i;
    if ($ (exclass) .length> 0) {
      $ (exclass) .addClass (NewClass);
    }
    ฉัน ++;
    ถ้า (i == colcount) {
        i = 0;
    } 
  }
}


$ ("# วลี, # ชุด, # colors"). on ("keyup", ฟังก์ชัน () {
    var วลี = $ ("# วลี"). val (). toUpperCase ();
  วลี = getPhrase (วลี, $ ("# sets"). val ());
    $ ( "# เอาท์พุท") HTML (วลี).
  addColors ($ ( "# สี") Val ().);
})

HTML:

<label> วลี <input type = "text" id = "วลี" /> </label>
<label> สี <input type = "text" id = "colors" value = "3" /> </label>
<label> ตั้งค่า <input type = "text" id = "set" value = "1" /> </label>

<div id = "output">

</ div>

CSS:

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

.rot {display: inline-block; แปลง: หมุน (0.5 เปิด);}
.flip {display: inline-block; เปลี่ยนรูป: rotateY (0.5 เปิด);}

div {
  font-family: sans-serif;
  ขนาดตัวอักษร: 3em;
  สีพื้นหลัง: # 000;
  การขยาย: 10px;
}

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