ผู้ใช้ Steam มีชื่อเสียงมากแค่ไหน? [ปิด]


20

บทนำ

สำหรับผู้ที่ไม่คุ้นเคยกับไอน้ำ - หรืออย่างน้อยก็ในแง่มุมนี้โดยเฉพาะ:

บ่อยครั้งที่โปรไฟล์ของผู้คนแสดงความคิดเห็นว่า "+ rep _____" หรือ "-rep _____" สิ่งเหล่านี้เป็นวิธีการที่ไม่เป็นทางการในการแสดงว่าคุณคิดว่าคนในชุมชนมีชื่อเสียงที่ดีหรือไม่ดีด้วยเหตุผลหลายประการ ความคิดเห็นดังกล่าวดูเหมือนว่า:

+ ตัวแทนผู้เล่นที่ดี

+ ตัวแทนที่เป็นประโยชน์

-rep แฮ็กเกอร์

-rep scammer


งาน

โปรแกรมจะต้องป้อนข้อมูลด้วยวิธีการยินยอมใด ๆ การป้อนข้อมูลประกอบด้วยสตริงที่มีการขึ้นบรรทัดใหม่ ( \n) ในตอนเริ่มต้นของแต่ละบรรทัด'+rep 'หรือ'-rep 'อาจมีอยู่ ส่วนที่เหลือของบรรทัดสามารถละทิ้งได้ หากบรรทัดไม่ได้ขึ้นต้นด้วย'+rep 'หรือ'-rep '(สังเกตพื้นที่ส่วนท้าย) บรรทัดนั้นควรถูกละเว้น

โปรแกรมจะต้องเก็บคะแนนชื่อเสียงทั้งหมด เริ่มต้นที่0คะแนนนี้ควรจะเพิ่มขึ้นในทุกสายที่เริ่มต้นด้วย'+rep 'และ decremented '-rep 'ในทุกสายที่เริ่มต้นด้วย

ผลลัพธ์นี้ควรเป็นผลลัพธ์ในแบบที่ตกลงกันไว้


กรณีทดสอบ

Input:
+rep fast trade
+rep nice person
-rep too good

Output: 1

Input:
-rep hacker
-rep scammer
-rep was mean

Output: -3

Input:
first
i don't like him
+rep good at cs go

Output: 1

Input (note the lack of a trailing space on the third line):    
+rep +rep
hi +rep
-rep

Output: 1

Input:
+ rep

Output: 0

Input:
+rep like
-thing

Output: 1

โบนัส

ฉันไม่รู้ด้วยซ้ำว่าเป็นไปได้ แต่คะแนนโบนัสถ้าคุณสามารถรับความคิดเห็นเหล่านี้จาก Steam ได้


5
สมมติว่าคะแนนโบนัสเป็นจำนวนจริงใช่ไหม? พวกเขาไม่ได้ส่งผลกระทบต่อคะแนนของคุณ
Rɪᴋᴇʀ

2
เราสามารถสมมติได้ว่าเครื่องหมายบวกและลบอยู่ใน '+ rep' / '- rep' หรือไม่ ตัวแทนจะอยู่ที่จุดเริ่มต้นของบรรทัดหรือจะอยู่ตรงกลางหรือไม่
Rɪᴋᴇʀ

3
ฉันขอแนะนำให้เพิ่มกรณีทดสอบที่มีเครื่องหมาย + หรือ -rep ที่ไม่ได้อยู่ที่จุดเริ่มต้นของบรรทัด
fəˈnɛtɪk

3
ผมเชื่อว่าตัวอย่างที่ 4 ควรมีการส่งออกไม่ได้0 1
DJMcMayhem

10
สวัสดี Jacob และยินดีต้อนรับสู่ PPCG คุณได้รับการพูดคุยอย่างแข็งขันสำหรับความท้าทายครั้งแรกของคุณที่นี่! เนื่องจากยังไม่มีใครพูดถึงมันฉันจะพาคุณไปที่Sandboxซึ่งคุณจะได้รับข้อเสนอแนะที่มีความหมายและดึงรายละเอียดหรือประเด็นการชี้แจงให้ชัดเจนก่อนโพสต์คำท้าไปยังหน้าหลัก ในอนาคตที่จะช่วยให้คุณหลีกเลี่ยงการลงคะแนนโหวตปิดและไม่ชอบ ฉันหวังว่าคุณจะอยู่รอบ ๆ และเพลิดเพลินกับการเข้าพักของคุณ!
AdmBorkBork

