สร้างตัวแยกวิเคราะห์ Twitter


14

บทนำ

คุณใช้ Twitter (สมมติว่าไม่ใช่) ซึ่งคุณ จำกัด ไว้ที่ 140 ตัวอักษรต่อทวีตเดียวที่คุณต้องการแบ่งปันกับคนทั่วโลก หากคุณต้องการทวีตไปยังที่อยู่ Gettysburgของผู้ติดตาม Abraham Lincoln คุณจะต้องแยกข้อความออกเป็นหลาย ๆ ตัวละคร 140 ตัวเพื่อที่จะได้รับข้อความทั้งหมด อย่างไรก็ตามชิ้นเหล่านั้นไม่ควรยาว 140 ตัวอักษรเสมอไป พูดเช่นเราแบ่งคำพูดออกเป็น 17 ตัวอักษรเราจะจบลงด้วยทวีตเหล่านี้:

  • สี่คะแนนและ SE
  • VEN YEARS AGO ของเรา
  • พ่อรู้ตัว
  • รูปแบบนี้
  • TINENT A NATI ใหม่
  • ได้รับในลิตร
  • (และอื่น ๆ )

นั่นไม่ดีเลย! เมื่อคำแต่ละคำแตกสลายมันก็ยากที่จะเข้าใจว่าคุณกำลังพยายามพูดอะไร นอกจากนี้ใน twitterverse หนึ่งในผู้ติดตามของคุณอาจพบทวีตที่เฉพาะเจาะจงและไม่ทราบว่ามีข้อความมากขึ้นดังนั้นคุณจะต้องกำหนดหมายเลขทวีตของคุณเพื่อให้พวกเขามีบริบทในการทำงาน (ยังคงใช้ชิ้นอักขระ 17 ตัว ):

  • (1/7) สี่คะแนนและ
  • (2/7) เจ็ดปีที่แล้ว
  • (3/7) พ่อของเรา
  • (4/7) เพิ่มความคมชัดบน
  • (5/7) เนื้อหานี้ก
  • (6/7) ประเทศใหม่
  • (7/7) ได้รับใน ...

คุณสามารถกำหนดค่าที่ดีที่สุดสำหรับทวีตของคุณด้วยตนเอง แต่นั่นคือสิ่งที่เรามีคอมพิวเตอร์!

ท้าทาย

ในรหัสที่สั้นที่สุดที่เป็นไปได้แยกที่อยู่ Gettysburg (หรือข้อความใด ๆ แต่เราจะติดกับอันนี้เป็นตัวอย่าง) ในชุดทวีตประกอบด้วยไม่เกิน 140 ตัวอักษร (สมมติว่า ASCII เนื่องจากข้อความตัวอย่างของเราไม่ควรมี บิตผิดปกติ / ผิดปกติใด ๆ ในนั้น)

รายละเอียด

  • ฟังก์ชั่น / โปรแกรม / ฯลฯ ของคุณควรใช้เวลาในการโต้แย้งสตริงเดียวและส่งออกหนึ่งบรรทัดของข้อความสำหรับแต่ละทวีต
    • สมมติว่าข้อมูลนี้จะไม่ส่งผลให้ทวีตรวมมากกว่า 99 รายการเมื่อวิเคราะห์คำโดยไม่คำนึงว่าคุณจะแยกวิเคราะห์อย่างไร
  • ทวีตต้องรวมtweet numberของtotal tweetsตัวบ่งชี้ในรูปแบบ " (x/y)" ก่อนหน้านี้ร่างกายของทวีตที่
    • จำนวนนี้จะเป็นส่วนหนึ่งของพื้นที่ 140 ตัวละครของคุณ!
  • ชิ้นส่วนของทวีตสามารถแยกได้ในบรรทัดใหม่หรือช่องว่าง
    • ห้ามใช้เครื่องหมายขีดกลางเครื่องหมายจุลภาคหรือเครื่องหมายวรรคตอนอื่นยกเว้นเว้นวรรคนำหน้าหรือขึ้นบรรทัดใหม่ทันที
  • ทวีตควรประกอบด้วยคำที่สมบูรณ์มากที่สุด
    • ข้อ จำกัด นี้ยืดหยุ่นเล็กน้อยเช่นเมื่อทวีตสุดท้ายของคุณมีเพียงคำเดียว
  • นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ

