Сделайте простую упаковку слов

22

(Примечание: это мой первый в истории вопрос игры в гольф, но, насколько я могу судить, никто другой не сделал именно этого, поэтому я должен быть хорошим.)

Ваша задача - создать программу или функцию, которая принимает строку sи целое число nи возвращает или выводит этот текст, заключенный в несколько строк. Каждое слово должно быть целиком в строке; т.е. нет слов, разделенных в середине. Каждая строка не может быть длиннее nсимволов, и вы должны поместить как можно больше слов в каждой строке.

Пример:

s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat." 
n = 50

output:
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Sed eget erat lectus. Morbi mi mi, fringilla
sed suscipit ullamcorper, tristique at mauris.
Morbi non commodo nibh. Pellentesque habitant
morbi tristique senectus et netus et malesuada
fames ac turpis egestas. Sed at iaculis mauris.
Praesent a sem augue. Nulla lectus sapien, auctor
nec pharetra eu, tincidunt ac diam. Sed ligula
arcu, aliquam quis velit aliquam, dictum varius
erat.

Ваш вывод может быть массивом строк или единственной строкой с переносами строк. Кроме того, вы можете предположить, что никакие слова не будут длиннее n, поэтому не беспокойтесь о странных случаях.

Применяются стандартные правила ввода / вывода, а стандартные лазейки запрещены. Промежуточные пробелы разрешены.

Поскольку это , выигрывает решение сокращений в байтах.

Вот пример программы на Python, которая будет работать.

ATMunn
источник
3
n максимальная длина линии? или длина, которую мы должны достичь до разрыва строки?
Дэвид
1
@ Давид, или количество строк?
Питер Тейлор
1
28 байтов Python это актуально?
Дэвид
3
nмаксимальная длина строки, извините, что это не ясно. Я уточню. Кроме того, правила были обновлены, поэтому простое разделение не работает.
ATMunn

Ответы:

7

Python 2 , 26 байт

from textwrap import*
fill

Попробуйте онлайн!

Мех ... встроенные модули скучны ... вместо этого, есть хорошее 87-байтовое решение здесь:

s,n=input()
x=''
for i in s.split():c=n<len(x+i);exec'print x'*c;x=x*-~-c+i+' '
print x

Попробуйте онлайн!

Выводит конечные пробелы.

Эрик Аутгольфер
источник
5

PHP , 8 байт

По общему признанию не самое оригинальное решение, но PHP имеет встроенную функцию, которая идеально соответствует вашим требованиям!

wordwrap:

string wordwrap ( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = FALSE ]]] )

Переносит строку на заданное количество символов, используя символ разрыва строки.

Используйте вот так:

$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat.";
echo wordwrap($str, 50);

Или попробуйте онлайн!

Davіd
источник
5

JavaScript (ES6),  75 73  72 байта

Принимает вход как (string)(n).

s=>n=>s.split` `.map(w=>r=(u=r?r+' '+w:w)[n]?(o+=r+`
`,w):u,o=r='')&&o+r

Попробуйте онлайн!

переменные

Форматированный вывод сохраняется в о (зеленым цветом ниже).

Обновленная строка U определяется как объединение:

  • текущая строка р (черным цветом внизу)
  • пробел, если р не пустой или ничего другого (оранжевым цветом ниже)
  • новое слово вес (синим цветом ниже)

Нам нужно вставлять разрыв строки всякий раз, когда установлен N символ U (0-indexed, красным цветом внизу).

пример

Nзнак равно16 иs = "LOREM IPSUM DOLOR"

Добавление "LOREM":

0001020304050607080910111213141516LОрЕM

Добавление "IPSUM":

0001020304050607080910111213141516LОрЕMяпSUM

Добавление "DOLOR":

0001020304050607080910111213141516LОрЕMяпSUMDОLОр

0001020304050607080910111213141516LОрЕMяпSUMDОLОр

Arnauld
источник
Промежуточные пробелы разрешены. может быть r+w+' '?
l4m2
5

Perl 6 , 46 29 байт

