ジミーには新しい靴が必要です!


12

ジミーは先週、これら すべてプラットフォーム ロープで忙しくしており、貧しいジミーには足や足さえありません!


あなたの仕事は、複数のジミーを含むストリングを取り、足と靴を与えることです!

ジミー文字列の形式で入力を取得する

ジミー・ストリング=> /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\、最後の2つのジミーを右ではなく左に移動するため、現在の実装は失敗します。ただし、すべてのテストケースは成功します。
ケビンCruijssen

回答:


3

パイソン2131の 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)

オンラインでお試しください!

movaticaに 4バイトthx ; バグ修正のために10バイトが失われました。


1
o+=2-len(g)バイトを節約
movatica


1
@movatica:バグがありましたが、編集によって相殺されました:)。
チャスブラウン

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

木炭、28バイト

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

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:

 

スペースを印刷して、チャコールの自動左マージンを無効にします。

F⌕Aθ/«

すべての左腕をループします。

J∧ι⊖ι¹

目的の左足の場所にジャンプします。Charcoalでの描画に(-1, 1)問題はありませんが、質問ではそれが許可されていないことに注意してください。

WKK→

既存の出力を通過します。

P_/ \_M↗/o\

足を出力してから、移動してジミーを出力します。


2

網膜40 37バイト

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

オンラインでお試しください!

3バイトのゴルフをしてくれたValue Inkに感謝します。


4
新しい靴をお楽しみください!
クイン

1
まあ、これらの課題はしばらく存在しないふりをしようとしました。(そのジミーとは関係ありません。)
jimmy23013

Rubyの回答で使用したパターンマッチ(\\ ?|^)(/\S*) ?は、最初の行のパターンマッチよりも短く、同じ結果が得られるはずです(おそらく、Retinaをまったく知らない)
Value Ink


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.