ข้อความทั้งหมดของที่อยู่เกตตีสเบิร์ก

(รหัสของคุณควรจะสามารถจัดการกับสตริง ASCII ใด ๆ ที่ส่งผ่านไปได้)

สี่คะแนนและเจ็ดปีที่ผ่านมาพ่อของเราได้ทำการค้าประเวณีกับประเทศนี้ซึ่งมีเนชั่นใหม่ที่ได้รับจากเสรีภาพและทุ่มเทให้กับข้อเสนอที่มนุษย์ทุกคนมีส่วนร่วม ตอนนี้เรามีส่วนร่วมในการทดสอบสงครามของพลเมืองที่ยิ่งใหญ่ไม่ว่าจะเป็นประเทศใดหรือประเทศใดก็ตามที่ได้รับและได้รับการอุทิศสามารถยืนยาวได้ เราพบกับ BATTLEFIELD ที่ยอดเยี่ยมของสงครามนั้น เราได้มาเพื่ออุทิศส่วนหนึ่งของสนามนั้นเป็นสถานที่พักผ่อนขั้นสุดท้ายสำหรับผู้ที่อยู่ที่นี่ให้ชีวิตของพวกเขาที่พวกเขาอาจมีชีวิตอยู่ มันเหมาะสมแล้วและเหมาะสมที่เราควรทำเช่นนี้ แต่ในความรู้สึกที่ใหญ่กว่าเราไม่สามารถอุทิศเราไม่สามารถอุทิศเราไม่สามารถฮอลโลว์พื้นดินนี้ บุรุษผู้กล้าหาญที่รอดชีวิตและเสียชีวิตที่ดิ้นรนที่นี่ได้รับมันไกลออกไปจากพลังความรุนแรงของเราที่จะเพิ่มหรือลบ โลกจะน้อยหมายเหตุหรือไม่นานเราจำได้ว่าที่นี่ แต่มันไม่สามารถลืมสิ่งที่พวกเขาอยู่ที่นี่ สำหรับสหรัฐอเมริกาผู้ที่ยังมีชีวิตอยู่จะอุทิศตนเพื่อทำงานที่ไม่มีกำหนดซึ่งพวกเขาเหล่านั้นได้รับผลกระทบนี้จึงมีความก้าวหน้าอย่างไม่น่าเชื่อ มันเป็นเรื่องธรรมดาที่เราจะอุทิศตนให้กับงานที่ยิ่งใหญ่ที่ยังคงอยู่ก่อนหน้าเราซึ่งจากที่พวกเขาไม่ได้รับการยกย่องในยุคสมัยนี้พวกเราใช้ความเคารพในสาเหตุที่ทำให้พวกเขาได้รับความคุ้มครองเต็มรูปแบบ เราเสียชีวิตด้วยการไม่เชื่อว่าประเทศนี้จะต้องมีบุตรเกิดใหม่แห่งเสรีภาพและการปกครองของประชาชนโดยประชาชนเพื่อประชาชนจะไม่สูญสิ้นไปจากโลก


ในทวีตตัวอย่างของคุณคุณใช้คำไม่ได้ - แต่ในกฎคุณจะไม่พูด โปรดทำสิ่งนี้ให้สอดคล้อง - เปลี่ยนกฎหรือตัวอย่าง
บูธโดย

@boothby ดีตัวอย่างคือการแสดงสิ่งที่ไม่ได้รับอนุญาตอย่างชัดเจน ... ฉันจะดูว่าฉันไม่สามารถพูดอีกว่า
Gaffi

โปรดอธิบายคำถามเพื่อให้ชัดเจนว่าคำตอบนั้นต้องจัดการกับความเป็นไปได้ที่จะต้องคำนวณคำ -> แพ็คทวีตเนื่องจากส่วน (X / Y) หรือไม่ สิ่งนี้ทำให้ปัญหายากขึ้นอย่างมีนัยสำคัญและแนะนำขีด จำกัด บนข้อความที่ใหญ่ที่สุดที่อาจสื่อสารได้โดยไม่ต้องเข้ารหัสข้อมูลในส่วน (X / Y)
arrdem

