Зробіть буквене слово


45

Через технічні обмеження Stack Exchange заголовок відображається неправильно. Правильне назва для цього завдання є

Зробити

Word Icicle!
Word Icicle 
Word  cicle 
 ord  cicle 
 ord   icle 
 ord   i le 
 or    i le 
 or    i l  
 or      l  
 or         
  r         

Сьогоднішнє завдання - зробити бурульки з вхідного слова. Давши рядок повністю друкованого ASCII та щонайменше 2 символів, що не містять пробілів, виконайте наступні дії:

  1. Роздрукуйте поточний стан рядка.

  2. Замініть лексично найменший символ (крім пробілів) пробілом. Якщо є краватка, замініть крайній лівий символ.

  3. Повторюйте в послідовних рядках, поки рядок не містить лише 1 символу, який не пробіл.

Це створює ефект, що вхідний рядок виглядає так, ніби він плавиться ...

I'm Melting!!!
I'm Melting !!
I'm Melting  !
I'm Melting   
I m Melting     
  m Melting   
  m  elting   
  m   lting   
  m   ltin    
  m   lt n    
  m    t n    
       t n    
       t      

Правила

  • Після декількох ітерацій, на виході майже напевно будуть пробіли у кожному рядку. Якщо ви вирішите усікати їх, це дозволено.

  • У вас може бути один порожній рядок, але не більше.

  • Пам'ятайте, що вхід може містити декілька пробілів, але всі вони ефективно пропускаються. Наприклад, вхід a aповинен дати

    a      a
           a
    
  • Ви можете взяти введення як список рядків, якщо хочете. Для виведення ви можете повернути або роздрукувати список рядків, одну рядок з новими рядками або матрицю char / 2D. Як правило, я віддаю перевагу дозвільним форматам вводу-виводу, тому інші формати, швидше за все, дозволені, якщо вони є послідовними та чітко відповідають правильному виводу. Якщо ви сумніваєтесь, сміливо запитайте. Як завжди, допускаються повні програми або функції.

  • Пам'ятайте, це конкурс на найкоротший відповідь будь-якою мовою! Якщо ви вирішили відповісти на Java, спробуйте зробити найкоротший відповідь на Java (у байтах), який ви можете.

Тестові справи

Hello World! -->

Hello World!
Hello World 
 ello World 
 ello  orld 
 ello  orl  
  llo  orl  
   lo  orl  
    o  orl  
    o  or   
       or   
        r   


AbCdEfGhIjKlMnOpQrStUvWxYz -->

AbCdEfGhIjKlMnOpQrStUvWxYz
 bCdEfGhIjKlMnOpQrStUvWxYz
 b dEfGhIjKlMnOpQrStUvWxYz
 b d fGhIjKlMnOpQrStUvWxYz
 b d f hIjKlMnOpQrStUvWxYz
 b d f h jKlMnOpQrStUvWxYz
 b d f h j lMnOpQrStUvWxYz
 b d f h j l nOpQrStUvWxYz
 b d f h j l n pQrStUvWxYz
 b d f h j l n p rStUvWxYz
 b d f h j l n p r tUvWxYz
 b d f h j l n p r t vWxYz
 b d f h j l n p r t v xYz
 b d f h j l n p r t v x z
   d f h j l n p r t v x z
     f h j l n p r t v x z
       h j l n p r t v x z
         j l n p r t v x z
           l n p r t v x z
             n p r t v x z
               p r t v x z
                 r t v x z
                   t v x z
                     v x z
                       x z
                         z


PPCG is da BEST --> 

PPCG is da BEST
PPCG is da  EST
PP G is da  EST
PP G is da   ST
PP   is da   ST
 P   is da   ST
     is da   ST
     is da    T
     is da     
     is d      
     is        
      s        


({({})({}[()])}{}) -->

({({})({}[()])}{})
 {({})({}[()])}{})
 { {})({}[()])}{})
 { {}) {}[()])}{})
 { {}) {}[ )])}{})
 { {}  {}[ )])}{})
 { {}  {}[  ])}{})
 { {}  {}[  ] }{})
 { {}  {}[  ] }{} 
 { {}  {}   ] }{} 
 { {}  {}     }{} 
   {}  {}     }{} 
    }  {}     }{} 
    }   }     }{} 
    }   }     } } 
        }     } } 
              } } 
                } 

