Identiconsเป็นภาพที่แสดงให้เห็นถึงค่าแฮชซึ่งมักทำจากการจัดสมมาตรของรูปทรงเรขาคณิต สแต็กการแลกเปลี่ยนสแต็กเริ่มต้นของคุณคือตัวระบุ ความท้าทายนี้เกี่ยวกับการสร้าง"wordenticons"ซึ่งเป็นตัวอักษรเวอร์ชันพื้นฐานที่ใช้ข้อความง่าย ๆ ที่ใช้กับสตริงของตัวอักษรตัวพิมพ์เล็กเช่นคำต่างๆ
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่รับสตริง S และส่งออก wordenticon S รับประกันว่าจะไม่มีข้อยกเว้นและมีตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กเท่านั้น az คุณอาจเลือกที่จะสมมติว่า S มีการขึ้นบรรทัดใหม่
wordenticon ของ S จะเป็นตารางสี่เหลี่ยมของข้อความที่มีความยาวด้านข้าง2*length(S)
ประกอบด้วยช่องว่าง (
) แถบแนวตั้ง ( |
) และแถบแนวนอน ( ―
)
ในการสร้าง wordenticon ของ S ให้สร้างตารางสี่เหลี่ยมที่ทุกคอลัมน์สอดคล้องกับตัวอักษร S (ตามลำดับการอ่านจากซ้ายไปขวาตามปกติ) และทุกแถวสอดคล้องกับตัวอักษร S (ตามลำดับการอ่านจากบนลงล่างถึงล่างปกติ )
ตัวอย่างเช่นถ้า S เป็นfood
กริดเริ่มต้นของเราดูเหมือน
food
f....
o....
o....
d....
ที่.
เป็นเพียงตัวยึดตำแหน่ง
สำหรับจุดที่ว่างเปล่า (ทุกจุด.
) ในตาราง:
- ถ้าตัวอักษรคอลัมน์มาก่อนตัวอักษรแถวตามลำดับตัวอักษรแทนที่ด้วย
.
|
- ถ้าตัวอักษรคอลัมน์มาหลังจากที่ตัวอักษรแถวตามลำดับตัวอักษรแทนที่ด้วย
.
―
- หากตัวอักษรคอลัมน์และแถวเหมือนกันให้แทนที่
.
ด้วย
นี่คือfood
ตัวอย่างหลังจากแต่ละขั้นตอนเหล่านี้:
กำลังเพิ่ม
|
:food f...| o|..| o|..| d....
กำลังเพิ่ม
―
:food f.――| o|..| o|..| d―――.
กำลังเพิ่ม
food f ――| o| | o| | d―――
ในการกรอกคำให้สมบูรณ์ให้ลบแถวและคอลัมน์ที่มีคำนั้นออก
――|
| |
| |
―――
จากนั้นสะท้อนสิ่งทั้งหมดในแนวนอน
――||――
| || |
| || |
――― ―――
และในที่สุดก็สะท้อนมันอีกครั้งในแนวตั้ง
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
ส่งผลให้ใน2*length(S)
ตารางข้อความความยาวด้านที่เป็น wordenticon สุดท้าย
ตัวอย่าง
นี่คือตัวอย่างของ wordenticon เพิ่มเติม โปรดทราบว่าคำต่าง ๆ สามารถมี wordenticons ที่เหมือนกันและบาง wordenticons สามารถทำขึ้นอย่างสมบูรณ์ของช่องว่าง (น่าเสียดายที่ markdown ไม่ต้องการที่จะแสดงผลเหล่านั้น)
food
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
mood
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
foof
―― ――
| || |
| || |
―― ――
―― ――
| || |
| || |
―― ――
fool
――――――
| || |
| || |
|―― ――|
|―― ――|
| || |
| || |
――――――
a [2*2 grid of spaces]
to
||
― ―
― ―
||
it
――
| |
| |
――
tt [4*4 grid of spaces]
abc
――――
| ―― |
|| ||
|| ||
| ―― |
――――
and
――――
| || |
|― ―|
|― ―|
| || |
――――
but
――――
| || |
|― ―|
|― ―|
| || |
――――
you
||||
― ―― ―
―| |―
―| |―
― ―― ―
||||
bob
― ―
| || |
― ―
― ―
| || |
― ―
cat
|――|
― ―― ―
|| ||
|| ||
― ―― ―
|――|
cart
|――――|
― ―――― ―
|| ―― ||
||| |||
||| |||
|| ―― ||
― ―――― ―
|――――|
todo
||||||
― | | ―
―― ―― ――
― | | ―
― | | ―
―― ―― ――
― | | ―
||||||
mice
||||||
― |||| ―
―― ―― ――
――| |――
――| |――
―― ―― ――
― |||| ―
||||||
zyxw
||||||
― |||| ―
―― || ――
――― ―――
――― ―――
―― || ――
― |||| ―
||||||
banana
|―|―||―|―|
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|―|―||―|―|
codegolf
――――――――――――――
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||――― ―――||―|
|―||――― ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
――――――――――――――
programming
―||―||||||||||||―||―
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|―――― ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|―――― ――――|― ―――
――― ―|―――― ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|―――― ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
―||―||||||||||||―||―
abcdefghijklm
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟซึ่งเป็นรหัสที่สั้นที่สุดในหน่วยไบต์ Tiebreaker ไปที่คำตอบก่อนหน้า
หมายเหตุ
- อินสแตนซ์ใด ๆ ของแถบแนวนอน (
―
) ในรหัสของคุณอาจนับเป็น 1 ไบต์แทน 3 UTF-8 ไบต์ที่ใช้จริง (มากถึงสิบอินสแตนซ์) - หากต้องการคุณสามารถใช้เครื่องหมายขีดกลาง (
-
) แทนแถบแนวนอน (―
) - ไม่อนุญาตการลบหรือเพิ่มช่องว่างต่อท้ายในบรรทัดของ wordenticon (แม้ว่ารูปร่างจะยังคงไม่เปลี่ยนแปลง) ควรเป็น
2*length(S)
สี่เหลี่ยมข้อความที่มีความยาวด้านที่แน่นอน - wordenticon เอาต์พุตอาจเป็นทางเลือกที่มีบรรทัดใหม่ต่อท้ายเดี่ยว
programming
, and
และcodegolf
แต่คุณลืมpuzzles
...