{;*.comb(/.**{1..$_}[\s|$]/)}

Попробуйте онлайн!

Решение на основе регулярных выражений, которое принимает входные данные карри, как f(n)(s)и возвращает список строк. Каждая строка, кроме последней, имеет пробел в конце

Объяснение:

{;*                         }   # Anonymous code block that returns a Whatever lambda
   .comb(/                /)    # Split the string by
          .**{1..$_}            # Up to n characters
                    [\s|$]      # Terminated by a whitespace char or the end of the string
Джо Кинг
источник
4

Vim, 15 байт / нажатий клавиш

DJ:se tw=<C-r>"
gq_

Вопрос форматирования текста? Я знаю только инструмент для работы! И это даже имеет мое имя в первых двух нажатиях клавиш: D

<C-r>значит ctrl-r.

Это может когда - нибудь чуть- чуть короче V , но я предпочитаю отвечать на ваниль ВИМ для ответов , которые на самом деле показать, как краткое ВИМ может быть для правильного вызова. И разница в любом случае так мала.

Это также может быть следующее для 15 байтов:

:se tw=<C-r><C-w>
ddgq_

Попробуйте онлайн!

DJMcMayhem
источник
1
Пояснение:: DJ:Эта программа была сделана DJ, нашим любимым котом с бриллиантом на шее. [...]
Эрик Outgolfer
4

R , 36 27 байт

R имеет это как встроенный ( strwrap), мы возвращаем вектор разделенных линий.

function(s,n)strwrap(s,n+1)

Попробуйте онлайн!

j.doe
источник
1
Да, это должно быть разрешено. Разрешены массивы строк, поэтому я не понимаю, почему это будет иначе.
ATMunn
4

Haskell , 70 байт

s!n|length s<=n=[s]|(t,_:d)<-splitAt(until((<'!').(s!!))pred n)s=t:d!n
Линн
источник
3

Java (JDK) , 46 44 байта

В основном это чистое решение регулярных выражений в Java, почти наверняка самое короткое, которое я написал.

Приветствую Кевина за помощь в сокращении байтов в регулярном выражении!

n->s->s.replaceAll(".{1,"+n+"}( |$)","$0\n")

Попробуйте онлайн!

Используя карри lamdba, он создает регулярное выражение для жадного сопоставления nсимволов, за которыми следует пробел или конец строки. Затем эти символы заменяются самими собой, за которым следует символ новой строки.

Люк Стивенс
источник
@KevinCruijssen [ $]просто соответствует пробелу или, $если я правильно помню, а не концу строки. Хотя кажется, что он работает, так что похоже, что его можно просто вставить в гольф на одно место для еще меньшего количества байтов.
Люк Стивенс
Ах, это действительно может быть просто пробел, так как вы добавляете новые строки и вам не нужно добавлять дополнительный завершающий перевод строки в конце.
Кевин Круйссен
1
Вы можете сыграть в гольф еще 2 байта, удалив скобку в регулярном выражении, и использовать $0вместо $1.
Кевин Круйссен
@KevinCruijssen Хороший! Это просто позор, который replaceAllтак многословен!
Люк Стивенс
2
Для меня это неправильно, если я изменю латинскую фразу упражнения так, чтобы она заканчивалась словами «… dictum varius abc erat». После буквы c появляется ненужная новая строка ...
RosLuP
2

Mathematica, 16 байтов

InsertLinebreaks

Встроенная функция. Принимает строку и целое число в качестве входных данных и возвращает строку в качестве выходных данных.

InsertLinebreaks["string", n]
 вставляет символы новой строки, чтобы строка не превышала n символов.

LegionMammal978
источник
2

Powershell, 40 83 байта

Тестовый пример с n=80добавленным.

param($s,$n)$s-split' '|%{if(($o+$_|% le*)-lt$n){$o+=' '*!!$o+$_}else{$o;$o=$_}}
$o

Тестовый скрипт:

$f = {

param($s,$n)$s-split' '|%{if(($o+$_|% le*)-lt$n){$o+=' '*!!$o+$_}else{$o;$o=$_}}
$o

}