คำตอบ:


9

05AB1E , 18 16 17 ไบต์

2 ไบต์ที่บันทึกไว้ขอบคุณOkx
+1 ไบต์เนื่องจากการเปลี่ยนแปลงข้อมูลจำเพาะตอนนี้ตัวแทนจะต้องตามด้วยช่องว่าง

|vy5£„+-S„·Ý «QÆO

ลองออนไลน์!

คำอธิบาย

|v                   # for each line of input
  y5£                # get the first 4 chars of input
     „+-S„·Ý «       # push the list ['+rep ','-rep ']
              Q      # check each for equality
                     # results in either [1,0] for +rep, [0,1] for -rep or [0,0] for others
               Æ     # reduce by subtraction, gives either 1, -1 or 0
                O    # sum

คุณสามารถแทนที่ด้วยð¡0è ฉันกำลังแก้ไขปัญหานี้ในเวลาเดียวกันกับที่คุณเป็น
Okx

@Emigna ฉันรู้สึกเหมือนความคิดของฉัน|ðý#D'·Ý©.åÏ®1:Oสามารถเป็น 14 หรือ 15 ฉันแค่ไม่เห็นมัน ยังติดอยู่ที่ 16 บางทีมันอาจจะช่วยให้คุณ ฉันจะทิ้งไว้ที่นี่ โดยทั่วไปแทนที่คำว่า "ตัวแทน" ด้วยหมายเลข "1" เพื่อให้คุณสามารถนำผลรวมโดยตรง
Magic Octopus Urn

@carusocomputing: ฉันคิดว่าฉันมีเวลา 14 ใช่ เพียงแค่ต้องทดสอบบางอย่างมากขึ้น :)
Emigna

ดีกว่าที่จะเอาชนะเจลลี่ที่หลีกเลี่ยงไม่ได้ก่อนที่มันจะเกิดขึ้น;)
Magic Octopus Urn

@carusocomputing: จริง ๆ แล้ววิธีการของฉัน0|vy4£'·Ý1:R.Vไม่ทำงานกับบรรทัดที่ไม่ได้เริ่มต้นด้วย +/- ตัวแทน กลับไปที่กระดานวาดภาพ :(
Emigna

10

Python 3, 73 ไบต์

ฉันแน่ใจว่าคำตอบนี้เป็นขยะและจะถูกโจมตีเร็ว ๆ นี้ แต่ยังไม่มีคำตอบของหลามอื่น ๆ

lambda x:sum(["- +".index(i[0])-1for i in x.split('\n')if i[1:4]=="rep"])

ใช้แบบนี้:

f = lambda x:sum(["- +".index(i[0])-1for i in x.split('\n')if i[1:4]=="rep"])
print(f("PUT INPUT HERE"))


กำลังดึงจากไอน้ำ

นี่คือตัวอย่างรหัสที่ดึงความคิดเห็นแรก 100 จากโปรไฟล์ของ KennyS และคำนวณตัวแทนของเขา

import requests
from bs4 import BeautifulSoup

# Kenny's profile as Steam ID 64
# You can adjust this to whatever numbers you want
STEAM_PROFILE_URL = "76561198024905796"
payload =  {"start" : 0, "count" : 100}
r = requests.post("http://steamcommunity.com/comment/Profile/render/{}/-1/".format(STEAM_PROFILE_URL), payload)

# Comments are html inside a json object
soup = BeautifulSoup(r.json()["comments_html"], "html.parser")

# Get raw text for every comment.
# The " ".join() strips out the newlines and tabs which are part of html
comments = [" ".join(s.text.split()) for s in soup.find_all("div", {"class" : "commentthread_comment_text"})]

calculateRep = lambda x:sum(["- +".index(i[0])-1for i in x.split('\n')if i[1:4]=="rep"])