@rmckenzie ขออภัยไม่แน่ใจว่าฉันจะรับคุณ? คุณหมายถึงการที่คุณมีทวีตมากกว่า 100 รายการในหนึ่งชุดหรือไม่
Gaffi

@Gaffi - ใช่มีจำนวนชิ้นส่วนมากที่สุดที่ข้อความของเราจะถูกแบ่งออก (ซึ่งในกรณีนี้อาจมีการทำสมมติฐานและโซลของ grc นั้นถูกต้อง) หรือเราต้องสนับสนุนกรณีทั่วไปเช่นซีเรียลไลซ์หลายพันคำ ทวีตซึ่งคำชี้แจงปัญหาของคุณตามที่แนะนำ
arrdem

คำตอบ:


12

Perl, 51 ตัวอักษร

s#\G(.{1,132})(\s+|$)#(${\++$a}/~) $1\n#g;s#~#$a#g

ต้องการพรอมต์บรรทัดคำสั่ง -p รวม 1 ถ่าน

คำอธิบาย: แทรกส่วนการนับก่อนและขึ้นบรรทัดใหม่หลังจากกลุ่มคำที่มีความยาวสูงสุด 132 อักขระ แทรกตัวยึดตำแหน่ง ( ~) สำหรับผลรวมซึ่งจะถูกแทนที่ด้วยการทดแทนที่สอง สิ่งนี้จะหยุดพักหากข้อความมีอยู่~แต่มีหนึ่งสามารถใช้อักขระที่ไม่สามารถพิมพ์ได้อย่างง่ายดายแทน

มันโกงเล็กน้อย: อนุญาตให้ตัวละครเจ็ดตัวสำหรับส่วนการนับ, (nn/nn). จริง ๆ ถ้าเป็น(n/n)มันควรจะอนุญาตให้ตัวละครพิเศษสองตัว อย่างไรก็ตามการแก้ปัญหาโดยพลการนี้จะเพิ่มความซับซ้อนของปัญหาอย่างมาก


\Gไม่มีประโยชน์ที่นี่ใช่ไหม
2846289

26

Python, 140

^ 140 ตัวอักษรเป็นเรื่องบังเอิญ

def f(s):
 s=s.split();i=0;l=[]
 while s:
  i+=1;t='(%d/%%d)'%i
  while s and len(t+s[0])<140:t+=' '+s.pop(0)
  l+=[t]
 for t in l:print t%i

ในขณะที่มีคำเหลืออยู่โซลูชันจะสร้างทวีตใหม่จากการจัดหาคำและผนวกเข้ากับรายการ สำหรับทวีตแต่ละครั้งมันจะพยายามเพิ่มคำต่อไปจนกว่าความยาวของทวีตจะมีมากกว่า 140 ตัวอักษร ตัวละครสองตัวถูกสงวนไว้สำหรับtotal tweetsซึ่งจะถูกเติมในภายหลังเนื่องจากทวีตแต่ละรายการในรายการจะถูกพิมพ์

ตัวอย่างผลลัพธ์:

(1/11) FOUR SCORE AND SEVEN YEARS AGO OUR FATHERS BROUGHT FORTH ON THIS CONTINENT A NEW NATION CONCEIVED IN LIBERTY AND DEDICATED TO THE
(2/11) PROPOSITION THAT ALL MEN ARE CREATED EQUAL. NOW WE ARE ENGAGED IN A GREAT CIVIL WAR TESTING WHETHER THAT NATION OR ANY NATION SO
(3/11) CONCEIVED AND SO DEDICATED CAN LONG ENDURE. WE ARE MET ON A GREAT BATTLEFIELD OF THAT WAR. WE HAVE COME TO DEDICATE A PORTION OF THAT
(4/11) FIELD AS A FINAL RESTING PLACE FOR THOSE WHO HERE GAVE THEIR LIVES THAT THAT NATION MIGHT LIVE. IT IS ALTOGETHER FITTING AND PROPER
(5/11) THAT WE SHOULD DO THIS. BUT IN A LARGER SENSE WE CAN NOT DEDICATE, WE CAN NOT CONSECRATE, WE CAN NOT HALLOW, THIS GROUND. THE BRAVE
(6/11) MEN LIVING AND DEAD WHO STRUGGLED HERE HAVE CONSECRATED IT FAR ABOVE OUR POOR POWER TO ADD OR DETRACT. THE WORLD WILL LITTLE NOTE NOR
(7/11) LONG REMEMBER WHAT WE SAY HERE BUT IT CAN NEVER FORGET WHAT THEY DID HERE. IT IS FOR US THE LIVING RATHER TO BE DEDICATED HERE TO THE
(8/11) UNFINISHED WORK WHICH THEY WHO FOUGHT HERE HAVE THUS FAR SO NOBLY ADVANCED. IT IS RATHER FOR US TO BE HERE DEDICATED TO THE GREAT
(9/11) TASK REMAINING BEFORE US, THAT FROM THESE HONORED DEAD WE TAKE INCREASED DEVOTION TO THAT CAUSE FOR WHICH THEY GAVE THE LAST FULL
(10/11) MEASURE OF DEVOTION, THAT WE HERE HIGHLY RESOLVE THAT THESE DEAD SHALL NOT HAVE DIED IN VAIN, THAT THIS NATION UNDER GOD SHALL HAVE
(11/11) A NEW BIRTH OF FREEDOM, AND THAT GOVERNMENT OF THE PEOPLE BY THE PEOPLE FOR THE PEOPLE SHALL NOT PERISH FROM THE EARTH.

