Створіть аналізатор Twitter


14

Вступ

Ви використовуєте Twitter (давайте робити вигляд, якщо ні), де ви обмежені 140 символами за окремий твіт, яким ви хочете поділитися зі світом. Якщо ви хотіли подати твіт своїм підписникам Адреса Геттісбурга Авраама Лінкольна , то вам потрібно буде розбити текст на кілька фрагментів зі 140 символів, щоб вивести все повідомлення. Однак ці шматки не завжди повинні бути рівно 140 символів. Скажімо, наприклад, ми розбили промову на шматки з 17 символів, і ми закінчилися з цими твітами:

  • ЧЕТВЕРТИЙ СХОРОТ І СЕ
  • ВЕНЬ ГОДИНИ НАШІ
  • БАТЬКИ РОШУВАТИ
  • ЧЕРТИ НА ЦІЙ КОН
  • ТІНЕНТ НОВИЙ НАТІ
  • ПРО СУЧАСНИЙ В Л
  • (і так далі)

Це не добре! Коли окремі слова розбиті, то може бути важко зрозуміти, що ви намагаєтесь сказати. Крім того, у твіттерверсі один із ваших підписників може натрапити на певний твіт і не усвідомлювати, що в повідомленні є більше, тому вам потрібно буде пронумерувати твіти, щоб у них був якийсь контекст для роботи (все ще використовуючи 17-символьні шматки ):

  • (1/7) ЧЕТВЕРТІ СКОРОСТІ І
  • (2/7) СЕМІ РОКІВ
  • (3/7) НАШІ ДІТИ
  • (4/7) ВІДКРИТИ ФОРМУ ВКЛ
  • (5/7) ЦЕ КОНТИНЕНТ А
  • (6/7) НОВА НАЦІЯ
  • (7/7) СУЧАСНІ У ...

Ви можете вручну визначити найкращу конфігурацію ваших твітів вручну, але для цього ми маємо комп’ютери!

Виклик

У найкоротшому можливому коді проаналізуйте Геттісбургську адресу (або будь-який текст, але ми будемо дотримуватися цього як приклад) набір твітів, що містить не більше 140 символів (припустимо, ASCII, оскільки наш приклад тексту не повинен мати будь-які незвичайні / незвичайні шматочки в ньому).

Деталі

  • Ваша функція / програма / тощо повинна містити один аргумент рядка та виводити один рядок тексту для кожного твіта.
    • Припустимо, що цей вхід ніколи не призведе до більш ніж 99 загальних твітів під час розбору, незалежно від того, як ви вирішите проаналізувати (до тих пір, поки цей вибір все ще відповідає іншим пунктам виклику).
  • Твіти повинні включати в себе tweet numberпо total tweetsпоказнику в форматі « (x/y)» перед тілом чірікать.
    • Цей підрахунок займе частину вашого простору на 140 символів!
  • Частинки щебетання можуть бути розділені лише на нові рядки або пробіли.
    • Жодні дефіси, крапки, коми чи інші розділові знаки не допускаються, якщо безпосередньо не передує чи не супроводжується пробілом чи новою лінією.
  • Твіти повинні складатися з якомога більше повноцінних слів.
    • Це обмеження є дещо гнучким, наприклад, коли ваш останній твіт містить лише одне слово
  • Це кодовий гольф, тому найкоротший код виграє.

Повний текст адреси Геттісбурга

(Ваш код все ще повинен мати можливість обробляти будь-який рядок ASCII, переданий до нього.)

