ในห้องสนทนาPPCG ไบต์ที่สิบเก้าการใช้คาเร็ต^
(หรือแครอท ) เป็นวิธีการแสดงว่าคุณเห็นด้วยกับหนึ่งในความคิดเห็นที่ทำไว้ก่อนหน้านี้เหนือของคุณ
ข้อความคาเร็ตประกอบด้วยเพียง^
อักขระN ตัว (โดยที่ N เป็นจำนวนเต็มบวก) และหมายถึงข้อตกลงกับข้อความก่อนหน้าของ Nth ดังนั้น^
หมายถึงข้อตกลงเดียวกับข้อความก่อนหน้าทันที^^
หมายถึงข้อตกลงกับข้อความสองบรรทัดขึ้น^^^
หมายถึงข้อตกลงกับข้อความสามบรรทัดขึ้นไปและอื่น ๆ
นอกจากนี้เมื่อ caret message X อยู่ในข้อตกลง (หรือที่ชี้ไปที่) caret message อื่น Y ดังนั้น X จะถือว่าสอดคล้องกับสิ่งที่ Y เห็นด้วย อาจมีหลายเลเยอร์ของสิ่งนี้และในท้ายที่สุดข้อความคาเร็ตทั้งหมดแสดงข้อตกลงกับข้อความที่ไม่มีคาเร็ตหนึ่งข้อความ
ตัวอย่างเช่นหากทรานสคริปต์การสนทนามีลักษณะดังนี้: (หนึ่งข้อความต่อบรรทัด)
I like dogs [line 1]
I like cats [line 2]
^ [line 3]
^^^ [line 4]
^^ [line 5]
I like turtles [line 6]
^ [line 7]
^^^ [line 8]
^^ [line 9]
จากนั้นบรรทัดที่ 1, 2 และ 6 เป็นข้อความที่ไม่เป็นคาเร็ตและอื่น ๆ ทั้งหมดคือข้อความคาเร็ตที่ชี้ไปที่ข้อความที่ไม่เป็นคาเร็ท:
- บรรทัดที่ 3 คะแนนโดยตรงไปยังบรรทัดที่ 2
- บรรทัดที่ 4 ชี้ไปที่บรรทัดที่ 1 โดยตรง
- บรรทัดที่ 5 ชี้ไปที่บรรทัดที่ 3 ซึ่งชี้ไปที่บรรทัดที่ 2
- บรรทัดที่ 7 ชี้ไปที่บรรทัดที่ 6
- บรรทัดที่ 8 จุดถึงบรรทัดที่ 5 ซึ่งชี้ไปที่บรรทัดที่ 3 ซึ่งชี้ไปที่บรรทัดที่ 2
- บรรทัด 9 จุดถึงบรรทัด 7 ซึ่งชี้ไปที่บรรทัด 6
ดังนั้นรวมถึงผู้ใช้ที่เขียนข้อความที่ไม่ได้เป็นผู้ดูแล (และสมมติว่าคนไม่ใส่ใจข้อความของตัวเอง) เราสามารถสรุปได้ว่า:
- 2 คนเห็นด้วยกับ
I like dogs
(สาย 1 และ 4) - 4 คนเห็นด้วยกับ
I like cats
(บรรทัด 2, 3, 5 และ 8) - 3 คนเห็นด้วยกับ
I like turtles
(สาย 6, 7 และ 9. )
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสตริงหลายบรรทัดคล้ายกับตัวอย่างข้างต้นโดยที่ทุกบรรทัดแสดงข้อความแชทโดยข้อความเก่าจะมาก่อน
ทุกบรรทัดจะมีอักขระอย่างน้อยหนึ่งตัวและจะมีอย่างน้อยหนึ่งบรรทัด ข้อความทั้งหมดจะเป็นข้อความคาเร็ตที่ประกอบด้วย แต่เพียงผู้เดียว^
หรือเป็นข้อความที่ไม่ใช่คาเร็ตที่ประกอบด้วยตัวอักษรและช่องว่าง ( [ a-zA-Z]+
ใน regex)
สำหรับทุกข้อความที่ไม่เป็นคาเร็ตในลำดับใด ๆ ให้ส่งออกจำนวนคนที่เห็นด้วยกับข้อความนั้นในบางรูปแบบที่ชัดเจนที่มีข้อความเช่น
2 - I like dogs
4 - I like cats
3 - I like turtles
หรือ
I like cats (4)
I like dogs (2)
I like turtles (3)
หรือ
{"I like cats" : 4, "I like turtles" : 3, "I like dogs" : 2}
คุณสามารถสันนิษฐานได้ว่า:
- คนมักจะเห็นด้วยกับข้อความของตัวเองและไม่ได้ดูแลตัวเอง
- ไม่มีข้อความที่ไม่ใช่คาเร็ตสองข้อความที่เหมือนกัน
- ข้อความ Caret จะไม่ชี้ไปที่สิ่งต่าง ๆ ก่อนที่จะมีข้อความแรก
- เส้นจะไม่มีช่องว่างนำหน้าหรือต่อท้าย
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบ
bread is bread
1 - bread is bread
---
animals are fuzzy
^
^
^
^^^
^^
^^^^^^
7 - animals are fuzzy
---
pie
^
^^
pi
^
^^
^^^^
^
^^^^^
^^^^^
^^^
^^^^
^^
^
^^^^^^^^^
9 - pie
6 - pi
---
a
b
c
^
^
^
1 - a
1 - b
4 - c
---
a
b
c
^
^^
^^^
1 - a
1 - b
4 - c
---
a
b
c
^^^
^^^^
^^^^^
4 - a
1 - b
1 - c
---
W
^
^^
X
^^^
^^^^
Y
^^^^^
^^^^^^
Z
^^^^^^^
^^^^^^^^
1 - Y
3 - X
1 - Z
7 - W
---
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
^
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
2 - ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
1 - ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqretuvwxyz
---
I like dogs
I like cats
^
^^^
^^
I like turtles
^
^^^
^^
2 - I like dogs
4 - I like cats
3 - I like turtles