1
"лексично найменший" означає за кодовою точкою?
Джузеппе

1
@Giuseppe Так, персонаж із найменшою кодовою точкою ASCII (окрім місця, очевидно)
DJMcMayhem

2
Нагадує мені ще один виклик, коли нам довелося, по-моєму, вертикально повторити символ за його покажчиком в алфавіті.
Кудлатий

6
@Shaggy Ви, мабуть, думаєте зробити «Алфавітний дощ» .
Rainbolt

2
Та посилання на MediaWiki, хоча ...
Ерік Атгольфер

Відповіді:



8

Сітківка , 28 байт

/\S/+¶<~(O`.
0L$`\S
0`$\$&¶ 

Спробуйте в Інтернеті! Пояснення:

/\S/+

Повторіть, поки значення вводу не буде порожнім.

¶<

Друк поточного значення.

~(

Виконайте решту сценарію за значенням. Потім виконайте результат цього сценарію як сценарій за значенням.

O`.

Сортуйте символи за порядком.

0L$`\S
0`$\$&¶ 

Виберіть перший непустий символ та виведіть програму Retina, яка замінює перше буквальне ( $\) виникнення цього символу ( $&) пробілом (пробіл у вихідному коді).


6

APL (Dyalog Unicode) , 18 11 байт

∪∘↓∘⍉⍋∘⍋⍴⌸⊢

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

використовує ⎕io←1; повертає масив рядків (вектор символьних векторів)


Чи потрібне?
Крітіксі Літос

@Cowsquack так, інакше перші кілька рядків результату можуть бути однаковими
ngn

@Cowsquack спасибі, я цього не помічав
1818

на щастя, виправлення цього призвело до коротшого вирішення :)
ngn

Приємне, справді розумне використання ⍋∘⍋:)
Kritixi Lithos

6

05AB1E , 9 байт

