Tạo một trình phân tích cú pháp Twitter


14

Giới thiệu

Bạn sử dụng Twitter (giả vờ, nếu không), trong đó bạn bị giới hạn ở 140 ký tự cho mỗi tweet riêng lẻ mà bạn quan tâm để chia sẻ với mọi người. Nếu bạn muốn tweet cho những người theo dõi Địa chỉ Gettysburg của Abraham Lincoln , thì bạn cần chia văn bản thành nhiều đoạn gồm 140 ký tự để có được toàn bộ tin nhắn. Tuy nhiên, những đoạn đó không phải luôn luôn dài chính xác 140 ký tự. Ví dụ, chúng tôi đã chia bài phát biểu thành các đoạn gồm 17 ký tự, chúng tôi sẽ kết thúc với các tweet này:

  • BỐN SCORE VÀ SE
  • VEN NĂM AGO CỦA CHÚNG TÔI
  • MÙA THU NỮ
  • FORTH TRÊN CON NÀY
  • TINENT NATI MỚI
  • TRÊN NỀN TẢNG Ở L
  • (và như thế)

Điêu đo không tôt! Khi các từ riêng lẻ bị phá vỡ, thì có thể khó hiểu những gì bạn đang cố gắng nói. Ngoài ra, trong twitterverse, một trong số những người theo dõi của bạn có thể bắt gặp một tweet cụ thể và không nhận ra rằng có nhiều thông điệp hơn, vì vậy bạn sẽ muốn đánh số tweet của mình để họ có một số ngữ cảnh để làm việc (vẫn sử dụng các đoạn 17 ký tự ):

  • (1/7) BỐN ĐIỂM VÀ
  • (2/7) TUỔI NĂM
  • (3/7) CHA CỦA CHÚNG TÔI
  • (4/7) MANG LẠI FORTH ON
  • (5/7) NỘI DUNG NÀY A
  • (6/7) QUỐC GIA MỚI
  • (7/7) LIÊN QUAN ĐẾN ...

Bạn có thể tự mình tìm ra cấu hình tốt nhất cho các tweet của mình, nhưng đó là những gì chúng tôi có máy tính để làm!

Thử thách

Trong mã ngắn nhất có thể, phân tích Địa chỉ Gettysburg (hoặc bất kỳ văn bản nào, nhưng chúng tôi sẽ lấy ví dụ này làm ví dụ) thành một tập các tweet bao gồm không quá 140 ký tự (giả sử ASCII, vì văn bản ví dụ của chúng tôi không nên có bất kỳ bit không phổ biến / bất thường trong đó).

Chi tiết

  • Hàm / chương trình / vv của bạn sẽ nhận một đối số chuỗi đơn và xuất một dòng văn bản cho mỗi tweet.
    • Giả sử đầu vào này sẽ không bao giờ dẫn đến hơn 99 tổng số tweet khi được phân tích cú pháp, bất kể bạn chọn phân tích như thế nào (miễn là lựa chọn đó vẫn phù hợp với các điểm khác của thử thách).
  • Tweets cần phải bao gồm tweet numbercác total tweetschỉ số định dạng " (x/y)" trước cơ thể của tweet.
    • Số này sẽ chiếm một phần không gian 140 ký tự của bạn!
  • Các đoạn Tweet chỉ có thể được phân chia trên dòng mới hoặc dấu cách.
    • Không có dấu gạch ngang, dấu chấm, dấu phẩy hoặc dấu chấm câu khác được cho phép, trừ khi ngay lập tức đi trước hoặc theo sau bởi một khoảng trắng hoặc dòng mới.
  • Tweets nên bao gồm càng nhiều từ hoàn chỉnh càng tốt.
    • Ràng buộc này hơi linh hoạt, ví dụ: khi tweet cuối cùng của bạn chỉ có một từ
  • Đây là mã golf, vì vậy mã ngắn nhất sẽ thắng.

Toàn văn địa chỉ Gettysburg

(Mã của bạn vẫn có thể xử lý bất kỳ chuỗi ASCII nào được truyền cho nó.)

