Складіть просту обгортку слів


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, яка б працювала.



3
n - максимальна довжина лінії? чи довжини, яку ми повинні досягти до розриву лінії?
Девід

1
@david, чи кількість рядків?
Пітер Тейлор

1
28 байт Python це актуально?
Девід

3
nМаксимальна довжина лінії, вибачте, що це було не ясно. Я уточню. Також правила тепер оновлено, тому простий розкол не працює.
ATMunn

Відповіді:



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);

Або спробуйте в Інтернеті!


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

Спробуйте в Інтернеті!

Змінні

Відформатований вихід зберігається в о (зеленим кольором внизу).

Оновлений рядок у визначається як конкатенація:

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

Нам потрібно вставляти розрив рядка всякий раз, коли н -й символ у (червоний 0-індексований).

Приклад

н=16 іс = "ЛОРЕМНИЙ ІПСУВНИЙ ДОЛЬ"

Додавання "LOREM":

0001020304050607080910111213141516LОRЕМ

Додавання "IPSUM":

0001020304050607080910111213141516LОRЕМЯПSUМ

Додавання "ДОЛОР":

0001020304050607080910111213141516LОRЕМЯПSUМDОLОR

0001020304050607080910111213141516LОRЕМЯПSUМDОLОR


Додаткові місця доступні. можливо r+w+' '?
l4m2

5

Perl 6 , 46 29 байт

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

Спробуйте в Інтернеті!

Рішення на базі Regex, яке приймає вкладені дані, як 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_

Спробуйте в Інтернеті!


1
Пояснення: DJ:Цю програму зробив DJ, наш улюблений кіт з діамантом на шиї. [...]
Ерік Атголфер

4

R , 36 27 байт

R має це як вбудований ( strwrap), повертаємо вектор розділених ліній.

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

Спробуйте в Інтернеті!


1
Так, це слід дозволити. Масиви ліній дозволені, тому я не розумію, чому це було б інакше.
ATMunn



3

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

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

Вітаємо Кевіна за те, що він допомагає ще більше скоротити байти в регулярному виразі!

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

Спробуйте в Інтернеті!

Використовуючи завиту ламббу, вона створює регулярний вираз, щоб жадібно збігатися з nсимволами, за яким слід пробіл або кінець рядка. Потім він замінює цих символів самим собою з наступним новим рядком.


@KevinCruijssen [ $]насправді відповідає простору або, $якщо я пам'ятаю правильно, а не кінці рядка. Це, здається, працює, тому виглядає, що його можна просто переграти в єдиний простір на ще менше байтів.
Люк Стівенс

А, це дійсно може бути просто пробілом, оскільки ви додаєте нові рядки і не потрібно додавати додатковий новий рядок в кінці.
Кевін Круїссен

1
Ви можете пограти ще 2 байти, видаливши дужки в регулярному виразі, і використовувати $0замість них $1.
Кевін Круїссен

@KevinCruijssen Приємний! Це просто ганьба, яка replaceAllтака багатослівна!
Люк Стівенс

2
Для мене це неправильно, з’являються, якщо я змінюю латинську фразу вправи так, як вона закінчується "... dictum varius abc erat." Новий рядок після листа c ...
RosLuP

2

Математика, 16 байт

InsertLinebreaks

Вбудована функція. Бере рядок і ціле число в якості вхідних даних і повертає рядок як вихід.

InsertLinebreaks["string", n]
 вставляє символи нового рядка, щоб жодна лінія не перевищувала n символів.


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


Спасибі. Підроблений трійник - це вираз. Цей сценарій містить неявне 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(...).
Бубон


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

Спробуйте в Інтернеті!

⎕CYc op y у бібліотеці dfns

 потім

wrap[З]  використовувати обгортковий [N] функцію

[c]  код цієї функції
[n]  примітки до цієї функції


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

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

Спробуйте в Інтернеті!

{} Dfn; лівий аргумент (ширина), правий аргумент (рядок)

≢⍵ підрахунок (кількість символів) рядка

⍺≥:  Якщо ширина більша або дорівнює цій величині, тоді:

   повернути рядок

 інакше:

  ' '=⍵ Булева маска, де заготовки дорівнюють рядку

  b← зберігати в b(для б ланки)

  ()↑  Візьміть із цього кількість елементів:

   ⍺+1 на один більше, ніж ширина

  я ndices де правда

  g← зберігати в g(для g aps)

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

  g/⍨ відфільтруйте індекси розриву за цим

  ⍺, додайте це до ширини

  ⊃⌽ виберіть останній елемент цього (літ. виберіть перший із перевернутого)

  t← зберігати в t(для т аке)

  b⊃⍨ використовуйте це, щоб вибрати елемент з маски b ланки

  t+ додати це до t

  ⍵↓⍨ скиньте стільки символів з рядка

  ⍺∇ повторити це з тим самим лівим аргументом

  ⎕TC, додати це до списку символів t erminal c ontrol (8: HT, 10: NL, 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, не повертається).
Ерік Аутгольфер

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)


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

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 - це повна програма, а функція має статичне ключове слово, тому функцію можна викликати з головного.

Тест Regex


Це не дає правильного висновку для тестового випадку - деякі рядки довші 50 символів. Ви хочете, щоб "до" не "поруч", а також розщеплення в одній точці повинно залежати від місця розбиття раніше.
Ørjan Johansen

0

C # (Visual C # Interactive Compiler) , 78 байт

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

Спробуйте в Інтернеті!

Кредит належить @LukeStevens за розробку версії Java ... Мабуть .NET змушує вас імпортувати RegularExpressions простір імен, щоб зробити заміну :(

Ось моя оригінальна версія, яка розбивається на пробіл і використовує LINQ, щоб з'єднати їх разом:

C # (Visual C # Interactive Compiler) , 91 байт

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

Спробуйте в Інтернеті!



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

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]

@ceilingcat ОК, вищевказаний код буде враховувати \ n теж ... Один помилка, яку я виявив із кодом, полягав у тому, що останній рядок був неправильно надрукований ... чому ви не пишете свою відповідь C як іншу? Він би виграв на моєму, тому що він коротший ... скажімо, справжній я використовую перший рядок (або вислів ";") для перевірки введення тільки тому, що для мене вхід повинен перевірятися, навіть якщо це трохи більше довго; Я безуспішно намагаюся записати функцію в APL ...
RosLuP

@ceilingcat в останній відповіді, бачив, що на це питання не сказано, чи вводиться рядок введення чи немає \ \ n 'char, і бачив, що в прикладі немає' \ n 'Я вважаю, що в рядок вводу немає нового символу рядка ...
RosLuP

Тільки 83 ... Так, я маю бачити, чи отримую 3
знаки,

Всього 81 .... .... ....
RosLuP

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