ðм{v=yð.;

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

Пояснення

ð      # Push space
м      # Implicit input. Remove spaces
{      # Sort. Gives string of sorted, non-space chars
v      # For each char in that string
  =    #   Print latest string, without popping. The first time it prints the input
  y    #   Push current char
  ð    #   Push space
  .;   #   Replace first occurrence of current char by space
       # Implicitly end for-each loop

1
{ðKv=yð.;була моя, приємна.
Чарівна урва восьминога

@MagicOctopusUrn Heh, досить схожий
Луїс Мендо

1
@MagicOctopusUrn Насправді, все одно це буде ті самі 9 байт в останній версії 05AB1E .. :замінює всі символи, замість .;яких замінює перший (тобто подивіться, що ваш тест на 7 байт з !тестом у тестовому випадку). Крім того, у виклику прямо вказано виключення пробілів, тому ваш 7-байт не працює для введення з кількох пробілів. PS: Гарна відповідь, Луїс! +1 від мене. :)
Кевін Круїссен

1
@KevinCruijssen залиште це для мене, щоб забути, чому мені довелося користуватися .;в першу чергу. Я буквально пам’ятаю, що боровся з цим 1 травня на початку цього року, коли ви згадуєте про це.
Magic Octopus Urn

1
@LuisMendo Ну, жодна з команд, які ви використовували у цій відповіді, не змінилася в переписанні Elixir 05AB1E. :)
Кевін Кройсейсен

5

Pyth, 17 14 13 байт

V-SQdQ=XQxQNd

Спробуйте тут

V-SQdQ=XQxQNd
V-SQd              For each non-space character in the sorted input (Q)...
     Q             ... print the current value of Q...
      = Q          ... and set Q to itself...
         xQN       ... with the first instance of the character...
       X    d      ... replaced by a space.

5

sed -rn , 142 143 байт

:a
p
s/$/	ABCDEFGHIJKLMNOPQRSTUVWXYZ/
s	\w+$	!"#$%\&'()*+,-./0123456789:;<=>?@&[\\]^_`\L&{|}~	
:b
/(.).*	\1/!s/	./	/
tb
s/(.)(.*)	\1.*/ \2/
ta

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

(зверніть увагу: в програмі є вкладки)

Оскільки sed не має поняття лексикографічного порядку, мені довелося жорстко закодувати набір друкованих символів ASCII, і він займає більше половини рахунку.

Використання sed 4.2.2 зменшить кількість рахунків на 2, оскільки це дозволяє мати неназвані ярлики. Спробуйте це в Інтернеті!


-r дозволяє розширити регулярні вирази (гольфіст)

-n вимикає неявну друк простору шаблону в кінці програми

Простір шаблону починається з введення

:alabel a, це основний цикл програми

p друкуйте пробіл шаблону (фантазійне ім’я для буфера)

тепер ми додаємо набір символів для друку ASCII (виключаючи пробіл)

s/$/ ABCDEFGHIJKLMNOPQRSTUVWXYZ/ додайте вкладку, виконуючи роль 1-байтового роздільника, після чого пропис з великого літери

s<tab>заміна (sed може приймати будь-який символ як роздільник, в цьому випадку вкладка використовується для збереження байта від виходу з поля /)

  • \w+$ верхній алфавіт, який ми тільки що додали

  • <tab> з

  • !"#$%\&'()*+,-./0123456789:;<=>?@&[\\]^_\`\L&{|}~<tab>решта символів зауважте, що \L&це нижній регістр верхнього регістру алфавіту

:bмітка b, видаліть із початкового набору символи, які відсутні у введенні

/(.).* \1/! якщо перший символ із набору ASCII не знаходиться на вході

  • s/ ./ / видали це

tbповторюйте, bпоки заміна не відбудеться

s/(.)(.*) \1.*/ \2/ замініть перший символ у наборі ASCII, присутній на вході, пробілом, і видаліть набір ASCII

ta рецидивувати


Тут не дуже жадібна відповідність була б дуже корисною, але я зміг придумати щось sedдосить обдурене , щоб зберегти принаймні 4 байти: Спробуйте це в Інтернеті!
Ніл

(Шукання корів зазначило, що я лише частково зміг обдурити сед, оскільки я видаляю однакові символи в неправильному порядку.)
Ніл

4

Рубі , 60 58 55 47 байт

->a{[-a]+a.scan(/\S/).sort.map{|x|a[x]=' ';-a}}

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


Ви можете поміняти в a-b=[' ']і a-bдля швидких -2 байт
benj2240

Так, спасибі за це, але зараз я трохи змінив підхід, тому він більше не використовується.
Кирило Л.

Мені подобається новий підхід!
benj2240

4

R , 140 100 байт

-40 байт Завдяки Джузеппе!

function(x)for(i in any((z=utf8ToInt(x))<33):max(y<-rank(z,,"f"))){z[y==i]=32
cat(intToUtf8(z),"
")}

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

Рішення, що використовує outerмагію Джузеппе для правильної роботи, довше на 104 байти. Натхненний цією відповіддю .

function(x,z=utf8ToInt(x)-32)apply(t(outer(rank(z,,"f"),(2-(min(z)>0)):nchar(x),">=")*z+32),1,intToUtf8)

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


109 байт, приймаючи вхід як векторних знаків
Джузеппе

1
100 байт, приймаючи введення як рядок!
Джузеппе

Все-таки дуже приємна відповідь; міна надувала повітря понад 200 байтів, оскільки я не пам’ятав про це rank!
Джузеппе

@Giuseppe Розкажи мені про це - я спершу спробував "замовити" результат, який плавився, але не у правильному порядку!
JayCe

@Giuseppe і моя спроба використовувати зовнішній натхненний вашою публікацією вдалося лише видалити всі пробіли. TIO Мені б хотілося, щоб окремий варіант відповіді працював зовнішнім підходом. Все ще працюю над цим, але це може бути не так елегантно.
JayCe

3

Python 3 , 71 байт

f=lambda a:[*a.strip()]and[a]+f(a.replace(min(a.replace(*" ~"))," ",1))

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

-4 байти завдяки ов


Збережіть 2 байти, використовуючи *bool({*a}-{" "})замістьif{*a}-{" "}else[a]
RootTwo,

@RootTwo не призведе до цього RecursionError?
ов

if/elseЯрлики @RootTwo, але *boolне так, так, так, рекурсионер, як сказали
ovs

Звичайно, ви праві. Через помилку, моя функція повторилася, викликавши вашу функцію, так що, здавалося, вона працює.
RootTwo

3

Python 2 , 70 69 66 64 байт

def f(s):print s;S=set(s)-{' '};S and f(s.replace(min(S),' ',1))

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

Thx на 2 байти від ов через використання S and f()замістьif S:f()


Вам не вистачає ...If there is a tie, replace the leftmost character...правила, ви можете це виправитиreplace(min(...),' ',1)
Rod

@Rod: Ах! Зрозумів ...
Час Браун

3

Желе , 8 байт

ẋ"ỤỤ$z⁶Q

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

Ідея

Основна ідея полягає у створенні стовпців потрібного виводу безпосередньо, а не маніпулювати рядком і повертати всі проміжні результати.

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

tee ay oh
845139276

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

tee ay oh
tee ay oh
tee ay oh
tee  y oh
t e  y oh
t    y oh
t    y o 
t    y   
     y   

Залишилося лише видалити дублікати та врахувати пробіли.

Код

ẋ"ỤỤ$z⁶Q  Main link. Argument: s (string)

    $     Combine the two links to the left into a chain.
  Ụ       Grade up; sort the indices of s by their corresponding values.
          Let's call the result J.
          Grade up again, sorting the indices of J by the corr. values in J.
          This enumerates the positions of s as described before.
ẋ"        Repeat each character of s that many times.
     z⁶   Zip the resulting 2D array, filling missing characters with spaces.
       Q  Unique; deduplicate the array of rows.

3

Perl 5 -n , 37 34 байт

Випав три байти за допомогою @TonHospel

say&&s/\Q$a/ / while($a)=sort/\S/g

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


Ах, дуже приємно, набагато приємніше підходу! Я думаю, що вам потрібен \Qхоч для останнього тестового випадку .... Я пропустив і це в перші рази!
Дом Гастінгс

Ти правий. Додав.
Xcali

Коротше: say&&s/\Q$a/ / while($a)=sort/\S/g. Також правильно поводиться0
Тон Євангелія

3

JavaScript, 67 66 65 байт

Тому що я не займався гольфу в нетверезому стані!

s=>[...t=s].sort().map(x=>x>` `?t+=`
${s=s.replace(x,` `)}`:0)&&t

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

Дякуємо DanielIndie, що вказав на 4 зайвих байта, що включають пиво!


чому ви вказуєте y на карті? : P це можна зробити 67
DanielIndie

@DanielIndie, бо пиво! : D Дякую, що вказав на це.
Кудлатий

так, я думав, що так буде: P
DanielIndie

3

K (нг / к) , 26 24 байт

{?(,x),x{x[y]:" ";x}\<x}

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


Гарний! Моя спроба K увійшла до 41: `{. [X; (- 1 + # x) & x? _Ci & / _ ic x _dv" ";:;" "]}` Я марную байти, перетворюючись на ints і назад і роблячи впевнений, що це не виходить за межі.
урига

@uryga Дякую Якби я правильно здійснив прогнози, {@[x;y;:;" "]}міг би бути @[;;:;" "]. Яку версію k ви використовуєте? Я не знайомий з цим: _ci _ic _dv.
ngn

Я думаю, що це 2,8-іш? Я використовую інтерпретатор Kona, який забезпечує операторів як вбудовані: char-of-int, int-of-char, delete-value.
урига

2

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

var s=ReadLine();while(s.Any(c=>c!=32)){WriteLine(s);var i=s.IndexOf(s.Min(c=>c==32?(char)999:c));s=s.Remove(i,1).Insert(i," ");}

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


c!=32може бути c>32; c==32може бути c<33; і (char)999може бути '¡'(або будь-яким іншим символом вище діапазону uncode для друку ASCII).
Кевін Кройсейсен

О, і ви можете зберегти ще два байти, змінивши whileна forта розмістивши його var s=ReadLine()та s=s.Remove(i,1).Insert(i," ")всередині нього (тому два напівколонки більше не потрібні).
Кевін Кройсейсен


2

Haskell , 67 байт

12 байт збережено завдяки Лайконі

f s|(a,_:b)<-span(/=minimum(id=<<words s))s=putStrLn s>>f(a++' ':b)

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

Цей закінчується помилкою

Haskell , 83 79 байт

g(a,_:b)=a++' ':b
mapM_ putStrLn.(iterate$g.(span=<<(/=).minimum.concat.words))

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

Цей закінчується помилкою

Haskell , 86 байт

u=concat.words
g(a,_:b)=a++' ':b
(take.length.u)<*>(iterate$g.(span=<<(/=).minimum.u))

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

Haskell , 100 91 88 байт

u=concat.words
f x|(a,_:b)<-span(/=minimum(u x))x=a++' ':b
(take.length.u)<*>(iterate f)

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


67 байт: f s|(a,_:b)<-span(/=minimum(id=<<words s))s=putStrLn s>>f(a++' ':b) Спробуйте в Інтернеті!
Лайконі

@Laikoni Дякую! Я просто був на межі чогось такого і заснув. Однак я не думаю, що я придумав би id=<<це досить розумно
Пшеничний майстер


2

К4 , 28 20 18 байт

Рішення:

?x{x[y]:" ";x}\<x:

Приклад:

q)k)?x{x[y]:" ";x}\<x:"PPCG is da BEST"
"PPCG is da BEST"
"PPCG is da  EST"
"PP G is da  EST"
"PP G is da   ST"
"PP   is da   ST"
" P   is da   ST"
"     is da   ST"
"     is da    T"
"     is da     "
"     is d      "
"     is        "
"      s        "
"               "

Пояснення:

Це те саме, що робить ngn . Знайдіть індекси, які призвели б до висхідного списку, перезапишіть їх по одному " ", а потім візьміть відмінні для видалення будь-яких повторюваних рядків:

?x{x[y]:" ";x}\<x: / the solution
                x: / save input as x
               <   / return indices that would result in ascending sort
 x{        ; }\    / two-line lambda with scan
        " "        / whitespace
       :           / assignment
   x[y]            / x at index y
            x      / return x
?                  / distinct

2

32-бітний gcc, 66 65 байт

char*p,i;f(a){for(i=32;i++;)for(p=a;*p;)*p==i?puts(a),*p=32:++p;}
main(){char s[]="3.1415926";f(s);}

Дякую Джонатану Фреху за -1 байт


*p==i?...:0;можливо, могло бути *p-i?0:...;.
Джонатан Фрех

@JonathanFrech Ні, це на 1 байт довше (хоча *p-1||(...)однакової довжини)
l4m2

Вибачте, не визнали важливості зберігати вираз кома разом. Однак це може бути 65 байт . Я також не знаю, як f(a)компілюється, як це aмає бути типу char*, але я припускаю, що це має щось спільне з вашим 32-розрядним використанням gcc.
Джонатан Фрех

@JonathanFrech Я думаю, що char*p,i;f(long long a){for(i=31;++i;)for(p=a;*p;)*p==i?puts(a),*p=32:++p;}tio (64bit) може пояснити, як f(a)працює
l4m2

Мені шкода, хоча я запитав ОП про специфікацію виклику, і вони сказали, що рядок введення може починатися з пробілу. Тому моє запропоноване рішення є недійсним (оскільки такий вхід призводить до нескінченного циклу), і ви, швидше за все, повинні повернутися до свого початкового рішення.
Джонатан Фрех

2

MATLAB, 74 байти

При цьому використовується 2-вихідна форма функції max () для отримання найменшого символу та його індексу, перетворивши рядок у нульові значення в пробілах та 256-символьне значення для друкованих символів.

s=input('s');x=1;while(x);disp(s);[x,y]=max((256-s).*(s~=' '));s(y)=' ';end

1
Ласкаво просимо до PPCG! Хороша робота!
AJFaraday

2

Лист звичайний , 240 228 224 байт

(setf s(read))(defun f(x)(setf y(char-code(elt s x)))(if(= y 32)1e9 y))(loop for _ across s do(print s)do(setf s(replace s" ":start1(position(code-char(reduce #'min (loop for i from 0 below(length s)collect i):key #'f))s))))

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

Це моя перша публікація.
Я перебуваю в процесі навчання лісп, тому я впевнений, що хтось може придумати щось коротше, ніж це.


1
Ласкаво просимо на сайт! Приємно бачити якийсь звичайний ліс!
Пшеничний майстер

1

APL (Dyalog Unicode) , 39 байт SBCS

{⎕←⍵⋄×≢⍵∩g' '~⍨⎕UCS256:∇' '@(⊃g⍋⍵)⊢⍵}

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

Dfn.

Як?

{⎕←⍵⋄×≢⍵∩g' '~⍨⎕UCS256:∇' '@(⊃g⍋⍵)⊢⍵}  Main function, argument 
 ⎕←⍵⋄                                     Print 
         g' '~⍨⎕UCS256                  Assign to g every Unicode character except space
     ×≢⍵∩                :                If ⍵∩g is not empty
                                         Recursively call the function with argument:
                           ' '@          Space at
                               (⊃g⍋⍵)     The first (⊃) element in  graded up (⍋) with g
                                          The dyadic grade up function will index  according
                                          to its left argument, in this case g.


1

PowerShell , 103 99 байт

param($a)2..$a.length|%{($x=$a);[regex]$p=""+([char[]]$a-ne' '|sort)[0];$a=($p.replace($x," ", 1))}

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

Приймає введення як рядок у $a. Потім ми робимо цикл з 2на $a.length(тобто відповідна кількість вертикальних разів, необхідних для видалення всіх символів, крім одного). Кожну ітерацію ми виводимо поточний рядок і зручно зберігати в $xньому одночасно. Потім ми будуємо новий [regex]об'єкт, $pattern що складається з символів, що залишились $a, які -nВЗ eякост простору, sortвид, то 0й один з них.

Потім ми встановлюємо $aрівний новій рядку об'єкта регулярних виразів .Replaceметодом заміни в рядку $x, $pattern, пробілом " ", але відповідає тільки 1st. Так, цей синтаксис дивний.

Рядки залишаються на конвеєрі і неявно Write-Outputдає нам новий рядок між ними безкоштовно, плюс один зворотний новий рядок.




1

MATL , 17 16 байт

tSXz"tOy@=f1)(]x

Спробуйте в Інтернеті! Або перевірити всі тестові випадки .

Пояснення

t       % Implicit input. Duplicate
S       % Sort
Xz      % Remove spaces
"       % For each char in that string
  t     %   Duplicate last result. This is the most recent string obtained
        %   from replacing chars by spaces in the input
  O     %   Push 0
  y     %   Duplicate from below
  @     %   Push current char
  =     %   Equals? (element-wise) Gives 1 for occurrences of current char
        %   in the most recent string, 0 otherwise
  f     %   Indices of nonzeros
  1)    %   Get the first entry
  (     %   Write 0 at that position. Char 0 will be displayed as space
]       % End
x       % Delete last result, which consists only of space / char zero

1

Excel VBA, 167 байт

Анонімна функція негайного вікна VBE, яка приймає вхід з діапазону [A1]та виводить у безпосереднє вікно VBE.

s="Code(Mid(A$1,Row(),1))":[B1].Resize([Len(A1)])="=If("&s &"=32,1E3,"&s &")":For i=1To[Len(A1)-CountIf(B:B,1E3)]:?[A1]:[A1]=[Substitute(A1,Char(Min(B:B))," ",1)]:Next

Безголовний і коментований

''  run as `call icicle("Test")` or `icicle"I am the WALRUS`
Sub icicle(Optional str As String)
    If Not IsMissing(str) Then [A1] = str   ''  pipe input
    [B:B].Clear                             ''  reset between runs
    [B1].Resize([Len(A1)]) = "=If(Code(Mid(A$1,Row(),1))=32,1E3,Code(Mid(A$1,Row(),1)))"  ''  get char number for every char in input
    For i = 1 To [Len(A1)-CountIf(B:B,1E3)] ''  iterate across from 1 to length of input - number of spaces
        Debug.Print [A1]                    ''  output a single line
        [A1]=[Substitute(A1,Char(Min(B:B))," ",1)]  ''  replace minimum char with space
    Next
End Sub

1

Japt , 32 18 байт

Збережено 14 байт завдяки Шаггі!

rS ¬£=hSUbZn gYÃiN

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


Збережіть байт, повернувши масив рядків: ethproductions.github.io/japt/…
Shaggy

22 байта . Спробую незабаром порт мого рішення JS, подивіться, як це виходить.
Кудлатий

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