吉米需要一双新鞋!


13

上周吉米(Jimmy)忙于使用所有这些 平台 绳索,可怜的吉米(Jimmy)甚至没有脚或脚站立!


您的工作是取一个包含多个Jimmys的细绳,然后给它们绑腿和穿鞋!

以Jimmy String的形式获取输入

吉米·字符串=> /o\ /o\ /o\

仅包含/o\

给输入中的每个Jimmy像这样的双脚:

 /o\
_/ \_

将输入的浮头吉米弦转换为带脚弦的吉米,如下所示:

// Input

       /o\   /o\          /o\

// Output

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

如果2个Jimmys靠得很近,他们必须移居以腾出空间,Jimmys总是会向右移,以便为其他Jimmys腾出空间。

// 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\,我当前的实现失败,因为它将最后两个Jimmies向左移动而不是向右移动。尽管所有测试用例都成功了。
凯文·克鲁伊森

Answers:



3

红宝石 -p77 75字节

“不要动吉米,如果不需要的话”规则是一项艰巨的工作,但我认为它运行得很好。至少(在撰写本文时)比Python短很多。

-2字节来自递归。

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

在线尝试!


您能\S+代替使用\/\S*吗?
递归

3

Powershell,96字节

($o=$args-split'/o.'|%{' '*($w=($l+=$_.Length-1)*($l-gt0));$l-=$w+1})-join' /o\ '
$o-join'_/ \_'

在线尝试!

展开:

$o=$args-split'/o.'|%{
    $len += $_.Length-1
    $width = $len*($len-gt0)    # len or 0, if len < 0
    ' '*$width
    $len -= $width+1
}
# $o is array of space strings now
$o-join' /o\ '
$o-join'_/ \_'

2

Python 2中152 148 140个字节

o=[-4]
for i,c in enumerate(input()):o+=[max(i,o[-1]+5)]*('/'==c)
for s in' /o\ ','_/ \_':print''.join('%*s'%(b-a,s)for a,b in zip(o,o[1:]))

在线尝试!


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
好吧,试图假装这些挑战已经有一段时间了。(与那个吉米
无关

我相信我在Ruby答案中使用的模式匹配(\\ ?|^)(/\S*) ?比第一行中的模式匹配要短,并且应该给出相同的结果(可能;我完全不了解Retina)
Value Ink


1

JavaScript(ES6),107个字节

s=>` /o\\ 
_/ \\_`.replace(/.*/g,j=>s.split(/.o./).map(s=>s.slice(n,l=s.length,n=n>l?n-l+2:2),n=1).join(j))

在线尝试!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.