มันเป็นสิ่งที่ฉันต้องการ วิธีนี้เย็น ขอบคุณ @grc
iChux

7

Ruby, 77 ตัวอักษร

f=->t{i=0;$><<t.gsub(/(.{1,132})([ \n]|$)/m){"(#{i+=1}/%{i}) #{$1}\n"}%{i:i}}

บรรจุตรรกะลงในนิพจน์ทั่วไปเดียว ผลลัพธ์ของf[text]:

(1/11) FOUR SCORE AND SEVEN YEARS AGO OUR FATHERS BROUGHT FORTH ON THIS CONTINENT A NEW NATION CONCEIVED IN LIBERTY AND DEDICATED TO THE
(2/11) PROPOSITION THAT ALL MEN ARE CREATED EQUAL. NOW WE ARE ENGAGED IN A GREAT CIVIL WAR TESTING WHETHER THAT NATION OR ANY NATION SO
(3/11) CONCEIVED AND SO DEDICATED CAN LONG ENDURE. WE ARE MET ON A GREAT BATTLEFIELD OF THAT WAR. WE HAVE COME TO DEDICATE A PORTION OF
(4/11) THAT FIELD AS A FINAL RESTING PLACE FOR THOSE WHO HERE GAVE THEIR LIVES THAT THAT NATION MIGHT LIVE. IT IS ALTOGETHER FITTING AND
(5/11) PROPER THAT WE SHOULD DO THIS. BUT IN A LARGER SENSE WE CAN NOT DEDICATE, WE CAN NOT CONSECRATE, WE CAN NOT HALLOW, THIS GROUND. THE
(6/11) BRAVE MEN LIVING AND DEAD WHO STRUGGLED HERE HAVE CONSECRATED IT FAR ABOVE OUR POOR POWER TO ADD OR DETRACT. THE WORLD WILL LITTLE
(7/11) NOTE NOR LONG REMEMBER WHAT WE SAY HERE BUT IT CAN NEVER FORGET WHAT THEY DID HERE. IT IS FOR US THE LIVING RATHER TO BE DEDICATED
(8/11) HERE TO THE UNFINISHED WORK WHICH THEY WHO FOUGHT HERE HAVE THUS FAR SO NOBLY ADVANCED. IT IS RATHER FOR US TO BE HERE DEDICATED TO
(9/11) THE GREAT TASK REMAINING BEFORE US, THAT FROM THESE HONORED DEAD WE TAKE INCREASED DEVOTION TO THAT CAUSE FOR WHICH THEY GAVE THE
(10/11) LAST FULL MEASURE OF DEVOTION, THAT WE HERE HIGHLY RESOLVE THAT THESE DEAD SHALL NOT HAVE DIED IN VAIN, THAT THIS NATION UNDER GOD
(11/11) SHALL HAVE A NEW BIRTH OF FREEDOM, AND THAT GOVERNMENT OF THE PEOPLE BY THE PEOPLE FOR THE PEOPLE SHALL NOT PERISH FROM THE EARTH.

3

ทับทิม, 75

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