@(
,(50, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat.",
"Lorem ipsum dolor sit amet, consectetur adipiscing",
"elit. Sed eget erat lectus. Morbi mi mi, fringilla",
"sed suscipit ullamcorper, tristique at mauris.",
"Morbi non commodo nibh. Pellentesque habitant",
"morbi tristique senectus et netus et malesuada",
"fames ac turpis egestas. Sed at iaculis mauris.",
"Praesent a sem augue. Nulla lectus sapien, auctor",
"nec pharetra eu, tincidunt ac diam. Sed ligula",
"arcu, aliquam quis velit aliquam, dictum varius",
"erat.")
,(80, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat.",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus.",
"Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non",
"commodo nibh. Pellentesque habitant morbi tristique senectus et netus et",
"malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue.",
"Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu,",
"aliquam quis velit aliquam, dictum varius erat.")
) | %{
    $n,$s,$expected = $_
    $result = &$f $s $n
    "$result"-eq"$expected"
    # $result   # uncomment this line to dispaly a result
}

Выход:

True
True
Mazzy
источник
Спасибо. Ложная троица - это выражение. Этот скрипт содержит неявный returnв elseчасти и оператор в thenчасти.
Маззи
2

Japt , 20 байт

¸rÈ+Yi[X·ÌY]¸Ê>V?R:S

Попробуйте онлайн!

Спасибо Bubbler и Shaggy за помощь

Объяснение:

¸                       #Split into words
 r                      #For each word, add them to the output in this way:
     i                  # Choose a character using this process:
       X·Ì              #  Get the last line of the output
          Y             #  And the current word
      [    ]¸           #  Join them with a space
             Ê>V?       #  If the resulting line is greater than the allowed length:
                ?R      #   Choose "/n" (newline)
                  :S    #  Otherwise choose " " (space)
     i                  # Add the chosen character to the output
  È+Y                   # Add the current word to the output
Камил Дракари
источник
24 байта с [X,Y].join(...).
Bubbler
1
20 байтов
лохматый
1

Сетчатка 0.8.2 , 37 байт

.+$
$*
!`(?=\S.*¶(1)+)(?<-1>.)+(?=\s)

Попробуйте онлайн! Берет sи nна отдельных линиях. Объяснение:

.+$
$*

Преобразовать nв одинарный.

(?=\S.*¶(1)+)(?<-1>.)+(?=\s)

Сопоставьте без пробелов, затем посмотрите вперед nи посчитайте это $#1. Затем вернитесь и используйте балансировочную группу, чтобы найти не более nсимволов, за которыми следует пробел.

!`

Выведите совпадения в виде списка строк.

Нил
источник
В Retina есть способ поместить первый вход в регулярное выражение, которое мы используем со вторым входом? Так что-то вроде этого: .{1,50} и$0¶ , но где 50вместо этого принимается вход?
Кевин Круйссен
@KevinCruijssen В Retina 1 вы, вероятно, можете использовать стадию Eval для получения аналогичного результата, но это скучно, поэтому я не стал беспокоиться.
Нил
1

Древесный уголь , 19 байт

Nθ←F⪪S «¿‹⁺LιⅈθM→⸿ι

Попробуйте онлайн! Ссылка на подробную версию кода. Принимает ввод nи sпо отдельным строкам. Объяснение:

Nθ

Вход n.

Переместите курсор влево на одну клетку, чтобы сбалансировать правильное движение от первой итерации цикла.

F⪪S «

Разбейте строку на пробелы и зациклите слова.

¿‹⁺Lιⅈθ

Вычислите, достигнет ли следующее слово правого края.

M→

Если этого не произойдет, переместитесь на одну клетку вправо

⸿

Если это тогда начнется новая строка.

ι

Выведите слово.

Нил
источник
1

05AB1E , 18 байт

õs#vDy«g²›i,}yðJ}?

Попробуйте онлайн.

Объяснение:

õ                   # Push an empty string "" to the stack
 s                  # Swap to take the (implicit) string input
  #                 # Split it by spaces
   v            }   # For-each `y` over the words:
    D               #  Duplicate the top of the stack
                    #  (which is the empty string in the very first iteration)
     y«             #  Append the current word `y`
       g            #  Get its length
        ²›i }       #  If its lengthy is larger than the second input:
           ,        #   Pop and output the current duplicated value with trailing newline
             yð     #  Push the word `y` and a space " "
               J    #  Join the entire stack together
                 ?  # After the loop, output the last part as well (without newline)
Кевин Круйссен
источник
1

Java 8, 135 байт

n->s->{String r="",S[]=s.split(" "),t=r;for(int i=0;i<S.length;)if((t+S[i]).length()>n){r+=t+"\n";t="";}else t+=S[i++]+" ";return r+t;}

Попробуйте онлайн.

Объяснение:

n->s->{                      // Method with integer & String parameters and String return
  String r="",               //  Result-String, starting empty
         S[]=s.split(" "),   //  Input-String split by spaces
         t=r;                //  Temp-String, starting empty as well
  for(int i=0;i<S.length;)   //  Loop `i` in the range [0, amount_of_words):
    if((t+S[i]).length()>n){ //   If `t` and the word are larger than the integer input:
      r+=t+"\n";             //    Add `t` and a newline to the result
      t="";}                 //    And reset `t` to an empty String
     else                    //   Else:
       t+=S[i++]+" ";        //    Append the word and a space to `t`
                             //    (and then increase `i` by 1 with `i++` for the next word
                             //     of the next iteration)
  return r+t;}               //  Return the result-String appended with `t` as result
Кевин Круйссен
источник
1

APL (Dyalog Unicode) , 14 байтов SBCS

Инфиксная функция; левый аргумент есть n, правый аргумент есть n.

CY'dfns'wrap

Попробуйте онлайн!

⎕CYс оп у в библиотеке dfns

 тогда

wrap[c]  использоватьфункциюwrap [n]

[c]  код этой функции
[n]  примечания к этой функции


Гольф версия wrap, 59 байт SBCS

{⍺≥≢⍵:⍵⋄(t↑⍵),2↓⎕TC,⍺∇⍵↓⍨t+b⊃⍨t←⊃⌽⍺,g/⍨⍺≥g←⍸(⍺+1)↑b' '=⍵}

Попробуйте онлайн!

{} Дфн; левый аргумент (ширина), правый аргумент (строка)

≢⍵ счетчик (количество символов) строки

⍺≥: Если ширина больше или равна этому, то:

   вернуть строку

 иначе:

  ' '=⍵ Булева маска, где пробелы равны строке

  b← хранить в b(для б Ланкс)

  ()↑ Взять из этого следующее количество элементов:

   ⍺+1 на один больше ширины

  я верю, где правда

  g← хранить в g(для g aps)

  ⍺≥ Булева маска, где ширина больше или равна

  g/⍨ фильтровать индексы промежутка тем

  ⍺, добавить это к ширине

  ⊃⌽ выбрать последний элемент этого (лит. выбрать первый из перевернутого)

  t← хранить в t(для т аки)

  b⊃⍨ используйте это, чтобы выбрать элемент из маски B lanks

  t+ добавить это к t

  ⍵↓⍨ отбросьте столько символов из строки

  ⍺∇ повторить на том же левом аргументе

  ⎕TC, Append , что в список т erminal с ontrol символов (8: HT, 10: Н. Л., 13: CR)

  2↓ отбросьте первые два символа из этого (оставляя только ведущий 13: CR)

  (... ), добавить это к следующему:

   t↑⍵ первые tсимволы строки

Адам
источник
0

Благодаря @Erik the Outgolfer, версия для гольфа:

Python 3 , 94 байта

def f(t,n):
 while t:i=n+(t[min(len(t)-1,n)]==" "or-t[n-1::-1].find(' '));print(t[:i]);t=t[i:]

Попробуйте онлайн!