print(calculateRep("\n".join(comments)))

if"rep"==i[1:4]สำหรับ -1
ovs

คุณไม่จำเป็นต้องวงเล็บ
OVS

9

Perl 5 , 25 ไบต์

24 ไบต์ของรหัส + -pธง

$\+=/^\+rep /-/^-rep /}{

ลองออนไลน์!

/^\+rep /ผลตอบแทน1ถ้าบรรทัดเริ่มต้นด้วย+rep; /^-rep /ผลตอบแทน1ถ้าบรรทัดเริ่มต้นด้วย-rep(ดังนั้นหนึ่งในนั้นจะเป็นหนึ่งในที่สุด) เราใช้$\เพื่อเก็บผลลัพธ์เนื่องจากมีการพิมพ์โดยปริยายในตอนท้าย (ขอบคุณ-pธงและสิ่งที่ไม่ตรงกัน}{)


เพิ่มสองไบต์เนื่องจากต้องมีช่องว่างหลังจากตัวแทน
fəˈnɛtɪk

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

ฉันเพิ่มมันเข้าไปในรายละเอียดเพราะ OP ทิ้งมันไว้เป็นความคิดเห็น
fəˈnɛtɪk

6

Python 2 , 54 ไบต์

q=('\n'+input()).count;print q('\n+rep ')-q('\n-rep ')

ลองออนไลน์! รับค่าสตริงหลายบรรทัดเป็นอินพุต

นับลักษณะที่ปรากฏ'+rep 'และ'-rep 'ที่จุดเริ่มต้นของบรรทัดโดยค้นหาสตริงตามสัญลักษณ์บรรทัดใหม่ ในการรับบรรทัดแรกจะมีการขึ้นบรรทัดใหม่ให้กับอินพุต


5

เรติน่า , 63 51 50 49 ไบต์

ไม่ได้ค่อนข้างสอดคล้องกับสเป็คดังนั้นฉันจึงแก้ไขปัญหาบางอย่าง แต่ก็เล่นกอล์ฟได้มาก (ด้วยการยืมบรรทัดแรกจากโซลูชันของ Kritixi Lithos)

บันทึกอีกไบต์ด้วย Kritixi Lithos

ms`(?!^[+-]rep ).

+`\+-|-\+

(.)+
$1$.&
T`+
$^
0

ลองออนไลน์!

คำอธิบาย

ms`(?!^[+-]rep ).

ก่อนอื่นทุกอย่างจากอินพุตจะถูกลบยกเว้น+และ-จากใด ๆ+repหรือ-repที่จุดเริ่มต้นของบรรทัด

+`\+-|-\+

จากนั้นคู่ที่อยู่ติดกันของ+และ-จะถูกลบออกจนกว่าจะไม่สามารถลบได้อีก หลังจากนี้สิ่งที่เหลืออยู่ก็คือการวิ่งของ+การวิ่ง-หรือไม่มีอะไร

(.)+
$1$.&

จากนั้นเรียกใช้อักขระอย่างน้อยหนึ่งตัว ( +หรืออย่างใดอย่างหนึ่ง-) จะถูกแทนที่ด้วยอักขระที่ประกอบขึ้นเป็นรันตามด้วยความยาวของการรัน วิธีนี้+จะถูกเก็บรักษาไว้ที่จุดเริ่มต้นเพื่อให้ได้ผลลัพธ์ที่เป็นบวกและ-เชิงลบ

T`+

จากนั้นทั้งหมด+จะถูกลบออกในกรณีที่ตัวแทนเป็นบวก

$^
0

สุดท้ายถ้าสตริงว่าง ณ จุดนี้ตัวแทนคือ 0 เราก็เขียน 0


คุณสามารถทำแบบหล่นและเพิ่มs(โหมดบรรทัดเดียว) หลังจากmบนบรรทัดแรก
Kritixi Lithos

4

JavaScript ขนาด 55 ไบต์

ขอบคุณ @Neil สำหรับการเล่นกอล์ฟขนาด 12 ไบต์ขอบคุณ @Annauld สำหรับการเล่นกอล์ฟขนาด 2 ไบต์

x=>x.split(/^\+rep /m).length-x.split(/^-rep /m).length

ลองออนไลน์!


บันทึก 12 ไบต์โดยใช้splitแทนmatch(มันจะส่งกลับอาร์เรย์เสมอซึ่งเป็น 1 อีกต่อไปซึ่งปกติคุณต้องการ แต่การยกเลิกทั้งสอง 1s) ฉันยังพยายามกำจัดความซ้ำซ้อน แต่มันออกมาที่ 57 ไบต์อีกครั้ง
Neil

3

Mathematica, 47 ไบต์ (การเข้ารหัส ISO 8859-1)

c_:=StringCount["
"<>#,c];±"
+rep""
-rep")&

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

ทางเลือกอื่น

(±c_:=StringCount["
"<>#,"
"<>c<>"rep"];±"+"-±"-")&

มีความยาว 4 ไบต์ แต่ฉันชอบลำดับ±"+"-±"-"....


ฉันคิดว่าคุณอาจต้องเพิ่มช่องว่างด้านหลัง +/- ตัวแทนเนื่องจากเห็นได้ชัดว่าเป็นส่วนหนึ่งของข้อกำหนด
fəˈnɛtɪk

3

เรติน่า , 59 53 52 50 ไบต์

ms`(?!^[+-]rep ).

+`\+-|-\+

-+
-$.&
\++
$.&
^$
0

ลองออนไลน์!

ลองดูคำตอบที่สั้นลงของ Basic Sunset ในภาษาเดียวกัน!

คำอธิบาย

ms`(?!^[+-]rep ).

ลบทุกอย่างยกเว้น[+-]reps

+`\+-|-\+

ลบ 1 ซ้ำ-ทุก ๆ ครั้ง+และในทางกลับกัน

-+
-$.&

เตรียม a -(เพราะจำนวนลบ) เพื่อ-s รวมทั้งแทนที่-s ด้วยจำนวน-s

\+
$.&

ทำเช่นเดียวกันสำหรับ+s แต่ไม่ย่อหน้า-

^$
0

0สุดท้ายหากมีอะไรแทนที่ด้วย



ตกลงดังนั้นฉันจึงแก้ไขให้เป็นคำถามจริง
fəˈnɛtɪk

3

PHP, 118 ไบต์

function s($a,$c=0){foreach(explode("
",$a)as$b){$b=substr($b,0,1).'1';if(is_numeric($b){$c+=$b});}return$c-($a=="");}

ลองออนไลน์!

ใช้แบบนี้:

echo s("-rep bad
+rep good
+rep very good
+rep exceeds expectation");

ผลลัพธ์นี้ 1 หากคุณป้อนสตริงว่าง
f --nɛtɪk

@ fəˈnɛtɪk คงที่แล้ว
steenbergh

ขอแนะนำให้แก้ไขลิงก์ของคุณ นอกจากนี้ยังมีข้อผิดพลาดหลังจากส่งออกถ้าคุณให้ +/- ตัวแทนสาย: P
fəˈnɛtɪk


1

Java, 109 ไบต์

l->{int i=0;for(String s:l.split("\n")){if(s.startsWith("+rep "))i++;if(s.startsWith("-rep "))i--;}return i;}

พยายามที่จะทำเรื่องนี้ให้สั้นลงโดยใช้Stream's


ต้องการที่ว่างหลังจากตัวแทน
fəˈnɛtɪk

1

ซ้อนกัน 45 ไบต์

'^([+-])rep |.'{.a:''['#'a+]a if}mrepl'0'\+#~

ลองออนไลน์!

อีกทางเลือกหนึ่ง (49 ไบต์):

lines'^[-+]rep 'match$#'YES[0#0# '#'\+]"!''#`0\#~

คำอธิบาย

'^([+-])rep |.'{.a:''['#'a+]a if}mrepl'0'\+#~

นี้โดยทั่วไปสารสกัดจากทั้งหมด+หรือยึดติดอยู่กับจุดเริ่มต้นของบรรทัดและ- repจากนั้นให้แต่ละมัน prepends #จากนั้นเพื่อสิ่งทั้งหมดที่0เป็นที่เพิ่มด้านหน้า #~ประเมินสตริงซึ่งตอนนี้ดูเหมือนว่า:

0#+#+#-

#+คือการเพิ่มและการ#-ลดลง ดังนั้นเราจึงได้ผลลัพธ์ที่ต้องการ


1

เรติน่า , 38 ไบต์

M!m`^[+-]rep 
Os`.
+`\+-

*\M1!`-
[+-]

ลองออนไลน์!

โซลูชันอื่น (และสั้นกว่า) แตกต่างจากโซลูชันที่โพสต์แล้วใน Retina

คำอธิบาย

M!m`^[+-]rep 

(บรรทัดนี้มีช่องว่างต่อท้าย) เก็บเฉพาะส่วนที่เกี่ยวข้องของอินพุตเช่น+repหรือ-repที่จุดเริ่มต้นของบรรทัด

Os`.

จัดเรียงอักขระทั้งหมด (รวมถึงบรรทัดใหม่) สิ่งนี้จะใส่ + s และ -s ติดกัน

+`\+-

ลบ+-คู่รักซ้ำ ๆจนกระทั่งมีสัญญาณมากที่สุดแห่งหนึ่งในสองแห่ง

*\M1!`-

จับคู่ตัวแรก-(ถ้ามี) และพิมพ์โดยไม่แก้ไขสตริง

[+-]

นับจำนวนสัญญาณที่เหลือและพิมพ์นับตั้งแต่ขั้นตอนสุดท้ายของโปรแกรม


0

C #, 87 ไบต์

s=>{int n=0;foreach(var t in s.Split('\n'))n+=t.IndexOf("rep ")==1?44-t[0]:0;return n;}

ฟังก์ชั่นที่ไม่ระบุชื่อซึ่งแยกสตริงอินพุตโดยใช้อักขระขึ้นบรรทัดใหม่ค้นหาสตริง "ตัวแทน" ที่นำหน้าด้วยอักขระและหากพบมันจะเพิ่มชื่อเสียง ( nตัวแปร) 1 หรือ -1

โปรแกรมเต็มรูปแบบด้วยวิธีการที่ไม่ดีและกรณีทดสอบ:

using System;

class P
{
    static void Main()
    {
        Func<string, int> f =
        s=>
        {
            int n = 0;
            foreach (var t in s.Split('\n'))
                n += t.IndexOf("rep ") == 1 ?
                    44 - t[0]
                    :
                    0;

            return n;
        };

        // test cases:
        Console.WriteLine(f(@"+rep fast trade
+rep nice person
-rep too good"));       // 1

        Console.WriteLine(f(@"-rep hacker
-rep scammer
-rep was mean"));       // -3

        Console.WriteLine(f(@"first
i don't like him
+rep good at cs go"));  // 1

        Console.WriteLine(f(@"+rep +rep
hi +rep
-rep"));            // 1

        Console.WriteLine(f(@"+ rep"));     // 0

        Console.WriteLine(f(@"+rep like
-thing"));          // 1
    }
}

โปรดทราบว่ารหัส ASCII สำหรับ+คือ 43 และสำหรับ-คือ 45 วิธีนี้จะผ่านกรณีทดสอบทั้งหมดจาก OP อย่างไรก็ตามหากตัวละครตัวแรกเป็นอย่างอื่นสิ่งนี้จะนำไปสู่คำตอบที่ผิด!

สิ่งนี้สามารถแก้ไขได้ที่ราคา 17 ไบต์:

C # คงที่ 104 ไบต์

s=>{int n=0;foreach(var t in s.Split('\n'))n+=t.IndexOf("rep ")==1?t[0]==43?1:t[0]==45?-1:0:0;return n;}

ฟังก์ชั่นที่ไม่ระบุชื่อที่แก้ไขจะตรวจสอบ+หรือ-เซ็นชื่อเป็นอักขระตัวแรกในแต่ละบรรทัด




0

C # , 104 ไบต์


แม้จะมีวิธีแก้ไขปัญหาเดียวอยู่แล้วและฉันก็ใช้งานได้นานกว่า - ฉันยังคิดว่าฉันควรโพสต์ไว้เพราะเมื่ออยู่ที่นี่แล้วอาจล้มเหลวหากสิ่งที่ชอบ'=rep 'เข้ามา


แข็งแรงเล่นกอล์ฟ

i=>{var c=0;foreach(var o in i.Split('\n'))c+=o.IndexOf("rep ")!=1?0:o[0]==43?1:o[0]==45?-1:0;return c;}

Ungolfed

i => {
   var c = 0;

   foreach( var o in i.Split( '\n' ) )
      c += o.IndexOf( "rep " ) != 1
         ? 0
         : o[ 0 ] == 43
            ? 1
            : o[ 0 ] == 45
               ? -1
               : 0;

   return c;
}

อ่านได้ไม่ดี

i => {
   // Counter for the 'reputation'
   var c = 0;

   // Cycle through every line
   foreach( var o in i.Split( '\n' ) )
      // Check if the "rep " string has index 1
      //   ( Index 0 should be the sign )
      c += o.IndexOf( "rep " ) != 1
         // Add 0 if the rep isn't on the right position
         ? 0
         // Check for the '+' sign
         : o[ 0 ] == 43
            // Add 1 if the sign is found
            ? 1
            // Check for the '-' sign
            : o[ 0 ] == 45
               // Add -1 if the sign is found
               ? -1
               // Add 0 if another char is found
               : 0;

   // Return the 'reputation'
   return c;
}

รหัสเต็ม

using System;
using System.Collections.Generic;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
         Func<String, Int32> f = i => {
            var c = 0;

            foreach( var o in i.Split( '\n' ) )
               c += o.IndexOf( "rep " ) != 1
               ? 0
                  : o[ 0 ] == 43
                  ? 1
                  : o[ 0 ] == 45
                     ? -1
                     : 0;

            return c;
         };

         List<String>
            testCases = new List<String>() {
               @"+rep fast trade
+rep nice person
-rep too good",
               @"-rep hacker
-rep scammer
-rep was mean",
               @"first
i don't like him
+rep good at cs go",
               @"+rep +rep
hi +rep
-rep",
               @"+ rep",
               @"+rep like
-thing",
         };

         foreach( String testCase in testCases ) {
            Console.WriteLine( $"{testCase}\n{f( testCase )}\n" );
         }

         Console.ReadLine();
      }
   }
}

ข่าว

  • v1.0 - 104 bytes- โซลูชั่นเริ่มต้น

หมายเหตุ

ไม่มีอะไรให้เพิ่ม


0

ทับทิมขนาด 46 ไบต์

->x{rep=1;eval ?0+x.map{|a|a[/^[+-]rep /]}*''}

รับ +/- ตัวแทนทั้งหมดจากการป้อนข้อมูลและรวบรวมไว้ในสตริงเดียว จากนั้นประเมินว่าสำหรับตัวแทน = 1


0

JavaScript ES6, 85 79 ไบต์

l=>eval(l.split`
`.map(i=>(r=i.slice(0,5))==`+rep `?1:r==`-rep `?-1:0).join`+`)

ลองมัน

f=l=>eval(l.split`
`.map(i=>(r=i.slice(0,5))==`+rep `?1:r==`-rep `?-1:0).join`+`);

console.log(f(`+rep fast trade
+rep nice person
-rep too good`));

console.log(f(`-rep hacker
-rep scammer
-rep was mean`));

console.log(f(`first
i don't like him
+rep good at cs go`));

console.log(f(`+rep +rep
hi +rep
-rep`));

console.log(f(`+ rep`));

console.log(f(`+rep like
-thing`));


Ungolfed

const repcount=list=>{
    let array=list.split("\n");
    let values=array.map(item=>{
        let rep=item.slice(0,5);
        return rep==="+rep "?1:rep==="-rep "?-1:0;
    });
    let result=values.reduce((a,b)=>a+b);
    return result;
};

ประวัติศาสตร์

85 ไบต์

l=>l.split`\n`.map(i=>(r=i.slice(0,5))=="+rep "?1:r=="-rep "?-1:0).reduce((a,b)=>a+b)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.