Erstellen Sie einen Twitter-Parser

14

Einführung

Sie verwenden Twitter (tun wir so, als ob nicht), wobei Sie auf 140 Zeichen pro einzelnem Tweet beschränkt sind, den Sie mit der Welt teilen möchten. Wenn Sie Ihren Followern von Abraham Lincolns Gettysburg-Adresse twittern möchten, müssen Sie den Text in mehrere 140-stellige Blöcke aufteilen, um die gesamte Nachricht zu verbreiten. Diese Chunks sollten jedoch nicht immer genau 140 Zeichen lang sein. Nehmen wir zum Beispiel an, wir haben die Rede in 17-stellige Teile aufgeteilt. Am Ende würden wir folgende Tweets erhalten:

  • VIER PUNKTE UND SE
  • VEN JAHRE VOR UNSEREM
  • VATER GEBROCHEN
  • WEITER AUF DIESEM CON
  • TINENT EIN NEUES NATI
  • AUF IN L
  • (und so weiter)

Das ist nicht gut! Wenn einzelne Wörter getrennt werden, kann es schwierig werden zu verstehen, was Sie sagen möchten. Auf der Twitter-Seite kann es auch vorkommen, dass einer Ihrer Follower auf einen bestimmten Tweet stößt und nicht merkt, dass die Nachricht mehr enthält. Daher sollten Sie Ihre Tweets nummerieren, damit sie einen Kontext haben, mit dem Sie arbeiten können (und immer noch 17-stellige Chunks verwenden) ):

  • (1/7) VIER PUNKTE UND
  • (2/7) VOR SIEBEN JAHREN
  • (3/7) UNSERE VATER
  • (4/7) WEITERGEBRACHT
  • (5/7) DIESER KONTINENT A
  • (6/7) NEUE NATION
  • (7/7) ENTWICKELT IN ...

Sie könnten die beste Konfiguration für Ihre Tweets manuell von Hand herausfinden, aber dafür haben wir Computer!

Herausforderung

Analysieren Sie die Gettysburg-Adresse (oder einen beliebigen Text, wir werden uns jedoch an diesem Beispiel orientieren) in einem Satz von Tweets mit maximal 140 Zeichen (nehmen Sie ASCII an, da unser Beispieltext keine haben sollte) alle ungewöhnlichen / ungewöhnlichen Teile darin).

Einzelheiten

  • Ihre Funktion / Programm / etc sollte ein einzelnes String-Argument aufnehmen und für jeden Tweet eine Textzeile ausgeben.
    • Angenommen, diese Eingabe führt beim Parsen nie zu mehr als 99 Tweets insgesamt, unabhängig davon, wie Sie das Parsen auswählen (solange diese Auswahl noch zu den anderen Punkten der Herausforderung passt).
  • Tweets müssen einen " " tweet numberof - total tweetsIndikator im Format (x/y)vor dem Text des Tweets enthalten.
    • Diese Zählung nimmt einen Teil Ihres 140-Zeichen-Platzes ein!
  • Tweet-Chunks dürfen nur in Zeilenumbrüchen oder Leerzeichen aufgeteilt werden.
    • Bindestriche, Punkte, Kommas oder andere Satzzeichen sind nicht zulässig, es sei denn, unmittelbar davor oder dahinter steht ein Leerzeichen oder eine neue Zeile.
  • Tweets sollten aus möglichst vielen vollständigen Wörtern bestehen.
    • Diese Einschränkung ist etwas flexibel, z. B. wenn Ihr endgültiger Tweet nur ein Wort enthält
  • Dies ist Codegolf, also gewinnt der kürzeste Code.

Vollständiger Wortlaut der Adresse von Gettysburg

(Ihr Code sollte weiterhin in der Lage sein, alle an ihn übergebenen ASCII-Zeichenfolgen zu verarbeiten.)