# Python 3 , 130 байт

def f(t,n):
 l=[]
 while len(t):
  i=(n-t[:n][::-1].find(' '),n+1)[t[min(len(t)-1,n)]==" "]
  l.append(t[:i])
  t=t[i::]
 return l

Попробуйте онлайн!

Не очень удачная версия ...

Дэвид
источник
1
Некоторые гольфы. (печатает в STDOUT, не возвращается).
Эрик Outgolfer
0

JavaScript + HTML + CSS, 117 64 байта

-53 байта любезно предоставлены @Neil

n=50
s="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat."
f=(n,s)=>document.body.innerHTML+=`<tt><p style=width:${n}ch>${s}`
f(n,s)

guest271314
источник
1
По крайней мере, в моем браузере вы можете сократить это до (n,s)=>document.body.innerHTML+=`<p style=width:${n}ch><tt>${s}</tt></p>` 74 байтов. Если вы хотите выкопать старые версии Firefox, вы можете сохранить еще 8 байтов (n,s)=>document.body.innerHTML+=`<pre wrap width=${n}>${s}</pre>` .
Нил
@Neil Хорошее использование chюнитов. Firefox 65 вычисляет 50chкак 500px; Chromium 70 вычисляется 50chкак400px
guest271314
Этот ответ неверен. elit. Sed eget erat lectus. Morbi mi mi, fringilla sed(2-я строка) - более 50 символов. Я использую новейший Chrome.
mbomb007
Я смог настроить свое первоначальное предложение для работы в Chrome, поместив <p>внутрь <tt>.
Нил
0

Желе , 12 байт

ḲŒṖK€€ḣ€ƑƇṪY

Попробуйте онлайн!

К сожалению, это слишком медленно, чтобы работать для предоставленного тестового примера в течение минуты по TIO.

Эрик Аутгольфер
источник
0

C # (.NET Core) , 162 байта

string[]t(string n,int a){var g="";for(int i=0;i++<Math.Floor((double)n.Length/a);)g+=$"^.{{{i*a-1}}}|";return Regex.Split(n,$@"(?n)(?<=({g.Trim('|')})\S*)\s");}}

Эта функция использует регулярное выражение, которое соответствует ближайшему пробелу рядом с n-м или кратным n-ному символу и разбивает строку на его основе.

Попробуйте онлайн!

Ссылка TIO представляет собой полную программу, и у функции есть статическое ключевое слово, поэтому функцию можно вызывать из main.

Test Regex

Воплощение невежества
источник
Это не дает правильного вывода для тестового примера - некоторые строки длиннее 50 символов. Вы хотите «до», а не «рядом», а также разделение в одной точке должно зависеть от того, где оно было ранее.
Орджан Йохансен
0

C # (интерактивный компилятор Visual C #) , 78 байт

s=>n=>System.Text.RegularExpressions.Regex.Replace(s,".{1,"+n+"}( |$)","$0\n")

Попробуйте онлайн!