f=->t,i=1{t=~/\S.{,130}\S(?!\S)/?puts("(#{i}/%d) #$&"%n=f[$',i+1])||n :i-1}

1
หืมม ... ฉันคิดว่าฉันไม่ได้ระบุคำสั่งซื้อ ผลงานดีหักหลังกฎ ;-)
Gaffi

1

VBA, 251

ลองวิธีอื่น ... ไม่ค่อยดีเท่าต้นฉบับของฉัน แต่ฉันยังคงทำงานต่อไป ...

Sub a(s)
Dim n(99)
m=1
r=Split(StrConv(s,64),Chr(0))
For i=0 To Len(s)
If i-g>132 Then n(m)=Mid(s,g+1,u-g):i=u:g=i:m=m+1
If r(i)=" " Or r(i)=vbCr Then i=i+1:u=i
Next
n(m)=Mid(s,g+1)
For o=1 To m
Debug.Print "(" & o & "/" & m & ") " & n(o)
Next
End Sub

ขาออก:

(1/11) FOUR SCORE AND SEVEN YEARS AGO OUR FATHERS BROUGHT FORTH ON THIS CONTINENT A NEW NATION CONCEIVED IN LIBERTY AND DEDICATED TO THE 
(2/11) PROPOSITION THAT ALL MEN ARE CREATED EQUAL. NOW WE ARE ENGAGED IN A GREAT CIVIL WAR TESTING WHETHER THAT NATION OR ANY NATION SO 
(3/11) CONCEIVED AND SO DEDICATED CAN LONG ENDURE. WE ARE MET ON A GREAT BATTLEFIELD OF THAT WAR. WE HAVE COME TO DEDICATE A PORTION OF 
(4/11) THAT FIELD AS A FINAL RESTING PLACE FOR THOSE WHO HERE GAVE THEIR LIVES THAT THAT NATION MIGHT LIVE. IT IS ALTOGETHER FITTING AND 
(5/11) PROPER THAT WE SHOULD DO THIS. BUT IN A LARGER SENSE WE CAN NOT DEDICATE, WE CAN NOT CONSECRATE, WE CAN NOT HALLOW, THIS GROUND. THE 
(6/11) BRAVE MEN LIVING AND DEAD WHO STRUGGLED HERE HAVE CONSECRATED IT FAR ABOVE OUR POOR POWER TO ADD OR DETRACT. THE WORLD WILL LITTLE 
(7/11) NOTE NOR LONG REMEMBER WHAT WE SAY HERE BUT IT CAN NEVER FORGET WHAT THEY DID HERE. IT IS FOR US THE LIVING RATHER TO BE DEDICATED 
(8/11) HERE TO THE UNFINISHED WORK WHICH THEY WHO FOUGHT HERE HAVE THUS FAR SO NOBLY ADVANCED. IT IS RATHER FOR US TO BE HERE DEDICATED TO 
(9/11) THE GREAT TASK REMAINING BEFORE US, THAT FROM THESE HONORED DEAD WE TAKE INCREASED DEVOTION TO THAT CAUSE FOR WHICH THEY GAVE THE 
(10/11) LAST FULL MEASURE OF DEVOTION, THAT WE HERE HIGHLY RESOLVE THAT THESE DEAD SHALL NOT HAVE DIED IN VAIN, THAT THIS NATION UNDER GOD 
(11/11) SHALL HAVE A NEW BIRTH OF FREEDOM, AND THAT GOVERNMENT OF THE PEOPLE BY THE PEOPLE FOR THE PEOPLE SHALL NOT PERISH FROM THE EARTH.

1

BASH (88 ตัวอักษร)

fold -132 -s |tac|cat -n |tac|awk '{if(NR==1)a=$1;$1="";printf "(%d/%d) %s\n",NR,a,$0 }'

พับบรรทัดที่ 132 อักขระ (เพื่ออนุญาตให้มีการนับทวีตของเรา) ในช่องว่าง (-s ) อ่านข้อความย้อนหลัง (แทค), หมายเลขข้อความ ( cat -n), ย้อนกลับ (tac ) ภายใน Awk: บรรทัดแรก (NR == 1) กำหนดตัวอักษร 'a' ค่าในบรรทัดแรก เว้นว่างคอลัมน์ตัวเลข พิมพ์ (NR / 'a') ตามด้วยบรรทัด

เอาท์พุท:

(1/12)  FOUR SCORE AND SEVEN YEARS AGO OUR FATHERS BROUGHT FORTH ON THIS CONTINENT A NEW NATION CONCEIVED IN LIBERTY AND DEDICATED TO THE
(2/12)  PROPOSITION THAT ALL MEN ARE CREATED EQUAL. NOW WE ARE ENGAGED IN A GREAT CIVIL WAR TESTING WHETHER THAT NATION OR ANY NATION SO
(3/12)  CONCEIVED AND SO DEDICATED CAN LONG ENDURE. WE ARE MET ON A GREAT BATTLEFIELD OF THAT WAR. WE HAVE COME TO DEDICATE A PORTION OF
(4/12)  THAT FIELD AS A FINAL RESTING PLACE FOR THOSE WHO HERE GAVE THEIR LIVES THAT THAT NATION MIGHT LIVE. IT IS ALTOGETHER FITTING AND
(5/12)  PROPER THAT WE SHOULD DO THIS. BUT IN A LARGER SENSE WE CAN NOT DEDICATE, WE CAN NOT CONSECRATE, WE CAN NOT HALLOW, THIS GROUND.
(6/12)  THE BRAVE MEN LIVING AND DEAD WHO STRUGGLED HERE HAVE CONSECRATED IT FAR ABOVE OUR POOR POWER TO ADD OR DETRACT. THE WORLD WILL
(7/12)  LITTLE NOTE NOR LONG REMEMBER WHAT WE SAY HERE BUT IT CAN NEVER FORGET WHAT THEY DID HERE. IT IS FOR US THE LIVING RATHER TO BE
(8/12)  DEDICATED HERE TO THE UNFINISHED WORK WHICH THEY WHO FOUGHT HERE HAVE THUS FAR SO NOBLY ADVANCED. IT IS RATHER FOR US TO BE HERE
(9/12)  DEDICATED TO THE GREAT TASK REMAINING BEFORE US, THAT FROM THESE HONORED DEAD WE TAKE INCREASED DEVOTION TO THAT CAUSE FOR WHICH
(10/12)  THEY GAVE THE LAST FULL MEASURE OF DEVOTION, THAT WE HERE HIGHLY RESOLVE THAT THESE DEAD SHALL NOT HAVE DIED IN VAIN, THAT THIS
(11/12)  NATION UNDER GOD SHALL HAVE A NEW BIRTH OF FREEDOM, AND THAT GOVERNMENT OF THE PEOPLE BY THE PEOPLE FOR THE PEOPLE SHALL NOT PERISH
(12/12)  FROM THE EARTH.

ฉันมั่นใจว่าจะมีคำสั่ง bash ที่สั้นกว่าคำสั่งที่ไม่ถูกต้อง wc -l
Pureferret

1

Javascript (FF เท่านั้น), 92 ตัวอักษร

r=(s)=>{s.match(/.{1,132}(\s|$)/gm).map((v,i,a)=>console.log(v,'('+(i+1)+'/'+a.length+')'))}

ฟอร์แมตแล้วนั่นเป็นผลมาจากสคริปต์ Perl:

r=(s)=>{
    s.match(/.{1,132}(\s|$)/gm).map((v,i,a) => console.log(v,'('+(i+1)+'/'+a.length+')'))
}

0

VBA, 227

Sub a(s)
Dim n(99)
m=1
x=133
While Len(s)>x
t=Left(s,x):p=InStrRev(t," "):q=InStrRev(t,vbCr):i=IIf(p>q,p,q):t=Left(s,i):s=Mid(s,i+1):n(m)=t:m=m+1
Wend
n(m)=s
For o=1 To m
Debug.Print "(" & o & "/" & m & ") " & n(o)
Next
End Sub

ขาออก:

(1/11) FOUR SCORE AND SEVEN YEARS AGO OUR FATHERS BROUGHT FORTH ON THIS CONTINENT A NEW NATION CONCEIVED IN LIBERTY AND DEDICATED TO THE 
(2/11) PROPOSITION THAT ALL MEN ARE CREATED EQUAL. NOW WE ARE ENGAGED IN A GREAT CIVIL WAR TESTING WHETHER THAT NATION OR ANY NATION SO 
(3/11) CONCEIVED AND SO DEDICATED CAN LONG ENDURE. WE ARE MET ON A GREAT BATTLEFIELD OF THAT WAR. WE HAVE COME TO DEDICATE A PORTION OF 
(4/11) THAT FIELD AS A FINAL RESTING PLACE FOR THOSE WHO HERE GAVE THEIR LIVES THAT THAT NATION MIGHT LIVE. IT IS ALTOGETHER FITTING AND 
(5/11) PROPER THAT WE SHOULD DO THIS. BUT IN A LARGER SENSE WE CAN NOT DEDICATE, WE CAN NOT CONSECRATE, WE CAN NOT HALLOW, THIS GROUND. THE 
(6/11) BRAVE MEN LIVING AND DEAD WHO STRUGGLED HERE HAVE CONSECRATED IT FAR ABOVE OUR POOR POWER TO ADD OR DETRACT. THE WORLD WILL LITTLE 
(7/11) NOTE NOR LONG REMEMBER WHAT WE SAY HERE BUT IT CAN NEVER FORGET WHAT THEY DID HERE. IT IS FOR US THE LIVING RATHER TO BE DEDICATED 
(8/11) HERE TO THE UNFINISHED WORK WHICH THEY WHO FOUGHT HERE HAVE THUS FAR SO NOBLY ADVANCED. IT IS RATHER FOR US TO BE HERE DEDICATED TO 
(9/11) THE GREAT TASK REMAINING BEFORE US, THAT FROM THESE HONORED DEAD WE TAKE INCREASED DEVOTION TO THAT CAUSE FOR WHICH THEY GAVE THE 
(10/11) LAST FULL MEASURE OF DEVOTION, THAT WE HERE HIGHLY RESOLVE THAT THESE DEAD SHALL NOT HAVE DIED IN VAIN, THAT THIS NATION UNDER GOD 
(11/11) SHALL HAVE A NEW BIRTH OF FREEDOM, AND THAT GOVERNMENT OF THE PEOPLE BY THE PEOPLE FOR THE PEOPLE SHALL NOT PERISH FROM THE EARTH.

0

Javascript (FF เท่านั้น), 135 ตัวอักษร

n=(s)=>{for(g=[],i=1,a=s.split(/(\s)/),r='';c=a.shift();g[i]=r+=c)if((c+r)[132]&&i++)r='';g.map((v,k)=>console.log(v,'('+k+'/'+i+')'))}

ฟอร์แมตแล้วนั่นคือ:

n=(s)=>{
    for (g=[],i=1,a=s.split(/(\s)/),r=''; c=a.shift(); g[i]=r+=c) {
        if((c+r)[132]&&i++) {
            r='';
        }
    }
    g.map((v,k)=>console.log(v,'('+k+'/'+i+')'))
}

ฉันคิดว่านี่ฉลาดกว่าคำตอบที่สั้นกว่าของฉัน
ไม่ใช่ว่า Charles

0

PHP, 233

ฉันถูกต้องโดยสมมติว่านี่เป็นคำตอบแรกที่ไม่ได้โกงในส่วนของการนับหรือไม่?
(นอกจากนี้ยังใช้งานได้กับมากกว่า 99 ทวีตฉันสามารถตัดทิ้งอีกสองไบต์ถ้าฉันอนุญาตให้วนซ้ำไม่สิ้นสุดในกรณีนั้น)

function t($s,$e=1){$a=explode(' ',$s);while($a){$t=++$n;while($a&&strlen($t.$a[0])<137-$e)$t.=' '.array_shift($a);$r[]=$t;}if($n>=10**$e)t($s,$e+1);else foreach($r as$i=>$s)echo preg_replace('%(^\d+)%',"(\$1/$n)",$s),'
';}

ungolfed:

function t($s,$e=1)
{
    $a=explode(' ',$s);
    while($a)
    {
        $t=++$n;
        while($a&&strlen($t.$a[0])<137-$e)$t.=' '.array_shift($a);
        $r[]=$t;
    }
    if($n>=10**$e)                  // if tweet count has more than $e digits
        t($s,ceil(log10($n+1)));    // use correct length (golfed: try with length+1)
    else
        foreach($r as$i=>$s)
            echo preg_replace('%(^\d+)%',"(\$1/$n)",$s),"\n";
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.