BỐN SCORE VÀ SEVEN NĂM AGO FASHERS CỦA CHÚNG TÔI MANG LẠI CHO NỘI DUNG NÀY MỘT NỀN TẢNG MỚI LIÊN QUAN ĐẾN NỀN TẢNG VÀ ĐƯỢC CHẤP NHẬN ĐỂ ĐỀ NGHỊ RATNG MỌI NGƯỜI ĐƯỢC TẠO THIẾT BỊ. NGAY BÂY GIỜ CHÚNG TÔI THAM GIA VÀO MỘT CUỘC THI DÂN SỰ TUYỆT VỜI TUYỆT VỜI SAU ĐÓ LÀ NỀN TẢNG HOẶC BẤT K N NÀO NÀO ĐƯỢC LIÊN KẾT VÀ R D RÀNG CÓ THỂ KẾT THÚC. CHÚNG TÔI LÀ MET TRÊN MỘT CHIẾN LƯỢC TUYỆT VỜI CỦA CẢNH BÁO. CHÚNG TÔI ĐÃ ĐẾN ĐẾN KHAI THÁC MỘT PHẦN CỦA L FINH VỰC NÀY LÀ MỘT NƠI GIAO DỊCH CUỐI CÙNG CHO NHỮNG AI Ở ĐÂY ĐỂ SỐNG SỐNG CỦA MÌNH SỐNG ĐẾN SỐNG NIGHT LIVE. ĐÓ LÀ NỀN TẢNG VÀ SỞ HỮU MÀ CHÚNG TÔI NÊN LÀM ĐIỀU NÀY. NHƯNG TRONG MỘT CUỘC SỐNG LỚN NHẤT CHÚNG TÔI KHÔNG THỂ NGHIÊM TÚC, CHÚNG TÔI KHÔNG THỂ TIẾP CẬN, CHÚNG TÔI KHÔNG THỂ NÓI, NHÓM NÀY. NHỮNG NGƯỜI ĐÀN ÔNG SỐNG SỐNG SỐNG VÀ CHẾT NÓ SỨC MẠNH Ở ĐÂY CÓ SỰ TIÊU THỤ NÓ TRÊN NỀN TẢNG CÔNG CỤ CỦA CHÚNG TÔI ĐỂ THÊM HOẶC XÁC ĐỊNH. THẾ GIỚI S L NHƯ THẾ NÀO LƯU Ý B NORNG LỜI NÓI NHƯ THẾ NÀO CHÚNG TÔI NÓI Ở ĐÂY NHƯNG NÓ KHÔNG BAO GIỜ BỎ QUA NHỮNG GÌ BẠN ĐÃ Ở ĐÂY. NÓ LÀ CHO CHÚNG TÔI NGƯỜI CHA SỐNG SỐNG ĐỂ ĐƯỢC KHAI THÁC TẠI ĐÂY ĐẾN CÔNG VIỆC KHÔNG ĐƯỢC YÊU CẦU NÀO MỌI NGƯỜI ĐÃ TÌM HIỂU TẠI ĐÂY CÓ NHỮNG ĐIỀU NÀY KHÔNG CÓ NÂNG CẤP. NÓ LÀ NGƯỜI CHA M FOR CHO CHÚNG TÔI ĐẾN ĐÂY ĐƯỢC KHAI THÁC ĐỐI VỚI NHIỆM VỤ TUYỆT VỜI TUYỆT VỜI TRƯỚC KHI CHÚNG TÔI, RATNG TỪ NÀY ĐÃ CHỊU TRÁCH NHIỆM CỦA CHÚNG TÔI ĐỂ KIẾM ĐƯỢC R DE RÀNG ĐỂ KIẾM ĐƯỢC R DE RÀNG ĐỂ KIẾM ĐƯỢC R DE RÀNG ĐÃ BẮT ĐẦU Ở VAIN, R NNG QUỐC GIA NÀY THEO THIÊN CHÚA SALL CÓ MỘT SINH NHẬT MỚI CỦA FREEDOM, VÀ RATNG CHÍNH PHỦ CỦA NHÂN DÂN B PENG NHÂN DÂN CHO MỌI NGƯỜI ĐỂ TRỞ NÊN TỪ TRÁI ĐẤT.


Trong các tweet mẫu của bạn, bạn đã thất bại - nhưng trong các quy tắc, bạn nói không. Vui lòng thực hiện điều này nhất quán - thay đổi các quy tắc hoặc ví dụ.
gian hàng

@boothby Chà, ví dụ là thể hiện rõ ràng những gì không được phép ... Tôi sẽ xem nếu tôi không thể nói lại từ đó.
Gaffi 16/03/13