VIER PUNKTE UND SIEBEN JAHRE VOR UNSEREN VATERN, DIE AUF DIESEM KONTINENT EINE NEUE NATION GEBRACHT HABEN, DIE IN DER FREIHEIT ERRICHTET WURDE, DASS ALLE MÄNNER GLEICH GESTELLT SIND. JETZT SIND WIR IN EINEN GROSSEN ZIVILKRIEG EINGEFÜGT, DER PRÜFT, OB DIESE NATION ODER JEGLICHE NATION, DIE SO ERFINDEN UND ENDIZIERT WURDEN, LANGDAUER KÖNNEN. WIR SIND AUF EINEM GROSSEN SCHLACHTFELD DIESES KRIEGES. WIR MÜSSEN EINEN TEIL DIESES GEBIETS ALS ENDGÜLTIGEN ORT FÜR JENE BESTIMMEN, DIE IHR LEBEN GEGEBEN HABEN, DASS DIESE NATION LEBEN KÖNNTE. ES PASST AUCH PASSEND UND PASSEND, DASS WIR DAS TUN SOLLTEN. ABER IM GRÖSSEREN SINNE KÖNNEN WIR NICHT BESTIMMEN, WIR KÖNNEN NICHT KONSEKRIEREN, WIR KÖNNEN DIESEN GRUND NICHT HEILEN. DIE MUTIGEN LEBENDIGEN UND TOTEN, DIE HIER UMKÄMPFEN, HABEN ES WEIT ÜBER UNSERER SCHLECHTEN KRAFT GEWÄHRT, UM ZU ADDIEREN ODER ABZULEITEN. Die Welt wird sich weder merken noch daran erinnern, was wir hier sagen, aber sie kann nie vergessen, was sie hier getan haben. ES IST FÜR UNS, DASS DAS LEBEN HIER DER UNVOLLSTÄNDIGEN ARBEIT GEWIDMET IST, DIE SIE HIER GEKRÄFT HABEN, DASS SIE SO NOCH NOCH NICHT VORGEKOMMEN SIND. Es ist vielmehr so, dass wir uns der großen Aufgabe widmen, die uns noch bevorsteht, und dass wir aufgrund dieser ehrwürdigen Tötung eine verstärkte Ablehnung vornehmen, um den Grund für die Ablehnung der letzten vollständigen Ablehnung zu finden HABEN IN VAIN GESTORBEN, DASS DIESE NATION UNTER GOTT EINE NEUE GEBURT DER FREIHEIT HAT, UND DASS DIE REGIERUNG DER MENSCHEN DURCH DIE MENSCHEN NICHT AUS DER ERDE VERGANGEN WIRD.

Gaffi
quelle
In Ihren Beispiel-Tweets haben Sie Wörter gebrochen - aber in den Regeln sagen Sie nicht zu. Bitte machen Sie dies konsistent - entweder ändern Sie die Regeln oder die Beispiele.
Stand vom
@boothby Nun, das Beispiel soll explizit zeigen, was nicht erlaubt ist ... Ich werde sehen, ob ich das nicht umformulieren kann.
Gaffi
Bitte klären Sie die Frage, um zu verdeutlichen, ob Antworten die Möglichkeit enthalten müssen, aufgrund des (X / Y) -Teils Wort -> Tweet-Packungen neu berechnen zu müssen. Dies erschwert das Problem erheblich und begrenzt die größte Nachricht, die möglicherweise kommuniziert wird, ohne dass Daten im (X / Y) -Teil verschlüsselt werden.
Arrdem
@rmckenzie Sorry, nicht sicher, ob ich dich kriege? Sie wollen die Tatsache erklären, dass Sie mehr als 100 Tweets in einem Set haben könnten?
Gaffi
@Gaffi - Ja, es gibt eine maximale Anzahl von Teilen, in die unsere Nachrichten unterteilt werden (in welchen Fällen Annahmen getroffen werden können und das sol von grc gültig ist), oder müssen wir den allgemeinen Fall wie die Serialisierung von mehreren tausend Wörtern unterstützen zu einem tweet was deine problemstellung so nahelegt.
Arrdem

Antworten:

12

Perl, 51 Zeichen

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

Erfordert die Eingabeaufforderung -p, einschließlich 1 Zeichen.

