Di chatroom PPCG , Byte Kesembilan Belas , menggunakan tanda sisipan ^
(atau wortel ) adalah cara untuk menunjukkan bahwa Anda setuju dengan salah satu komentar yang dibuat sebelumnya tepat di atas Anda.
Pesan caret hanya terdiri dari ^
karakter N (di mana N adalah bilangan bulat positif) dan itu berarti persetujuan dengan pesan Nth sebelumnya. Jadi satu ^
berarti persetujuan dengan pesan sebelumnya, ^^
berarti persetujuan dengan pesan dua baris ke atas, ^^^
berarti persetujuan dengan pesan tiga baris ke atas, dan seterusnya.
Selain itu, ketika pesan tanda X dalam persetujuan (alias menunjuk ke arah) pesan tanda tanda Y lain, maka X dikatakan sesuai dengan apa yang Y setuju. Mungkin ada beberapa lapisan ini dan, pada akhirnya, semua pesan caret menunjukkan persetujuan dengan satu pesan non-caret.
Misalnya, jika transkrip obrolan terlihat seperti ini: (satu pesan per baris)
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]
Maka baris 1, 2, dan 6 adalah pesan non-caret dan yang lainnya adalah pesan caret yang mengarah ke pesan non-caret:
- Jalur 3 menunjuk langsung ke jalur 2.
- Jalur 4 poin langsung ke jalur 1.
- Baris 5 poin ke baris 3, yang menunjuk ke baris 2.
- Jalur 7 poin ke baris 6.
- Baris 8 menunjuk ke baris 5, yang menunjuk ke baris 3, yang menunjuk ke baris 2.
- Jalur 9 poin ke baris 7, yang menunjuk ke baris 6.
Dengan demikian, termasuk pengguna yang menulis pesan non-caret (dan dengan asumsi orang tidak peduli pesan mereka sendiri) kita dapat menyimpulkan bahwa:
- 2 orang setuju dengan
I like dogs
(Baris 1 dan 4.) - 4 orang setuju dengan
I like cats
(Baris 2, 3, 5, dan 8.) - 3 orang setuju dengan
I like turtles
(Baris 6, 7, dan 9.)
Tantangan
Tulis program atau fungsi yang menggunakan string multiline mirip dengan contoh di atas di mana setiap baris mewakili pesan obrolan, dengan pesan yang lebih tua datang terlebih dahulu.
Setiap baris akan memiliki setidaknya satu karakter dan akan ada setidaknya satu baris. Semua pesan akan berupa pesan caret yang hanya terdiri dari pesan-pesan ^
itu, atau menjadi pesan-pesan non-caret yang terdiri dari huruf dan spasi ( [ a-zA-Z]+
dalam regex).
Untuk setiap pesan non-caret, dalam urutan apa pun, output jumlah orang yang setuju dengannya dalam beberapa format yang jelas yang berisi teks pesan, misalnya
2 - I like dogs
4 - I like cats
3 - I like turtles
atau
I like cats (4)
I like dogs (2)
I like turtles (3)
atau
{"I like cats" : 4, "I like turtles" : 3, "I like dogs" : 2}
Anda dapat mengasumsikan bahwa:
- Orang-orang selalu setuju dengan pesan mereka sendiri dan tidak peduli pada diri mereka sendiri.
- Tidak ada dua pesan non-caret yang identik.
- Pesan caret tidak akan menunjuk ke hal-hal sebelum pesan pertama.
- Garis tidak akan berisi ruang depan atau belakang.
Kode terpendek dalam byte menang.
Uji Kasus
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
Jawaban:
CJam, 18
2 byte dihilangkan berkat Martin :)
Cobalah online
Penjelasan:
sumber
Pyth,
1918 byteDemonstrasi
Pendekatan yang mirip dengan aditsu, terutama bagian.
sumber
JavaScript (ES6), 110 byte
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
Mathematica,
8377 bytesumber
Ruby 89
Ini adalah program yang mendapat input dari STDIN dan mencetak hasilnya. Itu melacak pesan dan suara mereka dihitung dalam variabel
v
, yaitu aHash
.Demo online:
sumber
Python 2.7 -
122114 byteCukup banyak solusi paling mudah yang ada, dan tidak terlalu golf.
sumber
Python 2.7 96 byte
Penjelasan: ditimpa di tempat l, setiap panggilan
l[_] = ...
toko kata menunjuk ke, dan kamus digunakan untuk menghitung hasil dengan menginisialisasi atau menambahkan ke hitungan saat ini darib[l[_]]
sumber
for _,i in enumerate(l):
.