Авторы обращаются к @LukeStevens за разработку версии Java ... Очевидно, .NET заставляет вас импортировать RegularExpressions пространство имен для замены :(

Вот моя оригинальная версия, которая разделяется на символ пробела и использует LINQ для их объединения:

C # (интерактивный компилятор Visual C #) , 91 байт

s=>n=>s.Split(' ').Aggregate((a,w)=>a+(a.Length-a.LastIndexOf('\n')+w.Length>n?'\n':' ')+w)

Попробуйте онлайн!

Dana
источник
0

APL (NARS), 48 символов, 96 байтов

{⊃⍵{⍺≥≢⍵:⊂⍵⋄k←1+⍺-' '⍳⍨⌽r←⍺↑⍵⋄(⊂k↑r),⍺∇k↓⍵}⍨⍺+1}

тест:

  f←{⊃⍵{⍺≥≢⍵:⊂⍵⋄k←1+⍺-' '⍳⍨⌽r←⍺↑⍵⋄(⊂k↑r),⍺∇k↓⍵}⍨⍺+1}
  s←"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a sem augue. Nulla lectus sapien, auctor nec pharetra eu, tincidunt ac diam. Sed ligula arcu, aliquam quis velit aliquam, dictum varius erat."
  50 f s
Lorem ipsum dolor sit amet, consectetur adipiscing 
elit. Sed eget erat lectus. Morbi mi mi, fringilla 
sed suscipit ullamcorper, tristique at mauris.     
Morbi non commodo nibh. Pellentesque habitant      
morbi tristique senectus et netus et malesuada     
fames ac turpis egestas. Sed at iaculis mauris.    
Praesent a sem augue. Nulla lectus sapien, auctor  
nec pharetra eu, tincidunt ac diam. Sed ligula     
arcu, aliquam quis velit aliquam, dictum varius    
erat.                                              
RosLuP
источник
Я не знаю в "{⊃⍵ {⍺≥≢⍵: ⊂⍵⋄ ...", если это правильно ≥ или это правильно> ...
RosLuP
0

C, 63 байта

b(a,n)char*a;{while(strlen(a)>n){for(a+=n;*a-32;--a);*a++=10;}}

Функция этого упражнения b (a, n) будет разбивать строку «a», как сказано в упражнении, таким образом, чтобы не изменять ее длину (если мы увидим результат как одну строку), поскольку изменим несколько пробелов в \ n или новую строку в место. Во входной строке «a» также не должно быть символа \ n для функции b () (она может иметь \ n во входной строке для bs ())

Функция b (a, n) была бы в порядке только потому, что ограничение этого упражнения, которое накладывает каждое слово строки «a», имеет длину <n, если это не так, эта функция может идти
в один бесконечный цикл ... (очень неправильно в моем понимании, поэтому я тоже копирую функцию, более хорошую, потому что в этом случае она вернет -1 и не пойдет в один бесконечный цикл; это bs (a, n) ниже) Я не исключаю, что обе функции прослушиваются .. ,

#define R(x,y) if(x)return y
#define U unsigned
U bs(char*a,U n)
{U c,q,r=1,i,j;
 R(!a||n<1||n++>0xFFFF,-1);
 for(j=c=i=0;;++i,++c)
    {R(i==-1,-1);q=a[i];
     if(q==10)goto l;
     if(c>=n){R(i-j>n,-1);a[i=j]=10;l:c=-1;++r;}
     R(!q,r);
     if(q==32)j=i;
    }
}

результат b () передается одной функции, которая добавляет длину каждой строки

Lorem ipsum dolor sit amet, consectetur adipiscing [50]
elit. Sed eget erat lectus. Morbi mi mi, fringilla [50]
sed suscipit ullamcorper, tristique at mauris. [46]
Morbi non commodo nibh. Pellentesque habitant [45]
morbi tristique senectus et netus et malesuada [46]
fames ac turpis egestas. Sed at iaculis mauris. [47]
Praesent a sem augue. Nulla lectus sapien, auctor [49]
nec pharetra eu, tincidunt ac diam. Sed ligula [46]
arcu, aliquam quis velit aliquam, dictum varius [47]
erat. [5]
RosLuP
источник
@ceilingcat Хорошо, приведенный выше код также учитывает \ n ... одна ошибка, которую я обнаружил в коде, заключалась в том, что последняя строка не была правильно напечатана ... почему вы не пишете свой ответ C как другой? Он выиграл бы у меня, потому что он короче ... скажем, правда, я использую первую строку (или оператор ";") только для проверки ввода, потому что для меня ввод должен быть проверен, даже если это немного больше длинная; Я неудачно пытаюсь написать функцию в APL ...
RosLuP
@ceilingcat в последнем ответе, видела, что этот вопрос не говорит, есть ли во входной строке символ '\ n' или нет, и видел, что в этом примере нет '\ n'. Я предполагаю, что во входной строке нет символа новой строки ...
РосЛюП
Только 83 ... Да, я должен посмотреть,
получу
Просто 81 .... .... ....
РосЛуП
1
60 байтов
floorcat