Erläuterung: Fügen Sie den Zählteil vor und den Zeilenumbruch nach Wortgruppen mit bis zu 132 Zeichen ein. Fügen Sie einen Platzhalter ( ~) für die Summe ein, der dann durch eine zweite Ersetzung ersetzt wird. Dies bricht ab, wenn die Nachricht enthält ~, aber man könnte stattdessen leicht ein nicht druckbares Zeichen verwenden.

Es betrügt leicht: es ermöglicht immer sieben Zeichen für den Zählabschnitt, (nn/nn). Wirklich, wenn es so ist (n/n), sollte es zwei zusätzliche Zeichen erlauben. Eine willkürliche Lösung dieses Problems würde jedoch die Komplexität des Problems erheblich erhöhen.


quelle
\Gist hier nutzlos, nicht wahr?
user2846289
26

Python, 140

^ 140 Zeichen war eigentlich ein Zufall.

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

Solange noch Wörter übrig sind, erstellt die Lösung neue Tweets aus dem Wortvorrat und hängt sie an eine Liste an. Für jeden Tweet wird so lange versucht, Wörter hinzuzufügen, bis die Länge des Tweets 140 Zeichen überschreitet. Für sind zwei Zeichen reserviert total tweets, die später beim Drucken jedes Tweets in der Liste ausgefüllt werden.

Beispielausgabe:

(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
quelle
Es war genau das, was ich brauchte. Diese Lösung ist cool. Thanks @grc
iChux
7

Ruby, 77 Zeichen

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

Packte die Logik in einen einzelnen regulären Ausdruck. Ausgabe von 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.
Howard
quelle
3

Rubin, 75

Perl ist nicht zu schlagen, aber es schlägt zumindest die andere Ruby-Lösung geringfügig. Beachten Sie, dass die Tweets in umgekehrter Reihenfolge gedruckt werden (das Problem gibt keine an).

f=->t,i=1{t=~/\S.{,130}\S(?!\S)/?puts("(#{i}/%d) #$&"%n=f[$',i+1])||n :i-1}
Lowjacker
quelle
1
Hm ... ich habe wohl die Reihenfolge nicht angegeben. Gute Arbeit, die Regeln zu missbrauchen. ;-)
Gaffi
1

VBA, 251

Versuchte eine andere Methode ... Nicht ganz so gut wie mein Original, aber ich arbeite noch daran ...

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

Ausgänge:

(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.
Gaffi
quelle
1

BASH (88 Zeichen)

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

Falten Sie die Zeile mit 132 Zeichen (um die Anzahl unserer Tweets zu berücksichtigen) auf Leerzeichen ( -s), lesen Sie den Text rückwärts (tac), nummerieren Sie den Text ( cat -n) und kehren Sie ihn zurück ( tac). In Awk: Erste Zeile (NR == 1) weisen Sie dem Buchstaben 'a' den Wert in der ersten Zeile zu. Löschen Sie die Nummernspalte. Drucken Sie (NR / 'a') und dann die Zeile.

Ausgabe:

(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.
Pureferret
quelle
Ich bin zuversichtlich, dass es einen kürzeren Bash-Befehl gibt, der wc -l
Pureferret am
1

Javascript (nur FF), 92 Zeichen

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

Formatiert, das ist eine Abzocke des Perl-Skripts:

r=(s)=>{
    s.match(/.{1,132}(\s|$)/gm).map((v,i,a) => console.log(v,'('+(i+1)+'/'+a.length+')'))
}
Nicht dieser Charles
quelle
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

Ausgänge:

(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.
Gaffi
quelle
0

Javascript (nur FF), 135 Zeichen

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

Formatiert, das ist:

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+')'))
}
Nicht dieser Charles
quelle
Ich finde das klüger als meine kürzere Antwort
Nicht dass Charles
0

PHP, 233

Bin ich richtig in der Annahme, dass dies die erste Antwort ist, die den Zählteil nicht betrügt?
(Es funktioniert auch mit mehr als 99 Tweets. Ich könnte zwei weitere Bytes wegschneiden, wenn ich in diesem Fall eine Endlosschleife zulasse.)

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";
}
Titus
quelle