ЧЕТВЕРТІ СТОРІННЯ І СІМ РОКІВ НАШИХ ДІТЕЙ НАРУШИЛИ НА ЦІЙ КОНТИНЕНТ НОВУ НАЦІЮ, СТВОРЕННУ В БІБЛІОТЕЙСТВІ, І ВІДПОВІДАЄТЬСЯ ПРОПОЗИЦІЇ, ЩО ВСІ МОЖНІ СТВОРЕННІ РІВНІ. ЗАРАЗ ми займаємось ВЕЛИКИМИ ГРОМАДЯНСЬКИМИ ВІЙНИМИ ТЕСТУВАННЯ БІЛЬШОГО, ЯКІ НАЦІЇ АБО ЯКІ-небудь НАЦІЇ ТАКІ СТВОРЕНІ ТА ТАКОВІ ДОСЛІДЖЕННЯ МОЖНА ДЛЯ ВІДДІЛЕННЯ. МИ МИТИ НА ВЕЛИКОМУ БИТТЕЛІ З ТОЇ ВІЙНИ. МИ НАДАЄМО СВЯТИ ПОРТІОН З ЦЬОГО ПОЛУ ЯК ОКОНЧИМ МІСЦЕМ ЗА ВІДПОВІДНІСТЬ ДЛЯ ТИХ, КОМИ МОЖАЛИ ЇХ ЖИТИ, ЩО НАЦІЯ МОЖЕ ЖИТИ. АЛЬТОГЕТІЧНО ПІДГОТОВЛЯЄТЬСЯ ТА ВЛАСТИМОСТЬ, ЩО МОЖЕ ВЗАЄМО ЦЕ Але в більшій сенсі ми не можемо присвятити себе, ми не можемо переконатися, ми не можемо завітати, це земля. ЖИТТИЙ ЧОЛОВІК ЖИТТЯ І ГОЛОСУ, КОТОРИ БУЛИ ТУТ, ТОГО ПЕРЕГЛЯДУВАТИ НАДІЗ НАШІЙ БАЖИМОЇ СИЛИ ДОДАТИ АБО ДЕТРАКТ. СВІТ МОЖЕ ЗАПОМНІТЬ НЕ ДЛЯ ДОВГО ПАМ'ЯТЬСЯ, ЩО МИ СУМИТИ ТУТ, АЛЕ МОЖЕ НІКОЛИ НЕ ЗАБУДИТИ, ЧОГО СУМИ ТУТ. Це для нас ЖИТИЙ РАТЕР, ЩО БУДУТЬСЯ ВІДДІЛЕНИЙ ТУТ ДО НЕЗАКОНЕНОГО РОБОТИ, ЯКІ МОЖАЛИ ТОМУ, ЩО ТАКІ НЕБЕЗДОБЛИВІ. НАЙБІЛЬШЕ НАС, ЩО БУДУТЬСЯ ДО ВЕЛИКОГО ЗАВДАННЯ, ЩО ЗАПОВІДАЄТЬСЯ ДО НАС, ЩО ВІД ЦІХ ЧАСОВИХ РОЗДІЛІВ МОЄМО РОЗШИРИТИ ПОГЛЯД ДЛЯ ПРИЧИНИ ДЛЯ ЧОГО МОЖЛИВО ОСТАНОГО МЕРЕЖУ РОЗВИТКУ, ЯКОГО МОЖЕ НАДІЙТЕ, ЧОМУ ЙОГО МОЖУТЬ, ЩО ТАКЕ ВОНАМУ НАДУТЬСЯ, ЩО ВИ Є НАДІЙШЕ Вмирали ВІН, ЦЕ НАЦІЯ ЗА БОГОМ ПОЛУЧАЄ НОВЕ НАРОДЖЕННЯ СВОБОДИ, А ВЛАДЖАННЯ НАРОДІВ НАРОДУ ДЛЯ ЛЮДЕЙ НЕ ПЕРЕШЕ ЗІ ЗЕМЛІ.


У вашому прикладі твітів ви порушили слова - але в правилах ви кажете не робити. Будь ласка, зробіть це послідовним - або змініть правила або приклади.
виставка

@boothby Що ж, приклад полягає в тому, щоб явно показати, що заборонено ... Я побачу, чи не можу це переписати.
Гаффі

Будь ласка, уточнюйте це питання, щоб зрозуміти, чи потрібно відповідати на відповідь щодо можливості перерахування упаковок слово -> твіт через частину (X / Y). Це значно ускладнює проблему і вводить обмеження на найбільше повідомлення, яке може передаватися без кодування даних у (X / Y) частині.
arrdem

@rmckenzie Вибачте, не впевнений, якщо я вас знайшов? Ви маєте на увазі той факт, що ви могли мати 100+ твітів у наборі?
Гаффі

@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

Пітона, 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

Рубі, 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
Гм ... я вважаю, я не вказав замовлення. Гарна робота щодо викрадення правил. ;-)
Гаффі

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

БАШ (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), Прочитайте текст назад (tac), пронумеруйте текст ( 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+')'))
}

Я думаю, що це розумніше, ніж моя коротша відповідь
Не те, щоб Чарльз

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

неозорений:

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";
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.