Vui lòng làm rõ câu hỏi để làm rõ liệu câu trả lời có phải xử lý khả năng phải tính toán lại từ -> gói tweet do phần (X / Y) hay không. Điều này làm cho vấn đề trở nên khó khăn hơn đáng kể và giới thiệu một giới hạn về thông điệp lớn nhất mà người ta có thể giao tiếp mà không cần mã hóa dữ liệu trong phần (X / Y).
arrdem

@rmckenzie Xin lỗi, không chắc tôi có lấy bạn không? Bạn có nghĩa là tính đến thực tế là bạn có thể có hơn 100 tweet trong một bộ?
Gaffi 17/03/13

.... đến một tweet mà tuyên bố vấn đề của bạn như được gợi ý.
arrdem

Câu trả lời:


12

Perl, 51 nhân vật

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

Yêu cầu dấu nhắc dòng lệnh -p, bao gồm 1 char.

Giải thích: chèn phần đếm trước và dòng mới sau các nhóm từ có tối đa 132 ký tự. Chèn một trình giữ chỗ ( ~) cho tổng số, sau đó được thay thế bằng thay thế thứ hai. Điều này sẽ phá vỡ nếu tin nhắn chứa ~, nhưng người ta có thể dễ dàng sử dụng một ký tự không thể thay thế.

Nó gian lận một chút: nó luôn cho phép bảy ký tự cho phần đếm , (nn/nn). Thực sự, nếu có (n/n)thì nên cho phép thêm hai nhân vật. Tuy nhiên, một giải pháp tùy tiện cho vấn đề này sẽ làm tăng đáng kể sự phức tạp của vấn đề.


\Gở đây có vô dụng không?
dùng2846289

26

Con trăn, 140

^ 140 ký tự thực sự là một sự trùng hợp.

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

Trong khi có những từ còn lại, giải pháp sẽ tạo ra các tweet mới từ việc cung cấp từ và nối chúng vào danh sách. Đối với mỗi tweet, nó sẽ tiếp tục cố gắng thêm từ cho đến khi độ dài của tweet đạt hơn 140 ký tự. Hai ký tự được dành riêng cho total tweets, được điền vào sau khi mỗi tweet trong danh sách được in.

Ví dụ đầu ra:

(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.

Đó chính xác là những gì tôi cần. Giải pháp này là mát mẻ. Cảm ơn @grc
iChux

7

Ruby, 77 ký tự

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

Đóng gói logic thành một biểu thức chính quy duy nhất. Đầu ra của 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

Ruby, 75

Không thể đánh bại Perl, nhưng ít nhất nó cũng đánh bại giải pháp Ruby khác. Lưu ý rằng nó in các tweet theo thứ tự ngược lại (vấn đề không chỉ định một).

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

1
Hừm ... Tôi cho rằng tôi đã không chỉ định thứ tự. Làm tốt công việc chiếm lĩnh các quy tắc. ;-)
Gaffi

1

VBA, 251

Đã thử một phương pháp khác ... Không hoàn toàn tốt như bản gốc của tôi, nhưng tôi vẫn đang làm việc với nó ...

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

Đầu ra:

(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 ký tự)

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

Gấp dòng ở 132 ký tự (để cho phép số tweet của chúng tôi), trên khoảng trắng ( -s), Đọc văn bản ngược (tac), đánh số văn bản ( cat -n), đảo ngược ( tac). Inside Awk: Dòng đầu tiên (NR == 1), gán chữ 'a' giá trị trong dòng đầu tiên. Để trống cột số. In (NR / 'a') sau đó dòng.

Đầu ra:

(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.

Tôi tự tin có một lệnh bash ngắn hơn, một lệnh lạm dụng wc -l
Pureferret

1

Javascript (chỉ FF), 92 ký tự

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

Được định dạng, đó là bản sao của tập lệnh 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

Đầu ra:

(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 (chỉ FF), 135 ký tự

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+')'))}

Được định dạng, đó là:

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+')'))
}

Tôi nghĩ rằng điều này thông minh hơn câu trả lời ngắn hơn của tôi
Không phải Charles

0

PHP, 233

Tôi có đúng không khi cho rằng đây là câu trả lời đầu tiên không gian lận trong phần đếm?
(Nó cũng hoạt động với hơn 99 tweet; tôi có thể tắt thêm hai byte nếu tôi cho phép một vòng lặp vô hạn trong trường hợp đó.)

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),'
';}

vô dụng:

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";
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.