Джиммі потрібна нова пара взуття!


13

На минулому тижні Джиммі був зайнятий усіма цими платформами та мотузками , а у бідного Джиммі немає навіть ніг, ні ніг, на яких можна було б стояти!


Ваше завдання - взяти рядок, що містить декілька Джимміс, і подарувати їм ноги та взуття!

Отримайте введення у вигляді Джіммі-струни

Джиммі Струна => /o\ /o\ /o\

що містять тільки /o\і

дайте кожному Джиммі на вході пару ніг, які виглядають так:

 /o\
_/ \_

Перетворіть рядок Джиммі з плаваючою головою в Джиммі за допомогою рядка стоп:

// Input

       /o\   /o\          /o\

// Output

       /o\   /o\          /o\
      _/ \_ _/ \_        _/ \_

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

// Input

/o\/o\

// Output

 /o\  /o\
_/ \__/ \_

Інших Джиммі, що знаходяться далі, не можна переміщувати, якщо не потрібно

// Input

/o\/o\      /o\

// Output

 /o\  /o\   /o\
_/ \__/ \_ _/ \_

// Input

/o\/o\    /o\

// Output

 /o\  /o\  /o\
_/ \__/ \__/ \_

Застосовуються стандартні правила та лазівки,

Це код-гольф, тому найкоротша відповідь може виграти.


Запропонований тестовий випадок: /o\<sp>/o\<sp><sp><sp><sp><sp><sp><sp><sp>/o\/o\моє поточне реалізація не вдається, оскільки вона переміщує два останніх Jimmy вліво, а не вправо. Хоча всі ваші тестові справи успішні.
Кевін Кройсейсен

Відповіді:


3

Python 2 , 131 120 115 114 121 118 байт

o=1;W=[]
for g in map(len,input().split('/o\\')):W+=[' '*(g-o)];o=max(o-g,0)+2
for q in' /o\ ','_/ \_':print q.join(W)

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

4 байти thx до movatica ; 10 байтів, втрачених для виправлення помилок.


1
o+=2-len(g)рятує вас байт
movatica


1
@movatica: виникла помилка, але вона була компенсована вашими правками :).
Час Браун

3

Рубі -p , 77 75 байт

Правило "не рухайся Джиммі, якщо не потрібно", було досить важким завданням, але я думаю, що це спрацювало досить добре. Коротше, ніж Python зовсім небагато (на час написання), принаймні.

-2 байти від рекурсивної.

r=/(\\ ?|^)(\S+) ?/
gsub(r){"#$1 #$2"}while~r
puts$_
gsub(/ .o. ?/,'_/ \_')

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


Чи можете ви використати \S+замість \/\S*?
рекурсивна



2

Вугілля деревне , 28 байт

 F⌕Aθ/«J∧ι⊖ι¹WKK→P_/ \_M↗/o\

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

 

Роздрукуйте пробіл, щоб перемогти лівий край автоматичного вугілля.

F⌕Aθ/«

Переведіть петлю на всі ліві руки.

J∧ι⊖ι¹

Перейти до потрібного місця лівої ноги. Зауважте, що у вугілля немає проблем із малюванням (-1, 1), але питання цього не дозволяє, тому ми повинні подбати про те, щоб не малювати негативні позиції.

WKK→

Перемістіть повний будь-який існуючий вихід.

P_/ \_M↗/o\

Виведіть ноги, а потім перейдіть до виходу Джиммі.


2

Сітківка ,40 37 байт

\+`(^|\S.)(/\S*) ?
$1 $2
 /o. ?
_/ \_

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

Завдяки Value Ink для гри в гольф на 3 байти.


4
Насолоджуйтесь своїм новим взуттям!
Квін

1
Що ж, спробували зробити вигляд, що ці виклики на деякий час не існують. (Немає жодного стосунку до цього Джиммі.)
jimmy23013

Я вважаю, що відповідність шаблону, яку я використав у моїй відповіді на Рубі (\\ ?|^)(/\S*) ?, коротша, ніж у вашому першому рядку, і повинна дати ті самі результати (напевно, я не знаю Retina взагалі)
Value Ink


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